Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11661
Последний выпуск: 19.06.2015

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

87K
02 января 2013 года
nikitapal
3 / / 02.01.2013
Здравствуйте! Решил написать язык программирования, по типу Дельфи. Можете посоветовать мне какую то литературу по написанию языка программирования или дать какой то совет?
36K
02 января 2013 года
kailot2
83 / / 15.12.2012
Цитата:
Решил написать язык программирования


Это невозможно. =) Можно написать компилятор\транслятор этого языка.
Вот статья про написание компилятора:
http://habrahabr.ru/post/133780/

36K
02 января 2013 года
kailot2
83 / / 15.12.2012
Вот ,кстати, по первому запросу в гугл
Пишем компилятор. Креншоу Д.
Х.з. сам не читал.Учитывая постановку вопроса думаю автору еще рано хвататься за компилятор.У самого когда-то давно была идея написать свой компилятор.Но патом бросил
эту затею, ибо нафига он нужен то?Их и так сотни.
432
02 января 2013 года
QWERYTY
595 / / 25.03.2012
"Решил написать язык программирования, по типу Паскаля."

А чем паскаль не устраивает, в его нынешнем виде под названием делфи??
329
02 января 2013 года
P*t*
474 / / 15.02.2007
Читай вот это от начала и до конца: tka4.org/materials/study/4%20sem/Prak/Formalnie%20grammatiki.doc
В точности то, что тебе нужно, и даже с примерами.
87K
02 января 2013 года
nikitapal
3 / / 02.01.2013
Цитата: QWERYTY
"Решил написать язык программирования, по типу Паскаля."

А чем паскаль не устраивает, в его нынешнем виде под названием делфи??



меня и дельфи устраивает.

87K
02 января 2013 года
nikitapal
3 / / 02.01.2013
Цитата: kailot2
Цитата:
Решил написать язык программирования


Это невозможно. =) Можно написать компилятор\транслятор этого языка.
Вот статья про написание компилятора:
http://habrahabr.ru/post/133780/


Почему не возможно? Пишут же как то языки программирования, к примеру, С++

36K
02 января 2013 года
kailot2
83 / / 15.12.2012
Цитата: nikitapal
Цитата: kailot2
Цитата:
Решил написать язык программирования


Это невозможно. =) Можно написать компилятор\транслятор этого языка.
Вот статья про написание компилятора:
http://habrahabr.ru/post/133780/


Почему не возможно? Пишут же как то языки программирования, к примеру, С++


Пишут компилятор\транслятор и документашки по синтаксису языка а не сам язык.

329
03 января 2013 года
P*t*
474 / / 15.02.2007
Цитата: kailot2

Пишут компилятор\транслятор и документашки по синтаксису языка а не сам язык.



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

А вообще, в данном случае можно и не придираться - и так понятно, что человеку нужно.

36K
03 января 2013 года
kailot2
83 / / 15.12.2012
Цитата: P*t*
[quote=kailot2;86822]
Правильнее будет сказать, что фраза "написать язык" некорректна.


Вот это я и имел в виду

412
03 января 2013 года
Meander
487 / / 04.09.2011
Цитата:
Решил написать язык программирования, по типу Дельфи. Можете посоветовать мне какую то литературу по написанию языка программирования или дать какой то совет?


Знаешь, я тоже хочу написать транслятор для своего языка, правда, по типу C++. Судя по своему скромному опыту ты пишешь на Дельфи. Когда мне пришла в голову эта затея я думал, что самое сложное, это трансляция текстовых строк во внутреннее представление и их интерпретация. Это на самом деле не так сложно как кажется, достаточно посмотреть на устройство калькуляторов. Самым сложным оказывается формулировка правил грамматики и синтаксиса твоего языка. Надо представить себе какую структуру будет иметь программа на этом языке, какие задачи позволит решать твой язык? Например, тебе не нравятся операторные скобки begin/end и ты можешь написать интерпретатор полного аналога Дельфи в котором эти скобки будут заменены на какие то другие. Формально, получится другой язык, но по сути тот же самый. Или взять BrainFuck - синтаксис которого очень скромен (около 10 операторов), и даже простейшая программа на нем трудна как для написания, так и для понимания, то-есть для практических целей этот язык не пригоден. Должен ли твой язык поддерживать арифметические действия? Если да, то на таком языке будет возможно решить большой класс вычислительных задач. По крайней мере, я решил ознакомиться с возможностями нескольких языков, чтобы отобрать, по моему мнению самые лучшие. Так мне бы понравился JavaScript без привязки к браузеру, с возможностью наследования, и без некоторых других возможностей.
Что касается литературы:
С упором на теорию
Основы конструирования компиляторов Серебряков 1999
Основы построения трансляторов Карпов 2005
Введение в теорию автоматов, языков и вычислений Хопкрофт 2002
Основные концепции языков программирования Себеста 2001
Основы компиляции Варсанофьев 1991
Проектирование и конструирование компиляторов Хантер 1982
Языки программирования: разработка и реализация Пратт 2002
Системное программное обеспечение Молчанов 2003
Структура и интерпретация компьютерных программ Абельсон 2004
Автоматический синтаксический анализ Фостер 1975
Языки программирования и методы трансляции Опалева 2005
Формальные грамматики и языки Гладкий 1973
Теория формальных языков Рейуорд-Смит 2003
Много примеров
Построение компиляторов Вирт 2010
Пишем компилятор Креншоу
Компиляторы: принципы, технологии и инструментарий Ахо 2008
Алгоритмы, языки, автоматы и компиляторы Мозговой 2006
Полный справочник по C Шилдт
Также, посмотри в моих исходниках вариант транслятора из книги шилдта.

