Is there anything in software engineering that you rate positively, or would if anyone was doing it? Saying “this is bad” is easy, but what would be better (beyond merely saying “don’t do these bad things”)? Some have tried, notably Dijkstra (who you mention in a comment), and the whole functional programming tradition comes out of that, but why is it still notable and difficult to make a verifiably correct C compiler, and what would have to happen to make such a thing the obvious, no-brainer thing to do?
Some authors have bravely tried to address what I identify as the key issue, which was briefly discussed: acknowledging that software is thought-stuff and that knowledge about the human mind is hugely relevant.
Then there’s the entire topic of “Agile” which is (as of today) even more lacking than software engineering, when considered as a discipline, but which I believe has the potential to get out of the rut where software engineering is stuck, because it’s less committed to its current institutions and ideologies, and more committed to getting results.
I think it’s difficult to make a correct C compiler because C is more or less assembler in fancy clothes, and as such it’s a language burdened with a lot of contigent history of human decisions about processor architectures. It’s easier to make a Lisp interpreter, except that because of this contingent history you can’t have Lisp all the way down, and at some point it becomes hard to make a verifiably correct whatever-it-is that connects the neatly mathematical and elegant formulation to the next layer of implementation down.
This is speculation, but making a “fresh start” from the level of logic gates on up might be the only way to no longer have this problem.
Is there anything in software engineering that you rate positively, or would if anyone was doing it? Saying “this is bad” is easy, but what would be better (beyond merely saying “don’t do these bad things”)? Some have tried, notably Dijkstra (who you mention in a comment), and the whole functional programming tradition comes out of that, but why is it still notable and difficult to make a verifiably correct C compiler, and what would have to happen to make such a thing the obvious, no-brainer thing to do?
Some authors have bravely tried to address what I identify as the key issue, which was briefly discussed: acknowledging that software is thought-stuff and that knowledge about the human mind is hugely relevant.
Then there’s the entire topic of “Agile” which is (as of today) even more lacking than software engineering, when considered as a discipline, but which I believe has the potential to get out of the rut where software engineering is stuck, because it’s less committed to its current institutions and ideologies, and more committed to getting results.
I think it’s difficult to make a correct C compiler because C is more or less assembler in fancy clothes, and as such it’s a language burdened with a lot of contigent history of human decisions about processor architectures. It’s easier to make a Lisp interpreter, except that because of this contingent history you can’t have Lisp all the way down, and at some point it becomes hard to make a verifiably correct whatever-it-is that connects the neatly mathematical and elegant formulation to the next layer of implementation down.
This is speculation, but making a “fresh start” from the level of logic gates on up might be the only way to no longer have this problem.