| > writing code that can be easily corrected is arguably just as important! The easiest to correct errors are the ones that are detected as early as possible. > No programming language can prevent all bugs. Not even most bugs. Sure. No programming language can prevent you from misunderstanding a specification. But some languages can prevent you from missing out corner cases in your case analysis, or from redundantly writing overspecific code that works in essentially the same way for a wide range of data types. > In practice, I have even found that constructs and limitations that are intended to prevent bugs of one type can lead to bugs of some other type. I have no idea what you are going on about. What kind of bugs do features like algebraic data types (Haskell, ML), smart pointers (Rust, to a lesser degree C++), effect segregation (Haskell) and module systems (ML, Rust) lead to? I can only see the bugs they prevent. Normally, the kind of feature that "leads to bugs of some other type" does not try to prevent bugs in first place, just mitigate their consequences. For example, bounds-checked array indexing does not try to prevent programmers from using wrong array indices, it just turns what would be a segfault into an IndexOutOfRangeException. > Personally, one of my top criteria is to choose a language with which those who will write and maintain the software (now and in the future) are going to be most productive. I see writing buggy code as negative productivity. So a language that gives you the illusion that you are writing correct code, when you in fact are not, actually makes you less productive. |
For example, one possible list of properties might be conciseness, correctness, documentation, efficiency, maintainability, portability, readability, and testability.
Often, I can learn a great deal about what sort of person I’m talking to just by watching them define their terms, decide what assumptions they think are necessary, and then reason through the resulting dependencies.
I get the feeling that the parent posters (hercynium and catnaroek) might argue for quite different orders, but both with good reasons.