Какой Язык Программирования Стоит Изучать В 2018 Году И Почему?

Если вы настойчиво хотите попасть в команду разработчиков компиляторов или в «Мир Дикого Запада» — тогда смело выбирайте и учитесь лучший язык программирование от TIOBE и самое главное: на уровне его спецификации.

А если серьезно, то сейчас в индустрии все настолько запуталось с логикой и выводами, столько маркетинга и воды, что самая выигрышная стратегия — пустить в ход собственные мозги и сделать быструю переоценку технических ценностей, к которым мы стремимся.

так привык.

В этом посте я постараюсь максимально понятно сориентировать разработчиков, начинающих свою карьеру, на риски выбора технологий и сделать правильные и далеко идущие выводы.



Ты повзрослел или еще нет?

Дети отличаются от взрослых в понимании слова «ответственность».

К сожалению, не все дети вырастают вовремя, а некоторые умирают в подгузниках.

Ничего страшного здесь нет — кроме одного: дети из команды программистов заставляют других сильно страдать, особенно когда сроки поджимают и релиз близок: они либо вдруг обосрались посреди открытого пространства, либо требуют соску во время мозгового штурма по предметной области с представителями клиента.



Какой язык программирования стоит изучать в 2018 году и почему?

Взрослые отличаются от детей пониманием главного принципа управления ИТ: «программирование — это привилегия».

Среди опытных и успешных коллег-разработчиков наиболее адекватные хорошо кодят и одновременно «двигают компанию вперед».



IT-индустрия сошла с ума

Да, мы люди и склонны к эмоциям.

Но до сих пор никто не знает, как правильно программировать, хотя со времени изобретения компьютера прошло более 50 лет. Никто! Все просто в истерике и пытаются привлечь в свой лагерь всё больше сторонников, одновременно соблазняя бизнес создать проект «на себе» :-) Поясню на примере.



Какой язык программирования стоит изучать в 2018 году и почему?



Скорость мозга

Дело в том, что первые компьютеры были очень медленными, очень медленными и очень дорогими.

Поэтому первые программы писались на языках очень низкого уровня, а иногда и непосредственно в машинном коде.

В наши дни такие «доисторические» технологии иногда используются, но лишь выборочно: для создания операционных систем и их компонентов (приближенных к «железу»), для игровых движков, для высокопроизводительных библиотек и т. д. серверы , Для криптовалюты и, конечно же, создавать языки программирования .

И если С , несмотря на свою тотальную дырявость и высокую опасность для разработчика, получился действительно хорош и завоевал сердца ценителей, тогда С++ оказался крайне уродливым и противоречивым существом – но что делать, такова жизнь.

Может быть Ржавчина , с правильными представлениями о безопасности памяти, будет иметь значение, но, похоже, он оставляет C++ далеко позади с точки зрения уродливого синтаксиса и нечитаемости.

Ситуация усугубляется появлением Голанг .

С одной стороны, в этом нет ничего нового, демобилизационный аккорд великого Кен Томпсон : просто жалкий остаток возможностей Java. С другой стороны, писать «относительно» системное и многопоточное ПО стало действительно проще, и это факт, который был оценен по достоинству.

многие компании :-) В этом лагере вы встретите в основном «настоящих» хардкорных бородатых программистов с глубоким знанием низкоуровневых технологий и аппаратного обеспечения, которые, как правило, выучили один язык программирования — но всю жизнь засыпают со спецификацией компилятора вместо жены .

Действительно, в этом лагере есть крутые люди.

А если вы не знаете, на что делятся команды процессора x86 выход в питоне - Позор вам и позор.

Так что совет: избегайте этого лагеря, пока не дочитаете пост до конца.

Но есть и другая сторона медали.

Реализация проектов здесь занимает не только много времени, но и.

в течение десятилетий .

Низкоуровневые языки программирования не только помогают, но, наоборот, мешают. Нарушения памяти происходят постоянно, требуются десятки и сотни тестировщиков (или можно выложить на github и будем тестировать коллективно) и тысячи юнит и других типов тестов, чтобы "оно взлетело" .

Многие разработчики, пришедшие в команду на старте проектов, не доживают до релиза и умирают от старости, помогая бета-тестерам до последнего вздоха.

Но эти смелые люди, пока не потекут глаза, пока не появятся стигматы, делают все возможное и.

рождаются.

шедевры .



Какой язык программирования стоит изучать в 2018 году и почему?



Архитектура и предпринимательство «мозга»

Поскольку никто до сих пор не умеет правильно программировать, методом естественного отбора сформирован лагерь «грамотного проектирования и надежности».

Вы без ума от программирования на языках, допускающих небезопасные операции с памятью через указатели — вы также можете довести мир до апокалипсиса: «ошибка сегментации в программном обеспечении ядерного реактора».

Как вы вообще можете начать создавать проект без строгой поддержки типизации в языке? И придумали следующие правильные языки программирования: Java и C#.

Но в Java забыли о вреде нулевых значений, а в C# не до конца продумали обратную совместимость.

Результатом является огромный корпоративный мир, относительно безопасный и относительно обратно совместимый.

В этом мире цель измеряется строками кода в день (обычно не более нескольких десятков, потому что пальцы трется до крови) и толстыми философскими и религиозными книгами о шаблонах проектирования и, ах да, чуть не забыл, о способ похоронить себя, проект, клиента и мир окружения в коде и утонуть в нем, в агонии вспоминая 20-уровневую иерархию наследования - о ООП .

Один из главных девизов лагеря – «зачем делать просто, если можно… сложно и надежно, надолго, на века!» Более того, некоторые из них умеют писать быстро и элегантно, мыть руки до крови и каждое утро собирать в голове структуру проекта, глядя одновременно на 3 монитора.

Но некоторые люди настолько увлекаются, что продолжают создавать иерархии иерархий внутри иерархий иерархий.

до бесконечности — и цель уже давно потеряна, а глаза продолжают гореть и руки чесаться.

Фактически, в областях, где предметная область четко сформирована и вписывается в «объекты со статусом и сообщениями между ними», такой подход работает очень хорошо.



Какой язык программирования стоит изучать в 2018 году и почему?

Особенно радует «строгая» (кавычки, ведь о Haskell мы поговорим позже) статическая типизация (это когда типы сущностей заранее известны, они проверяются компилятором и к числу нельзя добавить строку) , легкость и удовольствие при рефакторинге и улучшении кода и высокое, если не сказать отличное, качество среды разработки .

Коллеги в этом лагере часто очень образованы в архитектуре ПО, много читают (порог вхождения высокий), понимают возможности многочисленных библиотек платформ, шаблоны проектирования, техники написания тонны документации и создания автоматизированных тестов, тестирования этих тестов и можно потратить месяцы на написание макета, который окажется не нужен.

Опять же, проекты зачастую создаются и запускаются очень долго, большими командами, требуются многочисленные тестировщики, но характер ошибок на порядок менее фатальный, что воодушевляет. Попасть в эту «касту» развития предпринимательства очень сложно.

Если вы за 5 строк продемонстрируете, как можно решить задачу на PHP, которую ваши коллеги могут решить на Java за 5 дней, вас сожгут заживо в микроволновке :-)

Надежность «мозга»

В академической среде сформировался другой лагерь и набор функциональных языков программирования (Lisp, Haskell, Erlang и другие), очень интересных и рекомендуемых для понимания.

Вы без ума от программирования с использованием переменных и циклов — вы также можете сделать много ошибок! Программа — это набор вызовов функций, а вместо циклов используйте рекурсию, господа! ООП? Нет, мы о таком не слышали — классы типов и алгебраические типы данных.

Не знаю о аппликативные функторы и теорию категорий не листал - да ты же не свой мозг развиваешь, дружище.

На самом деле, на мой взгляд, чтобы войти в этот лагерь и понять его ценности, нужно очень напрячь мозг - ведь там будет много математики и еще более неожиданных, но замечательных концепций.

Опыт, полученный в этой команде, будет неоценим и пригодится при работе с другими языками программирования.

Говорят, кто-то иногда использует в реальных проектах функциональные языки: компиляторы, криптовалюты — несомненно, в ваших проектах будет на порядки меньше логических ошибок, которые уловит компилятор, а краткость, ясность и лаконичность кода на Хаскеле, конечно, поражают — но в эпоху «лабутэнов!» Людей, изучающих и понимающих эту красоту, становится все меньше.



