Forth
http://fforum.winglion.ru/

Нужны ли Форту нововведения?
http://fforum.winglion.ru/viewtopic.php?f=4&t=82
Страница 1 из 4

Автор:  Kamikaze [ Чт июн 29, 2006 17:05 ]
Заголовок сообщения:  Нужны ли Форту нововведения?

Конечно,- лучше Форта может быть только Форт. Однозначно! Но...
Может быть имеет смысл импортировать в него кое-что из новых идей из других языков программирования? Из того, что было придумано уже после его рождения?
Например идею "рядов" из Эйфория?
( http://www.rapideuphoria.com/russian/index_r.htm )
Цитата из мануала:
Цитата:
Все объекты, содержащие данные, в Euphoria могут быть атомами или рядами.
Атом это единственная численная величина.
Ряд является набором численных величин.

Объекты, входящие в ряд, могут быть произвольной смесью атомов или рядов.
Ряд представляется списком объектов, заключенным в фигурные скобки,
объекты разделяются запятыми. Атомы могут иметь любую целочисленную
величину или величину двойной точности с плавающей точкой.
Диапазон значений величин лежит в пределах от приблизительно
-1e300 (минус единица на 10 в степени 300) до +1e300 с 15-ю
десятичными цифрами точности. Ниже приводятся примеры некоторых
объектов Euphoria:

-- примеры атомов:
0
1000
98.6
-1e6

-- примеры рядов:
{2, 3, 5, 7, 11, 13, 17, 19}
{1, 2, {3, 3, 3}, 4, {5, {6}}}
{{"jon","smith"}, 52389, 97.25}
{} -- пустой ряд, 0 элементов

Числа могут быть также шестнадцатиричными, например:

#FE -- 254
#A000 -- 40960
#FFFF00008 -- 68718428168
-#10 -- -16

Для написания шестнадцатиричных чисел разрешены только
прописные буквы A, B, C, D, E, F.

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

{x+6, 9, y*w+2, sin(0.5)}

Слова "Hierarchical Objects", часть акронима Euphoria, отражают
иерархическую природу вложенных рядов. Здесь не должно быть путаницы
с "class hierarchies" некоторых объектно-ориентированных языков.

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

Автор:  Гость [ Чт июн 29, 2006 18:06 ]
Заголовок сообщения: 

Может это назвать попроще:)

Например: Обобщенная структура данных.

Автор:  Balancer [ Чт июн 29, 2006 19:21 ]
Заголовок сообщения: 

Примеры из JBForth :)
(вывод делаю после >>>)
Код:
{ 2 3 5 7 11 13 17 19 } .
>>> [2, 3, 5, 7, 11, 13, 17, 19]

{ 1 2  { 3 3  3 }  4 { 5  { 6 } } }  .
>>>[1, 2, [3, 3, 3], 4, [5, [6]]]

{ { "jon" "smith" }  52389  97.25 } .
>>>[[jon, smith], 52389, 97.25]

{ } .
>>>[]

---------------------

{ 1 4 7 10 17 } "2 * 1 + ." do-list
>>> 3 9 15 21 35

: my_word  ( n1 -- n2 )  2 * 1 +  . ;
{ 1 4 7 10 17 } ['] my_word do-list
>>> 3 9 15 21 35

-----------

new-hashmap
"one" => 1
"two" => 2
"three" => 3
value map

{ 1 2 3 } :noname map swap >string m@ . ; do-list
>>> one two three


Близко?

Автор:  Balancer [ Чт июн 29, 2006 19:27 ]
Заголовок сообщения: 

Код:
{ 1 5 9 15 } .s
>>> Stack: [1, 5, 9, 15]
list> .s
>>> Stack: 15 9 5 1 4
1- >list .s
>>> Stack: 15 [1, 5, 9]
tuck list+ .s
>>> Stack: [1, 5, 9, 15]

Автор:  вопрос [ Чт июн 29, 2006 19:33 ]
Заголовок сообщения: 

О рядах
Всё это удовольствие ничем не отличается от списков в Пролог или Лисп. Тоже разнотипные элементы можно класть в один список в виде атомов (термин "атом" тоже из Пролога) и пользоваться ими ...

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

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

Иначе за каждым элементом придётся обращаться к бд.


p.s. Кажется, криво я всё это рассказал ...

Автор:  Balancer [ Чт июн 29, 2006 19:42 ]
Заголовок сообщения: 

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

Для этого у нас SQL есть :) С которым JBForth вполне может работать ;)

Код:
"SELECT char_name FROM characters WHERE lastaccess > UNIX_TIMESTAMP() - 3600" query
drop
"'char_name' m@ ." do-list

>>> Elz Erl Erll killer melo4 SVET Gilvor CRAFT STELS IIIaxTeP SilverHaK Y@Gnom JIuJIuIIyTKa Shnap TyPaH SiP DarkBufer DarcMag 4Life Yarl


Автор:  Balancer [ Чт июн 29, 2006 19:43 ]
Заголовок сообщения: 

>Иначе за каждым элементом придётся обращаться к бд.

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

Я уже молчу про то, что это основная цель БД - хранение и быстрое извлечение данных по сложным критериям :)

Автор:  вопрос [ Чт июн 29, 2006 19:56 ]
Заголовок сообщения: 

Balancer писал(а):
>Иначе за каждым элементом придётся обращаться к бд.

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

Я уже молчу про то, что это основная цель БД - хранение и быстрое извлечение данных по сложным критериям :)


Не понял этого, видимо, таки криво описал ...

Автор:  Kamikaze [ Чт июн 29, 2006 23:30 ]
Заголовок сообщения: 

Нда... Разве что себя же процитировать:
Цитата:
...Поэтому задавать вопросы бессмысленно. В лучшем случае получишь ответ - "я уже это делал..."

Во-первых вопрос стоял об импорте идей, т.е. нечто-такого, выходящего за рамки... как бы это сказать - общепринятой философии Форта.
Во-вторых, касаемо "эйфорического ряда",- если смотреть на него как на базу данных, то в отличии от sql, она многоуровневая (как структура директорий). В Форте это можно было бы организовать гораздо более эффективно, так? Плюс "обратная сторона медали" - работа с символами!
Я как-то перебирал разные либы из SPF для работы со строками запроса к mySQL (это про умершую тему о редакторе)... Ну не то все! Для Форта главное цифры а не буквы! А а Euphoria это дело решили.

Автор:  Гость [ Пт июн 30, 2006 06:57 ]
Заголовок сообщения: 

Форту не чужды любой импорт идей:) Обеими руками за!
( отчасти и в этом разноликость Фортов)
По моему тот же ряд заложен в фортоподобный язык Forpost

Автор:  in4 [ Пт июн 30, 2006 12:48 ]
Заголовок сообщения: 

Kamikaze писал(а):
Может быть имеет смысл импортировать в него кое-что из новых идей из других языков программирования? Из того, что было придумано уже после его рождения?

Имеет. IMHO, большинство идей лучше реализовать расширениями (например, добавить списки - будет Лисп, Пролог). Ведь Форт - язык для создания языков!
А вот некоторые идеи прийдется встроить в язык. И получится другой. Язык или диалект (например, colorForth).
В принципе, даже такой диалект может работать в рамках Форт-системы.
Но будет требовать, как и расширение, других навыков для эффективного использования.

Разница только в том, что расширение обязательно использует возможности базовой системы, а новый язык может быть и самостоятельным. У меня был пример реализации части примитивов ColorLessColorForth-a над SPF. И есть автономная система (пока еще не в полном объеме... :( ) Оба варианта дают возможность использовать другой(не традиционно-фортовый) стиль программирования совершенно одинаково.

Автор:  cleg [ Пт июн 30, 2006 14:33 ]
Заголовок сообщения: 

да, хорошую реализацию списков и лямбды в форте было бы неплохо иметь "из коробки" :-)

Автор:  Balancer [ Пт июн 30, 2006 19:54 ]
Заголовок сообщения: 

cleg писал(а):
да, хорошую реализацию списков и лямбды в форте было бы неплохо иметь "из коробки" :-)


Списки - см. выше в JBForth :)

Лямбда - а чем идеологически не подходит :noname ?

Автор:  вопрос [ Пт июн 30, 2006 20:14 ]
Заголовок сообщения: 

Цитата:
Имеет. IMHO, большинство идей лучше реализовать расширениями (например, добавить списки - будет Лисп, Пролог).

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

Автор:  Kamikaze [ Сб июл 01, 2006 10:30 ]
Заголовок сообщения: 

МЫ БУДЕМ СНИМАТЬ КИНО? ИЛИ МЫ НЕ БУДЕМ СНИМАТЬ КИНО?
На данный момент 100% проголосовали за SUBJ. Но движения вперед так и не видно...
Как Kamikaze заявляю: если я в этот линкор не всадил торпеду,- всажу при следующей встрече. Это про BF2 (Base Forth To) и редактор - мы к этой теме еще вернемся..
Кстати о "темах": Фортеры! Форум не форт-программа! Здесь не надо создавать много маленьких тем!!!

Ну так что, где предложения? Что есть такого (принципиального) в других языках, что хотелось бы добавить в Форт? Пока было отмечено два желательных "нововведения" - из Лиспа и Эйфории. Так?
Go! Go! Go! Дальше!
1.Собираем список. 2.Отсеиваем в обсуждениях менее интересное. 3.Определяем цели и... ну тут уже человеческий фактор.
Это о первой задаче - импорте идей.
Вторая задача, тоже затронутая на форуме,- об изменениях устаревших положений форт-системы. Здесь тоже просьба - список!
И последняя просьба - ну не надо это "у меня уже было...". Если было и не использовано - не зачет. Нас интересует - "что будет?"

По-моему, ситуация с Фортом понятна. "Кризис среднего возраста". При всей своей по-прежнему революционности и почти неограниченных возможностях, Вам, программистам, приходится все больше и больше использовать другие языки. СлабО, да?
НЕ СПАТЬ! Мысли - в студию!

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