Показано с 1 по 9 из 9
  1. #1
    Lone Gunman Аватар для Slash
    Регистрация
    09.04.2005
    Адрес
    Estonia, Tallinn
    Пол
    мужской
    Возраст
    35
    Сообщений
    2,298
    Тем
    75
    Спасибо
    109
    Поблагодарили: 193
    в 53 темах.

    Red face [Статья] Научитесь программировать за десять лет

    Немного оффтоп, но тем не менее очень занимательная статья


    Научитесь программировать за десять лет
    Питер Норвиг (автор книги Искусственный интеллект: современный подход (AIMA), 2-е издание)

    Почему все так спешат?

    Зайдите в любой книжный магазин и вы увидите, что вам предложат изучить язык Java за семь дней с помощью книги Teach Yourself Java in 7 Days, а также обнаружите другие бесчисленные варианты учебных пособий, предлагающих изучить Visual Basic, Windows, Интернет и многое другое через несколько дней или часов. Я провел следующий расширенный поиск на узле Amazon.com:
    pubdate: after 1992 and title: days and (title: learn or title: teach yourself) и получил 248 результатов. Первые 78 указывали на компьютерные книги, а под номером 79 стояла книга Learn Bengali in 30 days (Изучите бенгальский язык за 30 дней). Я заменил слово “days” (дни) словом “hours” и получил такие же удивительные результаты: запрос возвратил еще 253 книги, среди которых первые 77 были компьютерными книгами, а за ними под номером 78 следовала книга Teach Yourself Grammar and Style in 24 Hours (Овладейте грамматикой и стилем за 24 часа). Из общего количества в 200 книг, в наибольшей степени соответствующих запросу, 96% были компьютерными книгами.
    На основании этих фактов можно сделать одно из двух заключений: либо читатели очень спешат узнать что-либо о компьютерах, либо изучение компьютерной тематики в чем-то невероятно проще по сравнению с любыми другими занятиями. В продаже не нашлось ни одной книги, которая позволяла бы за несколько дней постичь музыку Бетховена, изучить квантовую физику и даже научиться ухаживать за собаками.
    Попытаемся проанализировать, что могло бы означать такое название, как Learn Pascal in Three Days (Изучите язык Pascal за три дня):

    • Learn: В течение трех дней вы не найдете времени для написания хотя бы нескольких значимых программ и не сможете извлечь опыт из своих успехов и неудач в работе с ними. У вас не хватит времени, чтобы поработать вместе с опытным программистом и понять, сумеете ли вы когда-либо почувствовать себя комфортно в среде этого языка программирования. Короче говоря, трех дней не будет достаточно для того, чтобы действительно чему-либо научиться. Таким образом, авторы подобных книг могут пообещать вам достичь только поверхностного знакомства, а не глубокого понимания. Но, как сказал английский поэт Александр Поп, недостаточно полное обучение несет в себе большую опасность.
    • Pascal: За три дня вы сможете изучить синтаксис языка Pascal (если вы уже знакомы с подобным языком), но не сможете в достаточной степени научиться тому, как использовать этот синтаксис. Короче говоря, программист Basic может научиться писать программы в стиле синтаксиса Pascal с использованием Basic, но не сможет понять, в чем фактически состоят преимущества (и недостатки) языка Pascal. Но неужели это столь важно? Алан Перлис однажды заметил: “Язык, освоение которого не позволяет найти новые подходы к программированию, не заслуживает изучения”. Ознакомление лишь с начальными сведениями о языке Pascal (или, что более вероятно, о языке Visual Basic или JavaScript) может быть оправдано только в том случае, если это необходимо, чтобы воспользоваться существующим инструментальным средством для выполнения конкретного задания. Но в таком случае речь идет не об обучении программированию, а о том, как приобрести навыки выполнения конкретного задания.
    • in Three Days: К сожалению, как показывает следующий раздел, этого недостаточно.

    Научитесь программировать за десять лет

    Исследователи (Хейес, Блум) показали, что для приобретения экспертных знаний в любой широкой области человеческой деятельности, включая шахматную игру, сочинение музыки, рисование, игру на фортепьяно, плавание, теннис, а также проведение исследований по нейропсихологии и топологии, требуется приблизительно десять лет. Причем создается впечатление, что в действительности этот срок невозможно сократить: даже Моцарту, который проявил выдающиеся музыкальные способности в возрасте 4 года, потребовалось еще 13 лет для того, чтобы он начал сочинять музыку мирового класса. Рассмотрим другой музыкальный жанр; неосведомленные люди считают, что Битлз совсем внезапно появились на музыкальной арене, выпустив ряд хитов, занявших первые места, и появившись в шоу Эда Сэлливена в 1964 году. Но они играли в маленьких клубах Ливерпуля и Гамбурга с 1957 года, и смогли издать диск Sgt. Peppers, который стал их первым важным успехом, лишь в 1967 году, а до этого просто пользовались определенной популярностью. Сэмюэль Джонсон считает, что фактически требуется больше десяти лет: “Превосходства в любой области можно достичь только упорным трудом в течение всей жизни; его нельзя купить по меньшей цене”. И даже Чосер жаловался: “Жизнь так коротка, что не хватает времени на овладение мастерством”.
    Поэтому я предлагаю следующий рецепт достижения успеха в программировании:

    • Заинтересуйтесь программированием и занимайтесь им ради развлечения. Старайтесь сделать эти занятия достаточно привлекательными для того, чтобы не хотелось их бросать в течение десяти лет.
    • Общайтесь с другими программистами; читайте программы, написанные другими. Это гораздо важнее по сравнению с любой книгой или курсом обучения.
    • Программа. Лучший вид обучения — это обучение на собственном опыте. Более формально эта мысль выражена так, что “максимальный уровень производительности труда в определенной области не достигается автоматически как результат приобретения опыта, но даже очень опытные специалисты могут повысить продуктивность своего труда в результате сознательного стремления к усовершенствованию” (с. 366) и “действительно эффективное обучение невозможно без постановки вполне определенных заданий с соответствующим уровнем сложности конкретным лицам, информативной обратной связи и возможности повторения и исправления ошибок” (с. 20-21). Книга Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life является интересным справочником по этой теме.
    • Если у вас есть такое желание, посвятите четыре года обучению в колледже (или еще больше — в магистратуре). Благодаря этому вы получите доступ к некоторым должностям, для занятия которых требуется документ об образовании, а также сможете приобрести более глубокие знания в избранной специальности, но если вам не нравится сидеть на лекциях, то сможете (пройдя посвящение) приобрести аналогичный опыт непосредственно на рабочем месте. В любом случае одних книжных знаний не будет достаточно. Как сказал Эрик Рэймонд, автор книги The New Hacker's Dictionary, “Никто не сможет стать выдающимся программистом, изучая компьютерные науки, или выдающимся художником, изучая кисти и краски”. Один из лучших программистов, которые когда-либо у меня работали, имел лишь среднее образование; он создал большой объем превосходного программного обеспечения, ведет собственную группу новостей, а благодаря полученным им опционам на акции, несомненно, стал намного богаче по сравнению с тем, чего мне когда-либо удастся достичь.
    • Работайте над проектами с другими программистами. Будьте лучшим программистом в некоторых проектах; будьте худшим в некоторых других. Будучи лучшим, вы сможете проверить свои способности вести проект и внушать другим свои взгляды. Будучи худшим, вы сможете учиться у мастеров и сумеете понять, что им самим не нравится делать (потому что они будут заставлять вас делать это за них).
    • Работайте над проектами после других программистов. Старайтесь разобраться в программах, написанных кем-то другим. Узнайте на собственном опыте, что требуется, чтобы понять и исправить чужую программу без помощи автора. Подумайте о том, как спроектировать собственные программы, чтобы облегчить работу для тех, кто будет сопровождать их без вашего участия.
    • Изучите по крайней мере полдюжины языков программирования. Включите в это число по одному языку из тех, которые поддерживают абстракцию классов (Java или C++), функциональную абстракцию (Lisp или ML), синтаксическую абстракцию (Lisp), декларативные спецификации (Prolog или шаблоны C++), сопрограммы (Icon или Scheme) и параллелизм (Sisal).
    • Не забывайте, что термин “компьютерные науки” содержит слово “компьютер”. Узнайте, сколько времени требуется вашему компьютеру для выполнения команды, выборки слова из памяти (с попаданием и без попадания в кэш), чтения последовательных блоков с диска и перевода головок на новый участок диска. (Ответы приведены здесь.)
    • Примите участие в работе по стандартизации языка. Это может быть комитет по разработке стандарта ANSI C++ или проводимое в вашей компании совещание по выбору стиля отступа на 2 или 4 пробела. В любом случае деятельность в этой области позволит вам узнать, нравится ли другим тот или иной язык, насколько явно выражены их предпочтения, и даже, возможно, немного о том, чем обусловлены их предпочтения.
    • Но призовите на помощь свой здравый смысл, чтобы правильно выбрать время расставания с этой работой по стандартизации.

    Если учесть все сказанное, возникают сомнения в том, насколько далеко можно продвинуться, получая только книжные знания. Ожидая рождения своего первого ребенка, я прочитал все книги Для чайников, которые только мог достать, и все равно чувствовал себя неискушенным новичком. Как вы думаете, я стал перечитывать эти книги через 30 месяцев, когда пришло время родиться моему второму ребенку? Конечно, нет. Вместо этого я рассчитывал на свой личный опыт, который оказался гораздо более полезным и надежным, чем тысячи страниц, написанных экспертами.
    Фред Брукс в своем эссе No Silver Bullets изложил план поиска превосходных проектировщиков программ, состоящий из трех частей:

    1. Систематически проводите поиск выдающихся проектировщиков, стараясь выявить их как можно раньше.
    2. Назначьте наставника, ответственного за подготовку перспективного сотрудника, и тщательно контролируйте весь ход подготовки.
    3. Предоставьте растущим проектировщикам возможность взаимодействовать и стимулировать друг друга.

    Эти рекомендации основаны на том, что некоторые люди уже имеют качества, необходимые для того, чтобы стать великолепным проектировщиком; нам остается только содействовать их развитию. Алан Перлис выразил эту мысль более кратко: “Каждого можно научить ваять, а Микеланджело достаточно было только объяснить, как не надо ваять. Точно так же обстоят дела с выдающимися программистами”.
    Если вы со мной не согласны, не отказывайтесь от своего решения купить книгу по языку Java; по-видимому, она не станет для вас бесполезной. Но вы не почувствуете, что ваша жизнь изменилась коренным образом, и не станете действительно многоопытным программистом после того, как пройдут 24 часа, несколько дней или даже месяцев.

    Литература

    Bloom, Benjamin (ed.) Developing Talent in Young People, Ballantine, 1985.
    Brooks, Fred, No Silver Bullets, IEEE Computer, vol. 20, no. 4, 1987, p. 10-19.
    Hayes, John R., Complete Problem Solver Lawrence Erlbaum, 1989.
    Lave, Jean, Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life, Cambridge University Press, 1988.

    Ответы

    Приблизительные затраты времени при выполнении различных операций на типичном персональном компьютере с частотой 1 ГГц летом 2001 года
    Выполнение одной команды 1 нс = (1/1 000 000 000) с
    Выборка слова из кэш-памяти L1 2 нс
    Выборка слова из оперативной памяти 10 нс
    Выборка слова без позиционирования головок диска 200 нс
    Выборка слова после позиционирования головок диска (после поиска) 8 000 000 нс = 8 мс

    Приложение. Выбор языка

    Многие люди спрашивают, какой язык программирования следует изучить в первую очередь. На этот вопрос нет однозначного ответа, но ниже приведены некоторые соображения по данному поводу.

    • Прибегайте к помощи друзей. На вопрос о том, какую операционную систему следует использовать, Windows, Unix или Макинтош, я обычно отвечаю: ту, которую используют ваши друзья. Преимущества, которые получите, воспользовавшись помощью друзей, перевесят любые сложности, связанные с освоением операционной системы или языка программирования. Подумайте также о том, что круг ваших друзей обязательно должен расшириться: ведь вы со временем войдете в сообщество программистов, с которыми будете заниматься совместной деятельностью. Связано ли с выбранным вами языком крупное растущее сообщество или небольшая и постепенно редеющая группа людей? Можно ли найти необходимые для получения консультаций книги, Web-узлы и сетевые форумы? Довольны ли вы общением с участниками этих форумов?
    • Не усложняйте себе жизнь. Такие языки программирования, как C++ и Java, предназначены для проведения профессиональной разработки с участием крупных коллективов опытных программистов, которые стремятся достичь максимального быстродействия создаваемого ими кода. В связи с этим в ходе разработки программ на подобных языках применяются сложные технологии, созданные с учетом специфики их применения. Но вы желаете лишь научиться программировать. Вам не нужны лишние усложнения. Вам нужен язык, который мог бы легко изучить и запомнить начинающий программист, который вынужден во всем разбираться сам.
    • Превращайте обучение в игру. Какой способ обучения игре на фортепьяно кажется вам предпочтительным: обычное, “интерактивное” общение с преподавателем, при котором вам подсказывают как правильно действовать после каждого нажатия клавиши, или “пакетный” режим, в котором вам делают замечания только после того, как сыграна вся мелодия? Очевидно, что интерактивный режим упрощает обучение не только игре на фортепьяно, но и программированию. Остановитесь на одном из языков с интерактивным режимом программирования и используйте его.

    В соответствии с этими критериями, я бы порекомендовал в качестве первого изучаемого языка программирования выбрать Python или Scheme. Но все зависит от конкретных обстоятельств, и можно найти много других подходящих вариантов. Молодые люди, возраст которых измеряется одной цифрой, могут предпочесть Alice или Squeak (эти языки часто привлекают и людей постарше). Важнее всего выбрать что-то одно и приступить к работе.

    Приложение. Книги и другие ресурсы

    Меня часто спрашивают, какие книги и web-узлы я мог бы порекомендовать для учебы. Еще раз повторяю, что “одних книжных знаний недостаточно”, но могу порекомендовать следующее:

    • Scheme: Structure and Interpretation of Computer Programs (Abelson & Sussman). По-видимому, наилучшее введение в компьютерные науки, в котором действительно программирование преподносится как способ постижения компьютерных наук. К этой книге прилагаются оперативные видеозаписи лекций. Однако книга требует для своего усвоения значительных усилий и может заставить отказаться от первоначальных планов многих людей, которые, возможно, добились бы успеха с помощью другого подхода.
    • Scheme: How to Design Programs (Felleisen et al.). Одна из лучших книг, посвященных проектированию изящных и эффективных программ.
    • Python: Python Programming: An Intro to CS (Zelle). Хорошее введение в проблематику использования языка Python.
    • Python: Несколько интерактивных учебников можно найти на узле Python.org.
    • Oz: Concepts, Techniques, and Models of Computer Programming (Van Roy & Haridi). Эту книгу многие считают современным продолжением указанной выше книги Абельсона и Зюссмана. Она представляет собой обзор наиболее выдающихся идей программирования, охватывает большую область, чем книга Абельсона и Зюссмана, но, возможно, является более легкой для чтения и изучения. В ней используется язык Oz, который не столь широко известен, но служит основой для обучения другим языкам.

    Примечания

    Т. Кейпи отметил, что на странице узла Amazon, посвященной книге Complete Problem Solver, в свое время рекламировались книги “Teach Yourself Bengali in 21 days” и “Teach Yourself Grammar and Style” в разделе “Customers who shopped for this item also shopped for these items” (Книги, которые заказывают вместе с этой книгой). Я полагаю, что многие из тех, кто решает для себя, стоит ли купить данную книгу, вначале посетили эту страницу.

    Оригинал на английском: http://norvig.com/21-days.html
    Последний раз редактировалось Slash; 28.04.2009 в 14:59.

  2. 7 пользователей сказали cпасибо Slash за это полезное сообщение:

    ConceptHouse (14.11.2009), RYTER (07.05.2009), Sergey Fox (01.05.2009), speCTACular (04.11.2009), Stereo Person (25.07.2012), Tararashkina (04.11.2009), TechSoul (03.05.2009)

  3. #2
    Мьюзик лавер Аватар для Strikezone
    Регистрация
    14.10.2005
    Возраст
    35
    Сообщений
    434
    Тем
    25
    Спасибо
    102
    Поблагодарили: 52
    в 10 темах.

    Wink

    Познавательно, спасибо. Признаюсь, время от времени возникало желание купить одну из книг из серии "за 3 дня" и научиться програмить, не профессионально, чисто для себя. Теперь даже идею эту заброшу, лучше потрачу необходимые 10 лет на то, чтобы стать настоящим специалистом в своей области.

  4. #3
    V.I.P Аватар для Cr4zY
    Регистрация
    11.07.2005
    Адрес
    Россия/Москва
    Пол
    мужской
    Возраст
    30
    Сообщений
    5,006
    Тем
    178
    Спасибо
    45,291
    Поблагодарили: 1,605
    в 303 темах.

    По умолчанию

    а сорокалетнего курса, случайно, нету? :D


  5. #4
    Lone Gunman Аватар для Slash
    Регистрация
    09.04.2005
    Адрес
    Estonia, Tallinn
    Пол
    мужской
    Возраст
    35
    Сообщений
    2,298
    Тем
    75
    Спасибо
    109
    Поблагодарили: 193
    в 53 темах.

    По умолчанию

    Strikezone, по-моему цель этой статьи не отпугнуть потенциальных программистов, а наоборот, заставить задуматься, о том как стоит делать вещи в жизни. До того, как я перешёл на отделение вычислительной техники, я учился на биологическом факе и всерьёз собирался стать генетиком. На тот момент у меня был лишь небольшой опыт программирования на Basic и я мало интересовался саморазвитием в данном направлении и вообще считал себя истинным гуманитарием. Однажды я зашёл в компьютерный класс, чтобы тупо прогулять очередную пару за игрой в Quake. Там сидели третьекурсники с IT потока и тупили над каким-то примитивным заданием по программированию в Pascal. В какой-то момент мне надоело, что парень рядом со мной не может заставить программу сделать элементарные вещи и я ему помог, неудовольствовавшись результатом, я сделал код и аутпут программы красивее. И в тот момент я осознал, что это красиво, что это моё, и что мне это интересно. Долгое время после этого, программирование оставалось моим хобби, которому я отдавал всё свободное время, а теперь это мой хлеб При этом достаточно глубокое знание биологии и органической химии не пропали даром. Любое знание - сила! Так что попробуй обязательно, а вдруг это твоё, а ты и не догадывался

  6. 2 пользователей сказали cпасибо Slash за это полезное сообщение:

    *slim (18.11.2009), Tararashkina (04.11.2009)

  7. #5
    V.I.P Аватар для Tararashkina
    Регистрация
    06.10.2005
    Адрес
    ул. Мира, д. 1 А.
    Пол
    женский
    Возраст
    31
    Сообщений
    913
    Тем
    109
    Спасибо
    1,310
    Поблагодарили: 475
    в 68 темах.

    По умолчанию

    Цитата Сообщение от Slash Посмотреть сообщение
    Strikezone, по-моему цель этой статьи не отпугнуть потенциальных программистов, а наоборот, заставить задуматься, о том как стоит делать вещи в жизни. До того, как я перешёл на отделение вычислительной техники, я учился на биологическом факе и всерьёз собирался стать генетиком. На тот момент у меня был лишь небольшой опыт программирования на Basic и я мало интересовался саморазвитием в данном направлении и вообще считал себя истинным гуманитарием. Однажды я зашёл в компьютерный класс, чтобы тупо прогулять очередную пару за игрой в Quake. Там сидели третьекурсники с IT потока и тупили над каким-то примитивным заданием по программированию в Pascal. В какой-то момент мне надоело, что парень рядом со мной не может заставить программу сделать элементарные вещи и я ему помог, неудовольствовавшись результатом, я сделал код и аутпут программы красивее. И в тот момент я осознал, что это красиво, что это моё, и что мне это интересно. Долгое время после этого, программирование оставалось моим хобби, которому я отдавал всё свободное время, а теперь это мой хлеб При этом достаточно глубокое знание биологии и органической химии не пропали даром. Любое знание - сила! Так что попробуй обязательно, а вдруг это твоё, а ты и не догадывался

    складненько причесываешь)))

    у меня вот точно не хватит терпения 10 лет заниматься чем то одним...у меня почти каждый день новые увлечения..увы(

  8. 1 пользователь сказал cпасибо Tararashkina за это полезное сообщение:

    Slash (09.11.2009)

  9. #6
    Мьюзик лавер
    Регистрация
    13.06.2006
    Адрес
    Ivanovo
    Пол
    мужской
    Возраст
    33
    Сообщений
    364
    Тем
    11
    Спасибо
    296
    Поблагодарили: 13
    в 10 темах.

    По умолчанию

    Где-то я подобное читал пару лет назад
    Программировать можно научиться за 3 дня. А вот писать программы можно учиться всю жизнь. Да и технологии постоянно меняются. Взять ту же Java (не путать с java script).
    Я програмил на паскале, объектном паскале, пхп, перл, с++, асм. А ещё sql и pl/sql достаточно хорошо знаю.
    Да и писал то не мелкие программульки, но всё равно ещё учится и учится... никак не 10 лет
    А ещё нужна постоянная практика.

  10. #7
    Lone Gunman Аватар для Slash
    Регистрация
    09.04.2005
    Адрес
    Estonia, Tallinn
    Пол
    мужской
    Возраст
    35
    Сообщений
    2,298
    Тем
    75
    Спасибо
    109
    Поблагодарили: 193
    в 53 темах.

    По умолчанию

    Цитата Сообщение от Tararashkina Посмотреть сообщение
    складненько причесываешь)))
    Меня вроде неплохо штырило :shy: :D Тем не менее всё искренне и правдиво.

  11. #8
    V.I.P Аватар для *slim
    Регистрация
    12.03.2006
    Адрес
    Lithuania
    Пол
    мужской
    Возраст
    33
    Сообщений
    2,273
    Тем
    1397
    Спасибо
    855
    Поблагодарили: 11,423
    в 1,350 темах.

    По умолчанию

    по мотивам поста Slash'а.

    У меня тоже есть своя история : ))

    У мну похожее было в 18-19 лет : ))
    В 16 лет (по глупости, или в силу максимализма мол кулхацкер) затроянил 70% пользователей своего провайдера которые пользовались локальными паблик серверами. Ввиду чего мне на мыло стали приходил все пароли с компов пользователей.
    На чем неплохо заработал кстати, пока админы не спалили, но это было уже спустя месяцев 5.
    Учил сам протоколы, эксплоиты и т.д ночами и днями. Все чаты местных провайдеров были сломаны
    Стукнуло 18, уехал в столицу сразу на работу, прям после экзаменов последних в течении недели.
    Работал специалистом по IT безопасности в фирме (спасибо друзьям), года - пол. И жил с дизайнерами с той же фирмы, смотрел частенько как они работают, техника исполнения и т.д И мне это показалось гораздо интересней.
    И с 2002 года работаю дизайнером, о чем ничуть не жалею : )


    ﴾͡๏̯͡๏)

    http://techhousedj.printdirect.ru/
    принты аттрибутики TH

  12. 1 пользователь сказал cпасибо *slim за это полезное сообщение:

    Slash (27.11.2009)

  13. #9
    V.I.P Аватар для СМЫЛЕР
    Регистрация
    03.05.2006
    Адрес
    Месный
    Пол
    мужской
    Возраст
    31
    Сообщений
    1,282
    Тем
    32
    Спасибо
    9,136
    Поблагодарили: 221
    в 32 темах.

    По умолчанию

    Мудрость "век живи - век учись" пока никто не отменял )
    Сейчас наверно как раз лет 10 как я припёрся на кружок по информатике ))
    Бейсик изучать ))
    Ой... будь проклят тот день.. Что только небыло после него. Pascal, C++, Asm, синтаксис php и мускуля, немного явы... И к чему я пришёл? Опять таки к бейсику, переведённому промптом - 1С ))
    Ярый протестант свободного водопада!

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •