Forth
http://fforum.winglion.ru/

о критериях оценки языков программирования.
http://fforum.winglion.ru/viewtopic.php?f=12&t=1280
Страница 2 из 4

Автор:  Kopa [ Чт май 08, 2008 12:53 ]
Заголовок сообщения: 

mOleg писал(а):


Что сделать, чтобы не обсуждать повторно этот же вопрос?
Может, как то это отмодерировать?

Автор:  mOleg [ Чт май 08, 2008 13:03 ]
Заголовок сообщения: 

Kopa писал(а):
Что сделать, чтобы не обсуждать повторно этот же вопрос?
Может, как то это отмодерировать?

это не совсем тот же вопрос ;) просто я сослался на предыдущее обсуждение (чем-то похожее)

Автор:  Kopa [ Сб сен 19, 2009 20:41 ]
Заголовок сообщения: 

mOleg писал(а):
Kopa писал(а):
Что сделать, чтобы не обсуждать повторно этот же вопрос?
Может, как то это отмодерировать?

это не совсем тот же вопрос ;) просто я сослался на предыдущее обсуждение (чем-то похожее)


Похоже сами критерии оценки языков "по пунктам" и не обозначены.
кроме уровня абстрагирования языка от ассемблерного базиса

Например:

Удобство оперирования базисом ключевых слов
(
их количество,
семантическая и синтаксическая взаимозависимость,
степень "приспособлености" для оперирования с n-ой предметной областью,
лёгкость восприятия семантики программного кода
)

P.S. Какие ещё критерии?

Автор:  Wlad [ Вс сен 20, 2009 01:04 ]
Заголовок сообщения: 

Наличие системы разработки :)
ЗЫ - вот посмОтрите как, например, язык Boo будет рынок захватывать.....

Автор:  вопрос [ Вс сен 20, 2009 01:30 ]
Заголовок сообщения: 

Цитата:
Для начала тезис:
Наиболее удобным языком программирования для конкретной задачи будет тот, на котором
можно выразить алгоритм этой задачи наиболее простым, понятным и естественным образом.

Потом задача чуть-чуть меняется...

Следует заметить, что классификация языков программирования - до сих пор нерешённая (и возможно никогда не решаемая чётко) теоретическая задача. Потому проводить критерии достаточно сложно.

Всё же позволю себе...
Главным критерием должно быть то "что уже сделано и не должно быть сделано снова"

в этом смысле языки делятся на
1. Языки с понятным наглядным синтаксисом (С, Паскаль)
2. Языки с готовым решением некоторого класса задач или ориентированные на 1 структуру данных (JavaScript - ориентирован известно на что)
3. Языки с встроенным "двигателем" - виртуальной машиной и т.п. (Пролог, вообще декларативные языки)

Кто пишет на С - не должен задумываться, как реализовать цикл
Кто пишет на JavaScript - не должен задумываться, что такое frames[number].document.write()
Кто пишет на декларативных языках - задумываются только над оформлением условий поиска решения, пользуясь готовым оптимизированным мезанизмом (виртуальной машиной)

Куда же отнести Форт?

Поскольку приходится моделировать более-менее сложные циклы и обращение к элементам массива - к первому типу не получится
Поскольку готовых высокоуровневых структур данных тоже нет - не получится и ко второй группе.
С третьей группой тоже получается не полное соответствие
... сделаем отступление - форт не попал в высокоуровневые языки :D ... поэтому его и называют разновидностью ассемблера
Так что же с третьей группой?
Форт как бы принадлежит к третьей группе - он имеет встроенный механизм - виртуальную машину.
ОДнако ... :shock: :) эта встроенная машина ни от чего не освобождает - программист во всех случаях вынужден полностью контролировать процесс, так, словно он есть создатель этой машины и трудно представить себе задачу на форте, где не приходилось бы изучать исходники этой самой виртуальной машины. Это означает, что труд фортера таковая машина не экономит (подобно тому, как экономится труд при программировании баз данных - программист даёт задачу и ... всё)

:wink:

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

Как только возникает такая задача, которая требует отдельного языка, (скрипты для интернета или обработка текста) как тут же находится кто-то, кто готов создать язык не на базе форта, а прямо из ассемблера (или как-то ещё) , причём язык из групп 1,2, или 3 : решение задач на таких языках становится для новоявленных специалистов делом привычным и ясным, форт тут совсем не при чём

Форт на данный момент занят
"близкими к ассемблеру нетривиальными задачами" для которых разработать "VB" - жаль времени, а готовые языки не подходят

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

Автор:  Hishnik [ Вс сен 20, 2009 02:14 ]
Заголовок сообщения: 

вопрос писал(а):
эта встроенная машина ни от чего не освобождает - программист во всех случаях вынужден полностью контролировать процесс

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

Postscript, Joy, Factor, Forpost, MSIL?
вопрос писал(а):
решение задач на таких языках становится для новоявленных специалистов делом привычным и ясным, форт тут совсем не при чём

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

Нетривиальные задачи и так сводятся в Форте к тривиальным путем создания DSL. Если же речь о регулярном вбирании в себя библиотек поддержки тех или иных технологий - это вряд ли произойдет.

Автор:  вопрос [ Вс сен 20, 2009 02:44 ]
Заголовок сообщения: 

Цитата:
Postscript, Joy, Factor, Forpost, MSIL?
:D Это - не "на базе", "на базе" - это "оставаясь зависимым"
или (внимание) "оставаясь производным"

