Changeset 6cf21ed8 for doc/theses/andrew_beach_MMath/intro.tex
- Timestamp:
- Aug 31, 2021, 1:23:59 PM (3 years ago)
- Branches:
- ADT, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, pthread-emulation, qualifiedEnum
- Children:
- 0660962c, e37db112
- Parents:
- 0a55a53
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/andrew_beach_MMath/intro.tex
r0a55a53 r6cf21ed8 125 125 with papers on the subject dating back 70s.\cite{Goodenough75} 126 126 Early exceptions were often treated as signals, which carried no information 127 except their identity. Ada still uses this system.\todo{cite Ada} 127 except their identity. 128 Ada originally used this system\cite{Ada}, but now allows for a string 129 message as a payload\cite{Ada12}. 128 130 129 131 The modern flag-ship for termination exceptions is \Cpp, 130 132 which added them in its first major wave of non-object-orientated features 131 in 1990. 132 \todo{cite https://en.cppreference.com/w/cpp/language/history} 133 in 1990.\cite{CppHistory} 133 134 Many EHMs have special exception types, 134 135 however \Cpp has the ability to use any type as an exception. … … 146 147 impossible to actually handle any errors. 147 148 148 Java was the next popular language to use exceptions. \todo{cite Java}149 Java was the next popular language to use exceptions.\cite{Java8} 149 150 Its exception system largely reflects that of \Cpp, except that requires 150 151 you throw a child type of \code{Java}{java.lang.Throwable} … … 181 182 % http://bitsavers.informatik.uni-stuttgart.de/pdf/xerox/parc/techReports/ 182 183 % CSL-79-3_Mesa_Language_Manual_Version_5.0.pdf 183 Mesa is one programming language that did.\ todo{citeMesa} Experience with Mesa184 Mesa is one programming language that did.\cite{Mesa} Experience with Mesa 184 185 is quoted as being one of the reasons resumptions were not 185 186 included in the \Cpp standard. … … 210 211 languages, replaced by ``panic". 211 212 In Rust, a panic is just a program level abort that may be implemented by 212 unwinding the stack like in termination exception handling.\todo{cite Rust}213 % https://doc.rust-lang.org/std/panic/fn.catch_unwind.html 213 unwinding the stack like in termination exception 214 handling.\cite{RustPanicMacro}\cite{RustPanicModule} 214 215 Go's panic through is very similar to a termination, except it only supports 215 216 a catch-all by calling \code{Go}{recover()}, simplifying the interface at 216 the cost of flexibility.\ todo{cite Go}217 the cost of flexibility.\cite{Go:2021} 217 218 218 219 %\subsection … … 291 292 This difference is less important in higher-level scripting languages, 292 293 where using exception for other tasks is more common. 293 An iconic example is Python's \code{Python}{StopIteration} exception that 294 An iconic example is Python's 295 \code{Python}{StopIteration}\cite{PythonExceptions} exception that 294 296 is thrown by an iterator to indicate that it is exhausted. 295 297 When paired with Python's iterator-based for-loop this will be thrown every 296 time the end of the loop is reached. 297 \todo{Cite Python StopIteration and for-each loop.} 298 % https://docs.python.org/3/library/exceptions.html#StopIteration 298 time the end of the loop is reached.\cite{PythonForLoop}
Note: See TracChangeset
for help on using the changeset viewer.