3 ms·
As a relatively new programmer, I’m kinda of baffled it took up to now to have these features in mainstream programming languages, but I certainly lack a huge a
by klysm 7y ago
As a relatively new programmer, I’m kinda of baffled it took up to now to have these features in mainstream programming languages, but I certainly lack a huge amount of historical context.
- ludamad 7y agoMainly that there are many ways to express things, and inertia means reasonably effective solutions within existing type systems limits the push for more expressivity. Programming languages are slowly converging on features (e.g. lambdas) but it's a slow convergence. I think programming languages over time will get more complex, but more concepts will be portable
- DaiPlusPlus 7y agoThroughout the 1990s and early-2000s when Object-oriented programming and its spin-off: Component-oriented programming, were popular, there wasn't any interest in functional programming nor concepts like immutability (which, at face-value, flies in the face of OOP (until you gain a deeper understanding and agree it's a very good thing)). Haskell itself didn't attract much attention until the mid-2000s.
- WorldMaker 7y agoTo some extent a lot of these ideas are still "new", comparatively, to type systems. It's also easy to argue that Typescript (and Flow, not to ignore its contributions to the space) happened upon exactly the right sort of evolutionary conditions to both need a lot of the complicated features and present them in such a way that they appealed to a "mainstream" audience: a very dynamic base language with a giant corpus of highly varied real world usage, and a growing need for practical "taming" for large real world applications by large corporations (with vested programming language interests). It's a credit to Typescript (and to Flow as well) that a lot of the complexity in its type system, often designed as best as it could to handle describing the complexity of real world Javascript usage, seems after the fact as "perfectly natural" enough that now in retrospect people start to wonder why more languages don't adopt the same ideas. Sometimes the simple answer is "because they weren't forced to in order to scratch a present need". As people have access to the tools it becomes easier to see "oh, this complex thing that solves this need over here becomes a useful thing to better these nice-to-haves over there".