E. Dijkstra: Computer science is paralyzed by accepting this moron as their typical customer.
cs.utexas.edu
cs.utexas.edu
"I feel that the effort to use machines to try to mimic human reasoning is both foolish and dangerous. It is foolish because if you look at human reasoning as is, it is pretty lousy; even the most trained mathematicians are amateur thinkers. Instead of trying to imitate what we are good at, I think it is much more fascinating to investigate what we are poor at. It is foolish to use machines to imitate human beings, while machines are very good at being machines, and that is precisely something that human beings are very poor at. Any successful AI project by its very nature would castrate the machine."
Lisp was great at the time of its inception if only for a radically new way of using machines. It has suffered the fate of having been elevated to a status of de facto standard with all its defects. Despite its conceptual novelty a lot of the design of Lisp is terribly amateurish even by the standards of the time. When I read the first manual, the Lisp 1.5 manual, published in 1961, I could not believe my eyes. It was an extremely poor language. Now it has become the defacto standard of the AI community, which now suffers from Lisp, the way the rest of the world suffered from Fortran.
The thing is, most of online discussions, especially on YC are revolving around web-based CRUD to-do lists or something similar, whose complexity (something Dijkstra was very much concerned about) is close to zero.
Therefore "current pratices" cannot be used as a good example of software engineering in general, since most "engineers" are too busy dreaming of getting rich by implementing a high school programming project over a weekend and selling it to google.
I am fully aware that I do not represent the common "spirit" of this board by stating these views, but there is no way in hell you can do software for F-22's pilot's helmet can be done using "current practices" you're referring to. In fact, the best "current practice" (as some MBAs believe) is to outsource your typical CURD job to India. Hard to argue with that.
True, a lot of the applications developed today are crap. But a lot of the large scale applications can benefit the same way from test driven development, user stories and iterative development. The problem is a lot of folks overreact to agile and think it means doing no design or thinking at all. That's simply not the case.
Its 2008 and we are still getting interested/excited in CRUD frameworks for web apps?
In fact, I find that I understand the point behind useful programming language constructs (and, yes, their beauty) after spending some time suffering due to the lack of them.
Good luck. :-) Makes me feel more lucky for starting with x86 assembly although I am not sure it's any better than BASIC. God bless us!
Great men once thought that the earth was flat and there were only 4 elements. It is trivial today for even a nitwit to prove otherwise. This does not mean that these great men are now less great or that nitwits are now smarter.
Elitism and snobbery at it's finest--like saying someone whose first bike had training wheels can never learn a ten speed.
BASIC is a gateway programming drug because in many incarnations, it can DO things with a short learning curve, which is rewarding. Many intro comp sci classes start with Waxing Off as opposed to creating something and building interest which then drives the lessons. There's no deeper understanding of WHY an approach is wrong than when you've been bitten by it's ugly consequences.
Given this comment of Dijkstra's and his (hilarious) swipe at PL/I in the article, here's a rather satisfying counterexample:
Up till then I had programmed mostly in Basic and PL/1.
Interesting - well I guess that statement is over 20 years old, but probably still holds true. It also explains his other opinions.
-- sounds like pg taking about Common Lisp loop.