![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 31.07.2016
Сообщений: 25
|
![]()
Моя тема близка к ЭТОЙ
Но там я не смог написать - раздел закрыт до сентября. Поэтому спрошу тут. Посоветуйте язык программирования сверхвысокого уровня (ЯПСВУ), программа на котором могла бы в COMPILE TIME обрабатывать и изменять свой же собственный код Приведу простейший и надуманный пример для иллюстрации того, в чем же идея. К примеру, чтобы язык,к примеру, поддерживал конструкции типа "если вызов метода Tarl::MySleep(int, double) присутствует в коде программы более 3-х раз - то определить тип MyType как long double". Повторяю. Пример чисто вымышленный и искусственный, и служит чиста для иллюстрации идеи. Вообщем нужен ЯПСВУ, который "искоропки" имел бы конструкции, которые позволяли бы писать программы, анализирующие и меняющие свой же собственный код во время компиляции (!!! Не в run-time). Т.е. чтобы программа являлась одновременно как бы пользовательским расширением компилятора и языка. Соответственно, получается, что когда пишешь программу на таком языке, и меняешь ТЕКСТ какой-то её части, то ТЕКСТ других частей программы может при компиляции автоматом измениться {что есть такая штука как "препроцессор" я в курсе - но нужны более серьёзные и радикальные ВСТРОЕННЫЕ в язык средства. Препроцессорных средств (например #IFDEF и макросов с параметрами в языке C++) мне недостаточно. Нужно чтобы язык включал в себя более продвинутые средства парсинга и модификации своего же собственного исходника}. Т.е. в ЯПСВУ должны быть операторы, операндами которых служат текстовые объекты в самом исходнике. Почему я назвал такой язык языком СВЕРХ высокого уровня? Ну потому что на нем пишут не исходник, а "исходник исходника" если можно так выразиться. Т.е. чтобы исходник на языке представлял собой как бы смесь компилятора+прикладнухи, написанном на одном языке. Причем чтобы в исходнике "был растворен" не весь компилятор, а только его расширение для данной прикладной задачи. Если совсем по простому, то нужен язык, у которого очень мощный препроцессор, не ограничивающийся имеющимися почти во всех языках банальными "IFDEF" и макросами с параметрами. Чтобы язык был изначально заточен под описания парсинга исходника в самом же исходнике |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,754
|
![]()
m4
![]() |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 31.07.2016
Сообщений: 25
|
![]() |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 31.07.2016
Сообщений: 25
|
![]() |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,754
|
![]()
Начните с постановки условий конкретной задачи. Может вам шаблонов хватит, а может и до своего языка доползете... а может и на фиг все это не сдалось в задаче.
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 31.07.2016
Сообщений: 25
|
![]()
Я уже понял, что С++ не подходит.
Что реализовать на нем программу, которая кроме основной задачи могла бы ещё анализировать свой код и при необходимости менять его, без "костылей" не получится. Нужны специализированные языки. Кроме предположений "может ЛИСП?" и препроцессора m4 в рунете мне ничего не посоветовали. Видно это тема очень узкая и экзотическая и ей мало кто интересовался. Хотя мне кажется подход писать программу, в которой ты вместе с "прикладнухой" одновременно пишешь (в том же исходнике) код расширения компилятора, который будет все это компилить, весьма многообещающим. Ты фактически учишь компилятор находить ошибки, которые никакой компилятор обнаружить не может. Самый примитивный пример. Написал в коде метода TLAstTrim.send(), что вызов метода TLAstTrim.send() может встречаться в любом блоке, но только после вызова методов Tysh.reply(int) или Uydf.rev(double), и компилятор возьмет это на контроль. Средствами С++ такой контроль, как я понимаю, сделать невозможно или крайне геморно P.S. Прошу прощения за корявые объяснения и невнятные примеры. Просто рождается новая парадигма в программировании. А, как известно, все нове рождается в муках |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,754
|
![]()
Этим занимается статические анализаторы, а пихать все это в основной язык особо смысла нет.
|
![]() |
![]() |
![]() |
#8 | |
Пользователь
Регистрация: 31.07.2016
Сообщений: 25
|
![]() Цитата:
Контролировать код прямо во время его написания - в этом есть смысл. Т.е. написание кода + его (т.е. написания) контроль + его автоматическую генерацию сделать неразрывными действиями. В этом есть смысл. Т.е. ты пишешь код и сразу же пишешь как его контролировать и как он связан с другим кодом Последний раз редактировалось ИсмаилПрокопенко; 31.07.2016 в 23:43. |
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 31.07.2016
Сообщений: 25
|
![]()
В результате компилятор сможет отлавливать не только самые простые синтаксические ошибки, но и глубоко зарытые логические и семантические ошибки. И ошибки в самой структуре
|
![]() |
![]() |
![]() |
#10 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
![]() Цитата:
Цитата:
Или же готовы предложить правила описания (СИНТАКСИС) таковых правил ?
программа — запись алгоритма на языке понятном транслятору
|
||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[РЕШЕНО] Как при помощи модуля CRt реализовать вывод сообщения на экран которое будет периодически менять свой цвет? | baton00711 | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 21.02.2016 15:20 |
Отредактировать код программы сортировки слов в строке (язык C++) | zhivushko | Помощь студентам | 0 | 16.01.2014 23:19 |
Вебинар «Как создать свой собственный AppStore?» | pro-user | Общие вопросы по программированию, компьютерный форум | 0 | 11.11.2011 14:34 |
свой собственный класс MediaPlayer'a | nick17 | Помощь студентам | 2 | 26.11.2010 13:54 |
MSN – bing имеет свой собственный PR (Page rank) не доступен для показа. | seo-gid | Обсуждение статей | 0 | 26.07.2010 17:59 |