![](https://habrastorage.org/getpro/habr/upload_files/a10/97d/b7b/a1097db7b690b8d196f448be8801c134.jpg)
В мире насчитывают примерно 7 000 естественных языков и 9 000 языков программирования. Но, в то время как количество первых стабильно сокращается, число вторых продолжает уверенно расти.
Сегодня поговорим о универсальном языке программирования «для всего» и причинах появления новых ЯП. Обсудим несколько свежих разработок — например, Carbon, которому пророчат будущее преемника C++, язык для проектирования нейросетей Mojo, облачный язык программирования Wing.
Почему старые ЯП сохраняют популярность
![Самые популярные языки программирования во всем мире по состоянию на 2023 г. Statista Самые популярные языки программирования во всем мире по состоянию на 2023 г. Statista](https://habrastorage.org/getpro/habr/upload_files/0ee/934/fb9/0ee934fb9919c289c044c12b025b640e.png)
Почему вообще некоторые языки не уходят в небытие? Тот же COBOL серьезно повлиял на культуру программирования в шестидесятых, но и в наше время остается востребованным. По оценкам аналитиков из Micro Focus, сегодня на этом языке выполняются более 800 млрд строк кода в продакшн системах, по сравнению с 200 млрд в 1997 году. Хотя все же стоит отметить, что язык получил множество обновлений, и нынешний COBOL уже не тот ЯП, что видел перфокарты.
Кроме того, есть еще и FORTRAN, созданный Джоном Бэкусом (IBM) в 1957 году. Это старейший язык программирования, который используется до сих пор.
Языки живут пока получают ключевые обновления, но порой такие инициативы встречают сопротивление со стороны сообщества. Достаточно вспомнить ситуацию с Python, которая вызвала продолжительные дискуссии относительно поддержки второй версии и миграции на третью. Тогда многие ИТ-специалисты выразили мнение, что история с Python — наглядный пример того, как не нужно управлять экосистемой. Однако несмотря на критику и ошибки, этот язык программирования остается одним из наиболее востребованных в мире.
Помимо неугасающей поддержки старых ЯП и последовательного развития устоявшихся решений, в индустрии формируется другой тренд. Появляются свежие языки, авторы которых актуализируют подходы к разработке.
Новые технологии и работа над ошибками
![Эволюция языков программирования. Источник: Computer History Museum Эволюция языков программирования. Источник: Computer History Museum](https://habrastorage.org/getpro/habr/upload_files/a7b/d8e/b15/a7bd8eb15e4bbe900ba80cdef4502ffd.jpg)
Одна из причин появления новых ЯП — необходимость переосмысления существующих подходов и исправление недостатков языков предыдущего поколения. Даже C++, будучи одним из наиболее распространенных ЯП, имеет определенные недостатки.
В то же время, процесс внесения изменений в C++ сильно затруднен: решения принимает специальная комиссия, структура которой направлена скорее на продвижение стандартов и интересов корпораций. Улучшить его, чтобы предоставить разработчикам тот опыт, который сегодня ожидают от ЯП, сложно отчасти потому, что C++ имеет десятилетия технического долга, накопленного при разработке языка.
Стать преемником C++ может Carbon. Его представил инженер Google Чендлер Каррут в 2022 году. Преемственность достигается за счет интероперабельности. Предполагается, что все библиотеки и кодовые базы можно будет «бесшовно» импортировать в двустороннем порядке. Кроме того, система построена на принципах открытого кода, авторы собираются своевременно делиться своими приоритетами с сообществом, а также быстро принимать решения об изменениях. Предполагается, что разработчики смогут без особых усилий перейти на новый язык. Carbon имеет современную систему дженериков, модульную организацию кода и простой синтаксис, который сокращает период адаптации при переходе на новое решение.
Пока что Carbon находится в экспериментальной стадии, поэтому желающие поближе познакомиться с языком могут столкнуться с определенными трудностями — отсутствие компилятора одна из них.
Но Carbon далеко не единственный проект, стремящийся исправить недостатки прошлых ЯП. Другим примером может быть язык V. Если раньше в фокусе была производительность процессов, то с развитием технологий большую важность обрела продуктивность разработчика. Главная особенность заключается в том, что V мотивирует писать простой и понятный код с минимальным уровнем абстракций. Например, он не содержит глобальных переменных, которые могут создавать неограниченное число зависимостей и усложнять программу.
Кроме того, как указывает автор, все переменные в языке по умолчанию являются неизменяемыми. Такой подход должен улучшить читаемость кода и предотвращать ошибки, вызванные случайной модификацией значений.
Язык для систем ИИ
Согласно опросу, проведенному McKinsey среди полутора тысяч компаний в апреле 2023 года, треть организаций использует модели машинного обучения хотя бы в одной сфере бизнеса. Более того, 40% собираются активно инвестировать в новую индустрию.
Поскольку технология стремительно развивается, возникла потребность в оптимальном языке программирования для разработки систем ИИ. Закрыть её взялись Крис Латтнер, один из ведущих разработчиков Swift, и Тим Дэвис, бывший сотрудник Google — они представили Mojo.
Разрабатывая системы ИИ на Python, инженеры, так или иначе, подключают модули, написанные на более производительных языках. Такой «билингвальный» подход усложняет отладку, обучение и развертывание приложений на базе искусственного интеллекта. Mojo использует MLIR (Multi-Level Intermediate Representation), фреймворк для разработки компиляторов, и значительно обходит Python в вычислительной скорости. Например, для выполнения алгоритма Мандельброта первому нужно 0,03 секунды, а второму — 17 минут.
Помимо этих преимуществ, у Mojo отмечают и другие достоинства: совместимость с библиотеками Python, встроенную автонастройку, которая самостоятельно подбирает значения для параметров исходя из имеющегося оборудования, а также функцию struct, которая упорядочивает атрибуты в памяти для использования в структурах данных.
Mojo может стать наиболее важным достижением в программировании за последнее время. Авторы поступили очень мудро, взяв за основу язык, ограничения и возможности которого спустя десятилетия понятны миллионам разработчиков.
От единого языка к большим данным
До сих пор не существует языка программирования, который мог бы одинаково успешно справляться со всеми задачами. Попытки его создать предпринимались еще в 1960 годах, когда IBM разработала PL/I. Он должен был объединить преимущества FORTRAN, COBOL и ALGOL.
Однако, на что сразу не обратили внимание, с новым языком разработчики должно были прекратить использовать FORTRAN, COBOL и ALGOL. Эту проблему усугублял тот факт, что три языка сами развивались в реальном времени. Языки постоянно эволюционировали, и объединить старые и новые функции в одном инструменте оказалось невыполнимой задачей.
Учитывая неудачи разработчиков универсальных языков, некоторые их коллеги идут в другом направлении, предлагая сообществу предметно-ориентированные ЯП, призванные решать узкие задачи. Например, в области работы с big data появился Logica.
Авторы Logica полагают, что принципы хорошего программирования подразумевают написание небольших фрагментов кода, которые можно называть, тестировать, организовывать в кластеры и использовать для формирования более крупных модулей. Так, в основу проекта положена математическая логика высказываний, которая упрощает сложные выражения. Язык совместим с библиотеками SQL и находится в открытом доступе.
Облачные языки
С развитием облачной индустрии также появляются ЯП, заточенные под разработку облачных сервисов. Один из таких языков — Wing. Он имеет две фазы выполнения: preflight и inflight. Так, на первом этапе генерируется инфраструктурная конфигурация, а на втором — код компилируется в JavaScript и выполняется в облаке в среде Node.js.
Еще одним примером узкоспециализированного языка для разработки в облаке может быть Ballerina. По мнению его автора, основная сложность заключается в интеграции множества API в одно приложение. Ballerina помогает решить эту проблему за счет высокого уровня абстракции, функции моделирования данных и возможности просматривать код в виде диаграмм.
Разумеется, узкоспециализированные языки программирования тоже сталкиваются с критикой. «Облачную» функциональность всегда можно реализовать в виде фреймворка, а не разрабатывать отдельный ЯП. Например, Shuttle — это облачная платформа для разработки приложений на Rust.
Кроме того, не все готовы осваивать новый язык для разработки нескольких корпоративных приложений. С точки зрения компании такой подход может быть финансово невыгодным. С другой стороны, языки вроде Wing куда лучше отражают специфику облака, учитывают контекст и упрощают разработку.
Заключение
Создание универсального языка программирования, который бы одинаково хорошо подходил для всех задач, считается практически невозможным из-за разнообразия требований, сценариев использования и специфики решаемых проблем.
Исходя из этого, языки программирования появляются в зависимости от конкретной задачи, целей и контекста. Один из ярких примеров настоящего времени — быстро развивающая область языков квантового программирования.
В сообществе нет единого мнения на тему того, остановится ли рост новых языков программирования. Хотя возможно мы будем наблюдать определенное замедление прогресса — все новые языки будут выглядеть просто как оптимизация старых ЯП.
Наконец, вполне возможно, что будущее программирования лежит именно в области узкоспециализированных языков. Вероятно, на рынке труда будет высокий спрос на специалистов с опытом разработки новых ЯП. Эти инженеры будут проектировать языки под конкретные отраслевые задачи, что приведет к стремительному росту индустрии.
Комментарии (45)
unreal_undead2
11.04.2024 10:20+5Преемственность достигается за счет интероперабельности. Предполагается, что все библиотеки и кодовые базы можно будет «бесшовно» импортировать в двустороннем порядке.
Что, и исключения между Carbon и C++ прозрачно перекидываются?
knstqq
11.04.2024 10:20перекидываются между C++ и cppfront (cpp2). Совместимость бинарная на уровне линковки, на уровне хидеров, более того в одном файле можно писать на миксе языков в "не строгом" режиме
unreal_undead2
11.04.2024 10:20Так там вроде только синтаксис меняется, семантику плюсов не трогают.
knstqq
11.04.2024 10:20всё так. Единственный существующий прототип компилятора - трансформер в обычный С++
sergey_prokofiev
11.04.2024 10:20+7Даже C++, будучи одним из наиболее распространенных ЯП, имеет определенные недостатки.
Да неужели :))))
А вообще статья совершенно гуманитарная.
ImagineTables
11.04.2024 10:20А какая часть цитаты имелась в виду? Первая, вторая или обе?
sergey_prokofiev
11.04.2024 10:20Несмотря на то что С++ сейчас гораздо менее популярен чем 30 лет назад, он все еще очень популярен - с этим не поспоришь.
А вот
Даже C++...... имеет определенные недостатки.
вызывает исключительно улыбки. Как будто популярность коррелирует с "отсутсвием недостатков"(чтобы это ни значило) языков программирования.
ImagineTables
11.04.2024 10:20с этим не поспоришь
По моим наблюдениям, большинство проектов, якобы написанных на C++, на самом деле написаны на квазиязыке под названием «C/C++». Именно на C++ их пишется так мало, что популярным его назвать трудно.
DistortNeo
11.04.2024 10:20И это пример того, что случится с любым языком, претендующим на универсальность. Он тупо окажется слишком сложным, и люди будут пользоваться лишь небольшим его подмножеством.
ImagineTables
11.04.2024 10:20Лично у меня универсальность ассоциируется с уменьшением сложности, а не увеличением. Просто потому, что одно универсальное правило покрывает множество частных случаев.
И это полностью относится к плюсам. Когда спрашиваешь, где тут универсальный string, обычно отвечают, что универсальный string тормозил бы, и это помешало бы использовать язык в системных сценариях. То есть, он заточен под системные сценарии (удачно или нет — отдельный вопрос), а не под то, чтобы быть универсальным.
DistortNeo
11.04.2024 10:20У меня универсальность ассоциируется ещё и с покрытием кейсов, для которых используются узкоспециализированные языки.
Стандартная бибилиотека как раз
std::string
предоставляет. Но разработчики библиотек используют кто во что горазд, потому что C++ не принуждает к использованию только стандартной библиотеки.ImagineTables
11.04.2024 10:20+1По-моему, всё это в другом порядке происходит ))
Стандартная библиотека НЕ предоставляет универсальный string, который можно было бы использовать в любых сценариях (посмотреть на универсальный string можно в .Net, где он поддерживает все мыслимые операции с текстом).
В результате, разработчики вынуждены искать string на стороне, например, в Qt, т.к. их не «не принудили». То есть, если называть вещи своими именами, лишили функционала. (Этак можно и собаку из дома выгнать, сказав, что решил «не принуждать её к совместному проживанию»).
И где же тут претензия на универсальность («…с любым языком, претендующим на универсальность…»)? Такой цели просто не ставится. Ставится цель сделать язык пригодным для написания ядер ОС. Я уж не знаю, где все эти ядра, и зачем нам столько ядер, но так говорят активные члены C++ комьюнити.
А если почитать степанова, одного из создателей этого языка, он прямо говорит, что другая его цель была в том, чтобы дать программисту возможность легко писать алгоритмы. Но универсальный язык, как нетрудно догадаться, должен быть сфокусирован на том, чтобы алгоритмами было легко пользоваться. Просто потому, что в большинстве сценариев их вызывают, а не пишут, а универсальный язык должен покрывать большинство сценариев.
sergey_prokofiev
11.04.2024 10:20С - это подмножество С++. У самого C++ штуки 4 больших "рефакторинга" с подддержкой предыдущих фичеров языка. В результате непонятно что называть "чистым С++". Почитайте "дизайн и эволюция С++" за авторством мертвой птицы, которая не умеет летать. Посмотрите на год написания, прикиньте сколько еще наворотили после издания...
grossws
11.04.2024 10:20+1Скорее был подмножеством во времена C++98 или даже раньше. Во времена C11 и C++11 расхождений уже было достаточно
GospodinKolhoznik
11.04.2024 10:20Но ведь код написанный на C компилируется в компиляторе С++. Значит С тоже С++ ))
unreal_undead2
11.04.2024 10:20+2Весь-весь? И с неявным int? И все преобразования типов нормально компилируются?
GospodinKolhoznik
11.04.2024 10:20А в каком компиляторе вы компилируете сишный код?
unreal_undead2
11.04.2024 10:20Да хотя бы gcc. Конечно, warning'и в описанных ситуациях выдаются, но код от этого не перестаёт быть валидным.
GospodinKolhoznik
11.04.2024 10:20Т.е. ваш сишный код и с неявным int и со всеми преобразования типов компилируется компилятором под C++ ?
unreal_undead2
11.04.2024 10:20+2Именно что нет - компилируется компилятором C, но не компилируется компилятором C++. Вы же утверждали
ведь код написанный на C компилируется в компиляторе С++
Batalmv
11.04.2024 10:20+2Ответ простой в виде аналогии: а почему в мире так много "естественных" языков. Давайте все будем говорить на эсперанто :)
Мне кажется статья подразумевает какую-то логику. Здесь просто попросили бот накидать текста на тему
--------------------
Ну смотрите, все ж тривиально
Есть существующая система. Ее нужно допилить напильником, а сделать новую с нуля дороге. Какой язык будем использовать? Бинго, тот на котором написана система. Так как legacy систем вокруг нас просто огромное количество, вот и ответ почему старые языки все еще живы
Есть новая система, и надо выбрать стек. Ну все просто. Из тех вариантов, которые в принципе есть берется тот, где есть разработчики, либо они дешевле, так как во всем остальном это уже не так критично. К примеру, на одном из проектов надо было выбрать Java vs C# :). Дальше популярность тянет за собой язык, как если бы вы играете в монополию и начинаете выигрывать. Больше куплено, больше вам платят, вы больше покупаете. Так и с языком
Также есть специфика, которая только множится, точнее к существующим слоям добавляются новые, но старые никуда не деваются. К примеру, появился "клауд", но ведь это никак не отменило bash, так как внутри конкретной виртуалки надо тоже чего-то делать. И т.д. Развитие ИТ идет методом добавления, что очевидно ведет к тому, что новые инструменты появляются, а старые просто занимают свою нишу либо активную, либо медленно умирающую (что-то вроде функции 1/x, которая конечно стремится к нулю, но его никогда не достигает)
Почему не переиспользуются языки? Да все просто. Язык, хотим мы этого или нет, не существует в абстрактном мире. Конечно в документации да. Но в реальном мире нет. Программисты не хотят писать с нуля базу. Все хотят брать готовый фреймворк и докруить его под задачу. Вы же не хотите изобретать обычное серверное приложение, которое наружу торчит REST API наружу с нуля. Вы хотите сразу чтобы было все. Контроллер, авторизация, валидация и т.д. Те языки, где это запилили, очевидно применяются для таких задач.
Также задача "давайте придумываем что-то новое, чтобы оно поддерживало старое" пазнет нездоровым мазохизмом, так как любое новое вынуждено будет жить в в теслом ложе стартого и вам все время надо будет делать "костыли" разной степени встратости.
Но людям всегда интересно что-то запилить новое. Что-то взлетит, что-то - нет
vitiok78
11.04.2024 10:20+2Если оставить один язык программирования для всего, то его выбор (создание) будет набором компромиссов. А что такое компромисс? Это не решение, от которого все ахают в экстазе. Компромисс - это вынужденное решение, которое не нравится ни одной из сторон, и к которому приходят только потому, что иначе нельзя. Т.е. компромиссом в нашем случае будет язык программирования, который одинакового плохонько будет решать все задачи. Оно нам надо? Подумайте об этом... Выберут же JavaScript... У меня от одной этой мысли холодок по спине пробегает)
Обратите внимание на каких-либо мастеров своего дела. У каждого хорошего мастера целая коллекция очень узко-специализированных инструментов, каждый из которых выполняет только одну задачу, но делает это очень хорошо. Если вместо этого взять какой-то монструозный мульти-тул, то он сделает всё одинаково плохо
unreal_undead2
11.04.2024 10:20А если не выберут из существующих, а специально задизайнят новый универсальный с учётом всех предложений - появится просто ещё один язык который ничего не вытеснит. Вроде как Pl/I с такой целью разрабатывался.
vitiok78
11.04.2024 10:20+1Любой мульти-тул всегда хуже отдельных инструментов, любой шампунь "10 в одном" всегда хуже десяти специализированных. И т.д. Это прямое следствие компромиссов, принятых при создании таких монстров.
Язык программирования - это точно такой же инструмент. Все проблемы мульти-тулов применимы и для него
Tuvok
11.04.2024 10:20+1Не всегда так, в информационном ракурсе наоборот, программы поглощают друг друга становясь многофункциональными. То что раньше было отдельными утилитами сейчас вполне себе программный продукт. И все цифровые вещи такое свойство имеют, например современный смартфон много чего заменяет что в прошлом было отдельными девайсами. Что в материальном мире трудно или невозможно, в цифровом легко и непринужденно. Что мешает языку программирования быть таковым?
vitiok78
11.04.2024 10:20+4Дело в том, что у нас давным-давно есть такой язык. Это C++. На нём можно вообще всё, что угодно, написать.
Только вот C++ - это язык, который я ненавижу больше всех после JavaScript. И почти все его недостатки как раз напрямую и проистекают от того, что он такой вот мульти-тул. И даже если они окончательно разберутся с проблемами с памятью, то самая настоящая его проблема так и останется. Знаете, какая это проблема? Это когда два программиста вполне себе могут не понять C++ код друг друга из-за чудовищного количества фич в языке.
Tuvok
11.04.2024 10:20+1Машинные коды и язык ассемблеров никуда не денутся.
grossws
11.04.2024 10:20Давно вы писали на ассемблере, скажем, 8051? Или R2000? Или ARM Thumb (первой версии)?
Tuvok
11.04.2024 10:20+1Разве асм не нужен для новых железок и компиляторов под них?
grossws
11.04.2024 10:20Таки имел ввиду что ассемблеры приходят и уходят вместе с ISA и железом.
И умирают куда лучше чем высокоуровневые языки, которые переносятся между платформами с применением небольшой прикладной некромантии
unreal_undead2
11.04.2024 10:20Ассемблерный код умирает со старыми архитектурами, но умение его хотя бы читать остаётся востребованным, и при знании парочки архитектур разобраться с новой не так сложно.
maisvendoo
11.04.2024 10:20HTML/CSS - язык программирования? Серьезно?
vitiok78
11.04.2024 10:20HTML - это декларативный язык программирования. Да, конечно, он не тьюринг-полный, но он позволяет при помощи написания кода на определенном языке получить результат, зависящий от этого кода.
c0r3dump
11.04.2024 10:20В мире насчитывают примерно 7 000 естественных языков и 9 000 языков программирования. Но, в то время как количество первых стабильно сокращается, число вторых продолжает уверенно расти.
Статья начинается с ошибочного утверждения. Количество естественных языков тоже растёт, просто на некоторых из них почти не говорят, но часто остаются артефакты с этими языками. Бывают случаи и воскрешения древнего языка после того, как на нем перестали говорить. Примером может послужить возражение Иврита, после того, как он был заброшен и большая часть евреев говорила на идише или других языках, а сейчас ничего - вполне жив язык-то, идиш же отмирвет тк молодёжи не нужен, а старики - не вечные. Как минимум стоило бы в начале тогда дать определение что вы называете языком и что значит "существует" в вашем случае? Сколько человек должно на нем говорить, чтобы язык считался существующим?
С языками программирования тоже похоже, количество кода на Ada не очень растёт...
Почему так? Потому что по сравнению с языками общения все языки программирования очень молодые. Подождите хотя бы лет 500 с их появления и поглядим. Также, в создании языков общения участвуют обычно целые народы и культуры, причём долгое время. Да, есть искусственно созданные языки вроде эсперанто, ложбана, язык туземцев в фильме Аватар или эльфийские языки Толкина, но на них очень мало кто говорит, правда это не делает их несуществующими. Что проще - создать свой язык программирования или язык общения? Для меня на самом деле не очевидно, наверное Толкину как лингвисту проще Тенгвар эльфийский запилить, чем язык программирования, а кому-то - наоборот. Правда вот уговорить попробовать использовать новый язык программирования кого-то всяко кажется проще, чем уговорить освоить новый язык общения.
Язык общения часто становится частью идентичности человека, некоторые готовы даже воевать и умирать за свое право использовать тот или иной язык. Много кто в окопы пойдёт за право писать на Perl в 2024? Ну и ещё - чтобы обучить людей языку программирования придётся использовать какой-то из языков общения, но не наоборот. Так что язык общения играет в жизни гораздо более значимую роль.
Tuvok
11.04.2024 10:20При этом на любом языке общения можно описать что угодно, а с языками программирования не так. На одном делают системные вещи, на другом сетевые, на третьем бизнес-логику, на четвертом язык разметки, еще скриптовые, командные имя им легион. Язык общения всеобьемлющ и универсален, а языки программирования до такого не доросли.
unreal_undead2
11.04.2024 10:20Сколько человек должно на нем говорить, чтобы язык считался существующим?
Достаточно одного носителя, выучившего язык как первый от родителей.
JQuery567
11.04.2024 10:20+11-е место js да еще и html/css это (#%#%#%, не хочу ругаться) -
мошенничествоневерная методика.а) javascript в рейтинге надо делить на: 1) серверный Node.js и 2) браузерный javascript, в конце-концов в IE кроме javascript еще был и браузерный visual basic (еще точнее vba), может даже в 11-м IE он еще остался, не проверял, а IE во всех windows-ах есть, так что тоже 1-е место по распространенности дадим встроенному visual basic-у? По крайней мере среди компьютеров с Windows?
б) html/css мало того, что не языки программирования, а языки разметки, так "произрастают" из тех же грабель - они работают только внутри другой программы - браузера!!!
б-2) забыл про typescript - его зачем сделали? чтобы починить js, т.к. он работает на js, не так ли? Может еще в рейтинг запихаем jquery, react, vue, angular?
js и html/css, typescript в общем рейтинге - это карточное шулерство!
На всех компьютерах/смартфонах есть браузеры и все ими смотрят сайты - это везде, ну как холодильник/плита/кран в каждой квартире. То есть надо делать отдельные рейтинги языков программирования, работающих "в операционной системе" и работающих внутри
ракеты-носителяпрограммных оболочек или встроенных в браузеры и еще куда-нибудь.Опять же - например сайт (бэкенд) на питоне, а фронтэнд того же сайта на javascript. Как считать рейтинг при таком раскладе без злоупотреблений???
в) еще такой специализированный язык - это SQL - опять же - сайт на питоне, фронтенд на html/css/js, в бд-SQL, - нужен честный рейтинг!
г) ассемблер - основа всех языков, но сейчас только для драйверов и прочей специфики - в итоге ни он, ни SQL, ни js/html/css не должны быть в общем рейтинге - это не языки общего назначения!!!
д) наконец (не бросайте в меня дохлыми помидорами :-) ) конечно это только мое частное мнениё :-)
java, c#, kotlin: c# был сделан как бы javo-й под win из-за трений MS и SUN/Oracle, а kotlin - для google - чтобы Oracle "не доставала" по поводу java на android. я бы их объединил в одну позицию в рейтинге - это три разновидности одного языка.
Tuvok
11.04.2024 10:20Этак вы лихо сказали "внутри другой программы". Тогда вообще все что существует, кроме машинных кодов, асма и голого си идут курить в сторонке, особенно всякие интерпретаторы и ВМ. И то уверенным можно быть только в машинных кодах - только они на голом железе работают, остальное "внутри программы".
axe_chita
11.04.2024 10:20Языки программирования, это всего лишь инструмент в руках программиста для решения конкретных задач. А поскольку задачи с которыми сталкивается программист меняются, появляется потребность в новых инструментах. Нужно образно клубни из земли ковырять, вот есть замечательная палка-копалка. Посадил "картоплю" на маленьком поле и вот уже требуется три инструмента лопата, тяпка и капарулька. И как бы у каждого своя ниша. Увеличь масштаб и нам уже нужен трактор с навесным оборудованием, картофелеуборочный комбайн и самолет сельхоз авиации. Масштаб одной и той же изменился и изменились инструменты для её решения.
Ещё пример: Можно ли забивать гвозди микроскопом? Можно, но молоток надежнее;)
Иногда от безысходности бывает и наоборот: Кто сказал что гитара, не ударный инструмент? ;)
domix32
11.04.2024 10:20MLIR фреймворк для разработки компиляторов,
MLIR это не фреймворк, это представление языка в некоторой промежуточной форме.
0Bannon
Чтоб перегореть побыстрее. Следующий вопрос.