ForthFAQ

См. также SPF_FAQ и English Forth FAQ!

  • В: Перспективно ли сейчас накапливать опыт в программировании Форт-программ и насколько широки реальные возможности Форт-программ?

О: Перспективно накапливать опыт в программировании вообще, и владеть несколькими языками - не только Фортом. И применять в соответствии с задачами.

  • В: Возможно ли писать Windows-приложения на Форте (с использованием графического интерфейса)?

О: Конечно :) На Форте можно писать любые программы. Примеры Форт-программ с GUI - Eserv, nnCron и другие.
yz Можно также использовать специальную оконную библиотеку WinLib

  • В: Много ли теряет программист используя числа с фиксированной точкой на Форте (ведь он позволяет задавать точность, всего, порядка +-32768, +-2E9 в отличии от др. языков 1.797693E308)?

О: Приведенная вами точность не верна для 32-разрядных Форт-систем. При использовании 32-разрядной и 64-разрядной целочисленной арифметики Форт не уступит точности плавающей точки. Но если вам неудобно программировать в целых числах - вы можете использовать стандартную библиотеку FLOAT, она есть во всех современных Фортах.

  • В: Насколько эффективно Форт использует память современных ПК? Ведь первоначально Форт использовал 64Кб адресного пространства и позволял(ет)делать подкачку блоков (экранов) по 1024 байта. Не является ли этот блок узким местом (барьером) при составлении больших и сложных программ активно использующие память и ввод/вывод?

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

  • В: Как можно расширить набор слов если в словарной статье нет нужных для конкретной задачи слов? Можно ли написать их на ассемблере, а потом добавить в словарь?

О: Новые слова определяются через существующие с использованием слова ":" (двоеточие) - так же как в других языках определяются новые процедуры и функции. Можно написать и на встроенном ассемблере - см. "CODE". Писать слова на ассемблере имеет смысл только если определенное через двоеточие слово работает недостаточно быстро.

  • В: Что представляет из себя входной поток?

О: Все что поступает с терминала (консоли форта) или из файла (если в данный момент выполняется INCLUDED).

  • В: Слова WORD и NUMBER позволяют отделить из входного потока числа. А можно ли брать и исполнять слова из входного потока, как это делает диалоговая среда Форта? Если да то как?

О: Конечно, можно. Например, слово "'" (одинарная кавычка) берет из входного потока следующее слово и находит его xt (execution token). А слово "EXECUTE" может выполнить этот токен. Т.е. последовательность "' EXECUTE" сделает то, что вам требуется - возьмет слово из входного потока и выполнит его.

  • В: Можно ли на Форте создать такую структуру данных как список?(по аналогии с ЛИСПом). А потом обращаться к нему при помощи слов CAR и CDR?

О: Конечно, можно :) В SPF даже есть слово CDR - оно используется при просмотре встроенных списков (словарей). А вообще списки можно организовать бесконечным числом способов, и всё это вы можете реализовать на Форте.
yz Никто не мешает создать и гораздо более сложные структуры данных. Например, хитрые деревья.

  • В: Как можно создать два слова взаимно рекурсивных (т.е. первое вызывает второе, а второе первое)?

O: Например, с использованием явных ссылок вперед.

  VECT SECOND1
  : FIRST SECOND1 ;
  : SECOND FIRST ; ' SECOND TO SECOND1

Но есть и альтернативные, возможно более красивые способы. См. многочисленные примеры в библиотеках devel\.

  • В: Как писать программы на Форте сверху вниз?

О: Для этого в текстовом редакторе нужно писать снизу вверх.

  • В: Я решил заняться изучением Форта. Скачал литературы с вашего сайта и SP-Forth v.v. 3.15, 3.75. Расскажите что можно реального делать с помощью Форта под виндами, и нет ли каких проблем с XP, т.к. она уменя стоит. До этого программированием не занимался, за исключением небольшого курса по Паскалю и совсем маленького по Ассемблеру во время учебы. Кстати я тут прочитал статью про сравнение Forth и Java. Возможно ли что то подобно сравнительное о Форте и VB.

О: Возмите также SPF4 (http://spf.sf.net/). Проблем с XP нет. Под виндами на Форте можно делать все. Примеры популярных программ, написанных на SPF: Eserv и nnCron. www.eserv.ru, www.nncron.ru. Сравнений с бейсиком нет. В SPF через COM/ActiveX можно делать все то же, что и в Бейсике, плюс свои возможности.

(На вопросы отвечали ac и yz)

Valid XHTML 1.0! Valid CSS!
Page Execution took real: 1.760 seconds