Об универсальных языках программирования/моделирования 1

May 11, 2016 02:34

В начале века я ещё считал, что прогресс технологий работы с информацией сильно сдерживается существующими языками программирования, но достаточно заменить C++ чем-то более развитым по части функциональщины и метапрограммирования (но сохраняющим возможность генерации оптимального нативного кода), чтобы стало легко и удобно разрабатывать продукты ( Read more... )

Leave a comment

Comments 62

fi_mihej May 11 2016, 03:38:18 UTC
>>я понимаю, почему никто ещё не создавал ничего подобного, хотя предпосылки были и десятилетия назад ( ... )

Reply

justy_tylor May 11 2016, 10:24:53 UTC
Спасибо. Но вопросы парсинга я решил достаточно давно. И поддерживается только один синтаксис.

Вот мы разговариваем на русском языке, и правила языка общие, а слова в предметных областях разные.

Так и здесь. Разные фрагменты могут генерировать C++ или XML, но входной синтаксис един, только слова различаются.

Reply

fi_mihej May 11 2016, 18:40:58 UTC
А, ага - ОК - значит пока пусть в долгом ящичке полежит :)

Reply


ex_juan_gan May 11 2016, 06:50:53 UTC
А вот же народ уже занят же, на базе Эрланга.

Я-то лично думаю, что начинать надо с логики. Ее просто не понимают ни хрена. С логики и теории моделей.

Reply

justy_tylor May 11 2016, 09:51:37 UTC
Насколько понимаю, они подбирают новые удобные метафоры для записи кода-и-пруфов (в ту же нишу, что Agda, Coq, Idris и другие подобные системы).

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

Reply

theiced May 11 2016, 23:33:14 UTC
я искренне считаю что они хернёй маются например :)

Reply

formerchild May 12 2016, 06:01:10 UTC
Справедливости ради, у Максима похожий подход на то, что ты говоришь, уже работает в N2O. В частности, они умеют html/javascript из erlang. Но это лишь верхушка айсберга, насколько я понимаю они умеют генерить гораздо больше domain specific вещей. Тут просто некоторая путаница с его последним проектом (om/exe). Мне erlang глаз ломит, но это вкусовщина - правда же в том, что они это уже делают.

Reply


formerchild May 11 2016, 09:22:29 UTC
>>если это можно сгенерировать из единой исполняемой спецификации, гарантируя отсутствие расхождений на стыках языков?
Мыслим похоже. Хочу генерить усё. Как думаешь, какой язык? :)

@ if dc.IsEditable() { @
//Obtain editable fields for sending to server
func (el *$(dc.Name)) Edited() *element.Packet {
packet := &element.Packet{
E: el.E,
Data: map[string]interface{}{
@ dc.Range(dc.AllEditables, func(v onto.DVar, cmt, name, t string) bool { @
#name: el.$(v.UpName()),
@ return true; }) @
},
}
return packet
}
@ } @

Reply

justy_tylor May 11 2016, 09:54:35 UTC
Выглядит как Go с макро-надстройкой.

Reply

formerchild May 11 2016, 09:59:46 UTC
ну в макро не надстройка, а полноценный Go. В целом так, да.

Reply

formerchild May 11 2016, 11:09:42 UTC
Но это конечно лишь часть стека, там у меня задумана именно "нативная работа со сторонними метафорами", как ты и говоришь.

Reply


gineer May 12 2016, 08:24:43 UTC
Идете на поводу у своего ментора Левенчука,
и упускаете важный момент, проистекающий из более общей картины --
на самом деле главная проблема ЯП -- это не бесконечный, и не расширяемый объем внимания у человека-программиста,
из-за чего, любые ухищрения на тему "универсального языка" обречены на провал (ну разве вы не понимаете, хотя бы, что ваши предшественники были не глупее вас, и думали на идеей "самого универсального языка" уже много раз?),
потому что ни у какого программиста просто не хватит головы, для того чтобы держать в ней все возможные детали реализации этой универсальности (и "ортогональность" тут совсем не спасает).

Reply

justy_tylor May 12 2016, 11:15:15 UTC
Фигню пишете. В голове разработчика и так держится дофига "универсальностей", на все те языки, которые он использует в проекте. Генерация позволяет уменьшить их количество - не надо помнить и многократно повторять boilerplate.

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

Reply

gineer May 12 2016, 12:45:59 UTC
\\В голове разработчика и так держится дофига "универсальностей", на все те языки, которые он использует в проекте ( ... )

Reply

justy_tylor May 12 2016, 15:45:07 UTC
Подобными вопросами занимались. Но, в отличие от использования, для создания универсальных языков в голове действительно приходится держать слишком много.

Reply


palex June 23 2016, 17:30:44 UTC
я предлагаю различные разделы внутри одного программного файла: https://habrahabr.ru/post/219419/
и https://github.com/palexisru/pl2_rus/wiki/file-source

hallo.pl2

meta source="form" name="form1"
get var1 {picture "999.99"}
/meta

meta source="pl2" name="example2"
using user.OS.IO; // using OS Console interface

program (String arguments[] )
{&
Console.write_line("Hallo, world!");
&}
/meta
*** hallo.pl2 ***

Reply


Leave a comment

Up