Теория языка программирования и абстрактная алгебра

11

Существуют ли какие-либо приложения абстрактной алгебры к теории языка программирования? Есть ли что-нибудь полезное в дизайне языка и реализации компилятора?

n00b101
источник

Ответы:

11

Алгебра в классическом смысле этого слова используется при моделировании вычислительных эффектов как алгебраических операций, см., Например, эти слайды Гордона Плоткина, или вы можете прочитать реальные статьи и докторскую степень. тезисы , если вы действительно хотели задать вопрос.

И чтобы взорвать мой собственный рог, взгляните на Eff и прочитайте об этом , языке, основанном на идее, что вычислительные эффекты - это алгебраические операции, а обработчики - это гомоморфизмы алгебр.

Андрей Бауэр
источник
1
Эфф очень классный - то, что я понимаю о продолжениях с разделителями, происходит в основном из этого.
Нил Кришнасвами
Я рассматриваю реакцию блога на «callcc, который считается вредным» Олега, в котором я утверждаю, что eff - это структурированный способ работы с продолжениями.
Андрей Бауэр
Спасибо всем за ответы. Мне пришлось принять ответ @ AndrejBauer, так как он использовал свой собственный язык в качестве ответа на вопрос :)
n00b101
У вас там неправильный порядок вещей :) Просто так получилось, что мы с Матей внедрили язык, который соответствует вашему вопросу.
Андрей Бауэр
7

Я не решался ответить, потому что любой ответ, кроме простого «да», мог бы заполнить объемы. Семантика языка программирования была глубоко сформирована и, в свою очередь, глубоко повлияла на развитие категориальной логики, которая является применением алгебры к логике.

Но я подозреваю, что лучший способ ответить на этот вопрос - это рассказать вам об изучении Agda - опыт обучения программированию с зависимыми типами в значительной степени приходит к пониманию того, насколько полно алгебра проникает в компьютерное программирование.

Нил Кришнасвами
источник
-1

На самом деле существует программное обеспечение для теоретической абстрактной алгебры. Это программное обеспечение позволяет вычислять некоторые вещи, такие как группы действий, гомоморфизм и т. Д. Это Magma: http://magma.maths.usyd.edu.au/magma/

Я надеюсь это тебе поможет.

Камило Солер
источник
2
Я боюсь, что вы, вероятно, неправильно поняли вопрос.
Tsuyoshi Ito
Думаешь? Что ж, с Magma у вас есть библиотека, посвященная конкретной теме об абстрактной алгебре, полезная среда для применения в других областях, например, в языке программирования ...
Камило Солер,
1
(1) Если у Magma есть библиотека по конкретной теме об абстрактной алгебре, которую полезно применять к теории языка программирования, то вам следует написать об этом приложении. Я не думаю, что указатель на Магму полезен в контексте этого вопроса. (2) Если честно, я сомневаюсь, что вы понимаете, что означает «теория языка программирования».
Цуёси Ито
Хорошо, я просто хотел выразить свою идею на другой платформе, в которой в качестве основы (например, примера) для создания или проектирования другого «языка программирования» используется библиотека абстрактной алгебры ... это не так просто обсудить здесь. Извините, если моя идея была плохой или неправильной.
Камило Солер