Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 17:01

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 58 ]  На страницу 1, 2, 3, 4  След.

Нужны ли Форту нововведения?
Да 94%  94%  [ 17 ]
Нет 6%  6%  [ 1 ]
Всего голосов : 18
Автор Сообщение
 Заголовок сообщения: Нужны ли Форту нововведения?
СообщениеДобавлено: Чт июн 29, 2006 17:05 
Не в сети
Аватара пользователя

Зарегистрирован: Вс май 07, 2006 11:38
Сообщения: 279
Откуда: Slavyansk, Ukraine
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Конечно,- лучше Форта может быть только Форт. Однозначно! Но...
Может быть имеет смысл импортировать в него кое-что из новых идей из других языков программирования? Из того, что было придумано уже после его рождения?
Например идею "рядов" из Эйфория?
( 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 
Может это назвать попроще:)

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


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 29, 2006 19:21 
Не в сети
Аватара пользователя

Зарегистрирован: Пт май 12, 2006 00:52
Сообщения: 88
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Примеры из 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


Близко?

_________________
... чтобы понять рекурсию, нужно сперва понять рекурсию ...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 29, 2006 19:27 
Не в сети
Аватара пользователя

Зарегистрирован: Пт май 12, 2006 00:52
Сообщения: 88
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Код:
{ 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 
Не в сети

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

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

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

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


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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 29, 2006 19:42 
Не в сети
Аватара пользователя

Зарегистрирован: Пт май 12, 2006 00:52
Сообщения: 88
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
>- создать функцию, которая определяет для каждого элемента базы данных, имеет ли он отношение к упомянутому предмету каким-то боком и кладёт подходящие в список

Для этого у нас 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:44, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 29, 2006 19:43 
Не в сети
Аватара пользователя

Зарегистрирован: Пт май 12, 2006 00:52
Сообщения: 88
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
>Иначе за каждым элементом придётся обращаться к бд.

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

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

_________________
... чтобы понять рекурсию, нужно сперва понять рекурсию ...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 29, 2006 19:56 
Не в сети

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

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

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


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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 29, 2006 23:30 
Не в сети
Аватара пользователя

Зарегистрирован: Вс май 07, 2006 11:38
Сообщения: 279
Откуда: Slavyansk, Ukraine
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Нда... Разве что себя же процитировать:
Цитата:
...Поэтому задавать вопросы бессмысленно. В лучшем случае получишь ответ - "я уже это делал..."

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

_________________
Банзай!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 30, 2006 06:57 
Форту не чужды любой импорт идей:) Обеими руками за!
( отчасти и в этом разноликость Фортов)
По моему тот же ряд заложен в фортоподобный язык Forpost


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 30, 2006 12:48 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Kamikaze писал(а):
Может быть имеет смысл импортировать в него кое-что из новых идей из других языков программирования? Из того, что было придумано уже после его рождения?

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

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

_________________
With best wishes, in4.


Последний раз редактировалось in4 Пт июн 30, 2006 14:35, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 30, 2006 14:33 
Не в сети
Аватара пользователя

Зарегистрирован: Пт май 05, 2006 15:36
Сообщения: 26
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
да, хорошую реализацию списков и лямбды в форте было бы неплохо иметь "из коробки" :-)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 30, 2006 19:54 
Не в сети
Аватара пользователя

Зарегистрирован: Пт май 12, 2006 00:52
Сообщения: 88
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
cleg писал(а):
да, хорошую реализацию списков и лямбды в форте было бы неплохо иметь "из коробки" :-)


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

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

_________________
... чтобы понять рекурсию, нужно сперва понять рекурсию ...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 30, 2006 20:14 
Не в сети

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

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

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июл 01, 2006 10:30 
Не в сети
Аватара пользователя

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

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

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

_________________
Банзай!


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

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


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

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


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

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