Tag: functional programming
Michael Nygard of “Release It!” fame talks with Stefan Tilkov about his experience using the Clojure programming language. Topics include the tool chain and development process, the Clojure learning curve, and on-boarding new developers. Michael explains the similarities and differences compared to typical OO languages when implementing domain logic, and uses both game development and […]
In this Episode we’re talking with Dick Gabriel on Lisp. We started by looking at artificial intelligence as the historic context of Lisp, the goals AI tried to reach, and how Lisp was supposed to help reach those.
We then discussed the language itself, starting with the Data As Program / Program As Data concept that is a foundation for Lisp. Then we discussed adding a meta-circular interpreter, programming as language development, and the blurred boundary between language and frameworks (because everything uses the same syntax). We then talked about Lisp’s type system and the importance of macros to extend the language.
The next section concerned CLOS, the Common Lisp Object System and its important concepts: generic functions, multimethods, mixins, and method combination. We also briefly looked at the meta-object protocol but agreed this is a topic for a separate episode. After a discussion about the various dialects of Lisp and Scheme, we concluded the Lisp discussion by explaining why Lisp did not really catch on (“AI Winter”) and Lisp’s role in today’s industry.
We ended the episode with a couple of details about Dick’s other life as a poet and his Poem a Day effort.
Make sure you listen till the end, where we have added a song about Lisp (courtesy of Prometheus Music.)
In this Episode we talk about the Scala language with its creator Martin Odersky. Scala is a language that fuses object oriented and functional programming. Martin started out by providing a two-minute overview over the language, and then talked a little bit about its history. We then discussed the basics of functional programming. The main part of the episode features a discussion of some of the important features of the Scala language:
- Case Classes and Pattern Matching
- Multiple Inheritance and Compound Types, Traits, Mixins
- Functions as types, “Function pointers”, Anonymous functions
- Higher Order Functions
- (Sequence) Comprehensions
- Type Bounds (Upper, Lower)
- Static/Dynamic Typing, Type Inference
We then talked about Scala’s actors library, a highly scalable concurrency package. The last part of the episode covered some more general topics, such as where and how Scala is used today, IDE support and the user and developer community. We concluded the episode by looking at current development and next steps in Scala language evolution.