Discussion about this post

User's avatar
Mark Sizer's avatar

You make good points, but you are hiding that "lines of text" IS a type. Try using Linux grep on Windows UTF-16 files.

Software development does need better languages and abstractions but people keep inventing new ones that are the same as the old ones. Phyton and Perl are basically the same. New languages that actually shift the programming paradigm are very slow to catch on.

Expand full comment
Yan Ke's avatar

The key point here is that components should have well defined and explicit interfaces, and type systems are one way to write down a part of the contract and to enforce it. Unix pipes don't allow for the components to specify or to enforce such contracts, and thus I would say are much more difficult to maintain - the same commands work differently between Linux and MacOS, for example, or even different versions of the same tool. I think it is a fallacy to compare software engineering versus hardware or mechanical. Can you possibly hope to make changes to circuits or airplanes several times a day, test in an automated way, and deploy to millions of users without fear, even assuming you can physically make those changes in time. That's all because we've built automated ways to test and ensure the correctness of software, and type systems are one of the many important methods to do it.

Expand full comment
7 more comments...

No posts