Какой язык программирования стоит изучать в 2018 году и почему?



Результат и эффективность «мозга»

К черту архитектуру и ООП, брат! Ктулху любит тебя, да утка печатает - залог успеха! Сильная типизация? Кто в здравом уме присвоит строку числу?? Статическая типизация и компиляция — пустая трата времени, потому что код пишется один раз и если он не будет написан вовремя к релизу, то его выкинут (и выкинут в любом случае, но чуть позже).

Рефакторинг? Пишите сразу правильно :-) Инкапсуляция? Поставьте тире перед именем переменной и это все .

ООП — это ненужное усложнение.

Какая к черту компиляция - F5 и смотришь результат. Паттерны проектирования — нет, мы не слышали: скриптинг — это все… «Травки» хотите? Самое интересное, что когда углубляешься в языки с динамической типизацией (строгая в питоне, свободная в php и javascript), глаза постепенно открываются на реальную картину вещей, потому что:

  • код становится очень понятным и лаконичным и не нужно лазить по 20 классам (если это не касается системных библиотек)
  • можно быстро проверить идею через РЕПЛ
  • языки просты, часто минималистичны, содержат необходимые и мощные примитивы (списки, словари), которые, главное, умещаются в голове!
  • библиотек масса и любую задачу всегда можно решить в 5 строчек
И к черту рефакторинг :-) Жить стало веселее (надеюсь, разработчик, поддерживающий мой код, не узнает, где я живу).

В этом лагере часто встретишь много веселых людей совершенно разных специальностей, кроме «программирования на ассемблере», которые, тем не менее, могут решать задачи очень быстро и эффективно, в 5 строк, и поддерживать код и веб-проекты долго и успешно.

.

Посмотрите на последние тенденции в этом лагере и вдохновитесь этой философией счастья.

Просто и понятно среда программирования браузера , что может быть сексуальнее?

Какой язык программирования стоит изучать в 2018 году и почему?

Насколько легко теперь настроить неблокирующийся веб-сервер, обслуживающий тысячи соединений по 10 строк в каждом узел.

js и сообщество растёт как на дрожжах? И никаких «Eclipse XML Soap Entiny beans Enterprise OOP.» — json и csv и улыбка (и запах неизвестного растения).

А код читаем и помещается в мозг и поэтому счастливо работает долгое время и с такой же легкостью поддерживается долгие годы.

И оказывается, что «так» тоже можно успешно программировать, а годы, проведенные в «промышленных языках программирования», потрачены впустую (зато пальцы стали сильнее).



Выбор технологии

Вы шокированы? Я тоже.

Представьте, как удивляются клиенты, выбирая технологию для реализации бизнес-проекта! :-) Я думаю, вы в этот момент хорошо понимаете, что IT-мир действительно сошел с ума и заблудился (шутка).

Некоторые языки программирования, например Scala, пытаются усидеть на всех стульях, но у них это пока не очень получается — код становится трудным для понимания простым смертным.

А если серьезно, то конкуренция парадигм программирования будет только усиливаться, потому что… задачи в проектах совершенно разные и именно от задач нужно «танцевать»! В устоявшейся предметной области (серверы, библиотеки) лучше подойдет номинальный набор текста (C++, Java, C#.

), где-то было бы лучше с структурная типизация (Golang, Haskell.), а в веб-скриптах или задачах машинного обучения настоящее счастье придет с утка (python, php, javascript.).

Не надо так думать статическая типизация , особенно строгий, является «must have» — вы сорваны сроки и код будет выброшен на помойку с довольной параноидальной мыслью о «возможных ошибках».

В вебе, скриптинге и машинном обучении можно уверенно двигаться вперед с огромной скоростью и с динамической уткой типизацией, и с php и python с огромным количеством замечательных и мощные библиотеки хороший пример этого.

Поэтому забудьте к черту о том, «какой язык программирования учить в 2018 году»:

  • понимать парадигмы программирования (ООП может стать вашей могилой или спасти ваш проект)
  • разобраться в тонкостях набора текста и связанных с ним рисках и возможностях (Можно проклинать динамическую типизацию в финансовой библиотеке, а можно пожертвовать Java-программистом Ктулху и переписать его 100 классов на 100 строк в скрипте, понятном даже детям)
  • понимать алгоритмы на уровне интуиции (нужно отличать поиск от сортировки, нейросеть от логистической регрессии - и чтобы понимать дальше, придется учиться.

    всю жизнь, но оно того стоит)

  • Поймите, что опытные разработчики (правда, никто не знает, где их найти на рынке) реализуют проект в срок, используя практически любую технологию (даже на мозговом ударе) и сделают это хорошо, а неопытным придется выбирать язык программирования с наиболее комфортный уровень входа и риски обвала по-прежнему велики
Далее выберите область задач, над которой вам интересно работать, например веб или машинное обучение и:
  • посмотрите, как люди решают эти проблемы
  • разобраться в рисках и возможностях каждого инструмента на основе приведенных выше критериев
  • провести пару выходных с 1-3 конкретными инструментами, но ни в коем случае не впадать в фанатизм или спецификации
  • быстрее приступить к делу и получить опыт использования инструментов на практике – это самое главное
  • не нужно учить язык программирования «до конца» — лучше выучить способ решения вашей задачи в 5 самых популярных инструментах за 10-15 строк и вы действительно будете действовать крайне адекватно!


Конкретный пример – ML

Допустим, вы интересуетесь машинным обучением.

Поздравляем! С одной стороны есть академическая теория - но из нее надо почерпнуть суть математической статистики и линейной алгебры и ни в коем случае не застревать на многомесячных курсах (с ума сойдешь, поверьте, если вы не математик, а гуманист - и не замечая).

С другой стороны, вам нужно научиться быстро писать полезный код и решать задачу за 5-15 строк.

Да, за 10 000 лет можно написать всё на C, так что посмотрите на опыт коллег и выберите, правильно, Python, у которого море библиотек и готовых решений по этой теме.

Посвятишь пару выходных изучению питона — учить больше нечего, язык очень простой (и мы договорились не лезть в дебри, ведь время — деньги).

Дополнительно почитайте о сути numpy, pandas, scikit-learn и, если глаза горят, то Keras и вперед, делайте проекты.

Но можно пойти другим путем, долгим, трудным и ведущим к личной святости и социальной нищете (через 3 года вы поймете суть алгоритма, продавая газеты в поезде, но, возможно, это особый путь) — начать внедрять алгоритмы самостоятельно, с ручным управлением памятью, или ввести дополнительные тяжеловесный решение и погрузиться в код на месяцы.

Неправильный инструмент – залог бессонных ночей и напрасной траты времени – избегайте сложности любой ценой.

Неправильный инструмент, даже самый разрекламированный, даже бесплатный подарок, даже тот, который теоретически может все в будущем, может испортить ваш проект, сорвав все сроки.

Минимизируйте этот риск настолько, насколько вы можете и не можете.



выводы

Итак, друзья, мы убеждены, что никто не умеет правильно и успешно программировать, даже мы, разработчики :-) Конкуренция между парадигмами программирования и технологиями возрастает все больше, голова раздувается, а свободного времени становится все меньше.

и менее.

Поэтому самая выигрышная стратегия для начинающего карьеру разработчика — выпить баночку крутого пива, расслабиться и:

  • избегать прилипания и погружения в ненужные технологические детали, количество которых растет в геометрической прогрессии
  • выберите интересную проблемную область, в которой вам интересно решать проблемы клиентов
  • научитесь извлекать короткую и эротическую суть из инструментов и языков программирования
  • пишите как можно меньше кода, но код, который будет ясен и понятен вам и окружающим вас людям
  • учитесь решать задачи за 5-15 строк, а не за 20-50 занятий
  • если хочешь куда-то углубиться, то пусть это будут фундаментальные вещи типа математики, Haskell или rfc over tcp/ip
  • наслаждайтесь программированием и согревайте этим своих коллег!


Какой язык программирования стоит изучать в 2018 году и почему?

И всегда помните, что время, особенно свободное, — это ценный ресурс, и только от нас зависит, куда его инвестировать.

Всем удачи и хорошего настроения! Теги: #программирование #php #веб-разработка #разработка веб-сайтов #программирование

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.