К чему готовиться в 2019 году: тренды в программировании

https://hackernoon.com/major-programming-trends-to-prepare-for-in-2019-169987cc75f4
  • Translation
Перед вами перевод статьи пользователя под ником Constantin, опубликованной на ресурсе hackernoon.com. Под катом можно узнать, какие из языков программирования сегодня достойны того, чтобы их освоили.



Январь — отличное время для того, чтобы проанализировать прошедший год и заглянуть в новый.

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

Ниже представлены языки, ставшие трендовыми в ушедшем году, а также новые тренды, которые помогут вам оставаться на гребне волны в 2019-м.

Взглянем на тренды-2018 в программировании


Stack Overflow и GitHub обладают большим количеством информации о наиболее используемых языках программирования.

Схема от Stack Overflow, представленная ниже, демонстрирует самые популярные языки 2018 года. Как вы видите, JavaScript возглавляет список, и это неудивительно: он продолжает использоваться повсеместно как для фронтенд-, так и для бэкенд-разработок. Более того: JavaScript лидирует шестой год подряд.


Источник: Stack OverFlow

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


Источник: GitHub Octoverse Report

По другим критериям превосходство также у JavaScript. В 2018 году этот язык стал первым не только по количеству контрибьюторов, но и по числу новых репозиториев на GitHub (см. схему ниже).


Топ языков программирования по количеству созданных репозиториев с 2008 по 2018 гг. Источник: GitHub Octoverse Report

Этот стремительный взлет произошел благодаря новым серверам JavaScript (например, Node.js, что был запущен в 2009 г.), которые позволяют программистам использовать один код как для клиента, так и для сервера.

А что же с другими языками? Python и C++ поднялись в списке, C — немного опустился, а Ruby рухнул с 5 на 10 место. Другой прорыв в прошлом году совершил TypeScript: в списке он поднялся с 10 до 7 пункта.

Как вышеописанные тренды повлияют на сферу программирования в 2019-м? Очевидно, что JavaScript останется преобладающим языком. Но есть и другие языки, которые развиваются гораздо быстрее.

Тренд-2019 #1: сможет ли Python догнать Java?


Если вы посмотрите на схему вверху, то увидите, что Python уже третий по популярности язык в мире. Но эту позицию он занял недавно: согласно данным от Stack Overflow, Python обошел PHP в 2017 году, а C# — в 2018-м (даты в выделенном авторском тексте не соответствуют данным на схеме ниже. — Прим. ред.).

Следующая схема иллюстрирует стремительный взлет Python.


Источник: Stack OverFlow

Что произошло?

Естественно, растущий интерес к искусственному интеллекту (ИИ) способствует развитию Python. И инженерам, судя по всему, нравится использовать этот язык для программирования. Согласно результатам последнего опроса членов IEEE, Python их фаворит.


Источник: IEEE Spectrum

По результатам опроса IEEE Python и в 2017 году занял первое место — с небольшим отрывом от C. Похоже, ему удается вытеснить R во многих сферах (R — специализированный язык для работы со статистикой и большими данными, критически необходимый для ИИ и приложений для машинного обучения).

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

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

Тренд-2019 #2: TypeScript в десятке самых популярных языков


Согласно последнему докладу GitHub Octoverse, сейчас TypeScript на 7 месте по популярности, в 2017 году он был на 10 месте (см. вторую схему в начале статьи). Как вы видите на картинке ниже, на данный момент это третий по счету самый быстроразвивающийся язык из всех.


Самые быстроразвивающиеся языки по мнению пользователей на 30 сентября 2018. Источник: доклад GitHub Octoverse

TypeScript — это, в сущности, версия JavaScript с сильной типизацией, созданная с учетом безопасности типов и функциональной совместимости. Сильная типизация означает, что вам никогда не придется определять типы для переменных, потому что они уже определены с помощью вывода типов.

Интересно то, что вы можете кодировать с помощью TypeScript, а затем компилировать (конвертировать) ваш код для JavaScript. Таким образом, TypeScript позволяет обойти наиболее раздражающие недостатки JavaScript.

Тренд-2019 #3: Go упрощает программирование


