Presentation: Four programming languages from forty years ago (2018)
fsharpforfunandprofit.com
fsharpforfunandprofit.com
- SQL
- Prolog
- ML (Meta Language)
- Smalltalk
- A surprise bonus language revealed near the end of the talk
Presentation description:
"The 1970’s were a golden age for new programming languages, but do they have any relevance to programming today? Can we still learn from them?"
"In this talk, we’ll look at four languages designed over forty years ago — SQL, Prolog, ML, and Smalltalk — and discuss their philosophy and approach to programming, which is very different from most popular languages today."
Some quotes from the talk:
"So what can we learn from the 1970s? Some interesting things that we haven't really caught up [today]...Pretty much everything that we can think of as modern programming happened in the 1970s"
The following programming paradigms stabilised by the early-1980s: Imperative, Object-oriented, Functional, Symbolic, Logic, Stack-based:
"What's interesting is all these paradigms really solidified by the late 70s and early 80s, and these are the paradigms we still use today. We really haven't progressed that much."
Have related fields like, say, Mathematics changed a great deal since then?
In math it moves monotonically upwards, slowly but steadily.
https://www.youtube.com/watch?v=IOiZatlZtGU "Propositions as Types" by Philip Wadler
If you have garbage collection (more so for GC that moves objects around), lazy sequences, strings that aren’t byte sequences terminated by zeroes, etc. your C compatibility layer will have warts.
If you really need to call C, and want that to be performant, that may limit your design options. Python is a clear example.
For arrays, multi-dimensional ones are tricky, as is returning them from calls.
And then, there’s structure, with C’s insistence that fields in a structure get stored in declaration order and structure padding.
- FORTRAN (no surprise here, I was an EE major not CS)
- Pascal (this was the new kid on campus at the time, only the CS folks used it)
- MIX (Knuth's generic assembly language)
- FORTRAN (heavy on the numerical methods)
- MIX (only in a side project)
- PL/C (a really nifty "training wheels" version of PL/1)
- BASIC (on a PDP-series computer with a room full of ASR-33's)
"A=B+13 ei pysy samana". (= Does not stay the same)
After some pondering I realized that this man did not see the program as sequence of actions, but statements of relations and truths, which computer magically solves.Very interesting idea, could this be more natural way of programming? But then I found MuMath from some BBS, and realized this new programming language of mine was just extended equation solver.
Here's a trivial example:
Column {
Dial {
id: dial
from: 10
to: 100
value: 30
}
Text {
text: (dial.value * 100) + "°C"
font.pointSize: dial.value
}
}
whenever the slider's value changes, all the properties of the text are automatically updated. Live demo: https://tinyurl.com/2p5z5ufcI know exactly what the presenter means when he says learning a language should be a "mind-blown" event. It's opening my eyes to an entirely new way of thinking about solving challenges. Absolutely love it, and I feel like I did myself a serious disservice for not learning something like Elixir or Erlang earlier in my career as opposed to always learning just another new imperative language.
When I use most other languages ever since, there's always a part of me that knows this little piece of the program could be that much more elegant and robust in Erlang...