3 ms·
The problem with Ada isn't that it's niche. The problem is that it has a gazillion features whose purpose is (ostensibly) to make programming errors easy to pre
by catnaroek 9y ago
The problem with Ada isn't that it's niche. The problem is that it has a gazillion features whose purpose is (ostensibly) to make programming errors easy to prevent, identify and correct, but fail miserably at it. There is more to programming than safety, but if safety is going to be one of your programming language's selling points, then the least you can do is get it right. The process for getting it right consists of the following steps:
(0) Identify a concrete class X of programming errors you want to eradicate.
(1) Postulate a mathematical theory of what it means for a program not to have errors of class X.
(2) Develop proof techniques that are powerful enough to establish that “interesting” programs do not have errors of class X.
(3) Design algorithms that use these proof techniques to prove, or at least validate a purported proof, that a program does not have errors of class X. Your algorithm must be able to analyze program fragments (modules, classes, whatever) independently, and combine information obtained from several program fragments without reanalyzing them from scratch.
- pjmlp 9y agoAnd no one without a PhD in applied mathematics will use it, unless it is ergonomic enough. Ada's failure in the mainstream, besides the compiler prices and hardware requirements of old systems, is lack of support for cowboy programming, so loved by users of languages like C, JavaScript, PHP and other similar ones.
- catnaroek 9y agoIt's an empirical fact that people use languages they couldn't have designed themselves. Designing a safe language requires mathematical sophistication. Using a safe language - less so. As for cowboy programming, Java and C# don't support it all that well, and they are very popular.
- abdulhaq 9y agoYou don't need maths or proofs to improve the safety of a programming language. Also, surely it's as much a psychology /workflow / management issue as much as Rust-like memory management etc.
- catnaroek 9y agoLast time I checked, psychology doesn't affect how a computer program runs.
- abdulhaq 9y agoIt affects the way it is developed: hurriedly, carefully, carelessly, etc. This, in a software team in the real world, is a significant factor in the consequent reliability of the software developed.
- zzzcpan 9y agoThere are many fallacies in your ideas. What do you do about programming errors you cannot identify? And what about programming errors that your process and your language causes? Can you identify those too? Of course not. Once you understand that things you introduce into a language can both help with some problems and cause other problems we can move to ideas on how to identify and classify those things. And of course we cannot do that with math proofs. Programming language design is all about interactions with humans and there is no place for so much ignorance of humans as your comment expresses. And don't get me wrong, you can come up with an arbitrary approach to language design that doesn't involve humans, but it can work for humans only by chance.
- catnaroek 9y ago> What do you do about programming errors you cannot identify? A programming language designer can only do so much for you. If you cannot identify errors in your programs on your own, consider switching to a different career. > And what about programming errors that your process and your language causes? Rigorous reasoning cannot possibly cause any problems. Rigorous reasoning helps identify and fix problems more often than not caused by prior non-rigorous reasoning. > Programming language design is all about interactions with humans Humans who need to reason rigorously in order to do things right, hence need to be pushed in this direction.