?
Ни о какой безапелляционности в моих высказываниях не может быть и речи! [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

программирование за десять лет (англ.) [фев. 25, 2004|10:38 am]
Anatoly Vorobey
Инересная статья Питера Норвига: "Teach Yourself Programming in Ten Years".
Researchers have shown it takes about ten years to develop expertise in any of a wide variety of areas, including chess playing, music composition, painting, piano playing, swimming, tennis, and research in neuropsychology and topology. There appear to be no real shortcuts: even Mozart, who was a musical prodigy at age 4, took 13 more years before he began to produce world-class music. In another genre, the Beatles seemed to burst onto the scene, appearing on the Ed Sullivan show in 1964. But they had been playing since 1957, and while they had mass appeal early on, their first great critical success, Sgt. Peppers, was released in 1967. Samuel Johnson thought it took longer than ten years: "Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price." And Chaucer complained "the lyf so short, the craft so long to lerne."

Хорошие советы программистам даёт:
  • Learn at least a half dozen programming languages. Include one language that supports class abstractions (like Java or C++), one that supports functional abstraction (like Lisp or ML), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), one that supports coroutines (like Icon or Scheme), and one that supports parallelism (like Sisal).
  • Remember that there is a "computer" in "computer science". Know how long it takes your computer to execute an instruction, fetch a word from memory (with and without a cache miss), read consecutive words from disk, and seek to a new location on disk. (Answers here.)
  • Get involved in a language standardization effort. It could be the ANSI C++ committee, or it could be deciding if your local coding style will have 2 or 4 space indentation levels. Either way, you learn about what other people like in a language, how deeply they feel so, and perhaps even a little about why they feel so.
  • Have the good sense to get off the language standardization effort as quickly as possible.
СсылкаОтветить

Comments:
[User Picture]From: scolar
2004-02-25 01:01 am
Больная тема - даже в академической среде бытует мнение, что программировать может каждый. Довольно значительная часть моего участия в наукоёких проектах - борьба с этим мифом и объяснение того простого факта, что программа, написанная кем угодно, работает как угодно.
(Ответить) (Thread)
[User Picture]From: avva
2004-02-25 01:03 am
программа, написанная кем угодно, работает как угодно.

Хорошо сказано, да.
(Ответить) (Parent) (Thread)
[User Picture]From: msh
2004-02-25 01:41 am
Из 4 советов - 3 про языки, 1 про background. Ничего про дизайн, технологии, архитектуру. Интересно, хотелось бы послушать кого нибудь, кому правда в коммерческом программирование помогает знание уймы разных языков.
(Ответить) (Thread)
[User Picture]From: scolar
2004-02-25 01:57 am
Речь, на мой взгляд, всё же идёт не о гонке за количеством освоенных языков, а о различных парадигмах. Скажем, для нормального современного проектирования с использованием C++ templates знакомство с каким-нибудь функциональным языком совсем не бесполезно.
(Ответить) (Parent) (Thread)
From: ex_matiouch
2004-02-25 03:54 am
Вы совершенно правы — речь идет о кругозоре (ну, насколько я понял).
Есть такое слово — «парадигма». Их даже бывает много.
Так вот, человек, не понимающий идеологии Haskell — никогда не напишет в объектно-ориентированной среде — чего-нибудь стоящего. Утрирую, конечно.
(Ответить) (Parent) (Thread)
[User Picture]From: msh
2004-02-25 04:33 am
Я не знаю ни одного функционального языка. Я также не знаю Haskell (даже не знаю что это за язык). Никаких проблем с пониманием templates я не испытал.

Зачем нужно изучать целый язык чтобы узнать одну концепцию?
(Ответить) (Parent) (Thread)
[User Picture]From: scolar
2004-02-25 04:55 am
Давайте не будем переходить к конкретным примерам - каждый из нас много чего знает и умеет, хотя, подчас, пришёл к этим знаниям не самым естественным путём.

И название статьи, и её содержимое - о весьма распространенном мифе, что программиста, владеющего тем или иным языком или технологией, можно подготовить за несколько часов или дней.