8
03 января 2013 года
mfender
3.5K / / 15.06.2005
Утверждение "зачем это нужно, их и так много" неверно в корне. Мало ли для чего может понадобиться язык программирования. Можно, например, рассматривать как отдельный язык набор инструкций для выполнения в макросах Adobe Photoshop, где можно описать ряд рутинных задач. Или собственный язык в 3D studio MAX, при помощи которого можно описывать всё от анимации до постановки сцены.

Тут просто надо понимать зачем всё это нужно. Изобретать велосипед именно для создания приложений действительно смысла нет. А вот для понимания процесса - наверное нужно.
36K
03 января 2013 года
kailot2
83 / / 15.12.2012
Цитата: mfender
Утверждение "зачем это нужно, их и так много" неверно в корне. Мало ли для чего может понадобиться язык программирования. Можно, например, рассматривать как отдельный язык набор инструкций для выполнения в макросах Adobe Photoshop, где можно описать ряд рутинных задач. Или собственный язык в 3D studio MAX, при помощи которого можно описывать всё от анимации до постановки сцены.
Тут просто надо понимать зачем всё это нужно. Изобретать велосипед именно для создания приложений действительно смысла нет. А вот для понимания процесса - наверное нужно.


Я писал Но патом бросил эту затею, ибо нафига он нужен то?Их и так сотни.
Это я для себя решил.И не хотел разжигать тут холивары на тему писать или не писать. Если у автора темы есть такое желание пусть пишет. И пусть заглянет в раздел "Исходники" там есть компиляторы\парсеры. Посидит, покурит исходники.

1
03 января 2013 года
kot_
7.3K / / 20.01.2000
Цитата: mfender
Утверждение "зачем это нужно, их и так много" неверно в корне.


Ну для начала - не правильна постановка вопроса ТС - "Решил написать язык программирования ... или дать какой то совет" :)
Единственно что можно в этом случае посоветовать - ... ну да, читать умные книги. :)

382
03 января 2013 года
CassandraDied
763 / / 24.05.2012
Совет: попробуй написать интерпретатор braifuck. Если надоест или не осилишь - за разработку компилятора можно не браться.
412
03 января 2013 года
Meander
487 / / 04.09.2011
Цитата: CassandraDied
Совет: попробуй написать интерпретатор braifuck. Если надоест или не осилишь - за разработку компилятора можно не браться.


Дык, ТС ничего не говорил про компилятор. Да и если написать интерпретатор мозготраха, то это не значит, что сможешь написать его компилятор, впрочем, как и интерпретатор другого языка.

382
03 января 2013 года
CassandraDied
763 / / 24.05.2012
Цитата: Meander
Цитата: CassandraDied
Совет: попробуй написать интерпретатор braifuck. Если надоест или не осилишь - за разработку компилятора можно не браться.


Дык, ТС ничего не говорил про компилятор. Да и если написать интерпретатор мозготраха, то это не значит, что сможешь написать его компилятор, впрочем, как и интерпретатор другого языка.


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

426
03 января 2013 года
cronya
420 / / 03.01.2009
Как говорил мой учитель по трансляторам, за него не стоит браться до тех пор, пока не выучишь свой язык на отлично(речь идет о родном языке, на котором говорим) Еще он сказал чтобы его выучить, надо сначала выучить теорию трансляторов :)
412
03 января 2013 года
Meander
487 / / 04.09.2011
Цитата: cronya
Как говорил мой учитель по трансляторам, за него не стоит браться до тех пор, пока не выучишь свой язык на отлично(речь идет о родном языке, на котором говорим) Еще он сказал чтобы его выучить, надо сначала выучить теорию трансляторов :)


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

426
03 января 2013 года
cronya
420 / / 03.01.2009
Ну скажем так: Вам да этого человека расти так лет 40 еще. Надо не пытаться что то писать, надо знать что писать и учить мат часть. Строить новые бесполезные велосипеды - занятие людей которым свое время не жалко. Программирование - это уже спланированное действие по определенному плану, а если каша в голове плюс яркая фантазия - тогда это специальность не для вас(пример - автор поста).
329
04 января 2013 года
P*t*
474 / / 15.02.2007
Цитата: cronya
тогда это специальность не для вас(пример - автор поста).



Да что вы к автору темы прицепились? Он ведь не сказал "напишите мне язык программирования", он попросил посоветовать литературу. И больше не пишет - читает наверное :-)
Совет выбрать другую профессию выглядит, мягко говоря, странно.

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

237
04 января 2013 года
Ramon
1.0K / / 16.08.2003
Цитата: P*t*
Совет выбрать другую профессию выглядит, мягко говоря, странно.


Однако, наиболее разумно.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог