Since you're here, what do you feel like is a bigger constraint for Google (or the worldwide technical economy) - software engineering discipline or computer science fundamentals? I understand that you work in research, but for a hugely profitable company, so you have the insight to give a good answer.
Good question. I think the engineering discipline part is much harder. I'm not sure that is because the problems really are harder: messier, ill-defined, changing over time; or whether it is that the academic community has focused on more well-defined formal/fundamental questions and mostly nailed them, so what we're left with is the harder messier stuff. Certainly it is easier for me to find someone to hire fresh out of college who has excellent CS fundamentals than to find someone with strong engineering discipline. And while my title included "Research", we all work very closely with Engineering.
Having no formal CS education (I consider myself a coder, not a programmer) I found your spell checker example to be intimidatingly beautiful. It feels like learning to play guitar and hearing Hendrix play: it's fun to do it but kind of depressing knowing I'll never come close.
The more I read from Norvig, the more I am convinced that history will judge him as being one of the most influential computer scientists of the post-Turing era.
His ability to find elegant solutions in the hardest looking problems, and communicate them so well that you feel it was so obvious that you should have found it immediately, is unparalleled.
Norvig is an excellent popularizer and accessible writer, and of course also a very sharp researcher. Because he works in industry I can understand why he might have a higher profile on a site like HN. But "most influential of the post-Turing" era is an incredibly high bar. His personal research contributions are (afaik) on par with what you would expect of a professor at a top school, e.g. Berkeley, where he used to work. But there are hundreds of such people, even just within AI; I think it's only fair to recognize their achievements and influence as well. Personally, my vote for most influential would probably go to someone on the Turing award list... (http://en.wikipedia.org/wiki/Turing_Award)
This is not to dump on Norvig at all - he's smarter and more accomplished than I'll ever be, and between the popularity of his internet writings and his co-authored textbook being used in pretty much every undergraduate AI class taught in the past 20 years, he's certainly one of the most widely read computer scientists of all time; probably more people have read his work than ever read Turing's. I just want to push back a bit on the culture of idolization and hero worship that sometimes develops around popular scientists (see also: Feynman, though he did at least win a Nobel prize); it tends to blind people to the true depth of talent and knowledge that exists in the world.
I have to play Devil's advocate here. An interesting spelling corrector does not place someone in the annals of computer science history as "one of the most influential computer scientists of the post-Turing era."
I think that the spelling corrector was cited to support the grandparent's assertion that Norvig can "communicate them so well that you feel it was so obvious that you should have found it immediately".
"CPL was so new that it had no compiler, nor a complete formal description. Journal articles from 1963 and 1968 and a posthumously published set of notes from 2000 partially describe versions of the language that are slightly different than the one presented in the article."
Apparently a formal definition was finally written down in "CPL working papers", but this was never published. The only place I know which has a copy is the Bodleian library at Oxford:
This makes CPL seem like a pretty odd choice of language for such a widely-read magazine article. He couldn't have expected his readers to be familiar with it, especially since the language was still changing at the time. Did he think it was close enough to pseudo-code that it was ok?
Readers at the time would have expected to do somewhat more work to understand a program; ASCII had only recently been standardised, so even programs in the same language would have slightly different syntax, depending on the computer they were written for (also see stropping: http://en.wikipedia.org/wiki/Stropping_%28programming%29 ).
But fundamentally, he was the designer and major promoter of CPL.
Beautiful. Please read everything this man has ever written. I don't care what you think about Lisp - buy yourself a copy of the Paradigms Of Artificial Intelligence Programming and work through it. It's one of the greatest books on the practice of problem solving ever.
before submitting to Hacker News a link to a press release or low-quality news report about a new research finding. This link is by far my favorite link to post in comments on HN, because the issues brought up in "Warning Signs in Experimental Design and Interpretation" come up over and over and over again in discussions of purported research findings.
That's right. PAIP is like his Python essays online, only 950 pages worth and in Lisp. You don't have to be a fan of Lisp to see that there could be a lot to appreciate there.
There are four parts to this program:
(1) Strachey's checkers program in CPL:
OriginalCPLprogram is the original program, verbatim
ModifiedCPLprogram fixes a typo and two small conceptual problems
(2) A parser for the CPL language. This is encoded in the external
file 'cpl.g', which is then processed by yapps2.py to produce cpl.py,
which we then import, allowing us to use cpl.parse on ModifiedCPLprogram.
(3) Functions described but not implemented by Strachey (such as Null and Shift).
(4) Variable definitions and functions not listed by Strachey.
(5) Test cases.
Mr. Norvig has been a huge inspiration to me ove the years. I sent him an e-mail a couple of years ago with a quick question. He responded within minutes, and as a young lad, that was huge.
It's really inspired me to try and become someone who not only writes and creates brilliant things, but also helps to foster that same ability in the younger generation.
This is a great opportunity for Scientific American to release a few old back issues in digital form. A HTML version of the article in question is available, but it would be nice to see in the original format. The issues are sadly out of print when I visit the links.
I read the whole article without taking a single sip from this cool beer next to my laptop.
In other words: Wow. Amazing. From the 'I read old science magazines on the attic' start to the final 'Let's revive this program, build a translator to python, a test suite and check the result' - the article was an amazing read. Thanks a lot. More of that, please!
This is the first time I've seen the distinction made between waterfall and spiral methodologies, with agile seemingly considered a subset of the spiral model. Any other resources anyone knows about on this distinction?
Rapid Software Development by Steve McConnell, the same guy who wrote Code Complete, is a great pre-XP, pre-Agile book on the software development process that covers the waterfall and spiral models, evolutionary prototyping and delivery, and a host of other approaches.
I almost hate to recommend the book, but our standard text was "Pressman's 5th" and that does have a reasonably comprehensive survey of methodologies. You'd be better off borrowing it than buying it.
It's not hard to see that agile models are pretty closely related to Boehm's spiral model. The spiral model is (afaik) more general, with the agile models focusing more on specific processes/practices.
Tell you what, Ill make a deal: I'll keep writing if you keep reading. K?