О русском языке в программировании
Содержание:
- Получайте удовольствие
- Rust
- Нет, и, или – Not, and, or
- Перспективные языки: почему эти пять?
- Swift (приложения под iOS, macOS и watchOS)
- Выберите отрасль для прокачки
- Construct Classic
- Программы для компьютеров и игры
- Варианты компиляции
- Rust
- C# (Разработка игр на Unity, настольные приложения)
- Ruby (Руби)
- GO (бэкенд разработка, настольные приложения, системное программирование)
- Определите, чем вы хотите заниматься
- Crystal
- Мобильная разработка
- Сколько эзотерических языков в мире
- JavaScript (веб-разработка)
- Nemerle (Немерле)
- Java (веб-разработка, разработка приложений для Android)
- Swift
- Заключение
Получайте удовольствие
Напоследок пример из личной практики. Прошлой осенью я за пару дней с нуля изучил Python. Конечно, поверхностно. Только ради того, чтобы поучаствовать в хакатоне по искусственному интеллекту, где машинки на поле таранили друг друга.
В итоге занял лишь 51-ое место и не получил даже футболки. Однако наспех полученных навыков хватило, чтобы заслать стратегию и посоревноваться. Кстати, всего там было 200 игроков, так что моё выступление не было полным провалом.
Выводы я сделал: Python мне не по душе, а не оказаться в числе замыкающих мне помог опыт в программировании на других языках. Это было, как минимум, весело!
Так что не стоит зацикливаться на одном языке. Попробуйте другие и поймёте, какой «в руку ляжет».
Поверьте: писать на том, что нравится, гораздо приятнее, да и получается лучше. За этим подтянется и финансовое благополучие. Если, возвращаясь домой из офиса, вы пишете программы «для себя», значит, профессию выбрали правильно.
Rust
Rust является языком системного программирования, который сочетает в себе эффективность C и контроль над памятью с функциональными возможностями, такими как сильная статическая типизация и вывод типов.
Основными целями при проектировании языка были:
- Безопасность: Многие C-подобные языки открывают путь к ошибкам в результате ручного управления памятью (например, висячие указатели или двойные освобождения). Rust перенимает передовые практики современного C++, такие как RAII и смарт-указатели и делает их применение обязательным, систематически гарантируя, что чистый код на Rust безопасен по памяти.
- Скорость: Почти все языки работают медленнее, чем C, поскольку они обеспечивают абстракции, которые упрощают разработку программного обеспечения. Но это даётся ценой существенного увеличения накладных расходов во время выполнения (например, сборка мусора и динамическая диспетчеризация). Rust фокусируется на «абстракциях нулевой стоимости”, т.е. таких методах упрощения программирования, которые не требуют дополнительных затрат во время выполнения. Например, Rust управляет памятью во время компиляции и использует статическую диспетчеризацию для дженериков (по аналогии с шаблонами C++, но более безопасно по отношению к типам).
- Конкурентность: Конкурентный код в системных языках часто хрупок и подвержен ошибкам, учитывая нетривиальность многопоточного программирования. Rust пытается смягчить эти проблемы путем предоставления гарантий на уровне типа какие значения могут быть разделены между потоками и как именно.
Rust также имеет несколько отличительных особенностей:
- Проверка владения: прославленная возможность Rust — инструмент статического анализа, который считывает код и прекращает компиляцию, если он может привести к ошибке памяти. Это работает путем закрепления понятия, что значения либо принадлежат одному месту, либо используются во многих местах, и последующего анализа того, как владение значением меняется во время выполнения программы. Проверка владения также исключает состояние гонки в конкурентном коде, используя тот же набор правил.
- Композиция вместо наследования: Вместо того, чтобы использовать систему наследования классов подобно C++ или Java, Rust использует трейты или компонуемые интерфейсы для поддержки модульного программирования. Вместо того, чтобы указывать, что конкретный тип является частью иерархии классов, программист может описать тип на основе его возможностей, например, говоря о том, что тип должен быть Printable и Hashable вместо наследования от класса PrintableHashable.
- Крутые инструменты: Любой C/C++ ветеран знает боль установки зависимостей, компиляции кода на нескольких платформах и борьбы с тайнами конфигурации CMake. Rust экономит бесконечные часы, проведенные в криках на GCC, предоставляя разумный менеджер пакетов и кросс-платформенные API.
Для получения дополнительной информации, ознакомьтесь с The Rust Book и Rust by Example.
Этот раздел написал Will Crichton — аспирант Стэнфордского университета, который специализируется на параллельных и конкурентных системах, визуальных вычислениях и архитектуре компиляторов и языков программирования. Он часто пишет о Rust в своем блоге.
Нет, и, или – Not, and, or
Not – нет. В программировании означает логическое отрицание «нет». В программах за счет not происходит превращение логического «нолика» в логическую «единичку» или наоборот «1» превращается в «0». И всего-то для этого нужно указать not.
And – логическое «и». В английском языке «and» как раз означает «и». Устроено логическое «и» следующим образом. Это своего рода операция умножения в мире логических нулей и единиц. Если умножить друг на друга «0» на «0» или «1» на «0» или «0» на «1», то результат такого логического «и» (and) будет «0». И только умножение «1» на «1» даст нам в ответе «1». Поэтому результат в виде «единички» будет только тогда, когда оба операнда равны логической «единичке». То есть когда 1 «и» 1. Отсюда «and» («и»).
Or – с английского переводится «или». В программировании логическое «или». Это операция сложения в мире логических нулей и единиц. Если сложить «0» и «0», то результат будет нулевой. Любые другие сложения (1+0, 0+1, 1+1) дает в результате логическую единицу. Пытливый читатель спросит, а как же 1+1? Это же 2, а не 1. Двойка получается в мире людей, а в мире однобайтной логики, ответ будет «1», так как в одном байте не бывает ничего, что было бы больше «1». Отсюда и «или», как своеобразная формальная логика: если хотя бы один из операндов есть «1», то результат будет «1». То есть, «или» первый, «или» второй операнд есть «единица», тогда результат тоже будет «единица». Вот такой оператор «or», то есть «или».
Перспективные языки: почему эти пять?
Пять языков программирования, о которых пойдёт речь, весьма новы (не исключено, что о каком-то вы услышите впервые), и они явно имеют отличные шансы пробиться во второй эшелон в ближайшие 2-3 года. Может быть, когда-нибудь один из этих языков сможет потеснить и языки первого эшелона.
Вот почему эти пять языков были выбраны для этого списка:
Elm набирает популярность в сообществе JavaScript, в первую очередь среди тех, кто предпочитает функциональное программирование, которое находится на подъеме. Как и TypeScript или Dart, Elm транспилируется в JavaScript.
Rust является языком системного программирования, предназначенным в основном для ниш, где применяют С и С++. Поэтому удивительно видеть, что популярность этого языка быстрее растёт среди веб-разработчиков. Этот факт становится более осмысленным, когда вы выясняете, что язык был создан в Mozilla, которая хотела дать лучший вариант веб-разработчикам, которые вынуждены писать низкоуровневый код, и при этом более производительный, чем PHP, Ruby, Python или JavaScript. Rust был также признан лучшим в номинации ”сама любимая технология” по результатам опроса разработчиков, проведённом StackOverflow в 2016 году (это означает, что большинство пользователей хотели бы продолжать использовать этот язык).
Kotlin существует уже около пяти лет, но только в этом году он достиг production-ready версии 1.0. Несмотря на то, что он ещё не достиг популярности Scala, Groovy или Clojure — три самых популярных и зрелых (не считая Java) языков под JVM — он выделяется из множества других JVM-языков и, кажется, готов занять свое место среди лидеров этой группы. Язык возник в JetBrains (создатель популярной IntelliJ IDEA IDE). Так что он продуман с упором на производительность труда разработчиков.
Crystal — ещё один язык, который надеется принести производительность программ на уровне C в высокоуровневый мир веб-разработчиков. Crystal нацелен на Ruby-сообщество, т.к. его синтаксис подобен, а порой идентичен, Ruby. И без того большое количество стартапов на Ruby продолжает расти, и Crystal может сыграть ключевую роль, помогая поднять производительность этих приложений на следующий уровень.
Elixir также черпал вдохновение из экосистемы Ruby, но вместо того, чтобы пытаться принести C-подобные преимущества, он ориентирован на создание высокодоступных, отзывчивых систем, т.е. на то, с чем Rails имеет проблемы по мнению критиков. Elixir достигает этих преимуществ при помощи Erlang VM, которая имеет прочную репутацию, основанную на 25 годах успешного применения в телекоммуникационной отрасли. Phoenix (веб-фреймворк для Elixir), наряду с большой и цветущей экосистемой, придаёт этому языку дополнительную привлекательность.
Теперь взгляните, как четыре из этих пяти языков карабкаются по лестнице популярности (на основе данных StackOverflow и GitHub):
Каждый из этих языков может похвастаться увлечённым сообществом и собственной еженедельной новостной рассылкой. Если вы подумываете об изучении молодого языка с захватывающими возможностями для будущего, прочитайте краткие презентации для каждого из этих пяти языков, написанные опытными энтузиастами и лидерами соответствующих экосистем.
Swift (приложения под iOS, macOS и watchOS)
Если вы стремитесь стать разработчиком приложений под iOS?, macOS или watchOS, то вам обязательно следует изучить язык Swift.
Представленный компанией Apple в 2014 году Swift, оказался довольно быстрым, мощным и функциональным языком для разработки приложений под операционные системы Apple.
Кроме того, поскольку Apple сама разрабатывает и продвигает язык, нет сомнений что он будет достаточно перспективным и более функциональным.
Язык пришел на смену тогдашнего популярного, однако нелюбимого для многих разработчиков языка Objective-C.
Кончено ввиду того что в России более используемой мобильной операционной системой является Android, логично что язык Swift будет не таким уж востребованным, он более нацелен на американский рынок, где более популярен ios.
На hh.ru по языку Swift доступно более 1000 вакансий, большая часть из которого нацелена на разработку под ios.
В итогу язык Swift лучше изучать если вы твердо решились стать разработчиком под операционную систему ios и macOS. Не смотря на небольшое количество вакансий для этого языка, данный сегодня Swift разработчикам платят довольно приличную зарплату.
Выберите отрасль для прокачки
Существуют три основных направления для программистов: фронтенд, бэкенд и мобильная разработка.
С фронтендом выбор очевиден. Здесь «рулит» JavaScript. Для этого языка создано множество мощных фреймворков. Также для разработки интерфейсов обязательно понадобится знание HTML и CSS.
В бэкенде по-прежнему актуален C++, хоть некоторые и торопятся списать его со счетов. Также в топе здесь Java и C#
Обратите внимание и на перспективные Kotlin, Golang и Python.
В области мобильной разработки всё зависит от платформы. Если IOS, то Swift, а если Android, то, в основном, Java
Развиваются и новые направления по созданию приложений с применением веб-технологий: HTML и JavaScript + CSS.
Наконец, если планируете работать с базами данных, то обязательно нужно изучать SQL.
Construct Classic
Construct Classic — небольшая программа, основной функцией которой является создание игр, 2d-анимационных роликов и мультфильмов. Данный конструктор создан по принципу WYSIWYG. Это значит, что вам не предстоит для создания собственного анимационного ролика подолгу сидеть за учебниками программирования. Все гораздо проще — добавили какой-то объект, включили для него анимацию и он начинает двигаться.
Приложение Construct Classic является бесплатным. Более того, оно имеет открытый код, поэтому разработчики и специалисты в программировании могут настраивать его именно так, как пожелают нужным.
Основные возможности Construct Classic:
- Система редактирования событий и реакции на них посредством drag-n-drop.
- Возможность использования огромного количества плагинов.
- Программа создана на python, но дорабатывать ее можно на C++.
- Есть возможность подключать пиксельные шейдеры на HLSL.
- К программе можно подключать готовые исходные коды игр и приложений в формате САР.
Изменения в последней версии
- Физика: Исправлен баг версии r1, когда физические объекты созданные после старта, могли улететь за экран на высокой скорости.
- Поведение: Исправлен баг. когда вы не могли спрыгнуть с платформы. Вызван исправлением бага «приземления в воздухе» в версии r1. Оба исправления теперь работают.
- Установщик: Исправлена проблема с установкой в версии r1.
Программы для компьютеров и игры
Если вас интересует разработка обычных компьютерных программ, стоит обратить внимание на C#. Его в основном используют разработчики бизнес-приложений для ОС Windows
Всего в России около 4 000 вакансий для тех, кто владеет этим языком.
C# похож на Java и C++, но не такой громоздкий, хотя тоже быстрый и мощный. Он достаточно прост в изучении, что делает его хорошим вариантом для новичков.
Также он используется для разработки на Unity — самом популярном движке для игр на ПК и мобильных устройствах.
Интерфейс программы игрового движка Unity.
Для этих же целей можно использовать Java или C, но они больше подходят для создания мобильных приложений, операционных и встроенных систем.
Варианты компиляции
Вы, наверное, спросите, откуда взялся интерпретатор, если я изначально определил Pinecone как компилируемый язык. Дело в том, что компиляция гораздо сложнее, чем интерпретация — я уже упоминал ранее, что столкнулся с некоторыми проблемами на этом шаге.
Написать свой компилятор
Сначала мне понравилась эта мысль — я люблю делать вещи сам, к тому же давно хотел изучить язык ассемблера. Вот только создать с нуля кроссплатформенный компилятор — сложнее, чем написать машинный код для каждого элемента языка. Я счёл эту идею абсолютно не практичной и не стоящей затраченных ресурсов.
LLVM
LLVM — это коллекция инструментов для компиляции, которой пользуются, например, разработчики Swift, Rust и Clang. Я решил остановиться на этом варианте, но опять не рассчитал сложности задачи, которую перед собой поставил. Для меня проблемой оказалось не освоение ассемблера, а работа с огромной многосоставной библиотекой.
Транспайлинг
Мне всё же нужно было какое-то решение, поэтому я написал то, что точно будет работать: транспайлер (transpiler) из Pinecone в C++ — он производит компиляцию по типу «исходный код в исходный код», а также добавил возможность автоматической компиляции вывода с GCC. Такой способ не является ни масштабируемым, ни кроссплатформенным, но на данный момент хотя бы работает почти для всех программ на Pinecone, это уже хорошо.
Дальнейшие планы
Сейчас мне не достаёт необходимой практики, но в будущем я собираюсь от начала и до конца реализовать компилятор Pinecone с помощью LLVM — инструмент мне нравится и руководства к нему хорошие. Пока что интерпретатора хватает для примитивных программ, а транспайлер справляется с более сложными.
Rust
Кому подходит: программистам, которым не нравится сложность С или С++, но нравится их мощность и возможности.
Средняя зарплата на конец 2020 года: 207 тысяч (статистических данных на начало 2021 года ещё нет).
Если вы хотите писать очень быстрые программы, работать с железом напрямую или делать надёжный софт для серверов, то можно начать с Rust. Этот язык позволяет писать в любом стиле, хоть в ООП, как в C++, хоть в функциональном, как Haskell. А при желании можно вообще отказаться от этого и писать в чисто процедурном стиле, как Pascal.
Отдельный плюс этого языка — универсальность. На нём можно написать и драйвер для микросхемы, и систему управления базами данных. Единственное, что нужно учесть — язык развивается очень быстро, и часть функций и команд могут устареть или работать иначе, чем в старой версии. Если за этим следить, то Rust вполне подойдёт на роль лучшего языка на старте в 2021 году.
C# (Разработка игр на Unity, настольные приложения)
C# — это объектно-ориентированный язык программирования, разработанный примерно в 2000 годах группой инженеров компании Microsoft. Он определенно прошел долгий путь от создания приложений для Windows до создания игр и разработки VR. Научившись программировать на C#, можно использовать мощный игровой движок Unity для разработки игр.
Синтаксис C# во многом схож с синтаксисом языка Java, оба которые используют в качестве синтаксической основы язык программирования Cи, поэтому знание одного поможет быстро освоить и другой.
Если раньше C# больше ассоциировался с разработкой настольных приложений на Windows, то сегодня язык в основном изучают для разработки игр на движке Unity. И это у него хорошо получается.
Сегодня Unity стал одним из популярных, если не самым популярным игровым движком, для кроссплатформенной разработки, включая операционные системы Windows, MacOS, Linux, Android и iOS.
Сегодня почти все инди-разработчики используют именно её, для создания собственных игр.
Язык C# также активно используется и в разработки веб-приложений. Вакансий на сайте по данному языку более 4 000, большинство которых нацелены на бекенд разработку используя технологию .NET Framework.
Сам язык всегда бывает в топ 5 позициях рейтинга Tiobe и думаю будет также востребован в ближайшем будущем.
Ruby (Руби)
Кроссплатформенный и по-настоящему универсальный скриптовый язык, относящийся к сфере объектно-ориентированного программирования. Его синтаксис прост и лаконичен, благодаря чему новичкам будет несложно его освоить. Профессионалы любят его за бережливость по отношению к компьютерным ресурсам.
Ruby часто хвалят за динамизм и хорошую сбалансированность, где красота не принесена в жертву удобству и наоборот. Кроме того, он абсолютно открыт для использования, изменения, копирования и распространения, а ещё у него довольно много разных библиотек, которые обновляются одна за другой и позволяют решать разные задачи.
GO (бэкенд разработка, настольные приложения, системное программирование)
Go — это язык низкого уровня, разработанный внутри компании Google, который может помочь вам стать системным программистом и разрабатывать качественные консольные приложения. Язык любят разработчики, которые используют его для облачных вычислений и для кластерные вычисления.
Если вы раньше программировали на C или C++, то выучить язык Go не составит вам труда. Ну а если вы новичок в программировании, то например по сравнению с python, язык Go относительно сложен в изучении, кроме того, области их применения относительно разные. Все же он не настолько сложен как может показаться.
Golang также используется и для разработки веб-приложений, где на официальном сайте можно найти подробную документацию с примерами кода.
На headhunter размещено около 2 000 тысяч вакансий по языку Go, с довольно таки неплохими окладами. Многие из них нацелены на бэкенд разработку, написание микросервисов и API.
Несмотря на то, что в странах СНГ язык GO только начинает развиваться, многие крупные компании уже начинают внедрять эту технологию в свои разработки. В США, Golang стал довольно популярным и компания Google старается продвигать язык усовершенствуя его функционал и производительность.
Поэтому, думаю изучения языка Go, станет отличной инвестицией в ваш арсенал навыков.
Определите, чем вы хотите заниматься
Все эти споры, какой язык круче, бессмысленны, потому что:
- У каждого языка есть свои преимущества и недостатки.
- Один язык не может быть хорош для всего.
Новички ещё слишком мало знают, чтобы понять, что им нужно от языка. Поэтому выбирать нужно не язык, а то, чем вы хотите заниматься. Многие языки в первую очередь затачиваются под решение определённых проблем или под определённые сферы:
- Быстро создать сайт — PHP или Python.
- Создать игру — C++ или C#.
- Веб-систему для банка — Java, C# или C++.
- Красивый интерфейс для сайта — HTML, CSS и JavaScript.
- Приложение для Android — Java или Kotlin.
- Приложение для iOS или Mac OS — Objective-C или Swift.
Выбрав сферу, выясните, какие языки там используются, и выбирайте из них. Вы можете попробовать выучить несколько разных языков, чтобы определиться, какой вам больше нравится или лучше подходит для конкретной задачи.
Но даже если вы решите выбрать что-то совсем непопулярное — на чём пока не создавали крутые проекты, — это не значит, что вас ждет провал.
Выбор технологии не определяет успеха игры, сайта, приложения и чего угодно ещё.
А вот основные сильные и слабые стороны популярных языков:
Язык | Преимущества | Недостатки |
---|---|---|
С++ | • Высокая производительность• Прямой доступ к памяти• Строгая типизация | • Высокий порог входа• Низкая скорость разработки |
C# | • Строгая типизация• Сборка мусора• Кроссплатформенность• Большое количество синтаксического сахара | • Ориентированность под Windows• Нет возможности создавать кроссплатформенное GUI |
Python | • Высокая скорость разработки• Возможность быстро выучить язык• Широкий спектр применения | • Слабая типизация• Низкая производительность |
JavaScript | • Высокая скорость разработки• Возможность быстро выучить язык | • Непредсказуемость• Слабая типизация |
Java | • Кроссплатформенность• Строгая типизация• Сборка мусора | • Требуется много времени на запуск приложения• Большой объём повторяющегося кода |
PHP | • Большое сообщество• Быстрое развитие | • Слабая типизация• Небезопасный код |
Джоэл Спольски (CEO Stack Overflow) предпочитает C-подобные языки, но всё равно выбирает тот, который лучше справится с конкретной задачей.
Crystal
Crystal является языком программирования общего назначения с девизом “Быстр как C, привлекателен как Ruby.»
Это высокоуровневый, статически типизированный, компилируемый, полностью объектно-ориентированный язык программирования с передовым выводом типов и сборкой мусора.
Архитектурные цели Crystal:
- Синтаксис похожий на Ruby (но совместимость с ним не является целью).
- Статическая типизация, но без необходимости указания типа переменных или аргументов метода.
- Возможность вызывать C-код, написав биндинги к нему на Crystal.
- Возможность выполнения и генерации кода во время компиляции, чтобы избежать шаблонного кода (boilerplate).
- Компиляция в эффективный машинный код.
Crystal имеет уникальные функции, такие как:
- Каналы: Crystal использует каналы, вдохновленные CSP (так же, как Go) для достижения конкурентности. Он использует согласованные легковесные потоки, называемые Fibers, для достижения этой цели. Fiber легко создать с помощью ключевого слова и сделать выполнение асинхронным/неблокирующим.
- Макросы: Crystal использует макросы, чтобы избежать шаблонного кода и обеспечить возможности метапрограммирования. Макросы очень мощные и раскрываются во время компиляции, то есть они не приводят к потери производительности.
- : Команда сама по себе полнофунциональна и поставляется с большим количеством встроенных инструментов. Она используется для создания нового проекта, компиляции, запуска тестов и многого другого. Там также есть встроенная утилита для автоматического форматирования кода. А ещё представляет интерактивную среду для быстрого прототипирования, подобно .
Бонус:
Выразительность: Код читают гораздо чаще, чем пишут. Благодаря Ruby, Crystal действительно выразителен и лёгок для понимания. Это облегчает обучение для новичков и окупается в долгосрочной перспективе, благодаря упрощению сопровождения кода.
Для получения дополнительной информации вы можете обратить внимание на официальную Crystal Book и Crystal for Rubyists. Этот раздел был написан Serdar Doğruyol — автор Crystal for Rubyists, создатель Kemal, веб-фреймворка для Crystal, куратор Crystal Weekly
Этот раздел был написан Serdar Doğruyol — автор Crystal for Rubyists, создатель Kemal, веб-фреймворка для Crystal, куратор Crystal Weekly.
Мобильная разработка
Мобильных разработчиков делят на тех, кто пишет под iOS, и тех, кто создаёт приложения для Android.
Разработчиков под iOS не так много, потому что сам iPhone менее распространён, чем устройства на Android. Среди программистов для гаджетов от Apple наиболее популярен язык Swift — около 1 000 вакансий в России.
Swift — это относительно молодой язык, разработанный Apple. Раньше был Objective-C, однако сейчас он теряет популярность, поэтому вакансий для разработчиков на нём всего около .
В XCode 10 есть все необходимое для создания приложений для всех платформ Apple. Источник
Что же касается Android, то здесь в лидерах Java — около 7 200 вакансий в России. В принципе, на Java можно писать для всего, потому что этот язык достаточно универсален, но больше всего подходит для создания мобильных приложений.
Набирает обороты и язык Kotlin. Многие считают, что вскоре он заменит Java, тогда как другие говорят, что это просто модная игрушка, которая быстро забудется. Время покажет, но пока в России для него около 1 200 вакансий.
Сколько эзотерических языков в мире
На самом деле эзотерических языков в мире уже тысячи, а у поклонников этого направления в программировании есть даже собственная вики. В ней собраны практически все известные esolang. И только на то, чтобы его пролистать (даже не прочитать), понадобится несколько минут. А если на каждый потратить хотя бы минуту времени, то, как в расхожей легенде о Третьяковке, закроете браузер вы только через 11 лет 🙂
Чтобы войти в программирование, рекомендуем не… ломать мозг, а начать с более востребованных и практичных языков — например, Java или Python. Подходящий курс можно выбрать в разделе «Программирование» Skillbox.
JavaScript (веб-разработка)
Думаю JavaScript не нуждается в представлении. Это очень популярный и востребованный язык программирования, который в основном используется для веб-разработки, в создании мобильных приложений (с помощью сторонних фреймворков) и в создании десктопных приложений на Windows, MacOS и Linux.
Значительный потенциал этого языка программирования можно увидеть при работе с фреймворками Node.js (бэкенд) и React (фронтенд), которые помогают создавать потрясающие веб-приложения.
На JavaScript также существует множество библиотек и фреймворков, которые дополняют функционал и расширяют области применения языка.
Тем не менее, это также один из самых простых языков для изучения. Если вы хотите идти в сторону веб-разработки, то JavaScript обязательный язык для изучения.
На данный момент доступны около 10 00 вакансий для языка JavaScript по всей России. Проанализировав многие вакансии можно сделать вывод, что большая часть из них приходится на фронтенд разработку, а в частности на фреймворк ReactJS.
На долю ReactJS приходится более 4 000 вакансий, что является очень приличной цифрой для отельного фреймворка. На долю vue.js и angular приходится около 400 и 2 000 вакансий соответственно.
По запросу React Native — платформу для создания мобильных приложений, пришлось около 700 вакансий.
Из этого всего можно сделать вывод что JS действительно является популярным языком и думаю в 2021 году он станет ещё востребованным.
Nemerle (Немерле)
Это высокоуровневый гибридный язык, в котором сочетаются элементы функционального и объектно-ориентированного программирования. Он появился не так давно и вобрал в себя лучшие наработки языков-предшественников, но при этом дал и реальный вклад в программирование — возможность создания метапрограмм.
Этот метод заключается в выработке алгоритмов, которые в процессе своей работы создают возможные сценарии для дальнейшего образования исполняемых файлов. Проще говоря, в Nemerle соединились лучшие и самые полезные черты предыдущих языковых поколений. Это пример языка, который совмещает в себе новизну и универсальность.
Java (веб-разработка, разработка приложений для Android)
Java является мощным и популярным языком программирования, который почти всегда занимает ведущие позиции по рейтингу Tiobe. Язык основан на объектно-ориентированном программировании и является более низкоуровневым по сравнению с перечисленными до этого языками.
Программы написанные на Java можно запускать где угодно, если запущена Java Virtual Machine. По этой причине она является кроссплатформенной, так-как запускается и на небольших устройствах.
Язык Java в основном используется для крупных веб проектов и для разработки мобильных приложений.
Популярный, универсальный и мощный фреймворк Spring используется для создания веб-приложений.
Как уже многие знают популярная операционная система для мобильных устройств Android, также использует язык Java для разработки своих приложений.
Помимо Java, приложения на Android, также можно разрабатывать и на языке Kotlin, который в последнее время становиться популярным для среды. Поэтому если вы хотите идти в сторону разработки мобильных приложений, то для начала наверно лучше все таки учить язык Kotlin, однако в идеале лучше конечно выучить оба, чтобы стать более востребованным сотрудником в этой области.
На hh.ru доступны более 8 000 вакансий для языка Java, что является довольно таки неплохой цифрой. Учитывая то, что язык Java относительно старой, он все еще востребован на рынке трудоустройства.
Swift
Логотип Swift
Теперь перейдем к конкретизированным и мобильным разработкам, каким является язык программирования Swift. Язык Swift используют для разработки приложений под iOS и macOS. Очень популярен среди разработчиков. Учитывая, что Apple владеют значительной частью мобильного рынка, данный язык очень актуален!
Платформа | Разработка под iOS и macOS |
Обучение | Относительно легко |
Популярность | Популярен. №9 в списке PYPL. |
Средняя зарплата (мес) | 2000$ |
Преимущества | Относительно лёгок в освоении. Самый популярный язык программирования под iOS. Пока производство Apple живо, язык будет востребован всегда. |
Недостатки | Отсутствуют. |
Заключение
Надеюсь, эта статья окажется кому-нибудь полезной. Я крайне рекомендую хотя бы попробовать написать свой язык, несмотря на то, что придётся разбираться во множестве деталей реализации — это обучающий, развивающий и просто интересный эксперимент.
Вот общие советы от меня (разумеется, довольно субъективные):
- если у вас нет предпочтений и вы сомневаетесь, компилируемый или интерпретируемый писать язык, выбирайте второе. Интерпретируемые языки обычно проще проектировать, собирать и учить;
- с лексерами и парсерами делайте, что хотите. Использование средств автоматизации зависит от вашего желания, опыта и конкретной ситуации;
- если вы не готовы / не хотите тратить время и силы (много времени и сил) на придумывание собственной стратегии разработки ЯП, следуйте цепочке действий, описанной в этой статье. Я вложил в неё много усилий и она работает;
- опять же, если не хватает времени / мотивации / опыта / желания или ещё чего-нибудь для написания классического ЯП, попробуйте написать эзотерический, типа Brainfuck. (Советуем помнить, что если язык написан развлечения ради, это не значит, что писать его — тоже сплошное развлечение. — прим. перев.)
Я делал довольно много ошибок по ходу разработки, но большую часть кода, на которую они могли повлиять, я уже переписал. Язык сейчас неплохо функционирует и будет развиваться (на момент написания статьи его можно было собрать на Linux и с переменным успехом на macOS, но не на Windows).
О том, что ввязался в историю с созданием Pinecone, ни в коем случае не жалею — это отличный эксперимент, и он только начался.
Перевод статьи: «I wrote a programming language. Here’s how you can, too»