Changeset 4271a1e
- Timestamp:
- Mar 8, 2018, 4:43:09 PM (7 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- deb52a0
- Parents:
- 037c072
- Location:
- doc
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/bibliography/pl.bib
r037c072 r4271a1e 3644 3644 month = nov, 3645 3645 pages = {9-16}, 3646 } 3647 3648 @inproceedings{Pharr12, 3649 title={ispc: A SPMD compiler for high-performance CPU programming}, 3650 author={Pharr, Matt and Mark, William R}, 3651 booktitle={Innovative Parallel Computing (InPar), 2012}, 3652 pages={1--13}, 3653 year={2012}, 3654 organization={IEEE} 3646 3655 } 3647 3656 … … 6052 6061 } 6053 6062 6063 @inproceedings{Leissa14, 6064 title={Sierra: a SIMD extension for C++}, 6065 author={Lei{\ss}a, Roland and Haffner, Immanuel and Hack, Sebastian}, 6066 booktitle={Proceedings of the 2014 Workshop on Workshop on programming models for SIMD/Vector processing}, 6067 pages={17--24}, 6068 year={2014}, 6069 organization={ACM} 6070 } 6071 6054 6072 @inproceedings{Howard76b, 6055 6073 keywords = {monitors}, -
doc/papers/general/Paper.tex
r037c072 r4271a1e 2654 2654 \subsection{Polymorphism} 2655 2655 2656 \CC is the most similar language to \CFA; 2657 both are extensions to C with source and runtime backwards compatibility. 2658 The fundamental difference is the engineering approach to maintain C compatibility and programmer expectation. 2659 While \CC provides good compatibility with C, it has a steep learning curve for many of its extensions. 2660 For example, polymorphism is provided via three disjoint mechanisms: overloading, inheritance, and templates. 2656 \CC provides three disjoint polymorphic extensions to C: overloading, inheritance, and templates. 2661 2657 The overloading is restricted because resolution does not use the return type, inheritance requires learning object-oriented programming and coping with a restricted nominal-inheritance hierarchy, templates cannot be separately compiled resulting in compilation/code bloat and poor error messages, and determining how these mechanisms interact and which to use is confusing. 2662 2658 In contrast, \CFA has a single facility for polymorphic code supporting type-safe separate-compilation of polymorphic functions and generic (opaque) types, which uniformly leverage the C procedural paradigm. … … 2712 2708 Tuples are a fundamental abstraction in most functional programming languages, such as Standard ML~\cite{sml} and~\cite{Scala}, which decompose tuples using pattern matching. 2713 2709 2714 2715 \subsection{Control Structures / Declarations / Literals} 2716 2717 Java has default fall through like C/\CC. 2718 Pascal/Ada/Go/Rust do not have default fall through. 2719 \Csharp does not have fall through but still requires a break. 2720 Python uses dictionary mapping. \\ 2721 \CFA choose is like Rust match. 2722 2723 Java has labelled break/continue. \\ 2724 Languages with and without exception handling. 2725 2726 Alternative C declarations. \\ 2727 Different references \\ 2728 Constructors/destructors 2729 2730 0/1 Literals \\ 2731 user defined: D, Objective-C 2710 \subsection{C Extensions} 2711 2712 \CC is the best known C-based language, and similar to \CFA in that both are extensions to C with source and runtime backwards compatibility. 2713 \CC and \CFA have been extensively compared in this paper, but the key difference between their design philosophies is that \CFA aims to be easy for C programmers to understand, by maintaining a procedural paradigm and avoiding complex interactions between extension features. 2714 \CC, on the other hand, has multiple overlapping features (such as the three forms of polymorphism), many of which have complex interactions with its object-oriented design. 2715 As such, though \CC provides good runtime performance and compatibility with C, it has a steep learning curve for even experienced C programmers. 2716 2717 There are many other C extension languages with less usage and dramatic changes than \CC. 2718 Objective-C and Cyclone are two other extensions to C with different design goals than \CFA, as discussed above. 2719 Many other languages extend C with more focused single features. 2720 CUDA\cite{CUDA}, ispc\cite{Pharr12}, and Sierra\cite{Leissa14} add data-parallel primitives to C or \CC; such features have not yet been added to \CFA, but are not precluded by the design. 2721 Other C extensions attempt to provide a more memory-safe C;\TODO{find some} type-checked polymorphism in \CFA covers many of C's memory-safety holes, but more aggressive approaches such as annotating all pointer types with their nullability are contradictory to \CFA's backwards compatibility goals. 2722 2723 % \subsection{Control Structures / Declarations / Literals} 2724 2725 % Java has default fall through like C/\CC. 2726 % Pascal/Ada/Go/Rust do not have default fall through. 2727 % \Csharp does not have fall through but still requires a break. 2728 % Python uses dictionary mapping. \\ 2729 % \CFA choose is like Rust match. 2730 2731 % Java has labelled break/continue. \\ 2732 % Languages with and without exception handling. 2733 2734 % Alternative C declarations. \\ 2735 % Different references \\ 2736 % Constructors/destructors 2737 2738 % 0/1 Literals \\ 2739 % user defined: D, Objective-C 2732 2740 2733 2741 \section{Conclusion and Future Work}
Note: See TracChangeset
for help on using the changeset viewer.