But programming now isn't so much like that, said Sussman. Nowadays you muck around with incomprehensible or nonexistent man pages for software you don't know who wrote. You have to do basic science on your libraries to see how they work, trying out different inputs and seeing how the code reacts. This is a fundamentally different job, and it needed a different course. [...]"
(From http://wingolog.org/archives/2009/03/24/international-lisp-c...)
Everything else is pretty much programmed like this. I've seen things you'd likely describe as "deeply embedded" running a CORBA server so that Java written by one company can communicate with C++ written by another company, integrated by a third company that doesn't have the source to either.
Some automotive software is starting to show some trends towards the airplane approach, but the big exception among safety-critical parts is self-driving cars. Many of them even use ML algorithms for which it is non-trivial to even determine why a particular error was made.
Cost is a big driver of this. Given equally competent programmers, creating formally correct software is 1-2 orders of magnitude at low levels of complexity. Current software-engineering indicates that the difference increases as complexity increases. You can easily end up spending 100x as much for software that has 1% as much complexity.
Much of the time, features drive sales, and sales drive revenue, so the less rigorous software ends up with both higher budget and lower costs.
Posted on a site running on MzScheme.
>Posted on a site running on MzScheme.
Posted on a site running MzScheme, that probably tens, if not hundreds of thousands of people, read often, get useful info from, that is of help to them in the real world, and that many people get jobs from.
Computer science education isn't just vocational training for software development gruntwork, though.
54. Beware of the Turing tar-pit
in which everything is possible
but nothing of interest is easy.
Unlike Scheme, Python requires extensive research of the documentation in order to get the correct syntax and semantics even for the simple code in SICP. It's not just simple facts like operator precedence, it's the conceptual baggage of statements versus expressions. It's the one true way of iteration rather than recursion. It's the arbitrary distinctions of a core language, built in functions, a standard library and PiP. And Python has objects just because. But everything isn't an object.SICP was an introductory programming class (though obviously being used at MIT allowed certain assumptions).
Don't get me wrong, this is in no way an argument against what you said. I'm just offering up a possible answer.
Does anyone know why they did that? I did read about it around the time, but do not remember reading about the reasons. As a Pythonista, and one interested in Lisp, I'd like to know.
Update: Okay, I was going sequentially and did not at first see a few answers (sibling comments) below. Still, if anyone else has any insights, interested to know more.