Советы, данные в статье, относятся к более-менее воспроизводимой процедуре, примененной, разумеется, не к имбецилу, а человеку с некоторой склонностью к такого рода умственной деятельности, и содержат, на мой взгляд, довольно реалистичные оценки сроков, за которые интересующийся бысттрообучающийся вьюнош становится крепким профессионалом.
(Ответить) (Parent) (Thread)
[User Picture]From: msh
2004-02-25 05:25 am
Я не спорю c основной мыслью статьи, в моем возрасте тоже уже пора проповедовать, что менее чем за 10 (а лучше 15!) лет программировать не научишься. Но советы, процитированные avva неверные, потому что язык программирования это одна из последних вещей, с которой должен заморачиваться программист.

(Ответить) (Parent) (Thread)
[User Picture]From: avva
2004-02-25 05:28 am
Не согласен. Конкретный язык - да, верно; но разные виды языков
демонстрируют очень разные подходы к программированию и новые способы
посмотреть на проблему. Ими очень даже надо заморачиваться.
(Ответить) (Parent) (Thread)
[User Picture]From: msh
2004-02-25 05:36 am
Вполне достаточно какого-нибудь general purpose языка (C++ или Java), какого-нибудь скриптового типа Perl или TCL, и может быть какого-нибудь функционального чтобы покрыть все подходы, которые только могут понадобиться среднему коммерческому программисту. А не полудюжины и участие в стандартизации. Даже в плане правил расстановки пробелов.

А сэкономленное на изучении хаскелей время потратить на, например, изучение тестирования больших проектов.
(Ответить) (Parent) (Thread)
[User Picture]From: avva
2004-02-25 05:49 am
Он там о проектах тоже пишет, я процитировал не все советы.
Проблема в том, что "которые только могут понадобиться среднему
коммерческому программисту" - не очень хорошая мерка. Во-первых, это
нестабильное множество, т.е. если этот программист не будет знаком с
какими-то подходами, то ему, возможно, и в голову никогда не придёт ими
воспользоваться, и он решит какую-то задачу более привычным, но худшим
путём. Во-вторых, как раз, чтобы быть лучше, чем средним, ему это и
нужно учить.
(Ответить) (Parent) (Thread)
[User Picture]From: 109
2004-02-25 06:09 am
речь идёт о приоритетах. количество времени ограничено, и лучше его потратить на что-то другое, чем на изучение Sisal или участие в комитете. приведённый вами отрывок говорит либо о приоритетах автора, либо о ваших приоритетах. ни с теми, ни с другими я не согласен.
(Ответить) (Parent) (Thread)
[User Picture]From: nms
2004-02-25 06:22 am
Искусство/ремесло программирования состоит их трех частей:
анализ, синтез и запись на тарабарском языке. Если не владеть
первыми двуми, то последняя до лампочки.

"Сокращайте программы до размера мысли"
(Ответить) (Parent) (Thread)
[User Picture]From: avva
2004-02-25 06:31 am
Не понял, как это противоречит (если противоречит) тому, что я сказал.
(Ответить) (Parent) (Thread)
[User Picture]From: scolar
2004-02-25 06:56 am
Exactly. И речь как раз о том, что способности к анализу и синтезу нужно систематически развивать. И знакомство с различными парадигмами - это способ.
(Ответить) (Parent) (Thread)
[User Picture]From: muchandr
2004-02-25 02:27 am
Teach yourself how to be an unleashed dummy in 21 days!
(Ответить) (Thread)
From: ex_dj_nooki
2004-02-25 04:27 am
А, это наверно который Норвиг Коммандер написал...
(Ответить) (Thread)
[User Picture]From: fantaseour
2004-02-25 09:31 am

А мне

вот такая аналогия пришлась ближе всего :)

Before my first child was born, I read all the How To books, and still felt like a clueless novice. 30 Months later, when my second child was due, did I go back to the books for a refresher? No. Instead, I relied on my personal experience, which turned out to be far more useful and reassuring to me than the thousands of pages written by experts.
(Ответить) (Thread)
From: gdy
2004-02-27 03:09 am
вот ещё похожая песня
http://www.artima.com/intv/craft.html
(Ответить) (Thread)