11 ноября 2010 11.11.10 32 7537

Как я учился программировать, или как лишится личной жизни за 3 шага

+35

На написание этого сообщения меня сподвиг пост в блоге Lexpable, о его попытках обучения С++.
Я ужаснулся от того, что в интернете кто-то не прав и решил, коротко описать, то как я учился и учусь программировать.
Во первых, я Вам рекомендую определится для чего Вам это надо. Если Вы хотите писать игры — то забудьте об этом учтите, что написать змейку просто. Написать, что-то более менее красивое\работающее очень сложно. Это не месяцы учебы, это годы. Годы программирования по 3-4 часа в день. Если Вас это не пугает и Вы готовы потерять регулярный секс с большегрудыми блодинками большую часть Вашей жизни то вперед.
Эти зачеркнутые надписи выглядят очень глупо правда?

Во первых программирование очень широкая область. Описать даже половину применений очень сложно. Для каждой области требуются свои навыки и умения. Я изначально хотел рассказать о типах языков программирования, чтобы показать какой я умный и образованный, но этого тоже делать не буду, ибо помочь, это Вам ничем не сможет. Хотя если кому то будет интересно могу написать отдельную статью.

Но я(Так уж и быть), расскажу о самых популярных языках программирования с которых Вы можете начать. И расскажу о тех учебниках, которые использовал при их изучении.

1. ССи. Низкоуровневый язык программирования. Для новичка ему очень просто обучится, но очень сложно программировать.
Что-то крупное на нем пишут редко. Собственно я бы не рекомендовал начинать с него, но если Вы хотите просто посмотреть, что такое програмирование, то это Ваш выбор.
Самая интересная книга по нему это:
www.ozon.ru/context/detail/id/2480925/

Но у нее есть несколько минусов. Во первых эта книга очень старая и в ней не учтены некоторые изменения, которые произошли с языком. Но это не принципиально.
И она написана очень академичным стилем. Примерно, как учебник по высшей математики. Если для Вас читать такое трудно, то есть:
www.ozon.ru/context/detail/id/966202/

В ней описаны некоторые основные алгоритмы и рассказано все довольно подробно.

Увы больше книг на русском о С, я не видел и посоветовать не могу.

2. С++
Язык, который вырос из С, путем переработки и добавки в него ООП
Приятный язык, но безумно нагруженный и поэтому сложный. Для новичка, как мне кажется слишком сложный и не понятный. Но это один из самых востребованных языков в России. Поэтому я дам пару советов, касательно литературы.

Во первый это снова Герберт Шилдт:
www.ozon.ru/context/detail/id/1498452/

Очень удобный справочник, я с удовольствием им пользуюсь.

Альтернатива:
www.ozon.ru/context/detail/id/2988768/

Очень подробная книга. Несмотря на это читается достаточно легко.

Ну и есть еще книга от создателя языка Бьярне Страуструпа:
www.ozon.ru/context/detail/id/85559/

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

Недавно вышла новая книги Бьярне Страуструпа, в этот раз, как раз для «newbie»:
www.ozon.ru/context/detail/id/5403053/

Русское издания я если честно не видел, видел только электронное английское. Примерно 100 первых страниц описывается, что такое программист и чем он занимается. В целом довольно интересно. Другое дело надо ли Вам это? Интересно ли? Если нет… То вообще надо ли Вам учится этому? Каждый должен решить сам. Наверно для тех, кто никогда не программировал это самая полезная книга. Единственное может отпугнуть ее стоимость. Я так и не собрался с силами и не заказал на Amazon. Наверно сделаю себе подарок на новый год.

3. Python(Ruby, PHP, Perl, JavaScript, ....)
Скриптовые язык. Статья в википедии на тему скриптовых языков странная. Английский вариант лучше.
Почему они вместе? Потому, что они практически взаимозаменяемы. Мне больше нравится Python. Учится ему новичку одно удовольствие. И так считаю не только я, но и ребята из MIT(Один из самых уважаемых технических универститетов в мире), которые читают на нем лекции. Проблема всего одна, учебников на русском по Python нет.
Вернее есть, но они либо не актуальны, либо совершенно не читабельны.
Вот неплохая книга:
www.ozon.ru/context/detail/id/4878060/
Но издание очень старое и сейчас его нигде не купить. Fail.

Актуальное издание на английском:
oreilly.com/catalog/9780596513986
Но на русский оно не переводилось.

У Python есть еще прекрасный гайд для начинающих:
wiki.python.org/moin/BeginnersGuide

Отличная возможность изучить английский язык. Он Вам все ровно понадобится. Хотя бы надо уметь читать и писать на нем.

4. Delphi, Pascal.
Pascal появился почти одновременно с C. Изначально планировался, как академический язык для обучения программированию. Позже появилось его развитие Delphi(В нем добавили ООП). Сейчас это все загнулось и не развивается, учится по нему я бы в любом случае не рекомендовал.

5. С#, Java.
Я не программирую на этих языках и посоветовать литературу не могу, увы. Довольно популярные языки и в целом очень приятные. Они появились относительно недавно и поэтому очень хорошо отражают современные концепции программирования. При этом довольно минималистичны. Если найдете хорошую литературу, то это Ваш выбор.

И так. С языками более\менее разобрались. Но увы выучить синтаксис языка мало. Это тоже самое, что научится ездить на машине только прямо и не уметь сделать даже простейший разворот. А мы же стремимся к победам в формуле один.

Что нас ждет дальше? Это зависит от пути, который вы выбрали. Кроме Computer Science, Вам наверняка потребуются смежные области. Яркий пример математика. Она нужна практически всем программистам хотя бы в минимуме. И за словом математика, скрывается целый комплекс наук, таких как: теория вероятности, статистика, теория чисел и т.д. Основы электроники не помешают, хотя бы рамках информатики.

