Ignore:
Timestamp:
Apr 27, 2026, 8:05:23 PM (29 hours ago)
Author:
Michael Brooks <mlbrooks@…>
Branches:
master
Children:
c910d308
Parents:
b3e77cc
Message:

change to consistent "collection" over "container"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/mike_brooks_MMath/intro.tex

    rb3e77cc r6224eeb  
    11\chapter{Introduction}
    22
    3 All modern programming languages provide at least these three high-level containers (collections): array, linked-list, and string.
     3All modern programming languages provide at least these three high-level collections (containers): array, linked-list, and string.
    44Often, 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.
    55For 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.
     
    3939Therefore, hardening the three primary collections goes a long way to making the majority of C programs safer, eliminating major hacker attack vectors.
    4040
    41 My work looks at extending these foundational container types in the programming language \CFA, which is a new dialect of the C programming language.
     41My work looks at extending these foundational collection types in the programming language \CFA, which is a new dialect of the C programming language.
    4242A 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.
    4343This goal requires ``thinking inside the box'' to engineer new features that ``work and play'' with C and its massive legacy code-base.
    4444An equally important goal is balancing good performance with safety.
    4545
    46 The thesis describes improvements I made to the \CFA language design, both syntax and semantics, to support the container features, and the source code created within the \CFA compiler, libraries, and runtime system to implement these features.
     46The 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.
    4747This work leverages preexisting work within the compiler's type and runtime systems generated by prior graduate students working on the \CFA project.
    4848
     
    5050\section{Array}
    5151
    52 An array provides a homogeneous container with $O(1)$ access to elements using subscripting.
     52An array provides a homogeneous collection with $O(1)$ access to elements using subscripting.
    5353Higher-level operations like array slicing (single or multidimensional) may have significantly higher cost, but provide a better programmer experience.
    5454The array size can be static, dynamic but fixed after creation, or dynamic and variable after creation.
     
    6464\section{Linked List}
    6565
    66 A linked-list provides a homogeneous container often with $O(n)$ access to elements using successor and predecessor operations that involve pointer chasing.
     66A linked-list provides a homogeneous collection often with $O(n)$ access to elements using successor and predecessor operations that involve pointer chasing.
    6767It is the most foundational case of the linked data structures, which include trees and hash tables.
    6868Among the linked structures, the list's defining characteristic is maintaining a user-explicit total order (chain shape).
     
    8383hash search table consisting of a key (string) with associated data (@<search.h>@)
    8484\end{itemize}
    85 Because these container libraries can be restrictive or awkward to use, C programmers often build bespoke linked data-structures, which further increases the potential for memory errors.
     85Because 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.
    8686
    8787
     
    117117\begin{enumerate}[leftmargin=*]
    118118\item
    119 The three primary container 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 containers in \CFA is a major component of the primary goal.
     119The three primary collection types in C are difficult to understand, teach, and get right because they are too low level.
     120Providing higher-level, feature-rich versions of these collections in \CFA is a major component of the primary goal.
    121121The result is a simplified programming experience, which increases productivity and maintainability.
    122122\item
    123 The new container 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}.
     123The 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}.
    124124Prior 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}.
    125125Both 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.