
Порог вхождения: высокий, низкий, средний
Среди программистов часто можно услышать о «пороге вхождения» — понятии, отражающем количество усилий, необходимое для освоения языка программирования отдельно взятым «джуном» в достаточном уровне, чтобы написать свою первую серьезную программу и найти работу. «Порог вхождения» складывается из знания:- особенностей синтаксиса и нюансов языка;
- библиотек;
- алгоритмов и структур данных.
Web или не Web?
Web
Web-программистов можно разделить на Frontend- и Backend-разработчиков. Стоит разобраться, что означают эти термины. «Фронтенд» разработчики занимаются так называемой клиентской стороной — тем, что увидит пользователь. «Бэкенд» — это программно-аппаратная часть сервиса — то, что работает на сервере. Для Frontend-разработчика, решающего какой язык программирования выбрать, must-have это JavaScript и его фреймоврки: Angular JS, React и другие. Диалекты JS не так популярны, как их родитель, но тоже могут быть полезны: CoffeeScript, TypeScript. Есть ещё flash AS, раньше были JScript и VBScript, но это помнят только динозавры =) Кроме того, необходимо разобраться в HTML и CSS.
Не Web (Enterprise, Desktop, Mobile)
Я специально объединил эти языки программирования в категорию с таким странным названием. На большинстве из них можно писать и enterprise, и desktop, и даже мобильные приложения. Python — простой в понимании ООЯП, стал невероятно популярным в последнее время в связи с развитием Machine Learning: его адепты широко используют Python. ML — достаточно молодое направление в IT, и хотя первые плоды уже получены, я бы не стал спешить с погружением в эту отрасль при выборе языка программирования. Во-первых, нужно ОЧЕНЬ хорошо разбираться в математике. Во-вторых, волна популярности может пройти так же, как и с «блокчейном» или «нанотехнологиями». Кроме того, как ты помнишь, Python используется в web разработке. C++: классика, на основе «плюсов» строится всё и вся. Этот язык был прародителем всех популярных ООЯП, и новичку безусловно стоит обратить на него внимание. На его основе написано множество популярных приложений. Но большая вероятность «выстрелить себе в ногу» и сложный для восприятия синтаксис сводят на нет вероятность освоения новичком этого мастодонта программирования. Kotlin — Java для хипстеров — безумный микс ООП и функционального программирования. В последнее время популярен благодаря тому, что опытный разработчик, перешедший с Java на Kotlin, серьезно повышает свою производительность. Опытный девелопер быстро освоится в этом ЯП. Кстати, то же относится к Scala, но Kotlin популярен именно в Android. Java — прост для освоения новичком. В том числе, благодаря JavaRush: именно здесь я понял как выбрать язык программирования =) Синтаксис Java понятен, вероятность «выстрелить себе в ногу» имеется, но не критична.ООП или ПОП?
Процедурный подход
Процедурно-ориентированный подход предполагает написание программы, состоящей из последовательных операторов, которые можно собрать в единое целое для эффективного решения конкретного круга задач. К таким языкам можно отнести: C, PureBasic и Pascal. Те самые, что навевают уныние на старшеклассников и студентов младших курсов. Также существует относительно молодой GO. Тем не менее, знакомство с процедурными языками очень полезно для потенциального разработчика. Для меня погружение в процедурные языки связано с системой Mathematica (Wolfram) и университетской научной деятельностью. Благодаря правильным алгоритмическим подходам и простым процедурам, линейно двигаясь от начала программы до ее конца, мне удавалось вычислять значения, актуальные для современной теоретической физики. Именно благодаря этим «последовательным» ЯП, начинаешь понимать, что иногда проще написать код, чем считать самостоятельно. Изучение ПОП дает неплохую алгоритмическую подготовку, которую работодатель почти всегда хочет видеть у кандидата при приеме на работу. Основы всего и вся в ИТ строятся именно на процедурных языках, так что не стоит их недооценивать. Кстати, новички, решающие какой язык программирования выбрать для изучения, часто думают о том, что многопоточность — прерогатива исключительно ООП. Это не так. Процедурные ЯП тоже позволяют выполнять параллельные вычисления.
Объектно-ориентированный подход
Те, кто начал с процедурных языков, чаще всего неплохо подкованы в знании математики, алгоритмов и структур данных (это связано с акцентом на эти области знаний в технических вузах). Тем не менее, в современных реалиях успешными программистами чаще становятся те, кто хорошо усвоили другой подход к программированию — объектно-ориентированный. Идеология ООП позволяет строить по-настоящему глобальные системы. Особенность такого подхода — в схожести с реальным миром:- различные объекты взаимодействуют между собой и существуют независимо друг от друга.
- объекты имеют иерархию и способны перенимать или изменять поведение своих предков.
- можно оперировать абстрактными понятиями, но взаимодействовать могут только реально существующие объекты.
Пример Процедурно-ориентированные языки — это инструменты для решения конкретных задач. И если ваша задача претерпела изменение, пускай даже незначительное, вам скорее всего придётся тратить время и силы на переписывание всех алгоритмов. Представим программу, описывающую автосалон, который продает легковые и грузовые автомобили, как новые, так и подержанные. В процедурном языке для каждого объекта нужно описать функции, обрабатывающие ввод или вывод данных для нового легкового, нового грузового, б/у легкового и б/у грузового автомобилей. А что предлагает ООП? При объектно-ориентированном подходе нужно просто описать базовый класс ТРАНСПОРТ, который будет хранить в себе характеристики, присущие и тому, и другому типу автомобилей:
И методы для ввода-вывода информации. Затем создадим объекты, наследующие характеристики класса ТРАНСПОРТ: ЛЕГКОВУШКА и ГРУЗОВИК. Они содержат уточнённую информацию, присущую именно таким видам транспорта, а также методы ввода-вывода. Внезапно руководство салона решило расширить ассортимент и продавать еще и мотоциклы. Процедурный подход предложит переписать всю логику для новых и б/у мотоциклов с самого начала, в то время как ООП-язык позволит просто создать новый объект МОТОЦИКЛ, наследующий все характеристики суперкласса ТРАНСПОРТ и содержащий уточнения. А что будет, если добавлять разные транспортные средства? Процедурная реализация будет требовать больших трудозатрат, чем ООП. Причем чем больше ассортимент, тем меньше нужно будет делать манипуляций с объектами. |
Java: | 277 | python: | 227 |
php: | 188 |
c#: | 147 | c++: | 131 |
ruby: | 40 |
scala: | 24 |
kotlin: | 20 |
ИТОГИ
Вот на что стоит обратить внимание новичку при выборе языка программирования:- Популярность (Java стабильно занимает лидирующие позиции);
- Порог вхождения (Для Java — средний: разброс компетенций, которые требует работодатель, достаточно широк);
- Доступные материалы (на русском языке порталов, аналогичных JavaRush нет, следовательно, пальма первенства уходит угадайте кому =));
- Области применения: чем больше отраслей, в которых можно применять язык программирования, тем больше специалистов требуется на рынке. Про кросс-платформенность я уже говорил, но не устану это повторять.
Что ещё почитать: |
Почему многие разработчики сдаются, даже толком не начав |
---|
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