Changeset 6fe4a7f for doc


Ignore:
Timestamp:
Aug 17, 2025, 9:34:10 PM (5 weeks ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
master
Children:
fb7bf3f
Parents:
fa8d17f
Message:

start conclusion

File:
1 edited

Legend:

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

    rfa8d17f r6fe4a7f  
    11\chapter{Conclusion}
     2
     3This thesis performed a detailed examination of the three most important high-level containers in many programming languages: array, linked-list, and string.
     4The goal of the work is to make containers easier to use, performant and safer.
     5Since some subset of these three containers are used in almost every program in every programming language, this is a laudable goal.
     6Accomplishing this goal in C is difficult because these features are poorly designed.
     7By extending C into \CFA, it is possible to augment the programming language to provide better support and significant safety.
     8The result is code that is easier to write, maintain, safer from hacker attach-vectors.
    29
    310\section{Lists}
    411
     12The key takeaway for lists is that intrusive lists can be made easy to use, performant by eliminating implicit memory allocation, and able to simulate wrapped lists, whereas wrapped lists cannot simulate intrusive lists.
     13
    514\section{Arrays}
     15
     16The key takeaway for arrays is that the type system must be extended to properly manage array bounds (dimension) to safely pass arrays to (polymorphic) functions.
     17By adding a special kind of template constant to \CFA, @[N]@, the type system understands array bounds and implicitly associates these bounds with array instances, statically and dynamically, throughout the programming language.
     18Array overruns are no longer possible because all subscripting is checked, as in other modern languages.
     19Subscript checking can be implicitly elided when the compiler is given sufficient information to determine the subscript variable is always in bounds, giving performant execution.
     20
     21The ability to slice a higher-dimensional array into subarrays is also a powerful and safety critical feature.
     22
    623
    724\section{Strings}
    825
     26The key takeaway for strings is that providing powerful and safe block operations for manipulating strings is more important than ultra-level performance.
     27Manipulating strings is always going to be expensive because of their dynamic variable sizing, as the hardware rarely has string-level operations, possibly only move and compare.
     28This work designs an expressive set of safe string operations for composing, comparing, and decomposing arbitrary length strings, include complex reading and printing operations.
     29
     30
    931\section{Future Work}
     32
     33All three forms of containers presented in this work are in their nascence both in design and implementation.
     34This work provides the foundation for future students to add more functionality and provide more robust and performant implementations.
     35
Note: See TracChangeset for help on using the changeset viewer.