I wanted to share some recent findings, from the perspective of someone with lots of white hair and memories.
My fantasies around computers started around 8th grade, when I scoured the Time-Life series with titles like Mathematics, The Mind, The Cell, The Body… twenty-six volumes in all.
Back then, real computers were “mainframes” (filled whole rooms) and I hoped maybe I’d meet one in college — which I did. My dorm had an APL terminal in the basement, connected to a mainframe at the computer center.
APL (A Programming Language) was just what I though a computer language should be; it had the appearance of ancient Greek.
Fast forward, a few decades, and we’re looking back on a plethora (a goldmine) of computer languages. One such language is J, a pure blood descendant of APL but with standard ASCII keyboard characters.
Another language, likewise considered somewhat esoteric, is OCaml, a descendant or variant of Standard ML (SML).
OCaml is well understood (mature), and respected, but for its first twenty years has remained out of the limelight. Is OCaml now poised for a new place in the sun? How did we get to where this is even a serious question?
I remember hearing about ML from when I lived in a protected hallway in Queens, courtesy of my friend Ray Simon, and a Chinese graduate student, a computer science major, who was letting Ray sublet a room.
“ML is for computer scientists” was my sense of it back then, when I worked for McGraw-Hill and first considered how “learning to code” might be phased in at the high school level. This was the mid 1980s.
But now, as we close on 2020, Ocaml is making a comeback apparently, in the form of ReasonML.
“What is ReasonML?” you ask. This was new to me too.
The answer involves the frustrations surrounding what’s probably the most explosive language of all time, in terms of lines generated.
Lets rewind a bit and talk about web browsers, officially “clients of the World Wide Web”.
When the “web browser” was still a very new idea, different subcultures started to compete for “control” over the market, meaning they competed with free offerings coupled to websites that might only be experienced in their full glory if one used Internet Explorer and not Netscape or vice versa. In other words, no one common standard had been agreed to, and Microsoft in particular wanted to introduce its own “in-browser” language, in a bid to set standards by being the de facto “king of the hill”.
Whereas Java might have been a godsend to those struggling with C++, and remains a strong language and subculture to this day, it never became the in-browser darling first envisioned.
The browser was becoming the preeminent application of all time in many ways, as the portal to all others.
I’m tempted to rewind back to the advent of the web browser and tell the story again from the perspective of GNU and the free software revolution.
Champions of the internet were likewise at the vanguard of a movement to keep the emerging cyberspace from falling under the control of privately owned technologies.
“GNU is Not Unix” (what GNU stands for) was the project to recreate the world’s best understood and most internet-ready operating system as an asset no one subculture could control. Software engineers were tired of hacking away on these wonderful creations only to be denied access to them when changing jobs or finally obtaining that graduate degree.
Computer scientists call this ability “late binding,” meaning the programmer doesn’t need to commit “up front” to a lot of type-enforcing rules.
Finally, then, we get back to OCaml, which is strictly typed.
You know the word “type” from “stereotype” and “typecast”. When an actor is “typecast” as a villain, that means said actor will have a hard time finding roles as anything but a villain.
In a programming context, the type of an object limits what might be done with it, which in turn serves as a check on whether the program is valid.
As it turns out, when coding complex solutions, the more of our logic we can “freeze” (nail down, make immutable), the easier the program is to reason about, as a rule of thumb.
Keeping code from becoming next to impossible to debug and maintain is a high priority unless you want to pay to have the same applications coded over and over.
Google’s new web development framework, called Angular, incorporates TypeScript as part of its workflow.
Facebook came up with another answer: ReasonML would be fitted over top of OCaml, providing an alternative syntax that turns to standard OCaml under the hood.