Кому предназначена статья
Думаю, каждый современный программист любит составлять свою собственную библиотеку книжек и видео для чтения и просмотра на ридере иль каком-либо планшете. Подобное занятие необходимо и всякому новичку, чтобы разобраться в том, что ему больше подходит. С этого решил начать в своё время и ваш покорный слуга. Процесс нахождения полезной литературы, настройки IDE и ознакомления с ней занимает уйму времени, поэтому я и решил изложить то, к чему пришёл по данному вопросу. Постараюсь собрать и систематизировать всё в одной статье. Автор данной статьи не является профессионалом и отражает его собственный небольшой опыт в том, как становиться программистом.
С чего стоит начать новичку-хеллоуворлдщику
Первое, с чего стоит начать, так это определиться, в какой области и в каких языках вы собираетесь быть профессионалом. Для этого сначала лучше оценить потребности на рынке труда в том городе, где вы собираетесь работать (хотя расположение не мешает вам фрилансить где и на кого угодно). Это можно проделать самому по hh.ru, career.ru, hantim.ru или воспользоваться соответствующими статьями. Для примера оценка на 2012г: habrahabr.ru/company/hh/blog/156803/ (ссылки в статье не ради рекламы) Но не стоит бросаться на самые популярные языки (php, javascript и прочие языки с низким порогом вхождения). Тем более на то, что изучают в школе (turbo pascal, basic и т.п.), таким путём вы потратите время впустую и не будете представлять какой-либо ценности работодателю.
Выбор языка
Новичку для обучения программированию я бы посоветовал язык python, поскольку он позволяет довольно легко разобраться в различных принципах объектно-ориентированного программирования, при этом не привыкая к строгой динамической типизации. Как показывает практика, чаще возникают сложности при переходе с языков со статической типизацией (где всякая переменная имеет свой заданный тип данных) на языки с динамической типизацией (в пайтоне её называют утиной типизацией. Если вкратце — то, что похоже на утку внешне, плавает как утка, шевелит лапами, крякает и т.д., то и является уткой), нежели чем обратно.
Да и в python фактически нету не объектно-ориентированного программирования, присваивания тоже как такового нет. Не нужно будет разбираться с памятью, как в сях, поскольку это язык сверхвыского уровня. А самое главное — правило отступа в 4 пробела заставляет новичка придерживаться хорошего стиля программирования. Да и что уж говорить… язык был написан математиком и заставляет программиста писать более понятный код, чем обеспечивает возможность продолжения проекта третьими лицами, чего нельзя со стопроцентной уверенностью сказать про ruby и perl.
Затем стоит разобраться в C и C++, потому что без них никуда совсем и они являются родителями C#,Java, python и вообще практически всего. После того, как вы разберётесь с основными фишками ООП (полиморфизм, инкапсуляция, наследование) в python, в C++ вам уже будет проще вникнуть.
Почему именно Linux?
На этот вопрос проще ответить известной фразой: «Потому что он был написан программистами для программистов». Кроме того он заставляет разбираться, что и для чего в системе находится и как создаются проекты в средах разработки. Кроме того, чтобы начать программировать, вам не нужно будет скачивать пиратский софт. Всё, что понадобится — подключение к интернету и умение установки с репозиториев. Также вы можете сразу же после установки начать учиться писать системные сценарии прямо в командной строке, либо создавая отдельные файлы со скриптами. Полезная книга для этого: Advanced Bash-Scripting Guide, Автор: Mendel Cooper. Для начала, если нет сил и возможности долго разбираться, есть хорошие дистрибутивы вроде Ubuntu и Mint (Mint более удобен юзеру, перешедшему с семейства win благодаря cinnamon), в последних же версиях ubuntu по умолчанию поставлена графическая оболочка unity, которая весьма неудобна ещё не освоившемуся пользователю. Но ничего не мешает её поменять. Потом можете попробовать Arch Linux. Настроить его может и новичок используя archwiki, но это в любом случае займёт немалое время. Mint же работает «из коробки» и удобен для ноутбуков. В конечном счёте советую Mint для начала.
После установки Linux
Итак, вы поставили Linux. С чего же теперь начать? Правильно! Надо начать изучать английский! Без этого языка придётся довольно туго, поскольку большинство полезных книг, мануалов, тьюториалов и статей написаны на английском. А книги, которые издаются на родном и могучем, как правило являются довольно слабым переводом зарубежных. Хорошо, если ещё при этом не help переведён. При этом фактически вся сфера IT находится в США, ну и соответственно не знаешь язык — придётся ждать, пока переведут. Кроме того, сам Linux желательно держать на английском и учиться всё называть английскими именами. В последних версиях того же Python можно вообще программировать на русском, и всё постепенно и идёт к таким возможностям, но пока что это скорее занятие на большого любителя.
Итак, вы подтянули английский до уровня «могу читать и переводить со словарём»
Предыдущий пункт, конечно же, можно выполнять параллельно изучению самого программирования. Но если вы уже его прошли, процесс дальнейшего обучения программированию пройдёт гораздо быстрее. Теперь вам потребуется разобраться, в какой среде лучше программировать и по какой литературе изучать язык. Для новичка в программировании в Linux есть множество навороченных текстовых редакторов. Но приятнее всего работать в Geany, либо в Kate.
Зарегистрируйтесь на форумах с одним и тем же ником, поскольку работодатели зачастую просматривают вашу активность на форумах, чтобы оценить вас. Кроме того на различных сайтах для фриланса, с них лучше начинать оттачивать мастерство программирования. Кроме того присутствует денежная мотивация для обучения, что ускорит темп вашего обучения.
Python (как изучать и в чём писать)
Итак, допустим, что вы согласились с тем, что стоило бы начать изучение с Python. Интерпретатор Python обычно уже имеется в Linux после установки. Как уже и писалось выше, можете сразу начать писать хоть в любом текстовом редакторе. Но для более серьёзных проектов вам понадобиться более мощная интегрированная среда разработки(IDE). Есть среда Eric конкретно для python, но я бы рекомендовал поставить PyDev на среду Eclipse. Но стоит начинать учиться писать программы именно в простейшем текстовом редакторе! Это заставит вас лучше запоминать команды и синтаксис и соответствовать стилю программирования.
Для изучения python советую книгу Марк Лутц, «Изучаем Python». Она является именно учебником, а не справочным руководством и позволяет начать обучение с нуля. В качестве справочника используйте docs.python.org. Кроме того можно начать изучение по Dive into python. На русский язык нет полного перевода пока.
Кроме того, в интернете существует множество курсов по программированию (Школа программирования, центр Специалист). С нарушением авторских прав на торрент трекерах, таких как rutor.org,, nnm-club.ru выложены видео с этих курсов, нельзя скачивать их. Лучше сходить на них, потратиться, но при этом получить свидетельство о повышении квалификации. Подобные свидетельства будут вам в плюс при собеседованиях.
Изучение C/C++
Проще всего изучать по книгам Подбельского C/C++. А так читайте книги от создателей языков. 1.Брайан Керниган, Деннис Ритчи: Язык программирования C. 2.Бьерн Страуструп, Язык С++. Также можно запастись справочником Герберт Шилдт, Справочник программиста C/C++.
В Windows, конечно, с выбором среды разработки было вроде как попроще. В ней лучший вариант — Microsoft Visual Studio. Более древний — Borland C++.
Но зато в Linux есть простор для выбора. Сначала, пожалуй, стоит учиться писать также в Geany, либо в vi или vim. Но для более простой разработки лучше воспользоваться Eclipse-cdt. Если же вы захотите всё и сразу, то KDevelop, в нём можно и простые консольные приложения создавать, и с использованием Qt для GUI.
После освоения C/C++ учите библиотеку Qt, пробуйте примеры из самого Qt.
Изучение java
Если же ваш выбор пал на Java и вы наслышаны о растущем рынке ПО для смартфонов, советую воспользоваться Eclipse. На официальном сайте есть сборка Eclipse for Mobile Developers. Отлично для освоения.
Для освоения java подойдут книги Герберта Шилдта. Для программирования под iOS, Android советую также найти видеокурсы. Так будет понятнее на первый момент.
Delphi
Для данного языка отличная среда разработки — Lazarus IDE. Если вы прошли предыдущие пункты, то мышкой программировать наверняка получится.
С#
И для C# в Linux есть среда, хоть и по сравнению с Visual Studio немного неполноценная. Эта среда — Monodevelop. В ОС Windows в Monodevelop вы сможете вести разработку и для мобильных телефонов, под Linux такая возможность появится в будущем, как обещают.
Литература: Герберт Шилдт, C# 4.0.
И наконец...
В процессе изучения очередного языка беритесь за несложные задания на сайтах фриланса. Со временем это существенно повысит ваши способности в программировании и кроме того у вас будет, что предъявить работодателю. Также изучите любую систему контроля версий, на будущей работе скорее всего пригодится. Как можно больше пишите, общайтесь на форумах для программистов. Если читаете пример из книги, лучше хотя бы раз его написать самому. Чтобы выучить язык — нужно на нём как можно больше говорить. Чтобы стать программистом — как можно больше правильно, лаконично и исчерпывающе для определённого задания писать. Если у вас возникает проблема при написании программы, воспользуйтесь import this в python, прочтите дзен и нужная мысль непременно посетит вас.
Для начала работы в какой-либо компании достаточно будет хорошо изучить хотя бы один язык. Зарегистрируйтесь на сайтах работодателей, посещайте ярмарки ваканский. Какое-то время нужно будет просто присмотреться. Как гласит известная, но переделанная фраза В.И.Ленина:
«Программистом может стать даже домохозяйка, но при наличии соответствующего образования».
Так что дерзайте, товарищи.
Автор: yavalvas