Mobile App Development 2021W Lecture 6
Video
The video from the lecture given on January 27, 2021 is now available.
Notes
Lecture 6 ------------ Domain specific languages (DSL) - versus general purpose languages - language designed to specify solutions in a specific domain - SwiftUI can be thought of as a DSL - syntax and semantics are specific to SwiftUI, sometimes in non-obvious ways - but swiftUI is implemented in Swift - so must follow Swift syntax as well DSLs are everywhere in CS, but nowadays we tend to do APIs instead APIs are used to express solutions to a specific problem - but they don't introduce new syntax, just semantics API = application programming interface - essentially, any library defines an API forEach - used to loop, like for - but you normally specify an array and a function - the function is then run on each element of the array in turn - so it is close to map operation - but maps return an array of return values - forEach has no return value - you don't explicitly specify the number of iterations - but it is implicitly defined by the size of the array passed in - nice because you don't have to think about figuring out the size of the array Objective C - we're not covering Obj-C in class - but it is important to know about when doing iOS development Swift was designed to be a modern language, but had to interoperate with Obj-C So, what was Obj-C missing? - safety C isn't safe - unrestricted memory access - C programs segfault (crash) Obj-C isn't safe - only runtime verification of messages Objective C is C plus runtime messages (specified with [ ] syntax) - directly inspired by Smalltalk - smalltalk, everything is an object, and objects communicate through messages - "purest" of the object-oriented languages The lack of safety in Obj-C makes it very flexible, but can create problems for less experienced programmers and can cause problems at scale Modern languages try to catch as many problems at compile time as possible - hence, optional types