Programming Languages Overview
Part 1: Fortran, JS
Начнём обзор с совершенно непохожих языков программирования: древнего Фортрана и современного JavaScript.
Fortran ⏤ был создан в конце 1950-х годов. Цели создания: численные вычисления. Использовали Fortran для математических расчётов в прикладных науках.
На данный момент шансы попасть на позицию, где может понадобиться Fortran ⏤ ничтожно малы.
Так зачем я решил упомянуть о таком динозавре, да ещё и начал с него этот обзор?
-
Во-первых, Fortran продолжает развиваться, были приняты новые стандарты Fortran 90, 95, 2003, 2008, 2018.
-
Во-вторых, этот ЯП до сих пор достаточно популярен (в своём кругу).
-
В третьих, Fortran занял определенную нишу (численные вычисления) и плотно там застрял.
Фортран ⏤ это пример того, как некая технология (ЯП) может занять определённую нишу и остаться там навечно. Часто другие ЯП таким образом сравнивают с Фортраном.
Scripting Programming Languages
Обычно к этому классу причисляют: JavaScript, Python, Ruby, PHP.
JS (JavaScript) ⏤ был создан в 1995. JS ⏤ это ещё один ЯП, который имеет свою явную нишу. JS ⏤ это в первую очередь WEB программирование и UI (user interface). Фактически это пример, аналогичный Фортрану: вряд ли кто-то сможет серьёзно потеснить JS на его поле.
Стоит заметить, что JS это не просто язык для UI, JS ⏤ это целая экосистема из набора различных технологий, которые позволяют быстро разрабатывать полноценные WEB-приложения.
JS можно встретить во многих, особенно молодых, компаниях (в стартапах) ⏤ где присутствует WEB, будет и JS в каком-то виде.
Многие coding bootcamps строят свои курсы на основе JS, это позволяет студентам создать полноценные проекты.
Part 2: Python, C/C++
Python был создан в 1991 с целью написания скриптов. Название было придумано в честь британского комедийного телешоу: “Летающий цирк Монти Пайтона”.
Python и JS несколько похожи по характеристикам и даже имеют некое пересечение по использованию в WEB программировании. Оба языка могут быть использованы для написания внутренней часть (backend) WEB. Но в отличие от JS, Питон не используется в разработке интерфейсной части (frontend) WEB.
Если вам нужно полноценное WEB приложение, то интерфейс пишут на JS, а внутреннюю часть на JS или Питоне (или ещё много на чём). То есть хоть Python и используется в WEB, но это не его главная ниша.
Так где же Питон является “Фортраном” своего времени?
Есть несколько областей, где Питон сидит довольно прочно: построение инфраструктуры (DevOps), тестирование (automation), и похоже настоящая ниша: численные методы, статистика, data processing, AI/ML.
Похоже Python — это современный Fortran — оба используются для математики, только Python больше для искусственного интеллекта.
Если брать coding bootcamp, которые преподают Python, то скорее всего там будет еще и JS, для написания интерфейсов (WEB frontend), a Питон будет использоваться для всего остального.
C/C++
Язык программирования C был создан в 1972 для разработки ОС (операционной системы) Unix. Это компилированный язык и совершенно не похож на JS или Python.
В своё время имел очень важные свойства: мог быть использован на разных платформах. На сегодняшний момент, несмотря на очевидную устарелость, C очень глубоко застрял в областях системного программирования: разработка ОС, компиляторов (других языков программирования), встроенных систем, и т.д. Например, первые версии Python были написаны на C.
Шансы работать с C или хотя бы познакомиться с ним, есть только у студентов и выпускников специальностей компьютерных наук, и то не в каждом университете.
C++ появился в 1983 году, как расширение языка C. Оба имеют похожие цели и используются в тех же областях. Для нашего обзора не так важно, чем они там отличаются.
Наверное имеет смысл упомянуть о такой особенности: C++ гораздо сложнее, чем C. Описание языка C занимает пару сот страниц, в то время как описание C++ — это тысячи страниц, причём ну очень сложного текста.
Найти профи, который бы знал 99.9% C++ не так-то просто, скорее всего такие уникумы сидят в комитете стандартизации самого языка.
В общем, ни C, ни C++ не встречаются на трехмесячных курсах, даже за полгода нереально существенно познакомиться даже с C, не говоря уже про C++.
Part 3: Ruby vs. Python vs. JS
Ruby был создан в 1995 ⏤ в том же году, что и JS (JavaScript). Основная ниша Ruby ⏤ это серверное WEB-программирование, поэтому разумно его сравнить с другими конкурентами: Python и JS.
Ruby ⏤ более молодой ЯП, чем Python, но для разработки серверной части WEB приложение, Ruby предлагает более продвинутою платформу: “Ruby on Rails”. Питоновский фреймворк: Django был выпущен позже и не получил такого распространения.
Хотя Ruby имеет потенциал, но кроме WEB, пока не завоевал серьёзных позиций в других сферах. От части это происходит из-за более компактного комьюнити, чем у Python.
Если сравнивать Ruby с JS, то последний предлагает гораздо большее количество платформ: Node.js, React, Angular. Также не забываем, что JS доминирует в клиентской части WEB, где фактически ни Python ни Ruby не являются ему конкурентами.
Очевидно имеем, что если хотим разработать WEB приложение (front-end + backend), то можно оставаться в рамках JS, а можно выбрать Ruby (или Python) для backend/server-side, а JS использовать для front-end/client-side.
По свойствам, эти три языка программирования несколько похожи, но наверное Python будет несколько проще изучать. Хотя если цель выйти на WEB front-end, то без JS никак. В coding boot camps, вы скорее всего, встретите комбинацию из этих языков программирования и их фреймворков.
Part 4: Java
Java также был создан в 1995, но по целям и свойствам очень сильно отличается от JS, Python, Ruby. Java — это скорее, что-то среднее между C++ (помним этого монстра) и Python. То есть барьер входа в Java гораздо выше, чем в Python. Описание огромное, пакетов, платформ море, но не всё так страшно как в C++.
Если вспомнить немного истории, то Java был создан компанией Sun с целью выдавить компанию Microsoft со своей сферы. Особо это не помогло. Sun была куплена Oracle, а Microsoft выпустила свой аналог Java для Windows: C# (платформа .NET).
Изначально Java представляли как встроенную OS, ну там типа все чайники и утюги будут “говорить Java” (вам это ничего не напоминает?). Но сейчас конечно про это все забыли.
Да данный момент, Java широко используется в разработке WEB приложений и аппликаций для мобильных устройств (для ОС Android). Также Java можно встретить в тестировании, инфраструктуре, обработке данных и даже в AI.
Java — почти везде, и остаётся одним из самых популярных ЯП. Но скорее всего вы его встретите в более старых больших корпорациях. Молодые компании и стартапы предпочтут или что-то из тройки Python, Ruby, JS или какие-то более новые технологии.
Хотя позиции у Java всё ещё сильны, прямые приемники и разные конкуренты потихоньку оказывают на него давление: Scala, Kotlin (для Android), Golang (WEB), Python.
Part 5: От Java к Scala и Kotlin
Напомню, что Java ⏤ это язык программирования общего назначения. По синтаксису более похож на C/C++/C#, но проще и дешевле в использовании. Java по сложности находится где-то посередине между чрезмерной сложностью C++ и компактностью Python. Java также применяется в таких сферах как: тестирование, инфраструктура, AI и в разработке мобильных приложений для Andorid. Стоит отметить, что под Android используется несколько специфическая версия Java. Так что даже имея опыт в разработке на Java, придётся потратить некое время на изучение самой Android OS и на версию Java for Android (основанная на более старых стандартах Java). Современные языки программирования Scala и Kotlin развивают платформу Java в разных направлениях, сохраняя с ней полную совместимость. В проектах на Scala можно использовать код на Java. То же самое справедливо и для Kotlin.
Scala
Разработка Scala началась в 2001 году в стенах академии в Швейцарии, а публичный выпуск состоялся в 2004 году.
Scala по началу постоянно ломала обратную совместимость с более старыми версиями. Это создавало огромные проблемы для адаптации этой платформы крупными компаниями. С одной стороны все были готовы уже бежать неважно куда от увядающей Java, а с другой стороны, переходы на новые версии Scala могли остановить проекты на неопределенное время.
Некоторые крупные компании полностью отказывались от Scala в пользу Java, например, LinkedIn. В то же время компания Twitter толкала Scala вперёд, не смотря ни на какие проблемы.
На данный момент релизы Scala более-менее стабилизировались, но развитие Scala также дало толчок и развитию Java. Так что в результате бурного перехода с Java на Scala так и не состоялось.
Основное отличие Scala от Java: уменьшение verbosity (многословие). Программы на Scala более компактны, чем аналогичные на Java. Меньше писать, лучше читать ⏤ меньше ошибок, вроде как бы так. В принципе, в этом смысле, у Scala та же идея, что и у Python ⏤ всё делать как можно короче и проще.
Но с другой стороны, Scala настолько мощный ЯП, что там можно создавать свои DSP (domain specific language). То есть, можно написать такую программу на Scala, что без дополнительных “подсказок”, даже самый крутой специалист по Scala не сообразит, что это такое перед ним.
Kotlin
Kotlin был разработан российской компанией JetBrains в 2011. Авторам хотелось создать что-то “как в Scala, только быстрее, проще и под Android”. Они так и сделали!
В 2017 году, компания Google, которая владеет Android OS, заявила о полной поддержке Kotlin в качестве платформы для разработки мобильных приложений под Android.
Так что если хотите разрабатывать мобильные приложения под Android то можно начинать сразу с Kotlin. Всё будет и быстрее и проще. Хотя в какой-то момент, придётся глянуть и на Java (в том числе на Java 1.6) и чуток ужаснуться.
Разумеется доступны всякие boot camps и курсы, обучающие разработке Android App на Kotlin с нуля.