Changeset 72b0573 for doc/theses
- Timestamp:
- Sep 18, 2018, 5:01:11 PM (7 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, no_list, persistent-indexer, pthread-emulation, qualifiedEnum
- Children:
- e523b07
- Parents:
- 56b53b2 (diff), 91a950c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- doc/theses
- Files:
-
- 5 added
- 5 deleted
- 102 moved
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/aaron_moss_PhD/phd/introduction.tex
r56b53b2 r72b0573 4 4 In the 30 years since its first standardization, it has consistently been one of the most popular programming languages, with millions of lines of C code still in active use, and tens of thousands of trained programmers producing it. The TIOBE index\cite{TIOBE} tracks popularity of programming languages over time, and C has never dropped below second place: 5 5 6 \begin{table} 6 \begin{table}[h] 7 7 \label{tiobe-table} 8 8 \caption[TIOBE index over time]{Current top 5 places in the TIOBE index averaged over years} … … 20 20 21 21 The impact of C on programming language design is also obvious from Table~\ref{tiobe-table}; with the exception of Python, all of the top five languages use C-like syntax and procedural control structures. 22 \CC is even a largely backwards-compatible extension of C, with development dating back nearly as far as C itself.22 \CC{} is even a largely backwards-compatible extension of C, with development dating back nearly as far as C itself. 23 23 Though its lasting popularity and wide impact on programming language design point to the continued relevance of C, they also highlight the widespread desire of programmers for languages with more expressive power and programmer-friendly features; accommodating both low-impact maintenance of legacy C code and low-effort development of the software of the future is a difficult task for a single programming language. 24 24 … … 30 30 This thesis is focused on making \CFA{} a more powerful and expressive language, both by adding new features to the \CFA{} type system and ensuring that both added and existing features can be efficiently implemented in \CFACC{}, the \CFA{} reference compiler. 31 31 Particular contributions of this work include design and implementation of 32 parametric-polymorphic (``generic'') types in a manner compatible with the existing polymorphism design of \CFA{} (Chapter~\ref{generic-chap}), a type environment data structure based on a novel variant of the union-find algorithm (Chapter~\ref{env-chap}), and a new expression resolution algorithm designed to quickly locate the optimal declarations for a \CFA{} declaration (Chapter~\ref{resolution-chap}).32 parametric-polymorphic (``generic'') types in a manner compatible with the existing polymorphism design of \CFA{} (Chapter~\ref{generic-chap}), a type environment data structure based on a novel variant of the union-find algorithm (Chapter~\ref{env-chap}), and a new expression resolution algorithm designed to quickly locate the optimal declarations for a \CFA{} expression (Chapter~\ref{resolution-chap}). 33 33 This expression resolution algorithm was designed with the aid of a purpose-built prototype system which encapsulates the essential aspects of the \CFA{} type system without incurring the technical debt of the existing system or the friction-inducing necessity of maintaining a working compiler; the goal of this prototype system was to discover effective heuristics to avoid performing unnecessary work in the process of locating the optimal \CFA{} expression resolution. 34 34 35 35 Though the direction and validation of this work was fairly narrowly focused on the \CFA{} programming language, the tools used and results obtained should be of interest to a wider compiler and programming language design community. 36 36 In particular, with the addition of \emph{concepts} in \CCtwenty{}, conforming \CC{} compilers must support a model of type assertions very similar to that in \CFA{}, and the algorithmic techniques used in the expression resolution algorithm presented here may prove useful. 37 Type environments are also widely modelled in compiler implementations, particularly of functional languages, though also increasingly commonly in other languages (such as Rust) which alsoperform type inference; the type environment presented here may be useful to those language implementers.37 Type environments are also widely modelled in compiler implementations, particularly of functional languages, though also increasingly commonly in other languages (such as Rust) which perform type inference; the type environment presented here may be useful to those language implementers. -
doc/theses/aaron_moss_PhD/phd/macros.tex
r56b53b2 r72b0573 20 20 21 21 \newcommand{\TODO}[1]{\textbf{TODO:} \textit{#1}} 22 \newcommand{\cit}{\textsuperscript{[citation needed]}} -
doc/theses/aaron_moss_PhD/phd/resolution-heuristics.tex
r56b53b2 r72b0573 3 3 4 4 Talk about the resolution heuristics. This is the bulk of the thesis. 5 6 % Discuss changes to cost model, as promised in Ch. 2 -
doc/theses/aaron_moss_PhD/phd/thesis.tex
r56b53b2 r72b0573 57 57 urlcolor=black} 58 58 }{} % end of ifthenelse (no else) 59 60 \input{cfa-macros} % must be loaded after hyperref 59 61 60 62 % \usepackage[automake,toc,abbreviations]{glossaries-extra} % Exception to the rule of hyperref being the last add-on package … … 139 141 \addcontentsline{toc}{chapter}{\textbf{References}} 140 142 141 \bibliography{ aaron-thesis}143 \bibliography{pl} 142 144 % Tip 5: You can create multiple .bib files to organize your references. 143 145 % Just list them all in the \bibliogaphy command, separated by commas (no spaces).
Note:
See TracChangeset
for help on using the changeset viewer.