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