80LevelElf about IT Записи Мои проекты Обо мне
Посмотрите на этот прекрасный Hyundai Gets! Удобная практичная машина, приспособленная для любого типа использования! Вы можете ездить на ней по городу, по бездорожью, по болотам или использовать как временное жилье. ![](http://i.imgur.com/F3UZZWmm.jpg) А вот почему-то, когда кто-нибудь говорит так про JavaScript многие, соглашаются. Мое мнение про разработку на JS под мобильные системы можно прочитать [*здесь*](http://80levelelf.com/Post?postId=1). Но в общем-то этот пост не про JS, а про то, какие языки для чего используются и какие языки надо учить, если вы хотите заниматься тем-то и тем-то. Статья немного перекликается с [*этой*](http://80levelelf.com/Post?postId=2), хотя старается брать куда шире и вместо того, что дать один ответ – здесь я стараюсь рассмотреть все возможные варианты. В первую очередь я имею в виду, что вы сможете получать деньги за работу в области Х на языке Y. ## Enterprise / корпоративная разработка / бекенд (без веба) ![](http://i.imgur.com/KNyVHWEm.jpg) _Я знаю, что это Стив Возняк. Просто как-то так и должен выглядить настоящий Enterprise программист._ Старичков типа [*Perl*](https://ru.wikipedia.org/wiki/Perl#.D0.A0.D0.B5.D0.B4.D0.B0.D0.BA.D1.82.D0.BE.D1.80.D1.8B) и многообещающих, но пока не особо используемых новичков типа [*Golang*](https://ru.wikipedia.org/wiki/Go) и [*Scala*](https://ru.wikipedia.org/wiki/Scala_(язык_программирования)) рассматривать не буду, так как работы на них уже или пока мало. __C++ (837 позиций в Москве через hh.ru)__ С++ все еще применяется очень много где и остается основным языком для написания высоконагруженных систем или самых критичных частей высоконагруженных систем, а также для низкоуровневого вещей, типа драйверов. Плюсы: - В больших городах много хорошей работы на С++ - За которую обычно хорошо платят - Используется в больших интересных компаниях аля Яндекс Минусы: - В средних городах, резко сокращается возможность трудоустройства. Работа сводится к местам типа «СарМеталлКонструктСварСцепСпецСтройПроект» с грустными проектами и зарплатой. - Язык опасный и не сказать, чтобы комфортный. Куда более низкоуровневый, чем привыкло большинство программистов. - Область применения сильно ограничена вышеизложенными областями. __C\# (833 позиции в Москве через hh.ru)__ C\# много где применяется в Enterprise, но не так много как Java. Найти работу на C\# в Enterprise не так сложно, но сложнее, чем в Java. Вообще если вы хотите работать в Enterprise, то непонятно зачем учить C\#, если можно Java? Плюсы: - На C\# правда куда удобнее и приятнее разрабатывать, чем на Java. Скачок вперед заметен. - Найти неплохую работу вполне реально даже в среднем городе. Минусы: - В Enterprise пока чаще используется Java. - Область применения C\# меньше, чем у того же Java. В последнем и BigData и даже нормальное [*машинное обучение есть*](http://80levelelf.com/Post?postId=12). - C\# в России мало используется в больших компаниях типа Яндекса, Mail.ru. В основном та же Java. __Java (1360 позиции в Москве через hh.ru)__ Java – это все для Enterprise. Пока еще Java = Enterprise. Плюсы: - Очень много интересной работы в Enterprise. В любом городе. - Часто используется в больших компаниях. - Очень развитая экосистема, занимает очень много ниш на рынке бекенда – можно легко найти проект по вкусу. Минусы: - Разве только сам язык – уже старенький и неповоротливый. ## Бекенд для сайтов. _Не нашел смешную картинку, да и не гоже над самим собой смеятся._ Создал отдельное сравнения языков, использующихся в разработке бекенда для сайтов, потому что – это целая отдельная обособленная ниша от обычного бекенда, рассмотренного выше. Тут используемых языков очень много, но можно легко выделить основные: __C\# (Asp.net):__ Вот на рынке бекенда для веба C\# занял очень большую нишу, которая стала основной для этого языка, вокруг которой и строится экосистема. Вы думаете, зачем Microsoft делает .Net Core, портирует .Net на Linux – чтобы Asp.net можно было запускать на Linux! Плюсы: - Работы в веб-бекенде на C\# много. Я бы даже сказал, что основная работа на C\# будет в веб-бекенде. Минусы: - Чаще всего это не такая интересная работа, с точки зрения сложности проекта. Обычно, это среднего размера сайты, для разработки которых привлекают разработчиков, которые знают C\# + JavaScript (и миллион сопутствующих JS-библиотек). Естественно ничего интересного ждать не приходится. В прочем это верно для всех последующих языков. __Ruby / Ruby on Rails (226 вакансий на hh.ru в Москве):__ Когда-то это была очень крутая связка, на которой зарождались многие известные стартапы, но что-то сломалось и Ruby / RoR перестали быть такими крутыми и распространенными, а проекты перестали запускать на Ruby / RoR. Говорят, разработчики больно дорогие, а Ruby больно медленный. Плюсы: - Разработчики на Ruby все еще дорогие. Минусы: - Жалко, что уже не такие востребованные. __Python (968 вакансий на hh.ru в Москве):__ Вообще язык на подъёме. В первую очередь, конечно, благодаря рассвету Machine Learning и прочего Data Science. Но и без этого, Python стал де-факто тем инструментом, который удобно использовать, когда скорость не так важна. На рынке веб-бекенда Python занимает неплохую долю. Плюсы: - Python один из самых нахваливаемых языков в плане удобства разработки. - Работы много, в том числе в больших компаниях. Минусы: - На Python вы будете ограничены веб-бекендом и Data Science. Ничего высоконагруженного, чрезмерно сложного и так далее, как в случае с C++ / C\# / Java – не будет. __Java (Spring MVC):__ Java слишком тяжела для веб-бекенда. Веб-бекенд далеко не всегда подразумевает большую точность и устойчивость, а то вот скорость разработки обычно критична, поэтому Java – не самый удачный выбор, если вы хотите разрабатывать веб-бекенд. На Java работает все еще много сайтов, написанных когда-то, к тому же она еще популярна в корпоративной веб-разработке. Но смысл вкладываться в то, что в упадке? Плюсы: - Еще есть интересные корпоративные проекты на Java. Минусы: - Скоро их будет меньше. __PHP (1237 вакансий в Москве на hh.ru)__ Когда-то PHP был основным языком для вебовского бекенда. Посмотрите на большие веб-проекты, созданные 10-15 лет назад – Facebook, ВКонтакте. Их веб-бекенд написан на PHP. Но язык от рождения был с изъянами (правда 7 версия вроде как немного выправила ситуацию), но большие и интересные проекты на PHP уже давно не стартуют. Хотя из-за низкого порога входа язык очень популярен на фрилансе и маленьких сайтах. Плюсы: - Много работы в любом городе. Наверно больше, чем на любом другом языке. - Очень хорошо подходит для фриланса. Минусы: - Проекты с основном маленькие, скучные. Работа в основном в среднего размера веб-студиях. - Зарплата тоже не ахти. __Node.js (177 вакансий в Москве на hh.ru)__ Особо описывать здесь нечего – JavaScript в бекенде. Плюсы: - Если вы знаете JavaScript (то есть веб-разработчик), то это идеальный вариант для вас. - На Node.js сейчас стартуют новые интересные проекты. Минусы: - Работы не так много. В основном в больших городах. - В основном ищутся Full Stack разработчики, что в общем-то вряд ли будет проблемой, ведь если вы решили выучить Node.js, то скорее всего знаете JavaScript. ## Веб – клиентская часть. ![](http://i.imgur.com/dG9OYMyl.jpg) _Ладно, я знаю - тупая шутка)_ __JavaScript (2173 вакансий в Москве на hh.ru):__ В общем, если вы хотите делать клиентскую часть для сайтов, то от JS никуда не деться. Да, есть другие языки, которые переводятся в JS во время компиляции, но, чтобы на них разрабатывать все равно надо знать JS (будем смотреть правде в глаза). Плюсы: - Работы много. Везде, где угодно, какой угодно. - Идеально подходит для фриланса. Минусы: - Язык конечно ущербный, хотя может я просто не прочувствовал всю изюминку. __TypeScript (114 вакансий в Москве на hh.ru):__ Наверно самая популярная попытка усовершенствования JavaScript. JavaScript все равно нужен, но на TypeScript писать куда приятнее. Плюсы: - Большой шаг вперед по сравнению с JavaScript. - На TypeScript де-факто базируется один из самых популярных веб-фраемворках – Angular (начиная со 2 версии). Минусы: - Работы не так много, особенно в небольших городах. ## Разработка под смартфоны. ![](http://i.imgur.com/TfRr3DZl.jpg) _Вот примерно столько девайсов должно поддерживать ваше Android-приложение_ Прелесть подсчета статистики языков программирования для смартфонов в том, что на hh.ru не так трудно однозначно отделить программирование под Android от прочей Jav’ы. __Java / Android (522 вакансии на hh.ru в Москве)__ Думаю, особого представления или описания что это и зачем нужно не надо. Если вы хотите писать приложения под Android, то не то, чтобы у вас был бы какой-то настоящий выбор помимо Java. Плюсы: - Под Android пишут везде. Маленький город или большой – работа есть. - Насколько я могу судить – платят хорошо, платят много. В общем даже я какое-то время немного писал под Android, но увы – любовь к бекенду, куче кода и заковыристой архитектуре пересилила. - Самое оно для запуска стартапа в одиночку или работы на Upwork. Минусы: - Очень похоже на веб-разработку, так что, если вы больше любите бекенд, как я, то вам не очень понравится. __Swift, Object-C / IOS (555 вакансий – почти как в Android. Совпадение? Не думаю!)__ В общем, тут как на Android – если хотите писать под IOS, то придется учить Swift (Object-C, я думаю уже смысла нет). Хотя нет – если вы хотите писать под IOS, вам придется еще купить iPhone, Mac и платный аккаунт разработчика Apple =) С другой стороны, говорят, что писать под IOS выгоднее, чем для Android – но лично я подтверждения этому не нашел. Плюсы: - Те же самые, что и для Android Минусы: - Те же самые, что и для Android. - Только еще существенный входной ценз, в виде затрат, перечисленных выше. __Windows Phone / C\#__ Шучу) Кому оно надо. __Xamarin / Apache Cordoba / т.д.__ [*Уже писал про это*](http://80levelelf.com/Post?postId=1). ## Data Science / Machine Learning ![](http://i.imgur.com/GnA7ha2l.jpg) _Ну просто забавно же =)_ Зарождающаяся на наших глазах отрасль IT. Много математики, много веселья, много денег. Вообще на hh.ru сложно понять специалисты на каком языке нужны, так как в вакансиях обычно все вперемешку. Всего в Москве 103 вакансии по 'Machine Learning’. __Python__ Большая часть мейнстримовых deep learning фреймворков ориентируется именно на Python, что делает его самым логичным претендентом на язык, который надо выучить, если вы хотите заниматься Machine Learning. Помимо этого, Python кроме Machine Learning применяется еще много где, а вот, например, R – уже не особо. Плюсы: - Самый распространенный язык для ML - Основная работа для ML на Python - Большая часть фреймворков для ML на Python Минусы: - Лично я не вижу таких. __R__ Набирающий популярность язык для машинного обучения и статистики. Язык специализирован, но насколько я могу судить не так уж и широко распространен. Плюсы: - Не эксперт в ML, так что не смогу сказать насколько R лучше Python в машинном обучении. Минусы: - Слабое распространение __Java__ Так как Java – это основной язык для корпоративного бекенда и Big Data, то логично, что: 1) У самых распространенных фрейморков (точно знаю про TensorFlow) есть привязка к Java. 2) Для Java есть свой крутой фреймворк ([*писал про это здесь*](http://80levelelf.com/Post?postId=12)). Плюсы: - Удобно, если вы уже знаете Java. Минусы: - Работы в России с фреймворком DL4J мало, если она вообще есть.
(21.02.2017)

blog comments powered by Disqus