Forth http://fforum.winglion.ru/ |
|
Интерпретация и компиляция в Форте http://fforum.winglion.ru/viewtopic.php?f=24&t=2400 |
Страница 1 из 4 |
Автор: | danbst [ Пт янв 22, 2010 16:31 ] |
Заголовок сообщения: | Интерпретация и компиляция в Форте |
Википедия писал(а): Уникальным является язык Forth, который способен работать как в режиме интерпретации, так и компиляции входных данных, позволяя переключаться между этими режимами в произвольный момент, как во время трансляции исходного кода, так и во время работы программ.
Интересует такой вопрос: в чем преимущества этой уникальности при написании програм для ПК (например, игрушек, приложений с ГрИн[граф.польз.интерф.], железо-ориентированных, интернет-ориентированых)? И еще более хочу узнать: в чем недостатки? |
Автор: | chess [ Пт янв 22, 2010 17:12 ] |
Заголовок сообщения: | |
danbst писал(а): в чем преимущества этой уникальности при написании програм для ПК Да по большому счету ни в чем. Кроме пожалуй того, что фортер досконально знает свою Форт-систему(свой инструмент) и когда понадобится может его доработать(что-то изменить, добавить и т.п.). danbst писал(а): И еще более хочу узнать: в чем недостатки?
Недостатки в том, что в Форте эффективно можно работать если ты уже в нем до этого эффективно работал. А точнее - имеешь тобой-же созданную инфраструктуру в виде библиотек для тех предметных областей которые хорошо знаешь потому, что в них и работаешь(ну те же игрушки, например). Эти наработки ты должен сделать сам, их нигде готовых по большому счету нет. Форт в первую очередь не для программистов, а для программирующих специалистов. Объем самой форт-системы остается ничтожно малым по сравнению с уже упомянутой инфраструктурой. |
Автор: | danbst [ Пт янв 22, 2010 17:26 ] |
Заголовок сообщения: | |
Цитата: Да по большому счету ни в чем.
Грустно. Тогда такой вопрос: где в промежутке быстро --------------- Скорость исполнения байткода Питон программы --------------- медленно лежит "Скорость исполнения Форт-программы"? |
Автор: | WingLion [ Пт янв 22, 2010 18:16 ] |
Заголовок сообщения: | |
danbst писал(а): Тогда такой вопрос: где в промежутке
быстро --------------- Скорость исполнения байткода Питон программы --------------- медленно лежит "Скорость исполнения Форт-программы"? Какой именно форт-программы - не указано в вопросе. А значит и ответа нет, потому что разные форт-программы имеют скорости, как внутри указанного промежутка, так и вне его. "Программа на Форте работает быстрее программы на ассемблере, потому что обращается к регистрам напрямую, минуя процессор" (с)... (смайлик выбрать по вкусу) |
Автор: | Гость [ Пт янв 22, 2010 18:44 ] |
Заголовок сообщения: | Re: Интерпретация и компиляция в Форте |
danbst писал(а): Википедия писал(а): Уникальным является язык Forth, который способен работать как в режиме интерпретации, так и компиляции входных данных, позволяя переключаться между этими режимами в произвольный момент, как во время трансляции исходного кода, так и во время работы программ. Нет отдельного макропроцессора и существует доступ языка ко всей внутренней инфраструктуре при компиляции и транляции ( и интерпритации ) |
Автор: | danbst [ Пт янв 22, 2010 18:46 ] |
Заголовок сообщения: | |
Да, вопрос неточный. И вообще неясный... На то я и новичек ) |
Автор: | mOleg [ Пт янв 22, 2010 18:51 ] |
Заголовок сообщения: | |
danbst писал(а): Интересует такой вопрос: в чем преимущества этой уникальности при написании програм для ПК
уникальным является не возможность работы в двух режимах, а уникальная возможность расширять язык во время работы. То есть создавать любые управляющие конструкции, структуры данных, делать произвольные вычисления во время сборки программы. Преимущество у Форта - это простота, масштабируемость, гибкость. Недостаток - язык, как никакой другой, требует от программиста высокой самодисциплины. |
Автор: | mOleg [ Пт янв 22, 2010 18:55 ] |
Заголовок сообщения: | |
mOleg писал(а): уникальным является не возможность работы в двух режимах
Кстати, эта особенность не присущя всем Фортам! То есть совсем недавно была ссылка на систему, работающую только в режиме компиляции, точно так же возможны(и есть) системы только интерпретирующие, однако умеющие компилировать А вообще, попробуйте почитать о том, что такое форт в разеле статей. например, что такое форт |
Автор: | Hishnik [ Пт янв 22, 2010 22:20 ] |
Заголовок сообщения: | |
danbst писал(а): Интересует такой вопрос: в чем преимущества этой уникальности при написании програм для ПК (например, игрушек, приложений с ГрИн[граф.польз.интерф.], железо-ориентированных, интернет-ориентированых)? Очень много можно делать в интерактивном режиме - либо прямо с консоли, либо запуская маленькие текстовые файлики. У проекта, таким образом, делается в основном "сущностная" часть, а интерфейс появляется потом. Если бы не было Форта, пришлось бы, к примеру, для игрушки сначала делать движок и средства отображения и управления, а уже только потом смотреть, насколько оно играбельно. Насчет интернета не скажу, а вот железо на Форте отлаживать просто прекрасно. danbst писал(а): И еще более хочу узнать: в чем недостатки?
Необходимо выстраивать проект с нуля, нет устоявшейся инфраструктуры в виде библиотек и средств разработки. |
Автор: | chess [ Пт янв 22, 2010 22:28 ] |
Заголовок сообщения: | |
danbst писал(а): Тогда такой вопрос: где в промежутке
быстро --------------- Скорость исполнения байткода Питон программы --------------- медленно лежит "Скорость исполнения Форт-программы"? Не знаю скоростных характеристик программ на разных Питонах, но думаю что такая форт-система как VFS даст более быстрый код. Так как любая некоммерческая Форт-система, как правило, имеет открытый код, то встроить оптимизирующие средства в нее для фортера совсем уж больших трудностей не представляет. Кроме того всегда есть более дешевый вариант - сделать нужные ассемблерные вставки. В этом смысле форт позволяет достигнуть предельного возможного быстродействия кода программы. |
Автор: | be_nt_all [ Вс янв 24, 2010 00:30 ] |
Заголовок сообщения: | |
Хорошая новость: практически любая вменяемая реализация форта окажется заметно быстрее Python'а без «психа». Хотя бы за счёт отсутствия многочисленных проверок типов, необходимых для «утиной типизации». (А с psyco питон быстр, но зело прожорлив до памяти). Плохая. В Форте нет вообще никакой типизации, программист должен следить за этим сам (или посредством подключаемой либы). Ну и хотя для форта вполне возможно написание очень качественного оптимизатора на уровне лучгих реализаций языков типа C++ (см. напр. сюда), чаще всего при оптимизации ограничиваются inlinом коротких определений и простейшим «щелевым» объединением близлежащих маш. кодов. Потому обычно форт медленнее С/C++. Есть ещё язык Фактор (http://factorcode.org) — смесь форта и Common Lisp'a. Вернее даже не просто CL, а его супероптимизированной реализации SBCL. Динамически типизированный, функциональный и полностью объектно-ориентированный — готов для практического применения в вебе (и на десктопе тоже). Поскольку factor как и SBCL и некоторые форты — это оптимизирующий итеративный компилятор (т.е. для пользователя это работает как интерпретация), то тоже быстрее питона (но медленнее форта с хорошим оптимизатором). Где то так. |
Автор: | mOleg [ Вс янв 24, 2010 00:50 ] |
Заголовок сообщения: | |
be_nt_all писал(а): Плохая. В Форте нет вообще никакой типизации
все же это не совсем так. 1) не плохая, а скорее непривычная для многих 2) типизация есть, хотя и своеобразная. Например, идентификаторы пространств имен складываются в стек контекста, и с ним работают специальные слова, то же касается типа чисел с плавающей точкой, и подобное. Так же есть конвертация типов, только она не носить принудительного характера, то есть надо указывать ее лишь тогда, когда она нужна (например, S>D SD* SD+ и другие). Вобщем, одним словом "нет типизации" не отделаешься. Форпост действительно интересный проект. И все же я бы его больше сравнил с постскриптом. |
Автор: | be_nt_all [ Вс янв 24, 2010 01:11 ] |
Заголовок сообщения: | |
mOleg писал(а): 1) не плохая, а скорее непривычная для многих Да. Для многих (системных) задач (классически решаемом на чистом Си) без типизации можно обойтись легко. mOleg писал(а): 2) типизация есть, хотя и своеобразная. Например, идентификаторы пространств имен складываются в стек контекста, и с ним работают специальные слова, то же касается типа чисел с плавающей точкой, и подобное. Так же есть конвертация типов, только она не носить принудительного характера, то есть надо указывать ее лишь тогда, когда она нужна (например, S>D SD* SD+ и другие). Вобщем, одним словом "нет типизации" не отделаешься. То есть в форте из коробки есть типизация посредством использования раздельных стеков? mOleg писал(а): Форпост действительно интересный проект. И все же я бы его больше сравнил с постскриптом.
Вот форпост Петра Советова, и вправду, наверно, ближе к постскрипту . Хотя бы по названию. А в Факторе Славы Пестова от постскрипта только управляющие конструкции (как лучше соответствующие ФП). А так, из всех современных «постфортов» по синтаксису и гибкости, имхо, Фактор к форту достаточно близок . Рассматривая Фактор и его «стандартную библиотеку» (где кончается одно, и начинается другое, определить крайне трудно), помимо влияния Форта, Лиспа и изрядной порции Смолтока, можно найти артефакты не только постскрипта, но и, скажем, Хаскеля иои Окамла... зы. Пошёл рассматривать форпрст... Любопытно же. |
Автор: | mOleg [ Вс янв 24, 2010 21:48 ] |
Заголовок сообщения: | |
и еще, все же главное преимущество Форта в комбинации возможностей: 1) простоты реализации (какой еще язык так просто реализовать?) 2) легкости модификации в том числе основ языка (что вообще уникально) 3) естественного и легкого повышения уровня абстракции во время решения задачи 4) легкости импортирования любых идей из любого другого языка 5) очень небольшому размеру кода 6) "близости к железу" одновременно с пунктом 3 7) высокой эффективности трансляции текста, интерпретации кода с другой стороны, возвращаясь обсуждаемой ранее статье, в том же постскрипте есть и динамическая проверка типов данных, и активная работа с хипом. Уже упомянутый Форпост тоже при достаточной простоте дает решить поставленные задачи в статье. |
Автор: | danbst [ Вс янв 24, 2010 23:36 ] |
Заголовок сообщения: | |
*вернемся к нашим баранам* Почитал еще раз Броуди, парочку статтей, исходники SP-Forth-а, исходник FreeForth-а и понял, что я хотел сдесь узнать =). Оказывается, я неправильно понимал суть компиляции-интерпретации. Попробую по-иному выразить свои вопросы. В режиме интерпретации интерпретатор берет слово, ищет в словаре и исполняет его. В режиме компиляции интерпретатор берет слово, ищет в словаре его адрес и дописывает к текущей словарной статье в виде cfa (вроде так). Код: : NEW-WORD 1 [ VARIABLE NEW-VAR ] . ;
Обьясните пожалуйста, 1) почему SP-Forth не видит слова NEW-WORD и 2)что находиться в памяти словаря (какие данные) после статьи NEW-VAR. Продолжаю дальше разбирать FreeForth... Все никак не мог понять - переменные повсеместно создаються в режиме интерпретации ( в тех программах, которые я видел), а в FreeForth нету режима интерпретации. Только сейчас обнаружил, что :, CREATE, VARIABLE являются как-бы словами одной группы - создающие заголовки, тоесть каждое из них относится скорее к режиму компиляции, чем интерпретации. В этом и была ошибка моих суждений - что интерактивность с пользователем это и есть интерпретация. Вопрос вот в чем: а какие еще слова создают заголовки (по стандарту)? PS Что мне нравится на этом форуме, начинают говорить про одно, а обсуждают совсем-совсем другую область, причем часто уже на второй-третьей страницах )))) А еще мне нравится, что обсуждения в основном абстрактные, не знаю где еще можна такие встретить (может на форуме по философии?) |
Страница 1 из 4 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |