?

Log in

No account? Create an account

Previous Entry | Next Entry

Engineering? Art? Magic!

If you are being (or have recently been) taught CS but not in Lisp (or Scheme, or any functional language whatsoever), you should do yourself a lifetime favor by downloading videos and the textbook of the famous Abelson and Sussman's MIT CS 6.001 course. Lisp is one of the easiest languages to learn there on Earth, the functional paradigm is unmatched in its power and expressiveness, the course is delivered by two famous teachers: you've got 20 hours of professionally enlightening self-study and not a single excuse to miss it.

This is how the very first lecture begins (Abelson):
I'd like to welcome you to this course on computer science. Actually, it's a terrible way to start off. Computer science is a terrible name for this business. First of all, it's not a science. It might be engineering, or might be art, or— you'll see that computer so called “science” has a lot of common with magic. You'll see that in this course.
And it is not computer either!

Tags:

Comments

( 2 comments — Leave a comment )
iodiot
Dec. 25th, 2007 07:04 am (UTC)
Lisp - ужасная вещь, мне одного курса в университете с головой хватило. В MIT его изобрели для реализации всяких машин чёткого и не очень вывода, но использовать Lisp для обучения CS - это уж слишком, честное слово.

Наверное, тов. Профессор правильно сделал, что зачеркнул оба слова :)

Но ничего однозначно утверждать не могу, может всему виной моя инерция мышления. Я бы скачал посмотреть, да трафик - неподъёмный. Поэтому пока оставим вопрос полуоткрытым. А Вы сами что по этому поводу думаете?
fregimus
Dec. 30th, 2007 11:46 am (UTC)
Я думаю, что lisp развивает несколько другой тип мышления, нежели Java. А еще думаю, что Вы уже знали достаточно программирования на C++, когда поступали учиться. Дело в том, что проще языка, чем lisp, еще не изобрели, мне кажется.

Преимущество lispа — огромное преимущество! — в том, что он не навязывает никакого типа мышления сам по себе. Одинаково просто (или, если хотите, одинаково сложно) пишутся программы и в процедурном, и в функциональном стиле, и continuations, и coroutines. Конструкция (loop ...) в cl выглядит, на первый взгляд, убожеством, по сравнению с for в C++, хотя, внимательно приглядевшись, можно заметить, что она несколько мощнее.

Например, можно реализовать что-то подобное continuations, используя throw в C++, но это будет, в определенном смысле, хак. В lispе же здесь используется совершенно естественная конструкция языка. Думаю, что в C++ не получится полноценно смоделировать функциональный стиль вообще. Множество других примеров.

Почитайте еще болтовню Джоиля по этому поводу (ссылка в самом посте) — я с ним полностью согласен.

Edited at 2007-12-30 11:46 am (UTC)
( 2 comments — Leave a comment )

Profile

oak
fregimus
L. Fregimus Vacerro

Latest Month

August 2018
S M T W T F S
   1234
567891011
12131415161718
19202122232425
262728293031 

Page Summary

Powered by LiveJournal.com
Designed by Tiffany Chow