When you make a golden master on Floppies or CDROM...
# linking-together
e
When you make a golden master on Floppies or CDROM, you have to test very thoroughly, and do the production in batches for fear of a bug being discovered. I went through 14 releases over 5 years, so there weren't a lot of bugs. The thing i had going for me was using Modula-2 which is like C with all the runtime and strong typing checks. For some reason Modula-2 didn't catch on like Pascal its 10 year predecessor, and i was one of only 100 people or so in the USA who bothered to use it. Exactly matches C feature-wise, but incredibly code bases are only about half the length because of the superior code sharing brought about by the clever module system. the ES 2016 JS module system is a bastard child of the Modula-2 system; they bungled a whole bunch of details.
👍 1
i
I wrote my own module system a handful of years ago, and in the time since it's been the single biggest multiplier on my productivity. Along the same lines, I feel the
ns
macro in Clojure is a secret weapon. And yeah, I'm not fond of that JS module system. Thankfully, I've never needed to use it. What became of the Modula family?
g
ivan do you host that module system on github somewhere? I would love to learn more about the philosophy
i
https://github.com/cdig/take-and-make It's designed assuming you'll use it with CoffeeScript, but it should work fine with any compiles-to-JS (though it might not be quite as useful). The docs explain how to use it, but not necessarily why it's nice (and thus offers a productivity win, for me). If you're curious about that, shoot me a DM, since it's pretty weedy.
g
great! I’ll check it out, thanks!
e
Prof. Wirth wrote Pascal, a huge success and the UCSD pascal system was a contender for the IBM PC. However MS got the contract, and that finished that off. 10 years later was Modula-2, then later was Oberon. Oberon was used to make a whole OS from bare hardware, an incredible achievement for a team of only two dozen people. They sold hardware for a while, called the Lilith machine. It was inspired by Wirth's sabbatical at Xerox PARC; his version of the Alto machine. Anyway Oberon had a design flaw where Wirth had removed enumerated types which are omnipresent in Modula-2, and the thousands of people who had built up huge code bases around the world couldn't easily migrate their code, because when you remove a key feature from a language, it means a massive refactoring effort for minimal benefits. So he derailed his user base by not creating a bridge from his prior work. Academics live in their own world, and they get a fresh crop of graduate students on which to experiment every year, but commercial companies build a code base and sell it for decades, and depend on continuity, and any major change has to have a clean migration path or it doesn't happen. Which is why COBOL is still used in places, because there was no perceived easy way out short of a complete rewrite. The whole love of Linux to me seems ill-founded; the Oberon system with dynamic linking and the fantastic simplicity is less than 1/10th the complexity of Linux. What really bothers me about the end of the Lilith/Oberon project is that i haven't seen a practical tool that i wanted to use come out of academia since. Some brutal disconnection process has occurred between Academics and industry. I have no idea why, but i can sure see the results.
👍 2
❤️ 2
i
I'm surprised you're also a fan of dynamic linking, what with the vitriol you heap on OO 😉. But that goes to show that these ideas like OO and FP are, indeed, more granular than the typical zealotry allows. Thanks for sharing these anecdotes!
d
What's bungled in the JS module system, in your view?