Меню Рубрики

Сколько всего существует языков программирования

Cat, Mouse и Brainfuck: сколько языков программирования существует в мире

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

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

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

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

Низкоуровневые и высокоуровневые

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

Усложнение программ привело к тому, что люди уже не могли эффективно писать их на устаревшем языке ассемблера. В 1970-е годы разработчики создали первый высокоуровневый язык, многим известный Fortran, который используется и сейчас — в основном в научных разработках и вычислениях. В третьем и четвертом поколениях оформилось структурное программирование и появились функциональные языки: это, например, C, Pascal, Lisp, Scala, Erlang, F#, Haskell и другие.

Сегодня говорят уже о сверхвысокоуровневых языках, для которых характерен еще больший градус абстракции, чем в предыдущих. К этой группе относят Python, Ruby, Haskell, Perl.

Интерпретируемые и компилируемые

Интерпретация — это выполнение кода непосредственно и построчно, то есть команда за командой. В этом случае программа не может быть запущена без интерпретатора. К языкам такого типа относятся PHP, JavaScript, Python, Lava, MATLAB, Perl и другие.

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

Со статической и динамической типизацией

Еще один вариант классификации — по мощности и строгости типов того или иного языка. Динамическая типизация означает, что переменная получает свой тип не при ее объявлении, а в момент присвоения ей значения. Динамически типизированные языки — это PHP, JavaScript, Ruby, Python, Objective-C, Lisp, Perl, Erlang, Visual Basic, Smalltalk.

Статическая типизация — противоположный прием: переменная получает свой тип при ее объявлении, и он не может быть изменен позже. Примеры статически типизированных языков: Java, Pascal, C++, C#, Ada.

Эзотерические языки

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

Некоторые из них созданы на основе литературного синтаксиса, например, шекспировских пьес, кулинарных рецептов, японских стихотворений хайку. И даже на основе вымышленной инопланетной логики клингонов из сериала “Star Trek” — язык Var’Aq.

Один из широко известных эзотерических языков — Brainfuck («вынос мозга»), созданный в 1993 году Урбаном Мюллером. В нем всего восемь команд, и каждая записывается одним символом. Несмотря на свой минимализм, Brainfuck обладает тьюринг-полнотой — то есть на нем определенно можно реализовать любую вычислимую функцию. Следуя его концепции, многие разработчики написали свой игрушечный язык наподобие Brainfuck.

Специальные языки

Их создавали для решения каких-то очень узких специфических задач. Например, язык Mouse был разработан для управления цифровыми и аналоговыми устройствами в электронной музыкальной студии. Его элементы состоят из единичных символов, и в нем всего 26 переменных, ограниченных буквами латинского алфавита от A до Z. Вот пример небольшой программы на нем:

increment N and repeat loop

И стандартное приветствие «Hello, world»:

Помимо «языка-мыши» существует и «язык-кот». Cat написал Christopher Diggins, вдохновившись языком Joy. Кот приветствует вас своим кодом:

Визуальные языки

Многие современные языки позволяют программировать, используя графические, а не текстовые элементы, управляемые через визуальные интерфейсы. Так, AutoLisp — «диалект» оригинального Lisp — позволяет проектировать трехмерные модели в системе AutoCad, используемой в архитектуре, строительстве и машиностроении.

Еще одна известная пара — Visual Basic for Applications (VBA) и Microsoft Excel. А в случаях, когда оба они являются визуальными, встраиваемые языки называют плагинами или фильтрами. Так, можно очень условно сказать, что для визуального метаязыка Adobe Photoshop существует множество встраиваемых мини-языков — плагинов.

Актуальные языки

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

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

После 20-й позиции можно видеть менее востребованные технологии или те, которые используют в очень узких сферах:

Однако рейтинги и топы в интернете могут иметь статистические погрешности. Индексы TIOBE и PYPL ориентируются только на поисковые запросы: первый — на их количество, а второй — на то, как часто люди гуглят тот или иной язык. На самом деле узнать, сколько разработчиков в мире используют Python, R или Ruby, непросто — для этого придется провести очень масштабное и сложное исследование. Если вы знаете, как это сделать, напишите в комментариях.

Мы предложили бы ориентироваться на ежегодный отчет GitHub, где указывается 15 наиболее популярных на этой платформе языков. Пусть выборка включает в себя только проекты с открытым исходным кодом и не охватывает 100% профессиональной области, она все же более близка к истине. По этим данным рейтинг за 2017 год:

Здесь тоже лидируют JavaScript и относящиеся к frontend языки разметки HTML и CSS.

Какой язык выбрать для освоения?

Мы частично рассмотрели, какие языки программирования существуют сегодня. Какой же выбрать из всего этого многообразия? Жизнь диктует свои простые условия: технология всегда выбирается под решение конкретной задачи. Мир IT огромен, и потому в нем столько языков. Новичок может выбрать актуальный в той сфере, которая ему близка и интересна.

Например, для анализа данных применяются Python и R, «короли» веб-разработки — PHP и JavaScript, работа в банковских системах и госструктурах не обойдется без Java, ААА-игры создаются на C++ и C# и так далее.

Наиболее перспективные сферы разработки программного обеспечения:

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

Заключение

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

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

Сколько сейчас есть языков программирования?

Современный мир был бы совсем иным без языков программирования. Только представьте: нет компьютеров, интернета с его социальными сетями, да и в принципе любых цифровых технологий.

Если говорить в общем, существует от 1 тысячи до 10 тысяч языков программирования. Как мы уже сказали, такой размах получается из-за разного смысла, вкладываемого в понятие язык программирования. Также имеет значение, как мы будем классифицировать разновидности одного языка: как отдельные языки или нет.

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

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

Многообразие ЯП

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

Динамический тип языков программирования и статический

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

Если присвоение типа переменной происходит при ее объявлении – это статическая типизация. К таким языкам относятся С++, C#, Golang и Java.

В языках с динамической типизацией этот процесс происходит при присваивании значения, например, в PHP, JavaScript, Ruby или Python.

Языки низкого уровня и высокого

Тут ничего сложного: обычно языки первых поколений – это низкоуровневые. К ним относятся ассемблеры, появившиеся на заре информационной эры, когда ЭВМ были размером с целое здание.

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

В данный момент существуют и языки сверхвысокого уровня с высочайшим уровнем абстракции. К примеру, Python, Perl и Ruby.

Компиляция и интерпретация – две основы ЯП

Данное разделение довольно условно. Основное различие заключается в том, что для выполнения программы интерпретируемым языкам программирования не требуется машинный код, а компилируемым он нужен. В первых построчным выполнением программы занимаются интерпретаторы. Что касается скорости работы, раньше компилируемые были шустрее, но теперь разрыв постепенно минимизируется за счет JIT-компиляции и подобных технологий.

К компилируемым языкам относятся Pascal, Basic и C#, а к интерпретируемым – PHP, JavaScript и Python.

Текстовые ЯП и визуальные

Визуальные отличаются от текстовых тем, что в них программа создается не написанием текста, а комбинированием графических объектов. Так как смартфоны и планшетные ПК становятся все более популярными инструментами для работы, востребованность визуального программирования тоже повышается.

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

Для развлечения

Знали бы вы, сколько ЯП были созданы “just for fun”! Несмотря на их полноценность, использовать эти языки для решения “настоящих”, “взрослых” задач невозможно, зато они отлично подходят для того, чтобы обучать главным принципам разработки в доступной и нескучной игровой форме.

Glass

Появился в 2005-ом году. Его структура настолько сложная, что здесь действительно сам черт ногу сломит!

Приведенный участок кода выведет на экран последовательность Фибоначчи.

Lolcode

В 2007-ом году Адам Линдсей создал язык Lolcode, в котором используется словарь сленгового английского языка и фразы с картинок интернет-мема Lolcat (на нем изображаются кошки и смешные надписи).

Brainfuck

Язык для настоящих гиков, название которого переводится как “заниматься ерундой”. Он очень минималистичен: всего 8 команд в виде символа. Конечно же, это не серьезный инструмент, а очередное развлечение для разработчиков. Но даже несмотря на это он покорил сердца достаточно большой публики.

Этот код выводит фразу « Hello, World ».

Chicken

Ключевых слов здесь не много – только одно. Сможете угадать, какое? В каждой строке содержится определенное количество слов « chicken », и от их числа зависит, какая команда будет выполняться.

Вот пример неординарного, но тем не менее работающего кода: