Ignore:
Timestamp:
Aug 3, 2024, 9:40:56 AM (10 hours ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
master
Parents:
8789ae4
Message:

proofread thesis frontpgs and intro

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/jiada_liang_MMath/uw-ethesis-frontpgs.tex

    r8789ae4 r433e2c3  
    131131\begin{center}\textbf{Abstract}\end{center}
    132132
    133 % An enumeration is a type defining an ordered set of named constant values, where a name abstracts a value, \eg @PI@ versus @3.145159@.
    134 % C restrict an enumeration type to the integral type @signed int@, which \CC support, meaning enumeration names bind to integer constants.
    135 % \CFA extends C enumerations to allow all basic and custom types for the enumeration type, like other modern programming languages.
    136 % Furthermore, \CFA adds other useful features for enumerations to support better software-engineering practices and simplify program development.
    137 The \CFA (C-for-all) programming language is an evolutionary refinement of C programing language. One of its distinctive feature is the generic
    138 types. But legacy data type from C, such as enumerations, does not adapt well into the \CFA generic type system.
    139 
    140 This thesis presents an adaptation of enumerated types, in a way that integrates naturallly with the generic type feature of \CFA while being
    141 backward-compatiable to C. This thesis also presents a number of smaller refinement to the \CFA overload resolution rules for enumerated types,
    142 each of which improves the intuitive nature of enumerations.
    143 The enumeration types improvement has been implemented into \CFA compiler and run-time environment. The root ideas behinds the change of
    144 enumeration is to discover the approach of C data types working with \CFA generic types in order to improve the language expressiveity and safety.
     133An \emph{enumeration} is a type defining a (ordered) set of named constant values.
     134\begin{cfa}
     135enum Week { Mon, Tue, Wed, Thu, Fri, Sat, Sun };
     136enum Math { PI = 3.14159, Tau = 6.28318, Phi = 1.61803 };
     137enum RGB { Red = 100b, Green = 010b, Blue = 001b };
     138\end{cfa}
     139Its purpose is for readability: replacing constant values in a program with symbolic names that are more meaningful to programmers in the context of the application.
     140Thereafter, associating a name to a different value automatically distributes this rebinding, preventing errors.
     141One of the key properties of an enumeration is the ability to enumerate (iterate) through the constants, and hence, access their values, if present.
     142C restricts an enumeration to the integral type @signed int@, while \CC extends enumerations to all integral types, meaning enumeration names must bind to integer constants.
     143Other modern programming languages provide bindings to any type and additional features to extend enumeration capabilities for better software-engineering practices.
     144
     145The \CFA (C-for-all) programming language is an evolutionary refinement of the C programing language.
     146One of its distinctive feature is a parametric-polymorphic generic type.
     147However, legacy data types from C, such as enumerations, do not adapt well into the \CFA generic type-system.
     148
     149This thesis extends the simple and unsafe enumeration type in the C programming language into a complex and safe enumeration type in the \CFA programming-language, while maintaining backwards compatibility with C.
     150The major contribution is an adaptation of enumerated types with the \CFA type-system in a way that integrates naturally with the generic types.
     151This thesis also presents a number of smaller refinement to the \CFA overload resolution rules for enumerated types, each of which improves the intuitive nature of enumeration name resolution by the compiler.
     152Finally, this work adds other useful features to enumerations that better support software-engineering practices and simplify program development.
     153
    145154\cleardoublepage
    146155\phantomsection    % allows hyperref to link to the correct page
     
    151160\begin{center}\textbf{Acknowledgements}\end{center}
    152161
    153 To begin, I would like to thank my supervisor Proferssor Peter Buhr. Thank you for your guidance and
    154 support throughout my study and research. I would not be here without you.
    155 
    156 Thanks Gregor Richards and Yzihou Zhang for reading my thesis.
     162To begin, I would like to thank my supervisor Professor Peter Buhr.
     163Thank you for your guidance and support throughout my study and research.
     164I would not be here without you.
     165
     166Thanks to Gregor Richards and Yzihou Zhang for reading my thesis.
    157167
    158168Special thanks to Andrew James Beach for your insight on the theory development on the thesis.
    159169
    160170Thanks to Michael Brooks, Fangran Yu, Colby Parsons, Thierry Delisle, Mubeen Zulifiqar,
    161  and entire Cforall team for development of the \CFA language, making it the best language it can be.
     171and the entire \CFA team for development of the \CFA language, making it the best language it can be.
    162172
    163173Finally, a special thank you to Huawei Canada for funding this work.
Note: See TracChangeset for help on using the changeset viewer.