Changeset 48b9b36 for doc/papers/general
- Timestamp:
- May 16, 2018, 10:50:48 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, with_gc
- Children:
- 4358c1e
- Parents:
- e9a7e90b
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/papers/general/Paper.tex
re9a7e90b r48b9b36 53 53 %\newcommand{\TODO}[1]{\textbf{TODO}: {\itshape #1}} % TODO included 54 54 \newcommand{\TODO}[1]{} % TODO elided 55 56 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 55 57 56 58 % Default underscore is too low and wide. Cannot use lstlisting "literate" as replacing underscore … … 163 165 literate={-}{\makebox[1ex][c]{\raisebox{0.4ex}{\rule{0.8ex}{0.1ex}}}}1 {^}{\raisebox{0.6ex}{$\scriptstyle\land\,$}}1 164 166 {~}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}}1 % {`}{\ttfamily\upshape\hspace*{-0.1ex}`}1 165 {<-}{$\leftarrow$}2 {=>}{$\Rightarrow$}2 {->}{\makebox[1ex][c]{\raisebox{0.4ex}{\rule{0.8ex}{0.075ex}}}\kern-0.2ex{\textgreater}}2, 167 {<}{\textrm{\textless}}1 {>}{\textrm{\textgreater}}1 168 {<-}{$\leftarrow$}2 {=>}{$\Rightarrow$}2 {->}{\makebox[1ex][c]{\raisebox{0.5ex}{\rule{0.8ex}{0.075ex}}}\kern-0.2ex{\textrm{\textgreater}}}2, 166 169 moredelim=**[is][\color{red}]{`}{`}, 167 170 }% lstset … … 203 206 204 207 The goal of the \CFA project (pronounced ``C-for-all'') is to create an extension of C that provides modern safety and productivity features while still ensuring strong backwards compatibility with C and its programmers. 205 Prior projects have attempted similar goals but failed to honour C programming-style; for instance, adding object-oriented or functional programming with garbage collection is a non-starter for many C developers. 208 Prior projects have attempted similar goals but failed to honour C programming-style; 209 for instance, adding object-oriented or functional programming with garbage collection is a non-starter for many C developers. 206 210 Specifically, \CFA is designed to have an orthogonal feature-set based closely on the C programming paradigm, so that \CFA features can be added \emph{incrementally} to existing C code-bases, and C programmers can learn \CFA extensions on an as-needed basis, preserving investment in existing code and programmers. 207 211 This paper presents a quick tour of \CFA features showing how their design avoids shortcomings of similar features in C and other C-like languages. … … 219 223 220 224 \section{Introduction} 225 221 226 The C programming language is a foundational technology for modern computing with millions of lines of code implementing everything from commercial operating-systems to hobby projects. 222 227 This installation base and the programmers producing it represent a massive software-engineering investment spanning decades and likely to continue for decades more. … … 2000 2005 Destruction parameters are useful for specifying storage-management actions, such as de-initialize but not deallocate.}. 2001 2006 \begin{cfa} 2002 struct VLA { int len, * data; }; 2007 struct VLA { int len, * data; }; $\C{// variable length array of integers}$ 2003 2008 void ?{}( VLA & vla ) with ( vla ) { len = 10; data = alloc( len ); } $\C{// default constructor}$ 2004 2009 void ^?{}( VLA & vla ) with ( vla ) { free( data ); } $\C{// destructor}$
Note: See TracChangeset
for help on using the changeset viewer.