Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 02:42

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Алгоритмическая ниша?
СообщениеДобавлено: Вс июн 26, 2011 17:15 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Форт традиционно занимает "экономическую нишу" - "где долго делать стандартный транслятор С++"
Но ведь форт мог бы занимать алгоритмическую нишу
для этого, правда, понадобился бы долгоиграющий проект


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

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

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

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

В общем, было бы полезно, если бы дополнительный, тестировочный или отладочный код
1. не зависел от основного
2. мог бы быть протестирован или отлажен независимо
3. мог бы быть модифицируем и управляем независимо от основного кода

Это и мог бы быть встроенный в программу на этапе отладки и тестирования форт

форт был бы средством комбинирования функций основного кода.

Отладочный скрипт или тестировочный скрипт - не новость и многие разработчики компиляторов предоставляют для этого возможности, в частности язык D специально создан...

Форт отличался бы
переносимостью между языками (?)
переносимостью между различными реализациями языков
другими переносимостями, в частности такой экзотической переносимостью, как переносимость между этапами реализации программы


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Алгоритмическая ниша?
СообщениеДобавлено: Вс июн 26, 2011 19:56 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Зачем сюда встраивать форт?
Код:
траляля
блаблабла
#ifdef TEST
main() {
  нука-нука
}
#endif

Дальше это можно тестировать из мэйкфайла чем угодно.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Алгоритмическая ниша?
СообщениеДобавлено: Вс июн 26, 2011 21:02 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
Зачем сюда встраивать форт?

Я абстрактно рассуждаю (а ещё можно и вот-так)

Таких, впрочем
#ifdef TEST
main() {
нука-нука
}
#endif
может быть множество - непроходимый лес и от этапа к этапу отладки они будут нуждаться в модификации

кроме того, это непереносимо между языками


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Алгоритмическая ниша?
СообщениеДобавлено: Вс июн 26, 2011 21:48 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
вопрос писал(а):
кроме того, это непереносимо между языками

Но тест обычно состоит в том, что мы делаем некие вызовы к API модуля. И проверяем результат.
Если эти вызовы делать из ф-та, нужен FFI между ф-том и языком (непереносимо).
Вообще, разработать такой FFI, чтобы делать одним ф-товским скриптом проверку алгоритма на каком угодно языке, это невероятно сложно.
Лисповская функция сортировки вернет, скажем, список объектов CLOS. Что с ними делать из форта?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Алгоритмическая ниша?
СообщениеДобавлено: Вс июн 26, 2011 21:59 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Лисп - не нужен

Никто не говорит, что это не трудоёмко, я не говорю даже. что кто-то станет это делать.
впрочем - предполагается, что форт-отладчик или форт-тестер имел бы некоторые "зачатки" интерфейса, которые можно было бы сравнительно нетрудоёмко доработать (расширяемость) до не только определённого языка, но даже до отдельного компилятора. При этом отладочная версия программы приобретала бы дополнительные свойства - могла бы быть одновременно интерпретатором. Таковые её свойства, конечно, не передавались бы в окончательный релиз.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Алгоритмическая ниша?
СообщениеДобавлено: Вс июн 26, 2011 22:12 
Не в сети

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
вопрос писал(а):
Лисп - не нужен

Никто не говорит, что это не трудоёмко, я не говорю даже. что кто-то станет это делать.
впрочем - предполагается, что форт-отладчик или форт-тестер имел бы некоторые "зачатки" интерфейса, которые можно было бы сравнительно нетрудоёмко доработать (расширяемость) до не только определённого языка, но даже до отдельного компилятора. При этом отладочная версия программы приобретала бы дополнительные свойства - могла бы быть одновременно интерпретатором. Таковые её свойства, конечно, не передавались бы в окончательный релиз.


Это не Лисп тогда не нужен, а Форт.
У Лиспа есть REPL, CLOS, байндинги для различных библиотек. А будет программа тормозить, критичные части на С.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Алгоритмическая ниша?
СообщениеДобавлено: Пн июн 27, 2011 00:12 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Лисп не нужен в данном мысленном эксперименте, где-то кто-то на нем без форта пишет

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



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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Алгоритмическая ниша?
СообщениеДобавлено: Пн июн 27, 2011 02:00 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
вопрос писал(а):
- при длительном времени компиляции лучше иметь встроенный интерпретатор с возможностью реализации отладочных скриптов на ходу