Go в 2018 году первый раз попал в топ-10 по версии IEEE (см. выше рейтинг, опубликованный в журнале IEEE Spectrum). Кроме того, это пятый по счету самый быстроразвивающийся язык по данным IEEE, и седьмой по данным GitHub. Должно быть, он действительно особенный. Давайте узнаем почему.

Go — это язык программирования с открытым исходным кодом, разработанный компанией Google. Похожий по синтаксису на язык C, он, как и Python, проще остальных языков в плане чтения и написания. Вероятно, в этом и кроется причина стремительного роста популярности.

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

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



Вывод


Теперь вы знаете, на какие тренды в программировании обратить внимание в 2019 году. Все они — прекрасный выбор для тех, кто хочет освоить что-нибудь новое.

Python будет хорошим вариантом, если вы планируете заниматься статистическим анализом или машинным обучением на больших данных. Можно остановиться на TypeScript, чтобы с большей легкостью писать коды для JavaScript. Если вы привыкли кодировать с помощью C, то Go упростит вам жизнь, позволяя при необходимости компилировать код в JavaScript.

Удастся ли новым языкам, таким как Go и TypeScript, вытеснить JavaScript? Если это произойдет, то многие разработчики будут просто счастливы, но делать подобные прогнозы пока рано. Сейчас мы знаем точно только то, что с Python, TypeScript и Go в новом году мы будем встречаться чаще.
Plarium
148.77
Разработчик мобильных и браузерных игр
Share post

