avva: (Default)
[personal profile] avva
Инересная статья Питера Норвига: "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.

Date: 2004-02-25 01:01 am (UTC)
From: [identity profile] scolar.livejournal.com
Больная тема - даже в академической среде бытует мнение, что программировать может каждый. Довольно значительная часть моего участия в наукоёких проектах - борьба с этим мифом и объяснение того простого факта, что программа, написанная кем угодно, работает как угодно.

Date: 2004-02-25 01:03 am (UTC)
From: [identity profile] avva.livejournal.com
программа, написанная кем угодно, работает как угодно.

Хорошо сказано, да.

Date: 2004-02-25 01:41 am (UTC)
From: [identity profile] msh.livejournal.com
Из 4 советов - 3 про языки, 1 про background. Ничего про дизайн, технологии, архитектуру. Интересно, хотелось бы послушать кого нибудь, кому правда в коммерческом программирование помогает знание уймы разных языков.

Date: 2004-02-25 01:57 am (UTC)
From: [identity profile] scolar.livejournal.com
Речь, на мой взгляд, всё же идёт не о гонке за количеством освоенных языков, а о различных парадигмах. Скажем, для нормального современного проектирования с использованием C++ templates знакомство с каким-нибудь функциональным языком совсем не бесполезно.

Date: 2004-02-25 03:54 am (UTC)
From: [identity profile] ex-matiouch.livejournal.com
Вы совершенно правы — речь идет о кругозоре (ну, насколько я понял).
Есть такое слово — «парадигма». Их даже бывает много.
Так вот, человек, не понимающий идеологии Haskell — никогда не напишет в объектно-ориентированной среде — чего-нибудь стоящего. Утрирую, конечно.

Date: 2004-02-25 04:33 am (UTC)
From: [identity profile] msh.livejournal.com
Я не знаю ни одного функционального языка. Я также не знаю Haskell (даже не знаю что это за язык). Никаких проблем с пониманием templates я не испытал.

Зачем нужно изучать целый язык чтобы узнать одну концепцию?

Date: 2004-02-25 04:55 am (UTC)
From: [identity profile] scolar.livejournal.com
Давайте не будем переходить к конкретным примерам - каждый из нас много чего знает и умеет, хотя, подчас, пришёл к этим знаниям не самым естественным путём.

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

Советы, данные в статье, относятся к более-менее воспроизводимой процедуре, примененной, разумеется, не к имбецилу, а человеку с некоторой склонностью к такого рода умственной деятельности, и содержат, на мой взгляд, довольно реалистичные оценки сроков, за которые интересующийся бысттрообучающийся вьюнош становится крепким профессионалом.

Date: 2004-02-25 05:25 am (UTC)
From: [identity profile] msh.livejournal.com
Я не спорю c основной мыслью статьи, в моем возрасте тоже уже пора проповедовать, что менее чем за 10 (а лучше 15!) лет программировать не научишься. Но советы, процитированные [livejournal.com profile] avva неверные, потому что язык программирования это одна из последних вещей, с которой должен заморачиваться программист.

Date: 2004-02-25 05:28 am (UTC)
From: [identity profile] avva.livejournal.com
Не согласен. Конкретный язык - да, верно; но разные виды языков
демонстрируют очень разные подходы к программированию и новые способы
посмотреть на проблему. Ими очень даже надо заморачиваться.

Date: 2004-02-25 05:36 am (UTC)
From: [identity profile] msh.livejournal.com
Вполне достаточно какого-нибудь general purpose языка (C++ или Java), какого-нибудь скриптового типа Perl или TCL, и может быть какого-нибудь функционального чтобы покрыть все подходы, которые только могут понадобиться среднему коммерческому программисту. А не полудюжины и участие в стандартизации. Даже в плане правил расстановки пробелов.

А сэкономленное на изучении хаскелей время потратить на, например, изучение тестирования больших проектов.

Date: 2004-02-25 05:49 am (UTC)
From: [identity profile] avva.livejournal.com
Он там о проектах тоже пишет, я процитировал не все советы.
Проблема в том, что "которые только могут понадобиться среднему
коммерческому программисту" - не очень хорошая мерка. Во-первых, это
нестабильное множество, т.е. если этот программист не будет знаком с
какими-то подходами, то ему, возможно, и в голову никогда не придёт ими
воспользоваться, и он решит какую-то задачу более привычным, но худшим
путём. Во-вторых, как раз, чтобы быть лучше, чем средним, ему это и
нужно учить.

Date: 2004-02-25 06:09 am (UTC)
From: [identity profile] 109.livejournal.com
речь идёт о приоритетах. количество времени ограничено, и лучше его потратить на что-то другое, чем на изучение Sisal или участие в комитете. приведённый вами отрывок говорит либо о приоритетах автора, либо о ваших приоритетах. ни с теми, ни с другими я не согласен.

Date: 2004-02-25 06:22 am (UTC)
From: [identity profile] nms.livejournal.com
Искусство/ремесло программирования состоит их трех частей:
анализ, синтез и запись на тарабарском языке. Если не владеть
первыми двуми, то последняя до лампочки.

"Сокращайте программы до размера мысли"

Date: 2004-02-25 06:31 am (UTC)
From: [identity profile] avva.livejournal.com
Не понял, как это противоречит (если противоречит) тому, что я сказал.

Date: 2004-02-25 06:56 am (UTC)
From: [identity profile] scolar.livejournal.com
Exactly. И речь как раз о том, что способности к анализу и синтезу нужно систематически развивать. И знакомство с различными парадигмами - это способ.

Date: 2004-02-25 02:27 am (UTC)
From: [identity profile] muchandr.livejournal.com
Teach yourself how to be an unleashed dummy in 21 days!

Date: 2004-02-25 04:27 am (UTC)
From: [identity profile] ex-dj-nooki.livejournal.com
А, это наверно который Норвиг Коммандер написал...

А мне

Date: 2004-02-25 09:31 am (UTC)
From: [identity profile] fantaseour.livejournal.com
вот такая аналогия пришлась ближе всего :)

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.

Date: 2004-02-27 03:09 am (UTC)
From: [identity profile] gdy.livejournal.com
вот ещё похожая песня
http://www.artima.com/intv/craft.html

January 2026

S M T W T F S
    1 2 3
4 5 6 7 8 910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 10th, 2026 07:54 pm
Powered by Dreamwidth Studios