- Timestamp:
- Apr 16, 2017, 9:14:41 PM (8 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:
- 02d241f
- Parents:
- 10e0fcd
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/generic_types/generic_types.tex
r10e0fcd r19b2133 1060 1060 While the Cyclone design provides the efficiency benefits discussed in Section~\ref{sec:generic-apps} for dtype-static polymorphism, it is more restrictive than \CFA's general model. 1061 1061 1062 \cite p{obj-c-book} is an industrially successful extension to C.1062 \citet{obj-c-book} is an industrially successful extension to C. 1063 1063 However, Objective-C is a radical departure from C, using an object-oriented model with message-passing. 1064 Objective-C did not support type-checked generics until recently~\cite p{xcode7}, historically using less-efficient and more error-prone runtime checking of object types.1065 The~\cite p{GObject} framework also adds object-oriented programming with runtime type-checking and reference-counting garbage-collection to C;1064 Objective-C did not support type-checked generics until recently~\citet{xcode7}, historically using less-efficient and more error-prone runtime checking of object types. 1065 The~\citet{GObject} framework also adds object-oriented programming with runtime type-checking and reference-counting garbage-collection to C; 1066 1066 these features are more intrusive additions than those provided by \CFA, in addition to the runtime overhead of reference-counting. 1067 \cite p{Vala} compiles to GObject-based C, and so adds the burden of learning a separate language syntax to the aforementioned demerits of GObject as a modernization path for the existing C code-bases.1067 \citet{Vala} compiles to GObject-based C, and so adds the burden of learning a separate language syntax to the aforementioned demerits of GObject as a modernization path for the existing C code-bases. 1068 1068 Java~\citep{Java8} included generic types in Java~5; 1069 1069 Java's generic types are type-checked at compilation and type-erased at runtime, similar to \CFA's. … … 1071 1071 Java is also a garbage-collected, object-oriented language, with the associated resource usage and C-interoperability burdens. 1072 1072 1073 D~\citep{D}, Go ~\citep{Go}, and~\citep{Rust} are modern, compiled languages with abstraction features similar to \CFA traits, \emph{interfaces} in D and Go and \emph{traits} in Rust.1073 D~\citep{D}, Go, and~\citet{Rust} are modern, compiled languages with abstraction features similar to \CFA traits, \emph{interfaces} in D and Go and \emph{traits} in Rust. 1074 1074 However, each language represents a significant departure from C in terms of language model, and none has the same level of compatibility with C as \CFA. 1075 1075 D and Go are garbage-collected languages, imposing the associated runtime overhead.
Note: See TracChangeset
for help on using the changeset viewer.