Ну вот вы выбрали язык, прочитали по нему нескольки книг, написали несколько программ, окончили университетский курс математики… Ваша борода(Накладная в случае если Вы не самец) уже достает до пояса и только Вы хотите стереть пот со лба, как выясняется, что это еще не все… Вас еще ждут целая куча книг по алгоритмам(Часть будет в курсе математики), тонны документации по библиотекам, тысячи новых открытий в области математики, физики, астрономии, физиологии особей противоположного пола(А в особо запущенных случаях даже и своего!) и т.д.
[ПАФОС]Путь программиста — это путь саморазвития и ежедневного роста личности[/ПАФОС]

Фуф… Это было сложнее, чем я думал. Для тех парней со стальными яйцами или девушек со стальными… ээээ яичниками? Которые прочитать столько безграмотного текста я приготовил подарок, да конечно Вы можете сказать, что такого полно в интернете. Но я столько выбирал и так старался! Да и потом она прекрасна… Это нечто вроде, того, как смотреть на картину в эрмитаже… Что?! ЧТО?!?!

За бортом остались:
1. Функциональные языки(Lisp, Haskell, ....). Ибо мало используются.
2. Графические библиотеки(OpenGL, DirectX). Их можно смело приписать к остальным библиотекам.
3. Очень много всего.

Получилось немного сумбурно, но для статьи которая писалась 40 минут, помоему окей. Да и где Вы еще найдете, столько плоских шуток на единицу текста.

В любом случае спасибо за внимание.


Лучшие комментарии

Еще в школе ходил на курсы программирования на Pascal'e. Нравится, нравилось, особенно когда множество Мандельброта спрограммировали. А когда пришло время поступать, взглянул на работу прогера так критически: учиться все-таки сложно, вероятность стать быдлокодером тоже не исключена (в особенности, если препод по программированию будет плохим), конкурентов много, да и вообще, всю жизнь штаны просиживать перед компом тоже не дао.
Программирование под интернет отдельная тема, которую я не затронул, потому, что здесь в основном игроки, и я надеялся, что кому то это понравится и он захочет стать разработчиком :)

Сайты в общем случае разрабатывать проще. Если Вы хотите такой сайт, как по ссылке, то достаточно будет взять готовую CMS(Система управление сайтом. Что-то типа программы для создания сайта. Уметь программировать не надо), например Danneo и заказать под нее дизайн. Ну если уж нужна будет, какая то особенная функциональность заказать еще и ее(Т.е, Вам добавят функциональность в готовую CMS). Сайт по Вашей ссылке выбрал другой путь, там вероятно самописная CMS и сделана она к тому очень плохо. Дизайн с технической точки зрения сделан совершенно не профессионально.

Точную сумму за такой сайт не назову, так как все зависит от наглости\раскрученности брэнда исполнителей. От 200$ до бесконечности.

Но если взять готовую CMS + заказать к ней дизайн, вполне можно уложится от 80$ до опять же бесконечности. И сайт будет в 100 раз лучше.

А вот если писать свою нормальную CMS, то это месяцы разработки и несколько тысяч долларов(Примерно, может и меньше я не знаю). Сейчас так делают либо для крупных проектов, либо те кому не куда делать деньги.
правильно говорить- молочных желез
я хз насколько статья полезна, но выглядит внушительно и полезно))
++
млеать, масло масляное..>_>
К программеру при девушке, если уж так формулировать )
Мало того, я ж еще и железнячник в том плане, что умею проектировать всякие мигающие и не только штуки (мыкрапрацессарные устройства)
Пох на программирование, но слог приятный.
Согласен, что в первую очередь стоит определиться, зачем оно тебе надо и программистом ли ты хочешь быть. Дело в том, что выучить язык достаточно несложно, особенно при питании хорошей литературой. Но одно дело — просто писать на каком-либо языке, другое — создавать своё.
Хорошие программисты всегда нужны. Хорошие кодеры тоже никуда не денутся.
Годы программирования по 3-4 часа в день.
Это из 24х то. Вам не хватает времени на блондинок? ;•) Вот то, что программисты всегда учатся — это да)

Кстати, книги, о которых в посте написано, они использовались в живом виде?)
Проблема всего одна, учебников на русском по Python нет. Вернее есть, но они либо не актуальны, либо совершенно не читабельны.
Лутц? Не?
Это точно, написано очень интересно :). Я ведь когда-то грезил научится писать сайты, у меня была очень-очень хорошая задумка. Однако мой знакомый сказал что он это делать за бесплатно не хочет, и вообще, ему в падлу и смысла нет. Тогда я сам попытался хоть кааак то продвинутся вперёд в понимании всего этого, ни хрена мне не понравилось даже разбираться.
Сколько стоит заказать в России вот такой вот простенький сайт? www.valeo.lv/index2.php Заказ на фирме. Хотел бы цены сравнить.
Сейчас это все загнулось и не развивается, учится по нему я бы в любом случае не рекомендовал.
О нет, зачем я учил его!
А статья очень хорошая. Теперь я наверно буду по-новому пути следовать, по пути Явы и С)
П.С. Картинка отпад!
Стереотипы — это прекрасно. На самом деле в программисты идут разные люди. Просто профессия предполагает, что человеку не требуется постоянное общение. Кроме того, есть небольшая, но стабильная прослойка тех, кто настолько увлечен всем этим, что ему ничего не надо. Но в целом стереотип, да.

Да и собственно сейчас в этой профессии много и девушек, они кстати в отличии от парней долго встречаются\женятся только на себе подобных, т.е на других программистах или людях из смежных научных областей. Исключений я на данный момент не видел.
Читай также