<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://t8.lbstr.eu/index.php?action=history&amp;feed=atom&amp;title=Forth</id>
	<title>Forth - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://t8.lbstr.eu/index.php?action=history&amp;feed=atom&amp;title=Forth"/>
	<link rel="alternate" type="text/html" href="https://t8.lbstr.eu/index.php?title=Forth&amp;action=history"/>
	<updated>2026-11-02T23:49:55Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://t8.lbstr.eu/index.php?title=Forth&amp;diff=1907&amp;oldid=prev</id>
		<title>127.0.0.1: /* : язык */ линк</title>
		<link rel="alternate" type="text/html" href="https://t8.lbstr.eu/index.php?title=Forth&amp;diff=1907&amp;oldid=prev"/>
		<updated>2020-07-12T17:43:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;: язык: &lt;/span&gt; линк&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Файл:Forth.png|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
== : слово ==&lt;br /&gt;
( любой набор символов, ограниченный разделителями ) ;&lt;br /&gt;
&lt;br /&gt;
== : программирование ==&lt;br /&gt;
* очень простое внутреннее устройство языка позволяет написать минимальную форт-машину за предельно короткие сроки ( в том числе и прямо на голом железе ) . Это первое , что делает начинающий фортер , поэтому так много разных реализаций форта .&lt;br /&gt;
* отсутствие типизации ( хотя есть StrongForth , в нём статическая типизация ) . Нет никаких способов узнать , что за тип данных находится на вершине стека: число , беззнаковое число или указатель на строку . Строк , кстати , тоже нет . Второе , что пишет начинающий фортер - это свою реализацию строковых переменных , поэтому в форте так много разных реализаций строк . Заодно [[начпис|нафортер]] думает о написании механизма типизации , но размышлениями дело обычно и ограничивается . Поэтому типизации в форте нет и не предвидится . ( Зато тот , кто думает долго , получает и типизацию , и всё остальное , hint: [http://factorcode.org/ Factor] )&lt;br /&gt;
* поддержка ООП отсутствует , но написание библиотеки ООП - третье , что делает начинающий фортер . Поэтому в форте так много разных реализаций ООП .&lt;br /&gt;
* стеки и обратная польская нотация - в общем случае начинающий фортер думает также и о том , чтобы сделать в форте всё как у людей . Но через некоторое время начинает уже у людей всё делать как в форте .&lt;br /&gt;
* .&amp;quot; программирование на ошибках&amp;quot; - ошибки в коде , как правило , сразу же обрушивают программу ( или всю систему ) . Наиболее простые определения слов позволяют написать для них точные тесты и получить многократное использование кода .&lt;br /&gt;
* если программист , начав осваивать программирование с форта и освоив его , попытается перейти на другой язык программирования , его несказанно удивит загадочность компиляторов/интерпретаторов любого языка . Признак компилятора форта - прозрачная форт-машина . Декомпилятор форт-ядра (core) обычно пишется за час , при начальных навыках и внимании . Эксперименты с ядром при внимательном подходе , как правило , удачны .&lt;br /&gt;
* суть языка сначала - .&amp;quot; Некогда изучать, нужно программировать&amp;quot; , потом - или приходит опыт , или программист отказывается от использования данного языка ;&lt;br /&gt;
&lt;br /&gt;
== : язык ==&lt;br /&gt;
* изобретён в 1971 году [[:en.w:Charles H. Moore|Чарльзом Муром]] ( работы над языком велись в 1960-х годах ) [http://www.forth.com/resources/evolution/evolve_0.html для управления телескопом], или [[:w:Дейкстра, Эдсгер Вибе|Эдсгером Дейкстрой]] в 1962 [https://zen.yandex.ru/media/id/5dd04e9a1b50cd22ca7b2886/trianguliarnaia-intrijka-deikstra-mur-i-cheito-fort-5df73e13df944400c57a0990 ради лулзов]&lt;br /&gt;
* принадлежит к четвёртому поколению ( fourth - четвёртый )&lt;br /&gt;
* также является самым продвинутым языком ( forth - вперёд )&lt;br /&gt;
* совмещает свойства интерпретатора и компилятора&lt;br /&gt;
* работает на наибольшем количестве аппаратных платформ&lt;br /&gt;
* диалекты форта можно обнаружить в совершенно неожиданных местах: в загрузчике FreeBSD , [https://web.archive.org/web/20130629234420/http://www.postscript.org/FAQs/language/node2.html в лазерном принтере] , [http://www.openfirmware.org/ в биосе спарки] , в глубоководных и [https://web.archive.org/web/20110204160744/http://forth.gsfc.nasa.gov/ космических] аппаратах , в [[:w:Open Firmware|фирмваре]] PowerPC-шных маков , {{Borquote|5592|давным-давно в далёкой-далёкой галактике}} .&lt;br /&gt;
* стандарт языка [http://www.taygeta.com/forth/dpans.html ANSI в ASCII] занимает больше места , чем [ftp://ftp.gnu.org/gnu/gforth бинарный код] реализации форта&lt;br /&gt;
* грамматика языка в БНФ описывается одной строчкой&lt;br /&gt;
* Фраза .&amp;quot; Йоды джедаев магистра речи тайна раскрыта - на Форте просто старый программер он есть&amp;quot; очень хорошо иллюстрирует разницу между синтаксисом языка Форт и синтаксисом других языков . Математикам , наверное, будет нагляднее разница в записи выражений в Си: «a = 1*(2+3)-4*5» и на Форте: « 1 2 3 + * 4 5 * - a ! »&lt;br /&gt;
* Обратная польская запись выражений ( она «постфиксная» ) хорошо прочищает мозг на тему глобальных отличий языков программирования: с одной стороны вершины семейства LISPов с префиксной нотацией «(divide 6 (plus 1 2))» , с другой - вершина форта с его постфиксной записью выражений « 6 2 1 + / » , а посерединке - все прочие тысячи языков в инфиксной нотации «6/(1+2)» . Замечено , что редкий программер добирается до обеих противостоящих вершин ( LISP или Forth ) , или хотя бы до одной из них; большинство предпочитают оставаться в уютном болотце языков с более традиционной записью выражений . Так мозгу спокойнее .&lt;br /&gt;
* Итого , если в LISP скобка - это базовый эзотерический символ , а в прочих языках соблюдается некий баланс , то в Форте вся эзотерика строится на отсутствии скобок в записи выражений . Мегаследствие: все различия глобальных концептов в программировании определяются числом скобок в языке ! А не всякими там ООП , замыканиями и прочими коротящими мозги штуками .&lt;br /&gt;
* Для тех, кто не понял два вышеидущих пункта - Форт это просто такой низкоуровневый Лисп задом наперёд и без скобок ;&lt;br /&gt;
* Благодаря аморфности среды Форт системы Форт не имеет объективных недостатков .&lt;br /&gt;
В принципе , любые недостатки устранимы . Причем самим пользователем Форт системы . Проблема заключается в отсутствии стимула заботиться о фортерах ( вне собственной фирмы ) . В связи с открытой архитектурой Форта нереально поставить фортеров в зависимость от разработчиков инструментальных средств Форта . Фортерам трудно найти консенсус между собой и заставить друг друга следовать стандартам. Организационную часть развития Форта может взять на себя рынок , если будет простой способ продажи дешевых файлов .&lt;br /&gt;
Экономический стимул побудит фортеров заботиться друг о друге и следовать стандарту де-факто .&lt;br /&gt;
&lt;br /&gt;
== : FORTH&amp;lt;ref&amp;gt;здесь мы, естественно, получим «warning: redefine word», что, впрочем, не мешает переопределить всё что угодно . Над «#define TRUE FALSE» фортеры не смеются .&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
слово из чуть_более_чем состоит программирование язык - ;&amp;lt;ref&amp;gt;Это - не «иллюстрация» , а корректная программа на форте . Учтите (!) что «программа» ( вернее , слово ) начинается с двоеточия в заголовке :)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== : сноски ==&lt;br /&gt;
&amp;lt;references /&amp;gt; ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Языки программирования}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Языки программирования]]&lt;br /&gt;
[[Категория:Lurkmore:Selfdescriptive]]&lt;br /&gt;
[[w:Forth (язык программирования)]]&lt;br /&gt;
[[en.w:Forth (programming language)]]&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
	</entry>
</feed>