Meta tags:
Headings (most frequently used words):
править, код, форт, примеры, навигация, инструменты, других, язык, программирования, содержание, история, основные, понятия, классической, системы, типы, кода, форта, программ, особенности, языка, forth, см, также, примечания, литература, ссылки, создание, стандартизация, дальнейшее, развитие, использования, персональные, пространства, имён, просмотры, участие, печать, экспорт, проектах, на, языках,
Text of the page (most frequently used words):
форт (62), forth (40), программирования (33), для (30), форта (30), #править (28), код (28), языка (27), статьи (26), кода (25), года (23), как (22), язык (20), слова (18), системы (17), слов (15), обращения (14), также (14), может (14), англ (13), архивировано (13), дата (13), неопр (13), быть (13), программы (13), википедия (12), стек (12), при (12), isbn (11), стека (11), форте (10), что (10), число (10), это (10), или (10), был (10), языки (9), его (9), поле (9), могут (8), году (8), все (8), 2010 (8), параметров (8), других (7), страницы (7), без (7), более (7), если (7), например (7), стандарт (7), определения (7), компиляции (7), виде (7), качестве (7), использования (6), ссылки (6), ссылок (6), этом (6), стандарта (6), есть (6), эвм (6), the (6), февраля (6), слово (6), управления (6), так (6), использовать (6), можно (6), является (6), данных (6), версия (5), inc (5), была (5), языках (5), история (5), сайт (5), несколько (5), систем (5), 256 (5), августа (5), 2006 (5), языков (5), используется (5), этого (5), позволяет (5), процессора (5), типов (5), указатель (5), числа (5), пример (5), исполнения (5), примеры (5), программ (5), примитивы (5), шитого (5), текст (4), 2022 (4), форум (4), источников (4), источники (4), сентября (4), 2014 (4), web (4), org (4), group (4), 000 (4), экз (4), реализации (4), июня (4), января (4), programming (4), postscript (4), этих (4), множество (4), которые (4), годов (4), существуют (4), часто (4), константу (4), должна (4), которых (4), ansi (4), особенности (4), системах (4), любой (4), определений (4), который (4), другие (4), чем (4), только (4), состоит (4), строки (4), dup (4), принят (4), мур (4), статистика (3), wikipedia (3), создать (3), статья (3), ещё (3), текущая (3), запись (3), системе (3), категории (3), дней (3), нет (3), про (3), алфавиту (3), 1971 (3), net (3), фортран (3), после (3), этой (3), ресурсы (3), активный (3), языку (3), реализация (3), пер (3), программирование (3), 1993 (3), and (3), декабря (3), баранов (3), 2012 (3), euroforth (3), conference (3), мая (3), 2007 (3), acm (3), особенностей (3), того (3), 1983 (3), стандарте (3), следует (3), одно (3), сам (3), конкретной (3), просто (3), именно (3), компилятором (3), особенность (3), плавающей (3), основного (3), возможностей (3), специальные (3), интерпретатора (3), процессор (3), любую (3), размер (3), уже (3), система (3), нём (3), отличается (3), легко (3), поддерживает (3), они (3), возможности (3), эти (3), вершине (3), памяти (3), словами (3), помощью (3), машинный (3), среди (3), классической (3), которая (3), статью (3), size (3), новых (3), name (3), будет (3), было (3), компилируется (3), байтовый (3), словарь (3), сегменте (3), случае (3), использовании (3), котором (3), возвратов (3), через (3), 1994 (3), токен (3), словаре (3), флаг (3), поля (3), основные (3), версии (3), создание (3), программном (3), обеспечении (3), группа (3), fig (3), описание (2), википедии (2), доступен (2), условия (2), знак (2), организации (2), эта (2), страница (2), раз (2), октября (2), english (2), странице (2), правки (2), инструменты (2), новые (2), содержание (2), навигация (2), русский (2), обсуждение (2), сносок (2), апреля (2), тип (2), использующие (2), cite (2), указан (2), конкатенативные (2), источник (2), https (2), php (2), лисп (2), java (2), проблемы (2), списка (2), недостатки (2), sourceforge (2), ресурсам (2), еврофорт (2), 2008 (2), персональных (2), финансы (2), 1990 (2), 320 (2), сша (2), 279 (2), языке (2), радио (2), связь (2), наука (2), 352 (2), способ (2), броуди (2), 2005 (2), wayback (2), machine (2), 1988 (2), литература (2), forthos (2), 2017 (2), starflight (2), 2021 (2), david (2), maynard (2), microprocessor (2), engineering (2), languages (2), символ (2), 2011 (2), adobe (2), systems (2), development (2), sigplan (2), rather (2), win32forth (2), примечания (2), factor (2), colorforth (2), диалекты (2), многие (2), момент (2), двух (2), 1979 (2), низкоуровневые (2), производит (2), два (2), один (2), бит (2), большинстве (2), современных (2), машин (2), факт (2), архитектуры (2), существует (2), относительно (2), потока (2), всё (2), процессе (2), случаев (2), программу (2), начала (2), либо (2), программа (2), чисел (2), запятой (2), реализован (2), использованием (2), определённые (2), программировании (2), эту (2), больше (2), всего (2), переключение (2), написании (2), разрядных (2), этот (2), операционных (2), байт (2), создания (2), программиста (2), реализаций (2), сделать (2), быстро (2), наборы (2), фактически (2), одновременно (2), написать (2), требует (2), входной (2), классических (2), понимания (2), синтаксиса (2), основе (2), системой (2), команд (2), архитектурой (2), знака (2), используются (2), символов (2), отсутствие (2), интерпретатором (2), всегда (2), иной (2), указывает (2), возможность (2), использование (2), словарных (2), конструкций (2), yoda (2), старым (2), программистом (2), отсутствуют (2), образом (2), появилась (2), вокруг (2), которое (2), имеют (2), вид (2), поиску (2), constant (2), напечатать (2), literal (2), где (2), немедленного (2), режим (2), таких (2), кроме (2), immediate (2), примере (2), создана (2), представлены (2), области (2), время (2), does (2), create (2), счётчиком (2), sign (2), else (2), then (2), зависимости (2), систему (2), расширить (2), группы (2), таблица (2), содержать (2), адреса (2), словаря (2), шитом (2), коде (2), расположены (2), вся (2), часть (2), косвенного (2), представляет (2), собой (2), последовательность (2), байтовых (2), совсем (2), том (2), весь (2), изменения (2), подпрограммного (2), машинного (2), основной (2), переменные (2), подпрограмм (2), программно (2), типы (2), синтаксис (2), семантику (2), интерпретации (2), средств (2), статей (2), правило (2), словарные (2), виртуальной (2), машиной (2), работы (2), пробелами (2), транслятор (2), поиск (2), вершину (2), которого (2), внутри (2), лексем (2), две (2), содержат (2), процедуру (2), структура (2), называется (2), интерпретатор (2), семантика (2), имени (2), ранее (2), понятия (2), компьютерные (2), 1980 (2), различных (2), платформ (2), фирмы (2), чарльзом (2), муром (2), компанию (2), начале (2), джон (2), уорнок (2), влияние (2), применения (2), дальнейшее (2), развитие (2), составе (2), sigforth (2), встреча (2), разработке (2), следующего (2), ast (2), национальной (2), обсерватории (2), стандартизация (2), конце (2), 1970 (2), чарльз (2), элизабет (2), ратер (2), работал (2), мура (2), fourth (2), компилятор (2), значения (2), перейти (2), пока (2), опытными (2), участниками (2), значительно (2), отличаться (2), проверенной (2), 2020 (2), проверки (2), требуют (2), правок (2), проверялась (2), feb (2), заявление, куки, разработчики, мобильная, свяжитесь, нами, отказ, ответственности, политика, конфиденциальности, отдельных, случаях, действовать, дополнительные, зарегистрированный, товарный, некоммерческой, wikimedia, foundation, подробнее, лицензии, creative, commons, attribution, sharealike, последний, отредактирована, українська, тоҷикӣ, svenska, српски, srpski, slovenščina, simple, português, polski, norsk, bokmål, nederlands, latviešu, кыргызча, 한국어, 日本語, italiano, interlingua, magyar, galego, français, suomi, فارسی, español, esperanto, ελληνικά, deutsch, čeština, català, български, беларуская, العربية, викисклад, проектах, печати, скачать, pdf, книгу, печать, экспорт, элемент, викиданных, цитировать, страницу, сведения, постоянная, ссылка, служебные, связанные, сюда, справка, свежие, сообщество, сообщить, ошибке, участие, пожертвовать, текущие, события, случайная, избранные, заглавная, читать, просмотры, пространства, имён, войти, учётную, вклад, представились, персональные, скрытые, утверждениями, 2015, распределённые, типам, разделами, шаблоном, нп2, дополнительного, текста, последняя, правка, прошлом, шаблонами, недостатков, полной, переработке, волшебные, заменить, webcitation, архив, deadlink, устаревший, тег, source, расширяемым, синтаксисом, семейства, стековые, появившиеся, index, title, форт_, язык_программирования, oldid, 125857451, категориям, списки, хронологический, категория, zig, visual, basic, swift, smalltalk, unix, shell, scala, rust, ruby, python, sql, perl, паскаль, ocaml, objective, оберон, matlab, lua, котлин, julia, javascript, haskell, erlang, кобол, delphi, бейсик, apl, ассемблер, алгол, ада, хронология, исправления, исключите, удалите, шаблон, устранены, проставить, внести, точные, указания, сноски, улучшения, желательно, коллекция, ресуры, вики, посвящённый, коллекции, ларионова, идеи, разработчика, eserv, fido7, www, wrk, msyst, winglion, русскоязычных, пользователей, русскоязычные, выполнен, сергеем, кадочниковым, переводе, известны, ошибок, описании, search, перевод, ans, google, конференция, доклады, компании, interst, сентябрь, dobb, journal, modern, stephen, pelc, журнальные, публикации, проектирование, программная, экспертных, кондратенко, трубицына, ссср, 8306, 2692, 00255, таунсенд, фохт, 240, 00547, семёнов, 00438, келли, спайс, 1992, 014460, дьяконов, микропроцессоров, общество, знание, ленинградская, организация, 1989, помощь, лектору, бураго, кириллин, романовский, мышления, начальный, курс, starting, introduction, language, operating, system, for, beginners, professionals, предисл, романовского, 00252, архивная, копия, 9764587, thinking, leo, brodie, машиностроение, 157, производстве, 217, 00324, 100, ноздрунов, феномен, системная, информатика, новосибирск, сибирская, издательская, фирма, 1995, 030678, 193, 291, вып, колодин, ориджин, пользователя, aquatix, forthwiki, european, digital, antiquarian, maher, jimmy, software, artist, mpe, limited, пионеры, диалоги, создателями, наиболее, популярных, masterminds, conversations, with, creators, major, плюс, 502, 608, 9785932861707, федерико, бьянкуцци, шейн, уорден, resources, standard, июля, dpans, 22nd, embedded, tools, апрель, notices, volume, march, history, evolution, moore, colburn, project, сайте, проект, axiom, kit, приложения, стековый, вызовов, языково, ориентированное, следствие, принятия, существовало, плохо, совместимых, базировались, частично, различающихся, стандартах, многих, слишком, умножение, названия, смещает, старшему, двоичному, разряду, заполняя, младший, нулём, конечно, настораживает, очевидные, стандартные, сдвига, битов, rshift, lshift, аналогичная, норма, здесь, самим, абсолютном, никакого, влияния, оказывает, саму, надо, помнить, хотите, вычислить, какое, пределами, потом, вставить, придётся, какой, обходной, путь, переносимая, предполагать, счастью, большинства, компиляторов, наличия, такого, пункта, создаёт, неудобства, активным, арифметики, точкой, норму, традиционно, игнорируют, возможно, самом, деле, развитию, препятствует, тяжёлое, наследство, пришедшее, низкими, возможностями, изначально, создавался, следующие, синхронизация, процессов, потоков, многозадачных, контекста, доступа, ограниченным, сложнейшие, поддержки, даже, создаются, команды, микропроцессорах, вообще, проблема, поскольку, эмулирует, необходимую, команду, грамотном, иногда, меньше, скомпилированного, разрыв, общий, выигрыш, составлять, сотни, тысячи, крат, причина, очень, простая, готовая, задача, имеет, вспомогательные, подпрограммы, реализованы, доступных, всем, вместится, влезть, принципе, способны, реализовать, технологию, доступную, допустимы, приёмы, запрещённые, самомодификация, устранение, негативных, последствий, приёмов, путём, правильного, лексикона, стимулирующего, грамотную, методику, возложено, большинство, позволяют, декомпиляцию, полученный, мало, исходного, разбиение, мелких, проверять, отдельности, передавая, нужные, входных, контролируя, остаётся, стеке, означает, тестирования, какого, компонента, загружать, зависимые, компоненты, целиком, никакую, парадигму, набор, ооп, программе, будут, отлично, уживаться, вместе, гораздо, проще, решить, какие, набора, требуются, свобода, предоставляемая, программисту, сильного, самоконтроля, порог, ниже, привыкания, философии, лежащей, опытный, программист, знакомый, ядро, определяют, преимущества, подобно, языкам, встроенной, узнать, лежит, знаком, строку, рассматриваемых, длинное, контроль, возлагается, чтение, ячеек, производят, некоторые, сущности, выносятся, стеки, согласно, стандарту, ассемблера, двойственная, природа, компилятора, нельзя, утверждать, однозначно, практически, режимах, исключением, редких, вроде, целевой, трансляции, арифметических, выражений, наличие, нескольких, стеков, обратная, польская, приведённый, заодно, уникальную, скобках, программировать, родном, родного, понятной, повышает, надёжность, 2889, mistery, speech, uncovered, just, old, programmer, was, оригинальный, скрыть, показать, йоды, магистра, тайна, речи, раскрыта, необычной, последовательности, называемые, ключевые, распознаются, обрабатываются, специальным, выходом, серии, фильмов, этому, поводу, шутка, ставшая, ныне, хорошо, иллюстрирует, данную, звёздные, войны, одна, постоянных, тем, споров, место, занимает, императивных, крайне, непривычный, информация, иначе, она, удалена, можете, добавив, авторитетные, отредактировать, проверяема, разделе, рекомендации, хватает, некоторый, килобайтах, отчёт, пересчёте, килобайтов, байты, report, килобайт, эквивалентны, 1024, байтам, компилировать, данный, лежащее, словом, переключиться, обратно, временное, записывает, переменную, state, стандартных, синтаксических, одной, самых, сильных, вмешиваться, процесс, таким, новая, синтаксическая, конструкция, подобные, редко, создаётся, определение, исполнении, положен, адрес, указателя, чтобы, туда, записывается, строка, выполнении, выполняются, указанные, addr, spaces, char, loop, drop, cell, swap, реального, создающего, строчную, принятом, ноль, положительное, отрицательное, печатающего, соответствующую, фразу, привет, мир, эмулировать, программную, выполнять, отладку, разработанных, них, стандартизован, такой, пересылаться, сети, исполняться, машинах, платформой, количество, счет, древовидной, структуры, словарей, величины, сохраняя, минимальные, размеры, таблицы, группируется, отдельный, лексикон, предназначенный, задачи, задач, занимают, места, 64к, байтовые, смещения, косвенном, едином, защищённом, вмешательства, прошитом, пзу, зависят, платформы, выполнены, отдельного, блока, остальная, переносимой, машину, платформонезависимой, вариант, сильно, видов, заслуживает, особого, внимания, логическое, завершение, развития, свёрнутого, адресной, таблицей, байтов, некоторого, придуманного, виртуального, существовать, адресов, которым, сложные, очевидных, преимуществ, вызовы, переменных, размещаться, одном, недоступен, остальной, размещается, сегментов, много, работать, единственным, номером, сегмента, легче, двумя, отличающегося, состоящие, называются, таком, стараются, данным, лежащим, машинных, push, pop, получается, сравнению, кодом, сгенерированном, обычного, единственный, кладутся, операции, перетаскиванию, организуется, представления, скомпилированной, тот, любого, другого, прямо, метаязыка, удобно, благодаря, доступности, поддерживающих, доступны, пользователю, пользователем, точно, такое, представление, остальные, вышесказанное, относится, понятию, первом, приближении, вернее, перекрывает, понятие, большей, степени, операционной, обязательным, компонентом, предоставляет, памятью, линейной, областью, именованные, локальные, ячейки, механизм, передачи, между, грамматически, обрабатываемый, разделённых, символами, конца, выбирает, очередной, текущем, причём, ведётся, найдено, предпринимается, попытка, интерпретировать, записи, успеха, помещается, соответствует, слову, анализируется, текущее, состояния, флага, сброшен, исполняется, управление, передаётся, указателю, найденной, установлен, дописывается, текущую, создаваемую, оттранслировано, оно, снимается, исполнение, словарной, помещает, немедленный, исполняются, литеральный, compile, token, транслятором, условно, разделить, первого, типа, кодах, целевого, непосредственно, выполняющую, располагаются, передаваемые, процедуре, параметры, указатели, специальную, называемую, практике, зависит, похожа, рассмотренную, выше, принцип, используемый, threaded, code, шитый, предыдущую, связи, содержит, имя, идентификатор, флагов, типичной, основная, вызывается, выполнения, специфических, функций, определении, определённых, скомпилированы, отличаются, форме, имелись, статьёй, связный, список, ежегодно, проводятся, конференции, числе, россии, англии, австрии, германии, испании, чехии, чехословакии, домашние, игры, созданные, были, написаны, 1986, системного, 1987, использовался, canon, cat, worms, electronic, arts, процессоры, контроллеры, поддерживающие, вычислительную, модель, аппаратном, уровне, создано, аппаратных, отдельные, отметить, прежде, основанную, британскую, ltd, поставляют, различные, своим, возможностям, коммерческие, открытых, чак, гешке, создали, несмотря, сходство, отмечал, оказал, диалект, базовом, базе, процессоров, powerpc, sparc, openboot, известный, успешного, глубоководного, спускаемого, аппарата, поисках, применён, спектрографа, микромодулях, искусственными, спутниками, земли, автоматизации, анализа, крови, кардиологического, контроля, карманных, переводчиках, компьютерного, зрения, аэропорту, рияда, шаттле, 1985, титаника, текущий, продолжительного, согласования, участвовали, заинтересованные, организована, соответствующая, российская, председатель, проф, сейчас, общей, спииран, санкт, петербург, осенью, состоялась, утверждённого, 1984, некоторыми, деталями, существу, октябре, острове, закончилась, разработкой, распространяется, всех, калифорния, санта, каталина, феврале, ориентированный, реализацию, микрокомпьютеры, утрехте, 1978, идея, официальной, стандартизации, первоначально, возникла, рамках, международного, объединения, астрономов, мае, 1977, встрече, выработан, обозначенный, глоссарий, китт, пик, astronomical, sciences, программистами, заинтересованными, развитии, interest, группой, разработана, концепция, model, общедоступной, перенесена, популярные, эталонную, рассматривают, первоначальный, вновь, созданный, позднее, 1973, основали, ходе, которой, течение, десятилетия, портирован, американском, астрономическом, обществе, участвуя, сбора, обработки, получаемых, тогда, первая, работе, участвовала, сотрудница, которую, считать, вторым, мире, elizabeth, радиотелескопом, радиоастрономической, создан, 1960, назвал, свой, считая, четвёртого, поколения, машине, допускала, имена, составленные, пяти, прописных, букв, название, преобразовано, вперёд, впрочем, первые, эксперименты, созданию, простого, облегчающего, написание, астрономическим, оборудованием, относятся, концу, 1950, ibm, 1130, ряд, свойств, гибкость, простота, разработки, делают, эффективным, языком, прикладных, исследованиях, создании, инструментальных, очевидными, областями, являются, счёт, простоты, зачастую, реализуется, подавляющего, применяется, под, управлением, самостоятельная, операционная, среда, компьютеров, кросс, средство, микроконтроллеров, встраиваемые, интерактивность, первых, записываются, последовательностью, терминологии, математические, выражения, представляются, записью, нотации, механизмы, метарасширения, адаптации, нужной, предметной, базового, уровня, прост, единственного, правила, разделяются, иметь, любое, сочетание, семантики, стековой, постфиксной, конкатенативных, медиафайлы, викискладе, повлиял, апл, испытал, standart, retroforth, pforth, kforth, gforth, бестиповый, автор, год, появился, компилируемый, интерпретируемый, класс, императивный, пояснения, обсуждения, полностью, переписана, путать, термина, навигации, перенаправлено, материал, свободной, энциклопедии, http, archive, 20230326121449, wiki, timestamps, about, this, capture, fail, success, 2024, 2023, apr, mar, aug, 2026, captures,
Text of the page (random words):
системы это связный список слов или словарь из которого слово вызывается по имени для выполнения специфических функций программирование на форте состоит в определении новых слов на основе слов определённых в словаре ранее как только новые слова скомпилированы в словарь они не отличаются по форме от слов которые в нём уже имелись описание слова в словаре называется статьёй структура типичной статьи словаря форта поле имени содержит имя статьи идентификатор слова в виде строки со счётчиком а также несколько флагов поле связи указатель на предыдущую статью поле кода указатель на код для интерпретации статьи поле параметров семантика слова в зависимости от поля кода условно статьи форта можно разделить на две категории низкоуровневые статьи и форт статьи статьи первого типа содержат в поле кода указатель на процедуру в кодах целевого процессора непосредственно выполняющую семантику слова в поле параметров таких статей располагаются передаваемые процедуре параметры либо сам её код форт статьи содержат в поле параметров указатели на другие статьи а поле кода указывает на специальную процедуру называемую интерпретатором ссылок на практике структура статьи зависит от реализации но как правило похожа на рассмотренную выше принцип используемый внутри поля параметров форт статьи называется шитый код англ threaded code а интерпретатор ссылок виртуальной форт машиной грамматически текст обрабатываемый транслятором форта представляет собой последовательность лексем англ token разделённых пробелами и символами конца строки транслятор входной строки выбирает очередной токен и производит его поиск в текущем словаре причём поиск ведётся от более новых слов к старым если слово не найдено предпринимается попытка интерпретировать токен в качестве записи числа которое в случае успеха помещается на вершину стека если же токен соответствует слову форта анализируется текущее состояния флага compile форт системы если флаг сброшен то слово исполняется управление передаётся по указателю поля кода найденной статьи если флаг установлен слово компилируется то есть указатель на его поле кода дописывается в текущую создаваемую статью если было оттранслировано число оно снимается со стека и компилируется в литеральный код исполнение которого внутри словарной статьи помещает число на вершину стека кроме того слова могут содержать флаг immediate немедленный в этом случае они всегда исполняются механизм передачи параметров между словами через стек данных через ячейки памяти через именованные локальные переменные стандарт 1994 года язык предоставляет способ работы с памятью системы как с линейной областью обязательным компонентом системы является также стек возвратов доступен программно для изменения потока управления программы всё вышесказанное относится к понятию форт только в первом приближении форт это не совсем язык программирования вернее он перекрывает понятие языка программирования форт в большей степени является виртуальной машиной и операционной системой forthos 14 синтаксис и семантику форта можно расширить до любого другого языка программирования прямо во время интерпретации компиляции форт программы использовать форт в качестве метаязыка удобно благодаря доступности средств форта поддерживающих те языки которые уже есть в форт системе все ресурсы форт системы доступны пользователю и представлены в виде словарных статей как правило словарные статьи определённые пользователем имеют точно такое же представление в форт системе как и все остальные словарные статьи из которых и состоит вся форт система типы кода форта править править код в качестве машинного представления скомпилированной форт программы используется тот или иной вид шитого кода при использовании подпрограммного кода получается машинный код в котором по сравнению с кодом сгенерированном компилятором обычного языка программирования где на единственный стек кладутся и переменные и адреса возвратов из подпрограмм отсутствуют операции по перетаскиванию параметров подпрограмм в качестве стека возвратов используется основной стек процессора стек данных организуется программно при использовании шитого кода отличающегося от подпрограммного определения форта состоящие только из машинного кода называются примитивы в таком шитом коде часто стараются использовать основной стек процессора в качестве стека данных а обращения к данным лежащим на нём в виде машинных команд pop и push одно из не совсем очевидных преимуществ использования косвенного шитого кода в том что весь машинный код то есть примитивы вызовы интерпретатора кода и переменных могут размещаться в одном сегменте кода который будет недоступен для изменения весь остальной код форта размещается в сегменте данных этих сегментов может быть много а работать с единственным номером сегмента легче чем с двумя форт системы могут также использовать байт код как логическое завершение развития косвенного шитого кода и свёрнутого шитого кода с адресной таблицей в этом случае код программы форта представляет собой последовательность байтов или код некоторого придуманного виртуального процессора для исполнения этого кода должна существовать таблица на 256 адресов 2 байтовых 4 или 8 байтовых по которым расположены примитивы форта или сложные определения этот вариант сильно отличается от других видов кода и заслуживает особого внимания как и в косвенном шитом коде примитивы форта могут быть расположены в едином сегменте кода защищённом от вмешательства прошитом в пзу примитивы зависят от конкретной платформы и могут быть выполнены в виде отдельного блока вся остальная часть форта является платформонезависимой и переносимой на любую машину вокруг таблицы на 256 определений группируется отдельный словарь лексикон предназначенный для конкретной задачи или группы задач эти 256 определений занимают места не более 64к то есть таблица может содержать 2 байтовые адреса смещения относительно начала словаря байтовый код позволяет расширить количество определений за счет древовидной структуры словарей до любой величины сохраняя минимальные размеры программы байтовый код может быть стандартизован как и для java такой код может быстро пересылаться по сети и исполняться на машинах с любой платформой байтовый код позволяет эмулировать любой процессор или программную систему и выполнять отладку разработанных для них программ примеры программ править править код привет мир пример определения слова sign печатающего соответствующую фразу в зависимости от знака числа на вершине стека напечатать знак числа sign n dup 0 if ноль else 0 if положительное число else отрицательное число then then пример реального кода создающего строчную константу в принятом в форт виде со счётчиком создать константу из строки s constant c addr u spaces name create dup 0 do dup c c char loop drop 0 c does dup cell swap в этом примере создаётся определение слова name с помощью слова create при исполнении слова name на стек будет положен адрес указателя области памяти который был во время компиляции слова для того чтобы его можно было как то использовать туда записывается компилируется строка при выполнении слова выполняются слова указанные после слова does таким образом в этом примере была создана новая синтаксическая конструкция подобные возможности редко представлены в других языках программирования кроме создания новых синтаксических конструкций одной из самых сильных возможностей форта является возможность вмешиваться в процесс компиляции с помощью слов немедленного исполнения immediate слов примеры таких стандартных слов временное переключение в режим исполнения фактически часто просто записывает 0 в переменную state переключиться обратно в режим компиляции literal компилировать число в данный момент лежащее на вершине стека как константу также является словом немедленного исполнения пример кода где используются эти слова некоторый размер данных в килобайтах 16 constant size напечатать отчёт о пересчёте килобайтов в байты report size килобайт эквивалентны size 1024 literal байтам особенности языка forth править править код в разделе не хватает ссылок на источники см рекомендации по поиску информация должна быть проверяема иначе она может быть удалена вы можете отредактировать статью добавив ссылки на авторитетные источники в виде сносок 21 сентября 2014 одна из постоянных тем споров вокруг языка форт это место которое он занимает среди классических императивных языков программы на форте имеют крайне непривычный вид программа состоит из необычной последовательности слов среди которых отсутствуют так называемые ключевые слова которые распознаются и обрабатываются в других языках программирования специальным образом с выходом серии фильмов звёздные войны по этому поводу появилась шутка ставшая ныне классической которая хорошо иллюстрирует данную особенность форта йоды магистра тайна речи раскрыта старым форта программистом был он просто оригинальный текст англ показать скрыть the mistery of yoda s speech uncovered is just an old forth programmer yoda was 15 приведённый пример заодно указывает на уникальную особенность форта отсутствие списка параметров в скобках и возможность программировать на родном языке использование словарных конструкций родного языка позволяет сделать программу понятной что повышает её надёжность источник не указан 2889 дней обратная польская запись арифметических выражений и наличие нескольких стеков двойственная природа компилятора форта нельзя утверждать однозначно является ли форт компилятором или интерпретатором практически всегда его можно использовать в двух режимах за исключением редких случаев вроде целевой компиляции трансляции в машинный код программы для системы с иной архитектурой отсутствие системы типов подобно языкам ассемблера в форте нет встроенной системы типов нет возможности узнать что лежит на вершине стека число со знаком число без знака указатель на строку символ или два числа рассматриваемых как одно длинное число контроль типов возлагается на программиста при этом используются специальные наборы слов например запись и чтение ячеек памяти производят словами и а символов словами c и c некоторые сущности выносятся в специальные стеки например стек чисел с плавающей запятой согласно стандарту ansi forth 94 он может быть а может и не быть реализован с помощью основного стека эти особенности и определяют преимущества и недостатки языка форт опытный программист знакомый с системой команд и архитектурой процессора может написать ядро форт системы за несколько дней свобода предоставляемая программисту требует сильного самоконтроля входной порог для программирования на форте ниже чем у классических языков программирования но требует привыкания и понимания не только возможностей и особенностей синтаксиса форта но также понимания философии лежащей в его основе форт не поддерживает никакую парадигму программирования и поддерживает их все одновременно написать набор слов для организации ооп в программе на форте а их может быть одновременно несколько и они будут отлично уживаться вместе гораздо проще чем решить какие возможности от этого набора слов требуются разбиение программы на множество мелких слов позволяет легко и быстро проверять их по отдельности передавая им нужные наборы входных параметров и контролируя то что остаётся на стеке фактически это означает что для тестирования какого то компонента программы можно не загружать все зависимые компоненты целиком большинство реализаций форта позволяют сделать декомпиляцию программы полученный текст мало отличается от исходного форт позволяет реализовать любую технологию программирования доступную в других языках и системах в нём также допустимы приёмы запрещённые в других языках например самомодификация кода устранение негативных последствий этих приёмов путём создания правильного лексикона стимулирующего грамотную методику их использования также возложено на программиста размер кода форта для 16 разрядных систем при грамотном написании программы иногда в 10 20 раз меньше кода скомпилированного из программы на си для 32 разрядных систем этот разрыв ещё больше в операционных системах общий выигрыш может составлять уже сотни а то и тысячи крат причина очень простая готовая задача на форте имеет размер несколько байт все вспомогательные подпрограммы реализованы в виде определений доступных всем система на форте вместится в процессор в который другие системы влезть в принципе не способны синхронизация процессов и потоков в многозадачных системах переключение контекста реализация доступа к ограниченным ресурсам сложнейшие проблемы при написании ос для поддержки этих возможностей даже создаются специальные команды в микропроцессорах для интерпретатора это вообще не проблема поскольку он эмулирует любой процессор и любую необходимую команду возможно что на самом деле больше всего развитию форта препятствует тяжёлое наследство пришедшее от машин с низкими возможностями для которых он изначально создавался в стандарте ansi forth 94 существуют например следующие особенности переносимая программа должна предполагать что стек чисел с плавающей запятой может быть реализован с использованием основного стека к счастью для большинства современных компиляторов это не так но сам факт наличия такого пункта в стандарте создаёт определённые неудобства при программировании с активным использованием арифметики с плавающей точкой эту норму стандарта традиционно игнорируют аналогичная норма существует относительно стека потока управления здесь всё не так просто так как часто это именно так и есть в процессе компиляции стек используется самим компилятором в абсолютном большинстве случаев никакого влияния на программу это не оказывает но про саму особенность надо помнить например если вы хотите в процессе компиляции вычислить какое то число за пределами начала определения а потом вставить его в слово как константу то для этого придётся использовать какой либо обходной путь определения многих слов в стандарте слишком низкоуровневые например слово 2 производит не умножение на два как следует из его названия а смещает число на один бит к старшему двоичному разряду заполняя младший бит нулём конечно на большинстве современных машин это одно и то же но сам факт использования особенностей конкретной архитектуры настораживает существуют также более очевидные стандартные слова для сдвига битов lshift и rshift многие из этих особенностей следствие того что на момент принятия стандарта существовало множество плохо совместимых форт систем которые базировались на двух частично различающихся стандартах 1979 и 1983 годов см также править править код реализации языка forth языково ориентированное программирование стек стек вызовов стековый язык фортран диалекты colorforth factor язык программирования приложения axiom development kit примечания править править код проект sp forth на сайте sourceforge net win32forth project group неопр дата обращения 18 августа 2006 архивировано 13 августа 2006 года c h moore e d rather d r colburn the evolution of forth неопр acm sigplan notices volume 28 no 3 march 1993 history of programming languages confer...
|