Хищник недочитал.

Цитата:
Программист в любом случае что-то контролирует.
Да, но не всю ВМ.

Цитата:
Нетривиальные задачи и так сводятся в Форте к тривиальным путем создания DSL.

domain-specific programming language - нетривиальный

Автор:  Mihail [ Вс сен 20, 2009 10:36 ]
Заголовок сообщения: 

Хищник писал(а):
Тот факт, что стековая машина весьма уязвима к некорректным действиям в рантайме - ну что ж, приходится мириться


Мирится не обязательно. Можно использовать типа

Хищник писал(а):
Postscript, Joy, Factor, Forpost, MSIL?


Какое отношение перечисленное, имеет к Форту?

Автор:  chess [ Вс сен 20, 2009 10:56 ]
Заголовок сообщения: 

вопрос писал(а):
Главным критерием должно быть то "что уже сделано и не должно быть сделано снова"

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

Автор:  Hishnik [ Вс сен 20, 2009 12:31 ]
Заголовок сообщения: 

вопрос писал(а):
Это - не "на базе", "на базе" - это "оставаясь зависимым"
или (внимание) "оставаясь производным"

Если "на базе", то любая программа на Форте представляет собой язык на базе Форта.
вопрос писал(а):
Цитата:
Программист в любом случае что-то контролирует.
Да, но не всю ВМ.

Ну уж всю ВМ на Форте контролировать не надо. В простейшем случае достаточно помнить, что лежит на стеке, но программа в любом случае сама не пишется. Надо что-то куда-то класть, доставать оттуда, комбинировать и т.д.
вопрос писал(а):
domain-specific programming language - нетривиальный

Почему же? Например, заменяем запись в ячейку 123 словом.

Код:
: SET-MODE  123 ! ;

3 SET-MODE

Даже такая простейшая обертка является элементом DSL, потому что она дает возможность скрыть от оператора базовые слова Форт-машины, выдав набор удобочитаемых команд, которые еще и содержат в себе мнемонические обозначения предметной области.

Автор:  Hishnik [ Вс сен 20, 2009 12:33 ]
Заголовок сообщения: 

Mihail писал(а):
Хищник писал(а):
Тот факт, что стековая машина весьма уязвима к некорректным действиям в рантайме - ну что ж, приходится мириться

Мирится не обязательно. Можно использовать

Мне просто уже из любопытства - ты вообще рассматриваешь хотя бы небольшую вероятность того, что развитие Форта не крутится вокруг тебя и твоих программок? :)
Mihail писал(а):
Хищник писал(а):
Postscript, Joy, Factor, Forpost, MSIL?

Какое отношение перечисленное, имеет к Форту?

Разве так сложно посмотреть, что это такое?

Автор:  вопрос [ Вс сен 20, 2009 12:54 ]
Заголовок сообщения: 

Цитата:
Если "на базе", то любая программа на Форте представляет собой язык на базе Форта.

Я ценю юмор...
Postscript, Joy, Factor, Forpost, MSIL - самостоятельные сущности, для работы с ними не нужно изучать форт

Я имел ввиду (и, кажется, это должно быть очевидно), что форт должен быть постоянным средством "доработки" языка. только тогда можно сказать "на базе", иначе - все языки "на базе" ассемблера? Или компилятор С, сделанный на JavaScript (есть и такое) - это "на базе"?

Цитата:
Даже такая простейшая обертка является элементом DSL

Тогда любой макрос С

Автор:  Hishnik [ Вс сен 20, 2009 16:05 ]
Заголовок сообщения: 

вопрос писал(а):
Postscript, Joy, Factor, Forpost, MSIL - самостоятельные сущности, для работы с ними не нужно изучать форт

Однако очень полезно. Тем более что ряд особенностей этих языков может быть объяснен тем, что взяли Форт и улучшили/изменили какой-то аспект.
вопрос писал(а):
Я имел ввиду (и, кажется, это должно быть очевидно), что форт должен быть постоянным средством "доработки" языка. только тогда можно сказать "на базе", иначе - все языки "на базе" ассемблера? Или компилятор С, сделанный на JavaScript (есть и такое) - это "на базе"?

Смотря что понимается под выражением "на базе"? Транслятор одного языка написан на другом? Тогда Haskell, Lisp, Prolog - языки на базе Си. Видимо, имеется в виду все же близость грамматики, тогда C, C++, C# - языки одной группы. Из тех же соображений близки Форт и MSIL (во втором dup и drop перекочевали в неизменном виде, а стековые операции называются иначе, но имеют полностью совпадающую семантику).
вопрос писал(а):
Цитата:
Даже такая простейшая обертка является элементом DSL

Тогда любой макрос С

Да, макрос С тоже является элементом DSL. Другое дело, что макросы имеют существенные ограничения по сравнению со словами Форта.

Автор:  вопрос [ Вс сен 20, 2009 16:22 ]
Заголовок сообщения: 

Цитата:
Смотря что понимается под выражением "на базе"?
ну это я и говорю
на базе - так, что развитие языка осуществляется благодаря дальнейшему использованию базового "предязыка" и это экономит время, т.к нет необходимости каждый раз заново пересоздавать весь компилятор (понятно ли говорю? :shuffle; )

Автор:  вопрос [ Вс сен 20, 2009 16:24 ]
Заголовок сообщения: 

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

Страница 2 из 4 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/