Forth
http://fforum.winglion.ru/

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

Автор:  mOleg [ Чт май 08, 2008 10:16 ]
Заголовок сообщения:  о критериях оценки языков программирования.

Общие размышления.

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

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

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

Преамбула вобщем-то написана лишь для того, чтобы определиться с тем, к какому же разряду отнести язык Форт. Потому что с одной стороны, форт явно имеет более высокий уровень абстракции, чем ассемблер, хотя и не во всем (взять те же DROP DUP SWAP), с другой стороны сам язык не ограничен сверху ничем за счет возможности повышать уровень абстракции
за счет включения в себя DLS подмножеств, но что интересно, не ограничен и снизу!. Собственно, мне кажется, что Форт - это Язык в более широком смысле, нежели остальные языки программирования.
Форт более похож на живой человеческий язык - в этом его сила и в этом же его проблема, так как на человеческих языках достаточно легко оказаться непонятым.

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

mOleg писал(а):
Форт - это Язык в более широком смысле, нежели остальные языки программирования.


Согласен. Forth - живой язык.

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

Живой в том смысле, что при появлении новой сущности появляется новое слово.

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

chu писал(а):
Живой в том смысле, что при появлении новой сущности появляется новое слово.

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

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

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

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

Этим Форт отличается от других языков - скажем С - макросами расширяем только с того уровня абстракции, на котором находится сам С, С++ - свои ограничения

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

вопрос писал(а):
только фортеры очень редко этим пользуются, если пользуются вообще.

почему же? пользуются, просто без фанатизма обычно.

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

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

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

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

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

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

Это узкое по моему мнению понимание Форта. Форт может на ходу(в рантайме) сменить и виртуальную машину и модель
взаимодействия.

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

mOleg писал(а):
Преамбула вобщем-то написана лишь для того, чтобы определиться с тем, к какому же разряду отнести язык Форт.


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

P.S. Прочитав статью:Сценарии: высокоуровневое программирование для XXI века http://www.osp.ru/os/1998/03/179470/ где описывается
история и возможности Tcl привело к мысли, что синтаксис и базис
языка должен быть, как можно проще. Форт можно дополнить некоторыми
концепциями из Tcl, не только интерфейсом к GUI.
Еще немного интересного по Tcl http://tclstudy.narod.ru/articles/index.html
Книг на русском языке издано мало ( единицы )

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

Kopa писал(а):
mOleg писал(а):Преамбула вобщем-то написана лишь для того, чтобы определиться с тем, к какому же разряду отнести язык Форт.

Может, с некоторыми оговорками, к скриптовым языкам.
( т.к. у него в базовом варианте нет определения типа оперирируемых данных при исполнении. Хотя он почти бизтиповый.) Еще можно классифицировать как язык позволяющий проводить сцепление простых элементов естественным способом.


собственно, для себя определение я уже написал давно: Форт - это алгоритмическая языковая среда с единообразным механизмом обмена данными...

то есть я считаю, что форт не совсем ЯП ;)

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

Kopa писал(а):
что синтаксис и базис языка должен быть, как можно проще.

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

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

mOleg писал(а):
Kopa писал(а):
что синтаксис и базис языка должен быть, как можно проще.

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


Примечание: Проще это не значит примитивнее, а достаточно обозримо и удобно
в применении.

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

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