Как я выбирал какой язык программирования учить и что из этого вышло?
Думаю, какой язык выбрать первым для изучения - интересует многих. Хочу поделиться своим опытом и наблюдениями. надеюсь вам будет интересно.
Так как я работаю в digital маркетинге и часто запускаю разные онлайн проекты - то есть список технологий, с которыми сталкиваюсь регулярно: css, html, javascript, php, SQL… но одно дело просто знать что они существуют. Другое - начинать в них разбираться и работать.
Пойдем по порядку, как я изучал:
В интернете много разнообразной информации по поводу, какой язык лучше для начинающего, например эта инфографика (только для iOS уже нужен Swift). Но, к сожалению – очень часто эти публикации, не позволяют комплексно взглянуть на ситуацию. На форумах - каждый хвалит свое болото: обещая рассвет одному языку и скорую мучительную кончину всем конкурентам. В профильных изданиях могут писать, что лучше всего кодить на Java и С так как изучив один из этих языков ты автоматически будешь получать и высокую зарплату и понимание сути программирования. Только забывают написать - сколько времени и нервов может уйти у человека, прежде чем он научится делать что-то полезное. В особенности, если он не имеет профильного образования и работает на полный день в другой области. В общем нужно формировать картинку самому.
Основные факторы, которые выделил при выборе языка:
Мотивация, зачем оно мне надо?
Одним язык необходим, чтобы уметь решать какие-то конкретные задачи. Например, создать свой сайт или скрипт для парсинга. Другие хотят просто зарабатывать, и с радостью будут учить то, что принесет больше денег. Кто-то мечтает создать свое мобильное приложение, другие увлекаются роботехникой и есть желание научиться программировать на низкоуровнем языке.
По сути мне все интересно, но жаль тратить время на изучение низкоуровневых языков. Так как основной сферой применения для себя выбрал -создание веб сервисов. То есть мне нужен был язык, который позволит создавать сайты, в идеале чтобы он легко учился и знания можно было сразу применять в жизни. В этот момент у меня было очень смутное представление, что означает слово “сложность изучения”, поэтому считал, что в принципе за три месяца смогу спокойно делать первые сайты с нормальным бекэндом. Идем пункт два:
Популярность языка и его перспективы, что выбираем?
Чем более популярен язык, тем больше под него решений и как следствие он может решать больше разноплановых задач. Кроме того популярность влияет на скорость развития языка, обновления библиотек под него. В данный момент существует много рейтингов, например рейтинг на GitHub или индекс TIOBE, также есть рейтинг RedMonk. Из-за разных методологий подсчета в каждом из них есть свои лидеры. В целом, можно выбрать следующую группу:
- JavaScript
- Java
- Python
- PHP
- Ruby
- C++
- C
- JavaScript – самый популярный язык для разработки клиентской части web-applications. Обязателен для frontend разработчиков (наряду с HTML5 и CSS3). Один из самых обсуждаемых языков благодаря его растущей популярности в области server-side программирования (node.js). Основное его преимущество: как только вы начнете учиться JS вы сможете увидеть реальные результаты в виде игрушек в браузере, лучшей работы сайта и т.д. что будет мотивировать изучать язык дальше. О преимуществах JavaScript как первого языка для обучения, хорошо описано в этой статье.
- Java – один из самых трудных языков программирования для начинающих, обучение занимает от года. Однако изучив его, вы сможете писать приложения практически для любой платформы и устройства. Как бонус –Java разработчики являются самыми высокооплачиваемыми специалистами на рынке ИТ. Подробнее о языке и где получить знания по нему можете узнать из этого материала.
- Python - Код легко читается, у него понятная структура. Стандартного инструментария достаточно для начала обучения. Один из самых рекомендуемых языков для начинающих. Недостаток, как для меня – чтобы начать запускать веб приложения – необходимы знания смежных технологий. Аналогично игры или приложения под смартфоны – для них практически нет нормальных библиотек из-за чего, этот язык трудно использовать для таких целей. По этому поводу хорошо написал Джеймс Хэг в статье о том, что пришла пора отказаться от Python, как от основного языка, используемого при обучении программированию.
- Ruby - Как и Python, код легко читается. Структура также идентична Python. В сравнении с остальными языками, выбор стандартных библиотек скуднее — нужно потратить время на поиски. Однако из-за удобства – он хорошо подходит для разработки собственных проектов. В основном, известен благодаря очень популярному фреймворку Ruby on Rails
- PHP - Хороший язык для создания веб-приложений для работы с данными. Очень популярен в Ru сегменте – практически все сайты в вебе у нас написаны с помощью PHP. Однако он имеет ряд критиков, в частности из-за проблем с безопасностью и низкой производительностью в сравнении с другими языками. В последней версии по заявлению разработчиков, эти проблемы были устранены. Для новичка есть такие бонусы в его изучении: большое количество обучающих материалов, развитое сообщество, множество библиотек и frameworks, низкий уровень входа и возможность быстро найти работу.
- C – В сравнении с Python, JS и Ruby - это довольно сложный язык, но достаточен популярен в применении - начиная от написания операционных систем до разнообразных прошивок для микроконтроллеров. Из особенностей, это высокие возможности работы с памятью компьютера, низкий и широкий круг применения языка.
- C++ - как и C сложный для начинающего, однако он также повсеместно используется в программировании. Самая его популярная область применения – это разработка игр, также на нем пишутся сложные прикладные программы.
По каждому из этих языков точатся дебаты по потенциалу развития его в будущем. Так например, Python становится основным языком для изучения в технологических университетах США и между тем, есть ряд сфер где на нем проблематично работать. В целом можно сказать, так как эти языки лидеры, то не стоит опасаться их исчезновения в обозримом будущем.
Причины: большое количество созданной на этих языках инфраструктуры, наличие библиотек, развитие сообщества.
Попытка номер 1
В общем прочитав большое количество литературы, форумов и возможностей я выбрал Python. По логике PHP распространение и некоторые мои сайты написаны на нем, но как-то отпугнуло большое количество негативных отзывов. Хотя по рейтингу востребованности языков среди работодателей, он лидирует.
В общем даже сейчас Python мне нравится – он действительно сравнительно легок в изучении и мощен, но после трех месяцев изучения я нисколько не продвинулся к своей цели. Да, я уже умел писать парсеры, обрабатывать тексты и даже создавать примитивные игры (Спасибо Coursera за курс Interactive Programming). Но к цели меня это не приблизило.
Я начал разбираться с Django Framework, в надежде ускорить процесс практического использования языка, но внезапно передо мной встал простой факт: чтобы запустить сайт, знание Python мало. Необходимо знать, как работает сервер, как передаются запросы в браузере, необходимо хорошо знать документацию по работе самого framework, плюс Must have: знания CSS, HTML, JavaScript – не стоит говорить, что у меня всего этого не было.
Нехватка знаний приводила к тому, что при создании сайта и появлении ошибки я совершенно не понимал откуда она взялась и куда идти - в настройки сервера, в код, в анализ запросов и т.д..Я мог два дня лазить по stack overflow получать советы, реализовывать и получать ничего…После нескольких недель такой работы я отчаялся и забил – решил программирование не для меня. Считаю, что при выборе первого языка допустил две ошибки:
- Недооценил объем знаний, необходимый для решения моих задач
- Выбрал не тот язык как для начинающего, так как мне как раз нужны были для мотивации - реальные кейсы работы здесь и сейчас.
Попытка номер 2
Однако в последующей работе, не раз сталкивался с задачами – когда именно программирование могло мне помочь. Поэтому через год перерыва я начал свой путь заново. Только с другого языка – теперь я выбрал Java Script.
Моя аргументация:
- Зная СSS и HTML – могу уже создавать полноценные сайты с простой логикой работы, что для меня как раз важно;
- Язык один из самых популярных, а значит – востребованных, плюс большое количество библиотек, frameworks, обучающих материалов. Возможности изучения ограничиваются только желанием, даже на Голос можно спокойно изучать этот язык по урокам @rassen;
- Результат обучения виден сразу, загрузил на хостинг и можно хвастать;
- Java Script работает в браузере, то есть программы на нем – могут работать на любом устройстве, где есть браузер (планшеты и мобильные включены);
- Хорошо развивается серверное применение Node JS, что также плюс;
- Как маркетолог работаю со многими программами, которые использует JS, полезно знать – что конкретно ты устанавливаешь к себе на сайт, и как это работает.
Сейчас пишу скрипты, делаю примитивные игрушки, изучаю библиотеки - мне нравится и надеюсь, что скоро смогу похвастать действительно стоящими реализациями. А к Python я вернусь обязательно, как говорил, язык мне понравился - и со временем, когда дойду до backend надеюсь приму его за основу.
В общем такая история, если кто из вас программирует -напишите про свой опыт.