Этого только у сишников нет. Хотя гцц без -О2 работает достаточно быстро, чтобы не заморачиваться.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Алгоритмическая ниша?
СообщениеДобавлено: Пн июн 27, 2011 23:59 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Кажется, ещё одно удивительное свойство форта осталось неоцененным
Впрочем, касается это только разработки сложных программ
Представим себе ситуацию - для анализа логики работы программы, она первоначально реализована на интерпретаторе высокого уровня - скажем на Прологе. Такая практика существует. В процессе отладки программы использовались тесты. Затем было решено реализовать программу на С, т.к. нужная логика удaлaсь. Реализация на С предполагала снова тестирование. причём, тесты прошлось реализовывать отчасти заново. Затем продвинулся стандарт С и некоторые сторонние модули, с которыми взаимодействовала программа, получили реализацию на новом стандарте, это заставило частично (что хуже чем заново) модифицировать тесты. Затем поменяли платформу, перешли на такую, где нет С, а только похожий Потребовалась скорость, после реализации части кода на ассемблере пришлось реструктурировать встроенные тесты, т.к. кое-что на ассемблер не было рассчитано ... устал...
И всё это время переделывать тесты, если быть добросовестными.

Но при всех этих изменениях, можно было бы пользоваться всё теми же тестами - т.е. экономить уйму работы, если бы таковые были бы реализованы на простейшем встроенном форте


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Алгоритмическая ниша?
СообщениеДобавлено: Сб июл 09, 2011 01:18 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Ты попробуй свою идею на практике. Возьми какой-нибудь компилятор Си, который не сильно заморачивается с оптимизацией. Напиши для Форта слово, которое подгружало бы скомпилированный Си-компилятором объектный файл так, чтобы при этом имена экспортируемых функций добавлялись бы к словарю. Создай Форт-слово, которое позволяло бы вызывать эти функции с параметрами, положенными на стек и возвращало бы результат функции на стеке. После этого попробуй потестировать какую-нибудь Си функцию различными сценариями, написанными на Форте. Интересно такую фигню получится на практике реализовать и даже пользу из этого извлечь или вылезут какие-нибудь грабли, которые похоронят идею на корню ?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Алгоритмическая ниша?
СообщениеДобавлено: Сб июл 09, 2011 01:36 
Не в сети

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Ethereal писал(а):
Ты попробуй свою идею на практике. Возьми какой-нибудь компилятор Си, который не сильно заморачивается с оптимизацией. Напиши для Форта слово, которое подгружало бы скомпилированный Си-компилятором объектный файл так, чтобы при этом имена экспортируемых функций добавлялись бы к словарю. Создай Форт-слово, которое позволяло бы вызывать эти функции с параметрами, положенными на стек и возвращало бы результат функции на стеке. После этого попробуй потестировать какую-нибудь Си функцию различными сценариями, написанными на Форте. Интересно такую фигню получится на практике реализовать и даже пользу из этого извлечь или вылезут какие-нибудь грабли, которые похоронят идею на корню ?


Это уже давно реализовано в Lua и TCL.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Алгоритмическая ниша?
СообщениеДобавлено: Пт окт 14, 2011 00:20 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
попробовать идею на практике несколько трудоёмко, нужно избрать некий проект, создаваемый на концептуально сложном языке с достаточным количеством глюков, наиболее наглядно, если это будет компилятор, затем создать с помощью этого компилятора исходник, где предположительно содержатся эти глюки, далее реализовать на этом де языке форт, встроить его в исходник с тем, чтобы независимое исполнение алгоритма фортом контролировало исполнение алгоритма кодом, который сотворил компилятор

конечно, можно проще


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Алгоритмическая ниша?
СообщениеДобавлено: Пт окт 14, 2011 10:54 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
вопрос писал(а):
Но при всех этих изменениях, можно было бы пользоваться всё теми же тестами - т.е. экономить уйму работы, если бы таковые были бы реализованы на простейшем встроенном форте

Если речь идет о конвертере Си в Форт - http://fpauk.narod.ru/cinf13.rar
Естественно, он-же является средством осуществлять Си вставки в форт-программу.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Алгоритмическая ниша?
СообщениеДобавлено: Пт окт 14, 2011 14:11 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Mihail писал(а):
вопрос писал(а):
Но при всех этих изменениях, можно было бы пользоваться всё теми же тестами - т.е. экономить уйму работы, если бы таковые были бы реализованы на простейшем встроенном форте

Если речь идет о конвертере Си в Форт - http://fpauk.narod.ru/cinf13.rar
Естественно, он-же является средством осуществлять Си вставки в форт-программу.


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


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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Алгоритмическая ниша?
СообщениеДобавлено: Пт окт 14, 2011 14:48 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
вопрос писал(а):
то будем сравнивать глючный код с эталонным кодом, созданным на этом же компиляторе.

А если эталонный код получить другим способом, то рассуждения не обрушиваются?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB