Этот вопрос закрыт для ответов, так как повторяет вопрос Как создать язык программирования?

Как создать язык программирования?

Как создать свой язык программирования, но без другого языка программирования? Полностью с нуля. Думаю, это возможно! Ведь как-то создали первый ЯП...
  • Вопрос задан
  • 731 просмотр
Решения вопроса 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Как создать свой язык программирования?

Точно так же, как и любую другую программу: сначала спроектировать, а потом реализовать.

Без другого языка программирования! Полностью с нуля.

В самом низу находится машинный код. Выглядит примерно вот так:
08 04 83 fa 08 04 83 fb 08 04 83 fd 08 04 84 00
У каждого процессора есть свой набор инструкций, которые кодируются машинным кодом. Открываем справочник и пишем нужный код для нужной ОС/железа. Ничего сложного, правда же? =)

Ведь как-то создали первый ЯП.

Достаточно почитать историю появления первых ЭВМ. Они представляли из себя набор переключателей отдельных битов, которые позже эволюционировали в перфокарты, которые в свою очередь представляли из себя прообраз современных исполняемых файлов. С увеличением количества доступных команд, усложнением техники и появлением накопителей программы так же становились все сложнее и сложнее: поэтому решили упростить запись и придумали первый ассемблер. Дальнейшее развитие привело к появлению первого ЯП высокого уровня и далее более высокие уровни абстракции, используя которые сегодня пишутся все программы.

Так что в вашем случае вам надо пройти весь этот путь самостоятельно. Примерно так:
  1. На машинном коде реализовать минимальный ассемблер
  2. Используя свой минимальный ассемблер реализовать простейший компилятор этого ассемблера
  3. Расширить компилятор ассемблера до стандартного набора инструкций
  4. На ассемблере реализовать транслятор и компилятор ЯП высокого уровня
  5. Реализовать необходимый набор инструкций для написания компилятора этого же ЯП
  6. Написать этот самый компилятор своего ЯП на нём же и далее уже скомпилировать первую самостоятельную версию своего ЯП без использования других ЯП
Ответ написан
Ответы на вопрос 5
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
практически все ЯП написаны на с.
Даже gcc компилируется сначала на старой версии и создается бутстрап, а потом он компилирует новые фичи.

Хотите сложностей? Создайте бутстрап на ассемблере, который соберет компилятор вашего языка или бутстрап для дальнейшей сборки.
Вот кстати пример https://habr.com/ru/post/133780/
Ответ написан
saboteur_kiev
@saboteur_kiev
software engineer
Берешь перфокарту и начинаешь программировать.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Как создать свой язык программирования, но без другого языка программирования? Полностью с нуля. Думаю, это возможно! Ведь как-то создали первый ЯП

Есть такая техника. Бутстрап называется. Это когда пишется сначала некое минимальное ядро. На базе него пишется первая версия языка (или ОС) и далее поверх этого стека пишется уже вторая версия. И так далее. Так например первая версия С++ была предположительно на С. А дальше уже следующие версии С++ пишутся на С++.

Вообще в наше время нет никакого смысла изучать ассемблер например лишь ТОЛЬКО для создания компиллятора. Например семейства Clang, Rust и другие относительно новые языки использовали LLVM (это такой себе высокоуровневый ассемблер). Он отличается от ассемблера x86 тем что не привязан к конкретному процессору а считает что все процессоры примерно похожи и у них есть регистры и т.п.

Многие языки семейства Java (Clojure, Groovy) тоже не используют ассемблер. Но тем не менее они называют себя языками.

Интереснее всего изучать историю создания Lisp и Forth. Они настолько не похожи на классические языки что в них почти невозможно сказать где собственно язык и где среда и где грамматика.
Ответ написан
@cryptohas
Языки просто для удобства создаются, сами по себе это просто набор текста и букв. Самую настоящую работу делает компилятор или интерпритатор, переводя твой новый язык в язык процессора компьютера. Самый первый компилятор или интерпритатор писали на ассемблере. Можешь изучить ассемблер своего процессора (если у тебя Intel то это будет x86) и написать свои простенькие программы. Но уверяю, если ты больше вникнешь тему то поймешь, что язык это инструмент и не более, и что самые удобные языки уже сделаны
Ответ написан
PlugIN
@PlugIN
A Little Programmer
Мне кажется идея очень хороша в качестве развивающей, учебной. Очень многое можно узнать из фундаментального: теория ЯП, формальная грамматика и пр. Это особенно интересно тем, кого интересуют языки в принципе. Недаром же говорят об элегантности языка, неизбыточности и завершённости. В общем, это тоже форма абстрактного искусства.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы