Подтвердить что ты не робот

Создать собственный язык программирования

Возможные дубликаты:
Ссылки, необходимые для реализации интерпретатора на C/С++
Как создать язык в эти дни? Обучение написанию компилятора

Я знаю некоторые С++, ОЧЕНЬ хорошо на php, pro на css html, хорошо в javascript. Итак, я думал о том, как создавался С++. Я имею в виду, как компьютер может понять, что означают коды? Как это можно прочитать... так можно ли я создать свой собственный язык и как?

4b9b3361

Ответ 1

Если вы заинтересованы в разработке компилятора ( "как компьютер может понять, что означает коды" ), я настоятельно рекомендую Dragon Book. Я использовал его в колледже и дошел до того, что сам создал язык программирования.

Ответ 3

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

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

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

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

Ответ 4

Да, возможно создать свой собственный язык. Взгляните на компиляторы компилятора. Или исходный код для некоторых языков сценариев, если вы смеете. Некоторые полезные инструменты: yacc, bison и lexx.

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

Не нужно учиться ассемблеру писать язык. Например, Javascript работает в чем-то, называемом интерпретатором, который является приложением, которое выполняет файлы javascript. В этом случае интерпретатор обычно встроен в браузер.

Самый простой язык для запуска программы может заключаться в написании простого текстового калькулятора. то есть взять текстовый файл, запустить его и выполнить вычисления. Вы можете написать это на С++ очень легко.

Мой первый язык для проекта колледжа был языком, определенным в BNF, предоставленном нам. Затем нам пришлось написать парсер, который разбирал его в древовидную структуру в памяти, а затем во что-то, называемое 3-м адресным кодом (который является ассемблером). Вы могли бы легко превратить 3 адресных кода в настоящий ассемблер или написать для этого интерпретатор.

Ответ 5

Да! Это определенно возможно. Другие упомянули Книгу Дракона, но есть также много информации в Интернете. Например, в llvm есть учебное пособие по внедрению языка программирования: http://llvm.org/docs/tutorial/

Ответ 6

Я действительно рекомендую Прагматики программирования языка. Это отличная книга, которая отнимает у вас весь путь от того, какой язык работает, как работают компиляторы и создают свои собственные. Это немного более доступно, чем Книга Дракона, и объясняет, как все работает, прежде чем прыгать вперёд.

Ответ 7

Это возможно. Вы должны узнать о компиляторах и/или интерпретаторах: для чего они предназначены и как они сделаны.

Ответ 8

Начните изучение ASM и прочитайте, как работает байт-код, и у вас может быть шанс:)

Ответ 9

Если вы знаете C - это звучит так, как вы, - возьмите использованную копию этой древней книги: http://www.amazon.com/Craft-Take-Charge-Programming-Book-Disk/dp/0078818826

В нем есть глава, в которой автор создает интерпретатор "С", на С. Это не является академически серьезным, как книга Дракона, но я помню, что это было довольно просто, очень практично и легко следовать, а так как ты "только начинать, это было бы потрясающим введением в идеи" грамматики "для языков и" токенизации "программы.

Это идеальное место для вас. Кроме того, на 0,01 доллара за использованную копию, дешевле, чем Книга Дракона.;)

Ответ 10

Начните с создания парсера. Прочитайте грамматики EBNF. Это ответит на ваш вопрос о том, как компьютер может читать код. Это очень сложная тема, поэтому не ждите от вас слишком многого, но получайте удовольствие. Некоторые ресурсы, которые я использовал для этого: bison, flex и PLY.

Ответ 11

Да! Интерес к компиляторам был мой крючок в профессиональную CS (ранее я был на пути к EE и только формально перешел в колледж), это отличный способ узнать TON о широком спектре вопросов в области компьютерной науки. Вы немного моложе (я учился в старших классах, когда начал дурачиться с синтаксическими анализаторами и переводчиками), но в наши дни в вашем распоряжении больше информации.

Начать небольшое: спроектируйте крошечный язык, о котором вы можете подумать, - начинайте с простого математического калькулятора, который позволяет назначать переменные и подставлять их. Когда вы начинаете приключений, попробуйте добавить "if" или "loop". Забудьте тайные инструменты, такие как lex и yacc, попробуйте вручную написать простой рекурсивный анализатор спуска, возможно, перейдете на простые байт-коды и напишите для него интерпретатор (избегайте всех жестких частей понимания сборки для конкретной машины, распределения регистров и т.д.). Вы узнаете огромную сумму только с этим проектом.

Как и другие, я рекомендую книгу Дракона (издание 1986 года, мне не нравится новый, честно говоря).

Я добавлю, что для ваших других проектов я рекомендую использовать C или С++, ditch PHP, не потому, что я фанат языка, но только потому, что считаю, что работа с трудностями на C/С++ научит вас больше о проблемах с машинной архитектурой и компилятором.

(Примечание: если бы вы были профессионалом, советом было бы НЕ создавать новый язык, это почти никогда не будет правильным решением. Но как проект для изучения и исследования, это фантастично.)

Ответ 12

Если вы хотите действительно общее (но очень хорошо написанное) введение в эту тему - основы вычислений - я настоятельно рекомендую книгу под названием "Код Чарльзом Петцольдом". Он объясняет ряд тем, которые вам интересны, и оттуда вы можете решить, что вы хотите создать самостоятельно.

Ответ 13

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