LINUX.ORG.RU

Расширяемые ЯП


0

0

доброго времени суток

"если в языке нет какого-то механизма, то его всегда можно реализовать возможностями самого языка" - почти по Луговскому про LISP. вопрос в следующем: а сколько таких языков вообще есть? интересуют неэзотерические и неэкспериментальные (т.е. доказавшие свою применимость хотя бы в одном завершённом проекте). расширяемость на уровне именно языковых конструкций, не промежуточного представления виртуальной машины, т.е. положительный пример - Tcl/Snit, отрицательный - C#/LINQ

и в дополнение ещё вопрос, просто подумалось. какой языковой конструкции/выразительной мощности/механизма вам не хватает в своём основном ЯП?

заранее спасибо

★★★★★

Ответ на: комментарий от Valeriy_Onuchin

>во, нафлуудили !?

мы старались :)

>Кто-нибудь на Форте программирует?

лично я пока нет, но вследствие этой дискуссии заинтересовался

>Как сейчас?

а какая разница? инструмент выбирается по принципу "насколько хорошо он подходит под задачу", а не по принципу "насколько он популярен"

jtootf ★★★★★
() автор топика
Ответ на: комментарий от jtootf

> инструмент выбирается по принципу "насколько хорошо он подходит под задачу", а не по принципу "насколько он популярен"

вообще то популярность инструмента - это один из нормальных доводов за его использование.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Re^10: Расширяемые ЯП

>> инструмент выбирается по принципу "насколько хорошо он подходит под задачу", а не по принципу "насколько он популярен"

> вообще то популярность инструмента - это один из нормальных доводов за его использование.


Этот довод хорош только для объяснения манагерам. И то надо его использовать осторожно, чтоб манагер ненароком не вспомнил, что популярнее всего жаба.

gaa ★★
()
Ответ на: комментарий от tailgunner

>вообще то популярность инструмента - это один из нормальных доводов за его использование

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

jtootf ★★★★★
() автор топика
Ответ на: Re^10: Расширяемые ЯП от gaa

>И то надо его использовать осторожно, чтоб манагер ненароком не вспомнил, что популярнее всего жаба

причём под оффтопик ;)

jtootf ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

> Я :) Хотя и не постоянно. И на системном уровне программировал на нём последний раз в 1994-м.

Ну, я тоже примерно в то время :-).

eugine_kosenko ★★★
()
Ответ на: комментарий от jtootf

> следствие популярности, так как: наличие поддерживаемой инфраструктуры, количество готовых решений, рынок рабочей силы - это да, это аргументы. сама по себе популярность - нет

Буквоедство и формальные придирки %)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>Буквоедство и формальные придирки %)

всего лишь желание быть объективным ;)

jtootf ★★★★★
() автор топика
Ответ на: комментарий от Valeriy_Onuchin

> Кто-нибудь на Форте программирует?

Я иногда. Больше для развлекухи, правда, но иногда и мелкие полезняшки делал.

Miguel ★★★★★
()

По поводу пролога спрашивали.. вот ссылочка интересная

http://muaddibspace.blogspot.com/

хотя там не только пролог )

например вот реализация паскаль-подобного языка на прологе http://muaddibspace.blogspot.com/2008/03/embedded-algol-like-language-in-prol...

А вот реализация lisp-а на прологе в 162 строчки http://stud4.tuwien.ac.at/~e0225855/lisprolog/lisprolog.html

xonix
()
Ответ на: комментарий от theos

Для того, чтобы добавить в язык простейшую инструкцию, в MPS требуются три экрана кода (набитого разнообразными скобками) с горизонтальным скроллингом. При этом там ещё и авторы полуневменяемые.

Miguel ★★★★★
()
Ответ на: комментарий от theos

Тогда уж и Microsoft DSL Tools в MSVS2008 назвать можно. Но у этого добра ограниченное применение - графические языки, причем, далеко не всякие.

anonymous
()
Ответ на: комментарий от tailgunner

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

anonymous
()
Ответ на: комментарий от anonymous

> Да и зачем может понадобиться кстати такой язык? Неужели выполнять в своей программе произвольный код, пришедший по сетке неизвестно откуда? А если нет, тогда что? Свой произвольный код? Но если он мой, тогда зачем его совать в программу в рантайме, "динамически"?

Ты не понял. Тут про статическое расширение возможностей языка во время компиляции говорят, а не про runtime metaprogramming.

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

А статическое метапрограммирование - это, например, то, что описывает фокусник Александреску для C++.

anonymous
()
Ответ на: комментарий от jtootf

> это Луговский что ли - ЛОРовский фрик?

Именно. Фрик. Неумно и неграмотно повторяет за другими, не имея собственного мнения и собственных мозгов. То, что автор идеи излагает как гипотезу, такие фанатики-неофиты несут в массы под видом истины в последней инстанции.

anonymous
()
Ответ на: комментарий от anonymous

> А статическое метапрограммирование - это, например, то, что описывает фокусник Александреску для C++

для D этот фокусник показывает более опрятную шаблонную магию

anonymous
()
Ответ на: комментарий от theos

> Что то я не заметил ссылок на MPS. А вещица крайне интересная

Вначале и мне это показалось любопытным. Но после первичного ознакомления с авторской концепцией, сложилось впечатление (возможно, ошибочное), что авторы ничего кроме Жабы в глаза не видели и с тоски в очередной раз изобрели идею DSL, чем жутко горды. При этом все их примеры жутко угребищны и громоздки.

anonymous
()
Ответ на: комментарий от jtootf

Кстати, в рекомендованной тобой книжке Practical Tcl/Tk Programming есть как раз такие примеры конфигов. Например, в главе про массивы предлагается сохранять и загружать массив так:

set f [open data.tcl w] puts $f [list array set some_arr [array get some_arr]] close $f

source data.tcl

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

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

anonymous
()
Ответ на: комментарий от anonymous

ну, я же говорил от своего лица :) просто лично моё мнение, что это избыточный вариант - фиг с ней даже с безопасностью

jtootf ★★★★★
() автор топика
Ответ на: комментарий от jtootf

А почему избыточный? Наоборот, минимум телодвижений для программиста. Никаких доп. библиотек, почти никакого доп. кода.

anonymous
()
Ответ на: комментарий от anonymous

>А почему избыточный?

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

jtootf ★★★★★
() автор топика
Ответ на: комментарий от jtootf

Ага, но он УЖЕ есть на халяву. А так тебе придется кроме него, который никуда не денется по любому, писать еще и парсер конфигов отдельно.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.