Comments 33

    +4
    Ученный объявили неделю срачей, количество постов про Go увеличилось в два раза.
      +9
      JavaScript на высоте и по данным GitHub. В 2018 году этот язык стал первым не только по количеству контрибьюторов, но и по числу новых репозиториев на GitHub

      Кто бы мог подумать

      image

        +3
        Реальность такова, что typescript уже должен стать дефакто. Не понимаю почему этого ещё не произошло. Энтерпрайз в любом случае за c#. Питон… Питон должен резко взлететь, так как его пропагандируют как скриптовый язык для набирающей популярность различной аналитики, ботов и нейросетей. То есть, как ЯП для приложений он не будет популярен. Все остальное — поровну и по различным причинам, но не в серьез. То есть, если какая-то крутая компания имеет 98% кода на c# и потом говорит что что-то написала на go от скуки, то к сожалению, найдутся такие, которые трактуют это как — весь мир спешит перейти на go. И масла в огонь как всегда подольют школы, которые только и рады что у них появятся новые клиенты, которым они будут хелпы пересказывать.
          –2
          Какой то у вас энтерпрайз прогресивный — С#… У нас только телеком на нём едет. Остальные на Java.
          –1

          Да все просто с питоном — на западе его учат в качестве первого ЯП в школах и университетах.

            +1
            У нас его тоже активно пропагандируют в качестве первого. Утром сегодня обозрел книжные полки с компьютерной литературой в «Буквоеде» — в любой книжке по программированию для начинающих — питон.
              0
              Тогда почему у нас учат, Pascal, а ни Паскаля, ни Дельфи на графике нет и подавно?
                0
                В более полной версии рейтинга IEEE (48 языков программирования)
                spectrum.ieee.org/static/interactive-the-top-programming-languages-2018
                Дельфи оказался на 31-м месте.

                P.S. Можно в этом рейтинге и посмотреть данные по разным классификаторам.
                  +1
                  Потому что среднестатистический преподаватель знает только то, чему его учили 30 лет назад в советском вузе.
                  0
                  У нас тоже паскаль во всех универах преподавали.
                  +1

                  В Тайпскрипте нет сильной типизации, как и в Джаваскрипте.

                  • UFO just landed and posted this here
                      +2

                      Тем не менее, это не сильная а слабая типизация, поскольку типы необъязательны.

                      • UFO just landed and posted this here
                          0

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


                          В Джаваскрипте типизация динамическая, тип переменной определяется типом текущего записанного туда значения.


                          Тайпскрипт добавляет в джаваскрипт аннотации типов, которые, тем не менее, не могут изменить динамическую природу языка. Там можно кастовать все в any и записывать что угодно во что угодно, даже включив все флаги компилятора.


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

                            0
                            Сильная типизация — это когда каждая переменная имеет свой тип во время выполнения, и попытка записать туда значение другого типа (без приведения типов) вызовет ошибку.
                            Ну это же совсем не так. По вашему определению сильной типизации нет даже у С++, т.к на этапе выполнения там даже не возможно отделить код от данных, не то что понять где какие типы.
                            • UFO just landed and posted this here
                              0
                              сильная типизация, если проверка типов не выключена в конфигурации компилятора.

                              Конфигурация компилятора тут не причем, сильная типизация у TS, только в том случае если разработчик явно определил типы в коде.


                              const a: number = 1;
                              const b: string = '1';
                              
                              const c = 1;
                              const d = '1';
                              
                              // неявное преобразование типов - слабая типизация.
                              console.log(c == d);
                              // неявное преобразование невозможно - сильная типизация
                              console.log(a == b);



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

                              • UFO just landed and posted this here
                                  0

                                  Ок, это был неудачный пример, вот посмотрите на это:


                                  function f(a, b) {
                                    return a == b;
                                  }
                                  
                                  console.log(f(1, '1'));

                                  «Да, мы можем выключить проверку типов в tsc. И мы может вообще не указывать типы, указав после каждой переменной any. Следовательно, в TypeScript слабая типизация»

                                  Нет, мы можем не указывать типы, и на это не требуется усилия.


                                  Вы приписываете мне выдуманные фразы, и спорите с этим, не хорошо.




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


                                  Мне интересно, вы вообще используете TypeScript на практике?
                                  Дело в том, что в вашем примере на оба сравнения компилятор указал как на ошибку. =)

                                  Дело в том, что это хабр, и псевдокод вполне уместен.
                                  Спасибо за указывание на ошибку, кстати.

                                  • UFO just landed and posted this here
                                      +1
                                      Для написания корретного TS кода вы должны (must) явно руками указать
                                      либо «пофиг на тип»: any, либо должны (must) указать компилятору явно руками allowJS: true

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


                                      --


                                      Кроме того, тот же пример компилируется даже с allowJS: false, по крайней мере в версии компилятора 3.2.4.


                                      --


                                      Либо у вас TS из параллельной вселенной, либо я что то не понимаю.


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

                                      • UFO just landed and posted this here
                                    0

                                    Тут есть небольшая путаница в терминологии:


                                    • Статическая типизация — типы проверяются при компиляции.
                                    • Динамическая типизация — типы проверяются во время выполнения.

                                    Тут уже менее четкое разделение:


                                    • Сильная типизация — тип значения переменной определен, и во время выполнения программы не изменяется
                                    • Слабая типизация — одно и то же значение может интерпретироваться как разные типы

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


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

                                    • UFO just landed and posted this here
                                        0
                                        Разницу между а) исходным текстом и б) результатом компиляции уловили?

                                        Спасибо, вы мне просто как глаза открыли.


                                        Для компилируемых языков типа TS проверка переменных на соотвествие типов производиться только на этапе компиляции.

                                        Но нет гарантии, что типы, выведенные при компиляции, будут такими же и во время выполнения. Поэтому в тайпскрипте (как, кстати, и в С++) — типизация слабая (но статическая). А, например, в C# (без неуправляемого кода) — типизация сильная.


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


                                        На этом дискуссию завершаю, ваш хамский тон и отношение к собеседникам, как к дуракам, мне неприятно.

                                          0
                                          А что такое HW VM?
                                          • UFO just landed and posted this here
                                            • UFO just landed and posted this here
                              +2
                              Реклама Go на фоне приведенных данных выглядит неуместно.
                                0
                                И > 325000 пользователей по всему миру платят за RAD Studio тысячи и десятки тысяч долларов, бедненькие, не знают про Питон и JS…
                                  +1
                                  Даже на 1с тысяч 50 программистов и «программистов» наберется, а ведь это чисто локальный игрок, причем не сказать что у нас много населения, и 1с не единственный игрок. 325000 на весь мир это действительно очень мало, учитывая что общее количество исчисляется, вроде как, десятками миллионов.
                                  0
                                  А что за новые сервера Javascript?)

                                  Only users with full accounts can post comments. Log in, please.