В онлайне сейчас множество курсов по разным направлениям и в том числе языкам. Новичку зачастую сложно сразу найти подходящее направление в таком многообразии. К тому же каждый язык имеет свои особенности, достоинства и сложности. У каждого языка есть своя сфера применения и список связанных технологий (стек).
Чтобы вам лучше разобраться во всем многообразии, я подготовил краткий обзор по популярности и применению языков программирования.
---------------------------------------------------------------------------------------
И тут стоит сразу упомянуть, что HTML (hypertext markup language) и CSS (cascade stylesheets) нужны для верстки обычных статических веб-страниц, но они не являются языками программирования. Их можно освоить буквально за неделю. Если вы не знаете с чего начать, то начните с них. Технологически они очень простые, но знать их будет полезно. Так вы поймете, что в программирование не ничего сложно и освоить данную профессию может практически любой.
----------------------------------------------------------------------------------------
JavaScript
Самый популярный пожалуй, на данный момент - JavaScript. На нем можно разрабатывать практически все что угодно, включая программы для любых платформ. JavaScript - единственный инструмент для создания клиентской части веб-приложения, без которой не обходится ни один сайт в мире.Кроме того на JavaScript можно писать:
- сервисные и консольные приложения
- мобильные приложения
- приложения для настольных компьютеров
Средняя зарплата для вакансии "программист JavaScript" в Москве 104 000 рублей, новички могут найти работу в пределах 36 000 - 60 000 рублей.
Преимущества и недостатки JavaScript:
- легко освоить
- часто выбирается в качестве первого языка
- широко используется
- можно разрабатывать практически любые приложения под любые платформы
- слабая типизация. Здесь с одной стороны программисту не нужно будет особо заморачиваться, но программа может получиться менее надежной. Но можно это обойти, используя дополнительные инструменты.
- не подходит для создания сверхсложного ПО: банковского, промышленного
- часто существуют более сложные, но и более надежные инструменты
Стек технологий, которые нужно дополнительно изучить:
- редактор кода или IDE: Notepad++, Sublime Text, WebStorm
- отладчик: Chrome WebInspector (DevTools), Firebug
- среда исполнения для серверного ПО: NodeJS + менеджер пакетов npm
- средства для разработки десктопных приложений: Electron, AppJS, NwJS (Node-Webkit), Windows8+
- Фреймворки для веб-разработки: jQuery, AngularJS, ReactJS, BackBone, Ember, Meteor и др.
- JSON - самый популярный формат передачи структурированных данных
- MongoDB - документо - ориентированная база данных. Можно создавать js-процедуры
Как правило программисты не пишут с нуля какие-то базовые вещи. Для этого используется основа или скелет, а на него навешивают уже конкретную логику или действия.
PHP
PHP (Hypertext Preprocessor) - абсолютный чемпион по популярности в серверной веб-разработке, на котором написано 80% сайтов.Для примера: Авито, ВКонтакте, Facebook, WordPress, Badoo.
Применение данного языка ограничено созданием сервисных приложений, скриптов, утилит.
Средняя зарплата для вакансии "программист php" в Москве 88 000 рублей, новички могут найти работу в пределах 38 000 - 66 000 рублей.
Преимущества и недостатки php:
- легко освоить
- php также часто выбирают в качестве первого языка
- огромное количество готовых решений
- очень широкое распространение: легко найти работу или разовый заказ
- последние версии языка (php 5.6, php 7) значительно улучшают синтаксис и возможности, по сравнению с php 5.0
- слабая типизация
- богатая "стандартная библиотека", с помощью встроенных функций можно сделать практически все, что угодно. Страдает в ней организация и логика, легко запутаться.
- очень много низкокачественного кода и готовых решений. И поэтому легко наткнуться на неправильное решение и написать некачественный код.
- очень много критики
Стек технологий, которые нужно дополнительно изучить:
- текстовый редактор или IDE: SublimeText, Notepad++, Atom, PhpStorm
- сервера баз данных: Mysql, PostgreSQL
- No-SQL хранилища: Memcached, Redis, MongoDB
- отладчик: XDebug, Профайлер, XHProf
- популярные фреймворки: Symfony, Yii, Laravel, Zend, Silex, Lumen, Slim
- менеджер пакетов: Composer
Python
Популярный язык для веб-разработки и анализа данных. На данном языке можно также разрабатывать веб-сервисы, скрипты, утилиты. Используется он и для анализа данных, машинного обучения и нейросетей.
Средняя зарплата для вакансии "программист Python" в Москве 105 000 рублей, новички могут найти работу в пределах 60 000 рублей.
Преимущества и недостатки Python:
- легко освоить
- удобный синтаксис
- прекрасно подходит для своих задач
- масса полезных фреймворков и библиотек
- частичная поддержка многопоточности
- можно значительно ускорить, используя Cython
- неявная типизация
- низкая производительность
Стек технологий, которые нужно дополнительно изучить:
- IDE: Pycharm
- Cyton-синтаксис: для написания компилируемого кода
- для анализа данных: iPython/jupyter, Anaconda, Matplotlib, Pandas, Numpy, Pyspark
- для машинного обучения, нейросетей: Scikit-learn, Keras, Tensorflow
- для веб-разработки: Django, Tornado, Flask
- менеджер зависимостей: pip, conda
Java
Очень консервативный и надежный язык, который подходит для разработки под любые платформы. На Java можно делать десктопные приложения, приложения под Android, серверные программы, сложное ПО (н-р: промышленные и банковские системы).
Средняя зарплата для вакансии "программист Java" в Москве 115 000 рублей, новички могут найти работу в пределах 46 000 - 87 000 рублей.
Преимущества и недостатки Java:
- простой и понятный синтаксис
- работает на всех операционных системах: Windows, Linux, MacOS и др.
- можно написать ПО любой сложности, от маленьких утилит до огромных программных комплексов с миллионами строк кода
- используется для создания приложений под Android
- подразумевает высокий уровень абстракции, т.е. написанный код будет легко поддерживать и развивать. Но типовые вещи будет сделать довольно сложно.
- строгость, консервативность, отсутствие неявных конструкций, высокая надежность кода. Но код при этом может получиться громоздким и многословным
- высокий порог вхождения, новичку в программировании будет сложно разобраться
- для исполнения программ на десктопном компьютере/сервере должна быть установлена "Виртуальная машина Java"
Стек технологий, которые нужно дополнительно изучить:
- IDE: Eclipse, Netbeans, IntelliJIDEA, AndroidStudio (для Android)
- JVM - Java Virtual Machine, среда выполнения java кода
- популярные фреймворки: Spring, Swing, Hibernate, RxJava
- Android-фреймворки: OrmLite, RoboSpice, Picasso, Retrofit, Butterknife
- Android-инструменты: Android SDK Manager, Android Emulator, ADB
- базы данных: Oracle, Mysql, MSSql и любые другие (JDBC)
- менеджер зависимостей/система сборки: Gradle, Ant, Maven
А что же в итоге изучать?
Прежде всего выберете для себя интересное направление: веб-разработка, серверная разработка, мобильная разработка, десктопная разработка. Затем оцените свои силы и навыки, выберите язык, который вы в силах освоить.