Changeset 6224eeb for doc/theses/mike_brooks_MMath/intro.tex
- Timestamp:
- Apr 27, 2026, 8:05:23 PM (29 hours ago)
- Branches:
- master
- Children:
- c910d308
- Parents:
- b3e77cc
- File:
-
- 1 edited
-
doc/theses/mike_brooks_MMath/intro.tex (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/mike_brooks_MMath/intro.tex
rb3e77cc r6224eeb 1 1 \chapter{Introduction} 2 2 3 All modern programming languages provide at least these three high-level co ntainers (collections): array, linked-list, and string.3 All modern programming languages provide at least these three high-level collections (containers): array, linked-list, and string. 4 4 Often, the array is part of the programming language, while linked lists are built from (recursive) pointer types, and strings from arrays and/or linked lists. 5 5 For all three types, languages and/or their libraries supply varying degrees of high-level mechanisms for manipulating these objects at the bulk and component levels, such as copying, slicing, extracting, iterating among, adding and removing elements. … … 39 39 Therefore, hardening the three primary collections goes a long way to making the majority of C programs safer, eliminating major hacker attack vectors. 40 40 41 My work looks at extending these foundational co ntainertypes in the programming language \CFA, which is a new dialect of the C programming language.41 My work looks at extending these foundational collection types in the programming language \CFA, which is a new dialect of the C programming language. 42 42 A primary goal of \CFA~\cite{Cforall} is 99\% backward compatibility with C, while maintaining a look and feel that matches with C programmer experience and intuition. 43 43 This goal requires ``thinking inside the box'' to engineer new features that ``work and play'' with C and its massive legacy code-base. 44 44 An equally important goal is balancing good performance with safety. 45 45 46 The thesis describes improvements I made to the \CFA language design, both syntax and semantics, to support the co ntainerfeatures, and the source code created within the \CFA compiler, libraries, and runtime system to implement these features.46 The thesis describes improvements I made to the \CFA language design, both syntax and semantics, to support the collection features, and the source code created within the \CFA compiler, libraries, and runtime system to implement these features. 47 47 This work leverages preexisting work within the compiler's type and runtime systems generated by prior graduate students working on the \CFA project. 48 48 … … 50 50 \section{Array} 51 51 52 An array provides a homogeneous co ntainerwith $O(1)$ access to elements using subscripting.52 An array provides a homogeneous collection with $O(1)$ access to elements using subscripting. 53 53 Higher-level operations like array slicing (single or multidimensional) may have significantly higher cost, but provide a better programmer experience. 54 54 The array size can be static, dynamic but fixed after creation, or dynamic and variable after creation. … … 64 64 \section{Linked List} 65 65 66 A linked-list provides a homogeneous co ntaineroften with $O(n)$ access to elements using successor and predecessor operations that involve pointer chasing.66 A linked-list provides a homogeneous collection often with $O(n)$ access to elements using successor and predecessor operations that involve pointer chasing. 67 67 It is the most foundational case of the linked data structures, which include trees and hash tables. 68 68 Among the linked structures, the list's defining characteristic is maintaining a user-explicit total order (chain shape). … … 83 83 hash search table consisting of a key (string) with associated data (@<search.h>@) 84 84 \end{itemize} 85 Because these co ntainerlibraries can be restrictive or awkward to use, C programmers often build bespoke linked data-structures, which further increases the potential for memory errors.85 Because these collection libraries can be restrictive or awkward to use, C programmers often build bespoke linked data-structures, which further increases the potential for memory errors. 86 86 87 87 … … 117 117 \begin{enumerate}[leftmargin=*] 118 118 \item 119 The three primary co ntainertypes in C are difficult to understand, teach, and get right because they are too low level.120 Providing higher-level, feature-rich versions of these co ntainers in \CFA is a major component of the primary goal.119 The three primary collection types in C are difficult to understand, teach, and get right because they are too low level. 120 Providing higher-level, feature-rich versions of these collections in \CFA is a major component of the primary goal. 121 121 The result is a simplified programming experience, which increases productivity and maintainability. 122 122 \item 123 The new co ntainertypes must be as correct and safe to use as those in other modern programming languages, to elide the concerns of industry, government, and military~\cite{ONCD}.123 The new collection types must be as correct and safe to use as those in other modern programming languages, to elide the concerns of industry, government, and military~\cite{ONCD}. 124 124 Prior approaches focus on out-of-bound array accesses using a model-based approach (ASCET) in embedded systems (\eg cars)~\cite{Blache19}, and general and null-terminated string arrays using a \CC template syntax (Checked C)~\cite{Elliott18,Ruef19}. 125 125 Both White House~\cite{WhiteHouse24} and DARPA~\cite{DARPA24} recently released a recommendation to \emph{move away} from C and \CC, because of cybersecurity threats exploiting vulnerabilities in these languages.
Note:
See TracChangeset
for help on using the changeset viewer.