|
|
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Печонкин, а почему ты не задаешься в таком случае вопросом визуального метапрограммирования - типа складывать кубики? или скажем программирования естественным описанием процесса/задачи на любом доступном языке. Очевидно, я утрирую, но твоя тема это вроде как промежуточное, нишевое решение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 05:54:01 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Печонкин, 1. уже есть кодогенераторы, достаточно поискать 2. мы делали и того хуже - строили объектную модель, рисовали схемки, строили выражения и рисовали интерфейсы, собирали визуально структура бл и отплевывали своим кодогенератором код на плюсах или sql из схемок+выражений+обьектной была эта фича сама кроссплатформенной и расширяемой как со стороны конечных языков, так и со стороны репозитория объектов () 3. Это Адова работа. Вам за это платят? Если нет то нефиг и начинать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 08:02:31 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Печонкин пишет: > Есть идея писать на некоем мета(макро)языке, а в результате, легким > движением руки, получать генерированный код уже под конкретный ЯП. Идея бредовая. Потому что так вы сможете генерировать код только для некоторого набора схожих между собой языков программирования, как то: С и Pascal, С++ и ObjectPascal. На кардинально разных языках программирования надо и программировать по-разному, тут вам никакой мета-язык не поможет. Писать на лиспе так же, как на паскале можно, но нет смысла. Так что применение у вашей "штучки" будет очень ограниченное. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 10:20:54 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Пародия на Ксеноцефала, часть вторая. Не нужно руки распускать, сам выйду! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 10:29:02 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Думан КонстантинПародия на Ксеноцефала, часть вторая. Не нужно руки распускать, сам выйду! Неубедительная пародия, чесслово ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 10:50:44 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
ПечонкинЕсть идея писать на некоем мета(макро)языке, а в результате, легким движением руки, получать генерированный код уже под конкретный ЯП. Во понаписали :) Идея старая, развития не получила по разным причинам. Но кое-что есть. 1. Макрогенераторы в ЯП: PL/1, C, Clipper 2. Макрогенераторы общего назначения: ML, M4 ну и т.д. 3. Расширения базового ЯпП средствами самого ЯП: Planner на лиспе Макрогенератор Clipper для ваших целей вполне подойдет. Собсно и сам Clipper на нем сделан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 11:08:14 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
MasterZiv Писать на лиспе так же, как на паскале можно, но нет смысла. Тут еще надо добавить, что писать на паскале, как на лиспе - и вовсе нельзя. Если это не код уровня format t "hello world". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 11:54:02 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Думан КонстантинПародия на Ксеноцефала, часть вторая. В каком месте? Что-то не заметил ни грамма сходства. Задача-то смысл имеет, пока не выходит за рамки консольных приложений (примитивные типы, управляющие конструкции, пайпы-сокеты, да и всё). Хотя прикольной (не значит полезной) становится, пожалуй, только при доп трансляторах со всех популярных языков на этот гипотетический макроязык (не метаязык же, метаязык - это язык описания языка, типа БНФ например), а не только наоборот, тогда просто "прикольно" уметь конвертировать из Схемы в Паскаль, из Паскаля в С++, из С++ в Хаскелл, из Хаскелла в Бейсик, ха, ну ведь действительно прикольно, и на означенном уровне вполне реализуемо, хоть и геморройчик тот еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 13:34:52 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Почконкин Хотя прикольной (не значит полезной) становится, пожалуй, только при доп трансляторах со всех популярных языков на этот гипотетический макроязык (не метаязык же, метаязык - это язык описания языка, типа БНФ например), а не только наоборот, тогда просто "прикольно" уметь конвертировать из Схемы в Паскаль, из Паскаля в С++, из С++ в Хаскелл, из Хаскелла в Бейсик, ха, ну ведь действительно прикольно, и на означенном уровне вполне реализуемо, хоть и геморройчик тот еще. В том то и дело, что на таком уровне удастся либо преобразовать либо программы чуть сложнее "хеллоу ворлд", либо вносить при преобразовании компилятор исходного языка: Т.е. чтобы сделать преобразование хаскелл->с++, прийдется в с++ реализовать какое-то подмножество хаскелла, чтобы программа смогла быть преобразована. Толку честно говоря маловато. З.Ы. общую идею я понял, для этой цели можно использовать блок-схемы в качестве этого самого макроязыка. Вот только не уверен, что это кому-либо нужно. Это примерно как "универсальный решатель всего":) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 14:35:41 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Почконкин, А Malbolge будет входить в список поддерживаемых языков? Давно мечталось написать програмку, которая печатает сама себя на Malbolge? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 14:50:59 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
zloy denВ том то и дело, что на таком уровне удастся либо преобразовать либо программы чуть сложнее "хеллоу ворлд", либо вносить при преобразовании компилятор исходного языка Ну почему же. На ANSI C, например, с использованием только примитивных конструкций написана целая хренова куча консольного ПО совершенно разной направленности и сложности. Теоретически, это всё вполне транслируемо на большинство ЯВУ практически "1 к 1", т.е. простой заменой синтаксиса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 14:52:14 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
SQL_LamerА Malbolge будет входить в список поддерживаемых языков? Не ко мне вопрос. Я в этот язык не вникал особо, но раз уж другие программы генерируют его код, то почему бы и нет? SQL_LamerДавно мечталось написать програмку, которая печатает сама себя на Malbolge? Сомневаюсь, что всё так просто. Вот есть у тебя программа Х на языке А, которая печатает сама себя (куайн, что ли, да?), то есть выводит в стандартный вывод Х. По моему пониманию, трансплятор в язык В должен дать программу Y на языке В, которая выводит в стандартный вывод опять же Х, иначе мы бы получили изменение функциональности при трансляции, что не хорошо, мягко говоря. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 14:58:16 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Почконкин, скажи, а какой язык из существующих тебе больше всего нравится? или меньше всего не нравится? - Вот на нем и пиши переводчик с него же на все остальное. По грайней мере так твой мета - язык будет уже на первом этапе снабжен работающим окружением. клоны lexx-jacc есть уже по моему почти для всего.... любишь ты например джаву, и милосердия ради захотел сгенерить из своих библиотек делфячий код, что бы делфистам легче жилось - ок... вообще, стоит признать, что языки - они разные бывают.... все объектно-процедурные похожи друг на друга - но совсем не похожи ни на SQL ни на PROLOG, а на lisp и hascell - средне... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 16:12:55 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Vladimir Baskakovскажи, а какой язык из существующих тебе больше всего нравится? Французский. Звучит красиво. Vladimir Baskakov или меньше всего не нравится? Говяжий. В детстве перекормили, теперь даже от запаха тошнит. Vladimir BaskakovПо грайней мере так твой мета - язык будет уже на первом этапе снабжен работающим окружением. ТС спрашивает не про мета-язык (хотя и сам его так называет), что такое метаязык я писал чуть выше. А ищется язык, с которого было бы легко и просто построить (или взять существующий) набор трансляторов на кучу других языков программирования. Vladimir Baskakovклоны lexx-jacc есть уже по моему почти для всего.... Y ACC. Это генератор парсеров. Трансляция с одного ЯП на другой здесь не при чем совершенно. Vladimir Baskakovлюбишь ты например джаву, и милосердия ради захотел сгенерить из своих библиотек делфячий код, что бы делфистам легче жилось - ок... С этого момента поподробнее, пожалуйста. Что за "ок"? Транслятор с джавы на дельфю? На гугле забанен, дайте УРЛы, будьте добрЫ! Vladimir Baskakovвсе объектно-процедурные похожи друг на друга - но совсем не похожи ни на SQL ни на PROLOG, а на lisp и hascell - средне... Отображение с Си, Паскаля, Фортрана и прочей примитивной императивщины на Лисп - тривиально, различия исключительно в синтаксисе. Has k ell рядом с лиспом ставить вообще абсурд, совершенно разные языки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 16:43:39 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Печонкин<...>Есть идея писать на некоем мета(макро)языке, а в результате, легким движением руки, получать генерированный код уже под конкретный ЯП.<...> Есть идея - пишите. Если не хотите или можете писать - значит, идеи нет. Сколько уже на форуме просидели, ругаясь попусту - давно бы уже прототип набросали, да и спорили бы предметно. Хотя с такой обидчивостью, агрессией и неконструктивностью при ведении споров - вряд ли сможете сделать что-нибудь полезное для людей. И не только на стезе программирования. P.S. Сделали бы синхронизацию с кодом (разумеется, "скелетную") через MDI с динамическими диаграммами UML - был бы вам реальный респект и уважуха. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 20:27:26 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
AlexTheRavenПечонкин<...>Есть идея писать на некоем мета(макро)языке, а в результате, легким движением руки, получать генерированный код уже под конкретный ЯП.<...> Есть идея - пишите. Если не хотите или можете писать - значит, идеи нет. Сколько уже на форуме просидели, ругаясь попусту - давно бы уже прототип набросали, да и спорили бы предметно. Хотя с такой обидчивостью, агрессией и неконструктивностью при ведении споров - вряд ли сможете сделать что-нибудь полезное для людей. И не только на стезе программирования. Прототип давно уже сделан. Осталось года два стабилизации. А выводы свои можешь себе оставить, не напрягайся AlexTheRavenP.S. Сделали бы синхронизацию с кодом (разумеется, "скелетную") через MDI с динамическими диаграммами UML - был бы вам реальный респект и уважуха. Эту глупость давно уже реализовали. см. Together. Можещь засылать респекты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 20:51:12 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Почконкинzloy denВ том то и дело, что на таком уровне удастся либо преобразовать либо программы чуть сложнее "хеллоу ворлд", либо вносить при преобразовании компилятор исходного языка Ну почему же. На ANSI C, например, с использованием только примитивных конструкций написана целая хренова куча консольного ПО совершенно разной направленности и сложности. Теоретически, это всё вполне транслируемо на большинство ЯВУ практически "1 к 1", т.е. простой заменой синтаксиса. На голом ANSI С можно вовсю программировать в ООП стиле. Код: plaintext 1. 2. 3. 4. 5. Странно, что не дети этого до сих пор не знают. Да, напряжно. Но макроязык выше, с метаконструкциями, как раз имеет целью, да, тупую императивщину унифицировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 21:02:20 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Почконкин<бред скипнут> тогда просто "прикольно" уметь конвертировать из Схемы в Паскаль, из Паскаля в С++, из С++ в Хаскелл, из Хаскелла в Бейсик, ха, ну ведь действительно прикольно, и на означенном уровне вполне реализуемо, хоть и геморройчик тот еще. Это вообще не прикольно, и настолько же глупо, как дизассемблировать машинный код сразу в C или Pascal. Почему? А ты подумай, невзначай, какого уровня макроконструкции можно определять на метаязыке. Кагбэ тупыми EQ, SET, IF там не планируется ограничиваться ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 21:04:48 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
ПечонкинНа голом ANSI С можно вовсю программировать в ООП стиле. Странно, что не дети этого до сих пор не знают. Ты почти гений. Познай возможность писать на ассемблерах в парадигме функционального и даже, о Господи!, логического программирования, и тогда станешь им. ПеченкинПочконкин<бред скипнут> тогда просто "прикольно" уметь конвертировать из Схемы в Паскаль, из Паскаля в С++, из С++ в Хаскелл, из Хаскелла в Бейсик, ха, ну ведь действительно прикольно, и на означенном уровне вполне реализуемо, хоть и геморройчик тот еще. Это вообще не прикольно, и настолько же глупо, как дизассемблировать машинный код сразу в C или Pascal. Машинный код для человека не читабелен изначально, потому вопрос о трансляции на ЯВУ с сохранением читабельности попросту бессмысленный. Простая же трансляция, по твоим собственным словам, тебя не интересует. Аналогия не прокатила, нет. ПеченкинПочему? А ты подумай, невзначай, какого уровня макроконструкции можно определять на метаязыке. Кагбэ тупыми EQ, SET, IF там не планируется ограничиваться ;)) Да прочитай ты уже, наконец, что такое "метаязык" и прекрати употре*censored* это слово ни к селу ни к городу. Тобой какбэ планируется ограничиться ANSI C, а это и есть примитивный набор тупых конструкций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 21:12:51 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
ПочконкинПечонкинНа голом ANSI С можно вовсю программировать в ООП стиле. Странно, что не дети этого до сих пор не знают. Ты почти гений. Познай возможность писать на ассемблерах в парадигме функционального и даже, о Господи!, логического программирования, и тогда станешь им. Не интересно вообще. Хотя не вижу никакой проблемы в вышесказанном. Вопрос лишь в том, как макрос нарисовать. Почконкин Машинный код для человека не читабелен изначально, потому вопрос о трансляции на ЯВУ с сохранением читабельности попросту бессмысленный. Простая же трансляция, по твоим собственным словам, тебя не интересует. Аналогия не прокатила, нет. Прокатила. В C нет и не предвидится таких вещей, как банальные коллекции объектов (библиотечные, тем не менее практически стандартизированные штукенции в C# или Java). Это был простейший пример. Коллекция. Как динамический массив, как хэшированный список, список с двоичным доступом, и т.д. - абстракции могут быть намного более развиты, и учитывая типовую дефективность мозга типовых 99% кодеров-средней руки - не распознаваемы в явном виде (ибо китайский способ программирования рулит). Итого метаязык имеет цель как раз ту самую - ввод в язык произвольных макроконструкций более высокого уровня (которые могут в конкретном языке быть уже транслированы в абсолютно разные вещи, в к примеру в случае C использовать тупой массив с тупым перебором, а в яве, для эстетизма, использовать хеш-коллекции, в т.ч. собственно наструганные). Другой пример - свойства (Property). Их нет в Java и точно нет в C/C++. Но есть в C# и есть в Delphi. Яверы делают типичное яверное черезжопие - пользуют get, set, но зачем это уродство тянуть в остальные языки? Нет. Мы для C/C++ и Java будем делать специфичный этим недоязыкам inline (вместо Object.AsString := 'lala'; делать getAsString().setValue("lala"), для "лаконичного" C я даже боюсь пример с кучей *, -> и прочих козявок приводить). ... Понял хоть, о чем речь? А то я уже стремаюсь sql_lamer подобных "критиков". Вдруг поймут опять чо не так? ПочконкинПеченкинПочему? А ты подумай, невзначай, какого уровня макроконструкции можно определять на метаязыке. Кагбэ тупыми EQ, SET, IF там не планируется ограничиваться ;)) Да прочитай ты уже, наконец, что такое "метаязык" и прекрати употре*censored* это слово ни к селу ни к городу. Тобой какбэ планируется ограничиться ANSI C, а это и есть примитивный набор тупых конструкций. Подпрыгни два раза. На метаязыке будет описана конструкция EQ(ARG1 ARG2) - задает грамматику, и варианты трансляции в другие языки. Т.е. является в чистейшем виде МЕТА В чистом виде метаязык, описывающий другие языки. Не нравится определение? Претензии вон дверям можешь высказать, ибо это уже имя собственное (пока такое). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 21:27:19 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
ПеченкинИтого метаязык имеет цель как раз ту самую - ввод в язык произвольных макроконструкций более высокого уровня (которые могут в конкретном языке быть уже транслированы в абсолютно разные вещи, в к примеру в случае C использовать тупой массив с тупым перебором, а в яве, для эстетизма, использовать хеш-коллекции, в т.ч. собственно наструганные). Другой пример - свойства (Property). Их нет в Java и точно нет в C/C++. Но есть в C# и есть в Delphi. Яверы делают типичное яверное черезжопие - пользуют get, set, но зачем это уродство тянуть в остальные языки? Нет. Мы для C/C++ и Java будем делать специфичный этим недоязыкам inline (вместо Object.AsString := 'lala'; делать getAsString().setValue("lala"), для "лаконичного" C я даже боюсь пример с кучей *, -> и прочих козявок приводить). ПеченкинПочконкинты же не говоришь какой именно набор примитивов тебя интересует в гипотетическом многоязыковом трансляторе (кроме весьма расплывчатой фразы "Везде структуры, списки, ссылки, ветвления, циклы, функции-методы."). А ведь с этого и надо начинать, не? я явно выше обозначил интересующее подмножество языковых возможностей, указав ANSI C, его синтаксический минимум, как границу разумного достаточного. Спросив в добавок - есть ли что такое, что не может быть реализовано в рамках ANSI C. Да не будет там никаких лямб, сборщика мусора и аспектного программирования. Там будет только минимум, достаточный для написания системных библиотек (ядер операционных систем). И точка.[/quot] Сам поймешь, или ты тоже тормоз, как и все твои собеседники? ПеченкинПодпрыгни два раза. На метаязыке будет описана конструкция EQ(ARG1 ARG2) - задает грамматику, и варианты трансляции в другие языки. Т.е. является в чистейшем виде МЕТА В чистом виде метаязык, описывающий другие языки. Не нравится определение? Претензии вон дверям можешь высказать, ибо это уже имя собственное (пока такое). О, это еще веселее. В такой постановке твоей задачи тебя спасет... плюсовской препроцессор. Ах, как банально всё разрешилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 21:51:42 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
ПочконкинО, это еще веселее. В такой постановке твоей задачи тебя спасет... плюсовской препроцессор. Ах, как банально всё разрешилось. Он примитивен как пробка. В принципе из макропроцессоров меня на 95% устраивает и M4. Как я говорил единственная претензия к M4 - это отсутствие способности ставить отступы. А вообще изначально я спрашивал уже про готовые шаблоны (хотя-бы для основных языковых примитивов, декларации функций, переменных, циклов ветвлений). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 22:43:32 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Печенкин-Печонкин пишет: > Автор: Печенкин-Печонкин > Почконкин > О, это еще веселее. В такой постановке твоей задачи тебя спасет... Я запуталси... фсё смишалась, кони, люди... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2009, 00:53:53 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Печенкины, Вот Embedded SQL в C - сперва - макропроцессор, потом - генератор кода, и дальнейшая эволюция не понадобилась!? Наверно какие-то УЧАСТКИ кода с одного языка высокого уровня на другой возможно, если эти участки будут достаточно целостны. То есть можно четко отделить от другого текста, когда минимальны и ясны все контексты. А вообще программные контексты едва ли формально выявляемы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2009, 12:12:02 |
|
||
|
Многоязыковое метапрограммирование
|
|||
|---|---|---|---|
|
#18+
Идея применять на практике метаязык вылезет большим боком при использовании отладчика. Если в случае с ЯП - сообщение с ошибкой более-менее информативно. И девелопер, зная свой язык и (поверхностно) язык ассемблера может определить фрагмент кода или оператор, который вызывает ошибку, то в метаязыке такой возможности не будет. Данные отладки не содержат ссылок на код метаязыка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2009, 14:32:42 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=35820845&tid=1344650]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
82ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
92ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 451ms |

| 0 / 0 |
