Компилятор forth для windows


Содержание

Компилятор forth для windows

Для создания программ на Си необходим текстовый редактор, с помощью которого можно набрать исходный код. И также необходим компилятор, который принимает файл с исходным кодом на Си и компилирует его в исполняемый файл.

В качестве компилятора мы будем использовать наиболее популярный на сегодня компилятор gcc, который доступен для разных платформ. Более подобному информацию о GCC можно получить на официальном сайте проекта https://gcc.gnu.org/.

Набор компиляторов GCC распространяется в различных версиях. Одной из наиболее популярных версий является пакет средств для разработки от некоммерческого проекта Mingw-w64. Для установки соответствующего пакета компиляторов загрузим файл установщика по ссылке https://sourceforge.net/projects/mingw-w64/files/latest/download

При запуске установщика откроется следующее окно:

Нажмем на кнопку Next > и перейдем к следующему шагу:

Если версия ОС 64-битная, то в поле Architecture следует выбрать пункт x86_64 . Остальные настройки оставим по умолчанию и нажмем на кнопку Next > . На следующем шаге укажем путь, по которому будет устанавливаться пакет:

Можно оставить настройки по умолчанию. И после перехода к следующему шагу собственно начнется установка.

После завершения установки на жестком диске по пути, которое было выбрано для установки, появятся все необходимые файлы компиляторов. В моем случае они находятся по пути C:\Program Files (x86)\mingw-w64\i686-7.1.0-posix-dwarf-rt_v5-rev0\mingw32\bin :

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

В частности, файл gcc.exe как раз и будет представлять компилятор для языка Си.

Далее для упрощения запуска компилятора мы можем добавить путь к нему в Переменные среды. Для этого перейдем к окну Система -> Дополнительные параметры системы -> Переменные среды :

И добавим путь к компилятору:

Итак, компилятор установлен, и теперь мы можем написать первую программу. Для этого потребуется любой текстовый редактор для набора исходного кода. Можно взять распространенный редактор Notepad++ или даже обычный встроенный Блокнот.

Итак, создадим на жестком диске папку для исходных файлов. А в этой папке создадим новый файл, который назовем hello.c .

В моем случае файл hello.c находится в папке C:\c.

Теперь определим в файле hello.c простейший код, который будет выводить строку на консоль:

Для вывода строки на консоль необходимо подключить нужный функционал. Для этого в начале файла идет строка

Директива include подключает заголовочный файл stdio.h, который содержит определение функции printf, которая нужна для вывода строки на консоль.

Далее идет определение функции int main(void) . Функция main должна присутствовать в любой программе на Си, с нее собственно и начинается выполнение приложения.

Ключевое слово int в определении функции int main(void) говорит о том, что функция возвращает целое число. А слово void в скобках указывает, что функция не принимает параметров.

Тело функции main заключено в фигурные скобки <>. В теле функции происходит вывод строки на консоль с помощью функции printf, в которую передается выводимая строка «Hello world!».

В конце осуществляем выход из функции с помощью оператора return . Так как функция должна возвращать целое число, то после return указывается число 0. Ноль используется в качестве индикатора успешного завершения программы.

После каждого действия в функции ставятся точка с запятой.

Теперь скомпилируем этот файл. Для этого откроем командную строку Windows и вначале с помощью команды cd перейдем к папке с исходным файлом:

MinGW — бесплатный С и С++ компилятор для Windows

MinGW — Minimalist GNU for Windows, это портированная под Windows коллекция бесплатных С и С++ компиляторов GCC, предназначенных для создания программного обеспечения для системы Windows.

Предоставляет полный набор инструментов для компилирования и линковки программ без использования каких либо платных библиотек или инструментов.

Все утилиты предназначены для работы из командной строки, но могут использоваться такими популярными IDE как NetBeans, Eclipse и DevCPP, которые предоставляют графический интерфейс к компиляторам GCC.

Обзор GCC

GCC — GNU Compiler Collection, первый С компилятор с открытым исходным кодом, он был выпущен в 1987 г. Возможность создавать С++ программы была добавлена в 1992 г.

Впоследствии функциональность компилятора была расширена и включена поддержка таких языков программирования как Objective-C, Java, Fortran, ADA и другие.

GCC — очень мощный инструмент, распространяемый под лицензией GNU GPL (GNU General Public License), написан на языке С и в данный момент является кроссплатформенным — может работать практически под любой современной операционной системой и компилировать программы под различные типы процессоров, в том числе для микроконтроллеров, портативных устройств и 64-разрядных процессоров.

Установка MinGW

Официальный сайт MinGW http://www.mingw.org. Чтобы скачать комплект, перейдите на страницу http://sourceforge.net/downloads/mingw, вам понадобится файл «mingw-get-inst» с расширением EXE.

Для установки требуется подключение к сети интернет.

Запустите установщик, он скачает и установит все необходимые файлы.

Диалог сообщает нам, что программа запущена администратором компьютера и будет установлена для всех пользователей.

На этом этапе укажем загружать последнюю версию программного обеспечения.

Соглашаемся с условиями лицензионного соглашения и жмём «Next».

Укажем путь для установки. Не рекомендуется устанавливать в директорию или субдиректорию имеющюю в своём имени пробелы.

Рзмещайте все файлы по стандартному пути, например, «C:\MinGW».

Настройка ярлыков, можно оставить как есть и нажать «Next».

Выбор компонентов для установки.

В данном случае выбраны компилятор С и С++, инструменты для разработки и комплект утилит командной строки — MSYS.

Если всё выбрано правильно, жмём «Install».

Начало установки — ожидаем начала загрузки компонентов.

Автоматически запускается консольное окно, в котором отражается весь ход процесса — в данный момент загружаются списки пакетов.

В следующем окне мы можем наблюдать за прогрессом загрузки.

Установка окончена, если вы не хотите читать подробный отчёт о процессе установки, снимите галочку.

Закройте окно установщика — нажмите «Finish».

Нам потребуется значение переменной PATH, там должны быть прописаны пути к папкам с исполняемыми файлами MinGW и MSYS, в данном случае это директории «C:\MinGW\bin» и «C:\MinGW\msys\1.0\bin».

Если эти значения не были автоматически добавлены в переменную в процессе установки, допишите их вручную, добавте в начало строку «C:\MinGW\bin;C:\MinGW\msys\1.0\bin;», только без кавычек.

Если в вашей операционной системе отсутствует переменная PATH, то создайте её самостоятельно.

Теперь, когда все инструменты установлены, можно использовать GCC компиляторы в режиме командной строки или настроить их использование в своей IDE.

Бесплатные компиляторы и интерпретаторы C / C++

C — это простой процедурный язык программирования общего назначения. Он достаточно прост в освоении. В то же время он мощный, чтобы его можно было использовать для создания любой компьютерной программы.

C++ — это объектно-ориентированный язык программирования, который изначально был создан как надмножество C . Языки C и C++ являются одними из самых популярных технологий, используемых для написания программ.

В этой статье перечислены бесплатные компиляторы C и C++ для различных операционных систем.

Бесплатные компиляторы и интерпретаторы C, C++ для компьютеров

Open Watcom V2 Fork

Он может работать и создавать исполняемые файлы под Windows ( 16-разрядные, 32-разрядные и 64-разрядные версии ), Linux ( 32-разрядные и 64-разрядные версии ), OS / 2 и MS-DOS ( 16-разрядные и 32-разрядные режимы ). Стоит пояснить, что Watcom — это был известный коммерческий компилятор, пока первоначальные разработчики не прекратили его продажи и не опубликовали исходный код ( в соответствии с публичной лицензией Sybase Open Watcom ).

Microsoft Visual Studio Community

Для индивидуальных или начинающих программистов Microsoft Visual Studio Community включает в себя много важных инструментов из коммерческих версий проекта. Вы получите в свое распоряжение IDE , отладчик, оптимизирующий компилятор, редактор, средства отладки и профилирования. С помощью этого пакета можно разрабатывать программы для настольных и мобильных версий Windows , а также Android . Компилятор C++ поддерживает большинство функций ISO C++ 11 , некоторые из ISO C++ 14 и C++ 17 . В то же время компилятор C уже безнадежно устарел и не имеет даже надлежащей поддержки C99 .

Программное обеспечение также поставляется с поддержкой построения программ на C# , Visual Basic , F# и Python . В то время, когда я писал эту статью, на сайте проекта утверждалось, что Visual Studio Community 2015 « бесплатный инструмент для индивидуальных разработчиков, проектов с открытым исходным кодом, научных исследований, образовательных проектов и небольших профессиональных групп ».

Clang: Фронтенд языка программирования C для LLVM

Clang — компилятор C , C++ , Objective C и Objective C++ , разработанный под Apple . Это часть проекта LLVM . Clang реализует различные стандарты ISO C и C++ , такие как C11 , ISO C++ 11 , C++ 14 и частично C++ 1z .

Он также поддерживает расширения, которые можно найти в семействе компиляторов C GNU . Компилятор C для Windows выпущен под лицензией BSD . К сожалению, на момент написания этой статьи, он предоставляется только в исходной форме, и вам придется собирать его самостоятельно.

MinGW-w64

Проект MinGW-w64 предоставляет библиотеки, заголовки, необходимые компиляторам C и C++ GNU для работы в системе Windows . В случае MinGW-w64 эти файлы поддержки позволяют создавать 64-битные программы в дополнение к 32-битным . Проект также предоставляет кросс-компиляторы, так что можно скомпилировать программу Windows из системы Linux .

AMD x86 Open64 Compiler Suite

Это версия набора компиляторов Open64 ( описанного ниже ), которая была настроена для процессоров AMD и имеет дополнительные исправления ошибок. Компилятор C / C++ соответствует стандартам ANSI C99 и ISO C++ 98 , поддерживает межъязыковые вызовы ( так как он включает в себя компилятор Fortran ), 32-битный и 64-битный код x86 , векторную и скалярную генерацию кода SSE / SSE2 / SSE3, OpenMP 2.5 для моделей с разделяемой памятью, MPICH2 для моделей с распределенной и разделяемой памятью; содержит оптимизатор, поддерживающий огромное количество оптимизаций ( глобальную, цикл-узел, межпроцедурный анализ, обратную связь ) и многое другое. Набор поставляется с оптимизированной AMD Core Math Library и документацией. Для этого набора компиляторов требуется Linux .

Компилятор C/C++ Open Source Watcom / Open Watcom

Является бесплатным компилятором для Windows 7 с открытым исходным кодом. Он генерирует код для Win32 , Windows 3.1 (Win16) , OS / 2 , Netware NLM , MSDOS ( 16-битный и 32-битный режим ) и т. д. Watcom был очень популярным компилятором несколько лет назад до тех пор, пока Sybase не закрыла его. Он также включает в себя довольно известный STLport ( реализация библиотеки стандартных шаблонов C++ ). Обновление: этот проект, похоже, застопорился, и в настоящее время запущен новый проект Open Watcom V2 Fork ( описан выше ).

Компилятор Digital Mars C/C++ (замена Symantec C++)

Digital Mars C / C ++ является заменой Symantec C++ с поддержкой компиляции программ для Win32 , Windows 3.1 , MSDOS и 32-разрядных расширенных MSDOS . Если используемый ПК не имеет процессора с плавающей запятой ( машины pre-Pentium ), можно связать эмуляцию с плавающей запятой в вашей программе. Компилятор поддерживает определение C++ из аннотированного руководства по C++ ( ARM ) и расширенные функции языка AT & T версии 3.0 , включая шаблоны, вложенные классы, вложенные типы, обработку исключений и идентификацию типа во время выполнения.

UPS Debugger (интерпретатор C)

Это графический отладчик уровня исходного кода для X Window , который содержит встроенный интерпретатор языка C . Он может обрабатывать один или несколько исходных файлов. Можно использовать его для создания исполняемого файла с байтовым кодом и выполнения интерпретатора в этом исполняемом файле. Если вам нужен интерпретатор для отладки или создания прототипов программ, или просто для изучения языка, попробуйте этот инструмент. Он поддерживает следующие платформы: Solaris , SunOS , Linux , FreeBSD , BSD / OS и некоторые другие Unix-платформы .

The BDS C Compiler

Помните старый ( популярный ) компилятор C BDS для систем CP / M 8080 / Z80 ? В настоящее время этот компилятор языка C находится в публичном доступе, в комплекте с исходным кодом языка ассемблера. Пакет представляет собой розничную версию компилятора с компоновщиком и руководством пользователя. Его можно использовать для простой генерации кода 8080/8085 / Z80 для встраиваемых систем ( то есть создавать собственные процедуры для замены любого кода библиотеки, который обращается к функциям операционной системы ).

Компилятор C / C++ Bloodshed Dev

Это интегрированная среда разработки Win32 , включающая в себя компилятор C++ egcs и отладчик GNU из среды Mingw32 . А также редактор и другие средства, облегчающие разработку программ с использованием компилятора Mingw32 gcc на платформе Windows . Он также содержит программу установки для приложений.

Компилятор C Orange

Он работает как в Windows , так и в DOS , имеет интегрированную среду разработки с редактором программ ( с подсветкой синтаксиса и автоматическим завершением кода ). Он может генерировать программы для Win32 и MSDOS , а также файлы Intel и Motorola hex ( что полезно, если вы пишете программы для встроенных систем ). Для вывода MSDOS ваши программы будут использовать расширитель DOS .

DeSmet C

DeSmet C должен быть знаком тем, кто программировал на C в 1980-х годах. Это компилятор C для MSDOS . Он был выпущен под лицензией GNU GPL и поставляется с руководствами, редактором и сторонним оптимизатором.

Apple Xcode для Mac OS X

Xcode — это интегрированная среда разработки Apple , которая включает в себя редактор с подсветкой синтаксиса, систему управления сборкой, отладчик, компилятор C GNU ( gcc ), конструктор интерфейса, AppleScript Studio , поддержку разработки на Java , инструменты разработки WebObjects . Чтобы получить в свое распоряжение данные инструменты необходимо быть участником Apple Developer Connection ( ADC ) . Но онлайн-членство является бесплатным.

Tiny C Compiler — самый компактный Linux C компилятор

Этот небольшой компилятор C для Linux и Windows генерирует оптимизированные двоичные файлы x86 . Утверждается, что он собирает, компонует и связывает код в несколько раз быстрее, чем GCC . В настоящий момент разработчики стремятся обеспечить соответствие ISO C99 . Компилятор также включает необязательную проверку границ. Он обрабатывает файлы скриптов C ( просто добавьте в Linux shebang код #!/usr/local/bin/tcc -run в первую строку исходного кода на C , чтобы он выполнялся напрямую ). TCC распространяется под лицензией GNU General Public License .

Portable Object Compiler

Это набор библиотек классов и компилятор Objective C , который преобразует код Objective C в простой C-код . Работает на Windows , Linux , OS / 2 , Macintosh и т. д.

C & C++ компиляторы Mingw32

Эта система поставляется с компилятором GNU C / C++ , который можно использовать для создания исполняемых файлов Win32 . Она содержит собственный , который находится в открытом доступе. Предполагается, что приложения, созданные с использованием этой системы, будут быстрее, чем, те которые созданы с помощью Cygwin32 , и они не ограничиваются положениями лицензии GNU . Mingw32 поставляется с инструментами для обработки текста ( sed, grep ), генератором лексического анализатора ( flex ), генератором парсеров ( bison ) и т. д. Mingw32 также поставляется с компилятором ресурсов Windows .

Компилятор C / C++ GNU

На странице компилятора C GNU можно получить ссылки на бинарные файлы и исходный код для компилятора GNU C . Также можно использовать приведенные в этой статье ссылки на наиболее часто запрашиваемые бинарные версии ( MSDOS и Win32 ).

Компилятор C Pelles

Еще один компилятор C , основанный на LCC ( смотрите также LCC-Win32 ). Он включает в себя компилятор C , компоновщик, компилятор ресурсов, сообщений, утилиту make и другие инструменты. Он компилирует код для Windows и Pocket PC .

Компилятор C Compaq

Пользователи Linux / Alpha теперь могут бесплатно скачивать и использовать компилятор Compaq , просто заполнив форму и приняв лицензионное соглашение. Компилятор может использоваться для генерации любых программ, коммерческих или иных. Он включает в себя математическую библиотеку и отладчик ( ladebug ), перенесенный из True64 Unix . Он поставляется с обычными справочными страницами, а также справочником по языку и руководством программиста.

Интерпретатор C / C++ Ch Embeddable (стандартная версия)

Интерпретатор C / C++ , поддерживающий стандарт ISO 1990 C ( C90 ), основные функции C99 , классы C++ , а также расширения к языку С , такие как вложенные функции, строковый тип и т. д. Он может быть встроен в другие приложения и аппаратные средства, использоваться в качестве языка сценариев. Код C / C++ интерпретируется напрямую без компиляции промежуточного кода. Поскольку этот интерпретатор поддерживает Linux , Windows , MacOS X , Solaris и HP-UX , созданный вами код можно перенести на любую из этих платформ. Стандартная версия бесплатна для личного, академического и коммерческого использования. Для загрузки пакета необходимо зарегистрироваться.

Компиляторы C и C++ DJGPP

Это система разработки, основанная на хорошо известном компиляторе C / C++ GNU . Она генерирует 32-разрядные исполняемые файлы MSDOS , которые являются файлами с длинными именами Windows 95 . Это очень функциональная система с IDE , графическими библиотеками, генераторами лексического анализатора ( flex ), генераторами парсеров ( bison ), утилитами обработки текста и так далее. Компилятор языка C , утилиты и библиотеки поставляются с исходным кодом.

Cilk — ANSI компилятор на основе C

Cilk — это язык на основе ANSI C , который может использоваться для многопоточного параллельного программирования. Это особенно эффективно для использования динамического, высоко асинхронного параллелизма в стиле параллельных данных или передачи сообщений. На официальном сайте упоминается, что Cilk уже используется для разработки трех шахматных программ мирового класса: StarTech , Socrates и Cilkchess .

Sphinx — компилятор C—

Это своего рода сочетание компилятора C и ассемблера, который позволяет « создавать программы с возможностями и читабельностью C , сохраняя при этом эффективность языка ассемблера ». Он может создавать исполняемые файлы MSDOS или файлы .OBJ , которые можно применять вместе с другими компоновщиками для создания исполняемого файла. По приведенной выше ссылке можно найти исходный код и документацию для компилятора. Если вы хотите получить предварительно скомпилированный бинарный файл, это можно сделать на неофициальном сайте компилятора C— Sphinx .

Компилятор C LSI C-86

Сайт этого компилятора написан на японском языке. Он выглядит как кросс-компилятор, позволяющий генерировать код для ROM . Старая версия компилятора ( 3.30c ) предоставляется бесплатно. Бесплатная версия работает только на MSDOS .

Кросс-компилятор C SDCC

Это кросс-компилятор C , предназначенный для микропроцессоров Intel 8051 , DS390, Z80, HC08 и PIC. Он также может быть переназначен для других 8-битных микроконтроллеров или ОСТО . SDCC поставляется с перенастраиваемым ассемблером и компоновщиком, отладчиком исходного уровня и симулятором. Библиотеки совместимы со стандартом C99 . Исходный код для компилятора доступен под лицензией GPL . Поддерживаются такие платформы, как Linux , Windows , Mac OS X , Alpha , Sparc и другие.

Компилятор C LADSoft CC386

Это компилятор ANSI C для MSDOS / DPMI и Win32 , который поставляется с библиотекой среды выполнения, компоновщиком, отладчиком, DOS-расширителем ( версия MSDOS ), IDE ( версия Win32 ) и утилитой make . Также доступен исходный код. При работе в режиме совместимости с C99 он компилирует большинство конструкций C99 .

Проект Cygwin (компиляторы C и C ++)

Этот «проект» включает в себя коммерческий компилятор ( GNU C / C++ ), который генерирует графический интерфейс Win32 и консольные приложения. Предоставляется исходный код компилятора, библиотек и инструментов. Обратите внимание, что опция по умолчанию в этом пакете требует от вас распространять исходный код, если вы компилируете и связываетесь со своими библиотеками. Существует также специальная вызываемая опция, которая задает возможность связи с альтернативными библиотеками, позволяя распространять свои приложения без источников.

Компилятор C LCC-Win32

Это компилятор C для Windows , который генерирует графический интерфейс Win32 и консольные приложения. Он поставляется со своим собственным компоновщиком, IDE , отладчиком, редактором и компилятором ресурсов. LCC- Win32 основан на компиляторе LCC и является бесплатным только для некоммерческого использования.

LCC — перенанаправляемый компилятор для ANSI C

LCC — это компилятор C ( только исходный код ), который генерирует код для Alpha , Sparc , MIPS R3000 и Intel x86 . Он является основой как минимум для двух других компиляторов Win32 C ( также описанных выше ).

Cyclone C

Cyclone C не является компилятором ANSI C в строгом значении, а представляет собой компилятор « безопасного диалекта » C . Он обеспечивает безопасность типов, имеет множество проверок для защиты от переполнения буфера, связанных с массивами нарушений и т. д. В настоящее время он работает на Linux и Windows ( в последнем случае через Cygwin ), для него требуется наличие в системе инструментов компиляции GNU .

Leonardo IDE

Это IDE на базе Macintosh , компилятор и отладчик для программ на C . Он включает в себя редактор с подсветкой синтаксиса, ANSI C компилятор, компилятор для языка визуализации ALPHA , редактор графов, обратимый виртуальный процессор и т. д.

Обратите внимание, что программы в код, который будет выполняться для виртуального ЦПУ. Виртуальная машина и отладчик позволяют выполнять код вперед и назад и поддерживать многозадачность. IDE поставляется с анимированными алгоритмами, примерами исходного кода таких игр, как Tetris , Checkers и других. IDE полезна для проверки и отладки исходного кода, поиска процессов, неэффективно использующих память и т. д.

Примечание: этот проект был прекращен.

Turbo C 2.01

Старый, но проверенный Turbo C 2.01 для DOS доступен бесплатно по решению новых владельцев Borland . Это был популярный компилятор C во времена MSDOS , известный своей быстрой сборкой, интегрированной средой разработки (« IDE ») и графической библиотекой ( DOS ).

Данная публикация представляет собой перевод статьи « Free C/C++ Compilers and Interpreters » , подготовленной дружной командой проекта Интернет-технологии.ру

C compiler for Windows? [closed]

I’m fine working on Linux using gcc as my C compiler but would like a Windows solution. Any ideas? I’ve looked at Dev-C++ from Bloodshed but looking for more options.

22 Answers 22

You can use GCC on Windows by downloading MingW (discontinued) or its successor Mingw-w64.

You can get Visual C++ Express Edition straight from Microsoft, if you want something targeting Win32. Otherwise MinGW or lcc, as suggested elsewhere.

bs/bs_faq.html#C-is-subset I think the worst part is the sizeof() mismatches for chars and ints, plus the added keywords in C++. – Alex M Sep 22 ’08 at 18:41

GCC is ubiquitous. It is trusted and well understood by thousands of folks across dozens of communities.

Visual Studio is perhaps the best IDE ever developed. It has a great compiler underneath it. But it is strictly Windows-only.

If you’re just playing, get GCC —it’s free. If you’re concerned about multiple platfroms, it’s GCC. If you’re talking serious Windows development, get Visual Studio.

You could always just use gcc via cygwin.

There is another free C compiler for Windows: Pelles C.

Pelles C is a complete development kit for Windows and Windows Mobile. It contains among other things an optimizing C compiler, a macro assembler, a linker, a resource compiler, a message compiler, a make utility and install builders for both Windows and Windows Mobile. It also contains an integrated development environment (IDE) with project management, debugger, source code editor and resource editors for dialogs, menus, string tables, accelerator tables, bitmaps, icons, cursors, animated cursors, animation videos (AVI’s without sound), versions and XP manifests.

I personally have been looking into using MinGW (what Bloodshed uses) with the Code Blocks IDE.

I am also considering using the Digital Mars C/C++ compiler.

Both seem to be well regarded.

You may try Code::Blocks, which is better IDE and comes with MinGW GCC! I have used it and its just too good a freeware IDE for C/C++.

GCC is not technically a linux specific compiler. Its a standards compliant c/c++ compiler, and I use it for windows programs on a daily basis. Its probably best that you use it until you become more comfortable with something else.

I recommend that you use the MinGW distribution of GCC. That will compile your programs natively for windows, using a standard library, etc.

If you’re looking for an IDE, I have two recommendations. Visual Studio is the Microsoft version, and although it has its issues, it is an excellent IDE for working with the code. However, if you’re looking for something a bit more lightweight, CodeBlocks is also rather good, and has the added benefit of being able to use basically any compiler you have installed (including several forms of GCC and the Microsoft Compiler that comes with Visual Studio) and being able to open project files fro other IDEs. Plus, it runs on linux too, so you could make that transition even easier on yourself.

I personally prefer GCC, but that’s just me. If you really want the Microsoft Solution, VS is the way to go.

Как установить компилятор gcc / g++ для Windows. Установка gcc

15 декабря 2020

Время чтения: 5 минут

Для того, чтобы писать программы на C/C++ обычно достаточно установить какую-нибудь интерактивную среду разработки (IDE), например, Visual Studio или Eclipse, однако иногда (обычно в целях обучения студентов) требуется создавать программы в обыкновенном текстовом редакторе и компилировать приложение, используя консоль и компилятор gcc. В Unix системах он обычно установлен прямо «из коробки», а вот на Windows системах такой роскоши не наблюдается. Более того, у многих пользователей возникает множество проблем при установке компилятора. Поэтому нами было принято решение написать данную статью, чтобы помочь всем тем, кому пришлось или приходится мучаться с установкой этого компилятора на Windows.

Кстати, если вдруг на вашей Unix системе не установлен GCC, то поставить его можно командой sudo apt install gcc , введя свой пароль и согласившись на установку.

0. Прежде чем поставить компилятор GCC

Перед тем как приступить к установке этого компилятора на ваш компьютер, убедитесь в том, что GCC ещё не установлен на нём. Для этого откройте консоль (нажмите Win + R, введите в появившемся окне cmd и нажмите клавишу Enter) и введите следующую команду: gcc —version и нажмите Enter. Если компилятор уже установлен, то выполненная команда выдаст примерно следующую информацию:

Если в окне консоли появилось сообщение с версией компилятора и другая информация о GCC (второй скриншот), значит компилятор уже установлен и больше дополнительно ничего делать не нужно. А вот если вывод командной строки такой:

— значит GCC ещё не установлен в системе, поэтому двигаемся дальше.

1. Скачиваем установщик компилятора

Чтобы поставить GCC на операционную систему Windows, необходимо скачать установочный файл для него. Сделать это можно здесь: equation.com/servlet/equation.cmd?fa=fortran. Найдите в таблице версию компилятора, которая вам больше нравится (мы рекомендуем скачивать самую последнюю, на текущий момент — это версия 8.2.0) и скачайте установщик для вашей системы (32 или 64 бит).

2. Установка GCC

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

Установщик начнёт работу и отобразит окно с консолью, а также окно с бежевым фоном, в котором попросит прочесть и принять (или отклонить) лицензионное соглашение. Нажимаем Accept.

После этого установщик попросит выбрать путь для установки, предложив по умолчанию путь C:\mingw . Если вам категорически не нравится этот путь — измените его на более подходящий на ваш взгляд, в противном же случае просто нажмите Install.

Теперь остаётся только дождаться окончания распаковки архивов и установки их на компьютер. Как только все файлы будут установлены, инсталятор сообщит об этом, после чего нужно будет нажать на кнопку Finish.

3. Проверка установки

По завершении работы установщика перезагрузите компьютер и вновь откройте окно командной строки, введите команду gcc —version и нажмите Enter. На этот раз ответ от этой команды должен будет совпадать со вторым скриншотом из пункта 0. Если это не так, то скорее всего работа установщика была некорректно или преждевременно завершена, так что просто начните установку заново.

Поздравляем! Теперь на вашем компьютере установлен компилятор GCC и вы можете писать программы на языках C и C++, а компилировать их через командную строку!

4. Бонус. Компиляция программ с помощью GCC

Теперь, когда у вас установлен компилятор GCC, вы можете создавать программы на C/C++, используя только текстовый редактор и консоль. Для этого создайте новый файл и назовите его как угодно (например, hello_world). Задайте ему расширение .c вместо .txt . Напишите (или скопируйте) текст программы на С в этот файл. Откройте командную строку (Win + R, cmd) и введите следующую команду gcc hello_world.c и нажмите Enter. Если код не содержит ошибок, то результатом команды будет пустота. В противном же случае вы увидите все ошибки, который нашёл компилятор в программе с указанием места этой ошибки. При этом в проводнике появится файл a.out.exe , который будет являться исполняемым файлом для написанной программы. Чтобы запустить его введите в консоли a.out (для Unix-систем нужно писать ./a.out ) и нажмите Enter.

Что ещё за a.out? Непонятно!

По умолчанию при компиляции программ GCC в качестве результата создаём исполняемый файл с именем a.out (если такой уже есть, то b.out и т.д.). Это может быть не очень удобно, если у вас в папке лежит сразу много программ, которые нужно скомпилировать и затем запустить. Неудобно хотя бы тем, что разобраться, что такое a.out, а что такое b.out и c.out может быть непросто. Именно поэтому мы рекомендуем компилировать программы с явным указанием имени выходного файла. делается это так: gcc имя_файла.c -o имя_программы .

В результате выполнения такой программы вместо a.out будет создаваться файл с именем, заданным в имя_программы. Например, если для файла hello_world.c мы хотим получить программу hello, то компилировать нужно такой командой: gcc hello_world.c -o hello .

Используя понятные имена выходных программ (исполняемых файлов), вы гарантируете себе простоту работы и сокращение времени на разбирательство спустя долгое время.

Программист, сооснователь programforyou.ru, в постоянном поиске новых задач и алгоритмов

Языки программирования: C, C++, Pascal, C#

Студент МГУ им. М.В. Ломоносова

А Вы знаете, что мы пишем программы на C, C++, C#, Pascal и Python?

Так что если Вам нужно написать программу на C/C++, C#, Pascal или Python — мы с радостью поможем с этим!

В том числе мы занимаемся репетиторством по информатике и программированию, а также готовим к ОГЭ и ЕГЭ!

Почему именно мы?

  • Более 1800 выполненных заказов;
  • Более 170 отзывов;
  • Качественное решение
  • Короткие сроки и привлекательные цены
  • Различные акции и скидки

Как с нами связаться?

  • группа Вконтакте: vk.com/programforyou
  • наша почта: order@programforyou.ru

Programforyou — позвольте нам писать код для вас и вы получите качественное решение в короткие сроки по привлекательной цене!

Почему обречён язык Форт

Изучая язык Форт, поражаешься его простоте на грани примитивности и скорости, с которой растёт «мощь» программ. Его простота — в его концепциях, в его «внутренностях», в «дешевизне» средств, которыми можно решать сложнейшие задачи.

Что отталкивает в языке? Обратная польская запись, текст без бросающихся в глаза ориентиров… Говорят, что компилятором Форт-программы является Форт-программист. Но это — дело привычки, достаточно сделать усилие над собой, «вывернуть мозги наизнанку» — и становится легче.

Потенциально Форт — отличный кандидат для создания мультиплатформенных систем: систем операционных и систем программирования. Его ядро состоит из 200-400 слов (от 2 до 16 Кб). Написав такой маленькое ядро на ассемблере, мы получаем Форт-систему целиком плюс множество программ на Форте, которое имеем в своём распоряжении. Но имеем, к сожалению, не много…

Форт — «вещь в себе», он и не слишком нуждается в операционной системе и даже может её заменить.

Форт прямо-таки напрашивается на то, чтобы быть реализованным в «железе»! Сделать процессор, командами которого были бы команды ядра Форта, не сложнее обычного регистрового процессора с обычными командами. Но в случае Форт-процессора сразу же имеем процессор, исполняющего программу на языке высокого уровня!

Заманчиво? Перспективно? Да. Но такой заманчивости уже полсотни лет… А сколько было у Форта шансов? Последний из них — это волна мобильных устройств, где были востребованы свойства именно Форта: компактность, «автономность» и «независимость» от ОС (и потенциальная способность заменить собою эту ОС).

И что же? Этот шанс был так же упущен так же, как и предыдущие. Вряд ли в будущем Форт займёт более-менее значимую нишу. Ведь он так и не смог найти её за эти полсотни лет.

Форте крайне привлекателен своим внутренним устройством — «шитым кодом». Есть несколько разновидностей этого кода, каждый имеет свои плюсы и минусы. Но в целом потенциал этой технологии таков, что просто удивительно, почему оказались востребованы виртуальные машины с их байт кодами. «Шитый код» проще, «дешевле» и эффективнее байт-кодов. К теме «шитого кода» мы ещё вернёмся.

P.S. Относительно недавно Форт появился в новой инкарнации. Слава Пестов, наш бывший соотечественник (надеемся, что он уехал не навсегда, а лишь отъехал на безопасное расстояние), создал и развивает язык Factor. Это современная типобезопасная версия Форта. Есть у него будущее? Посмотрим, время покажет. Тем более, что у Славы ещё много времени впереди: он только в 2014 году отметил 30-летие.

Опубликовано: 2012.09.25, последняя правка: 2020.01.26 09:03

Оцените Оценки посетителей
Нравится ██████████████████████████████ 49 (71.0%)
Неплохо █████ 7 (10.1%)
Так себе ██ 2 (2.89%)
Не нравится ███████ 11 (15.9%)

Отзывы

На SP-Forth созданы программы nncron и eserv

2013/10/14 15:45, Автор сайта #

Но это не отменяет того факта, что Форт не популярен. Написаны ли на нём ОС, браузеры? Из массы ПО, которым пользуюсь я, нет ничего, что было бы написано на Форте. Не очень его жалуют разработчики. Непривычная обратная польская запись, да много чего непривычно. Меня всегда удивляло — почему в учебниках по Форту пишут, что это третий по популярности язык? Такого не было ни в 70-х, ни в 80-х годах, ни тем более сейчас. Есть масса языков с привычной формой записи, никому не охота возиться с обратной польской записью: «Вам что, трудно было сделать нормальные операторы?». Форт потенциально кроссплатформен, а есть ли на нём кросплатформенный GUI типа Qt?

А вот внутреннее устройство Форта мне симпатично. Мне кажется, технологию шитого кода недооценили. Ведь она тоже потенциально кроссплатформена!

Обратная польская запись — это некоторый условный «мифический тренд» приписываемый Форт языку. В последовательности использования цепочки слов нет ничего польского, как и в арабском языке при его восприятии. Третий не третий, но Форт направление довольно представительно в разных «ипостасях».
Синтаксис и семантика Форт языка позволяет задействовать в максимальной степени комбинаторную составляющую мышления разработчика при единообразной унифицированной форме построения программы c задействованием мощного механизма частичной параметризации кода (см. Баранов, Ноздрунов). Что действительно «отпугивает» от языка, то это использование стека, на механизмах которого построены многие цепочечные языки. Технология шитого кода это механизм компактного выполнения кода, а кросс платформенность имеется в Java байт коде.
Русскоязычный форум по Форт языку (активен с 2006г.) Много «копий» сломали в дискуссиях на этом форуме.
Проще, лаконичнее и достаточности ядра базиса «саморасширяющегося» языка трудно что-то придумать!
Некоторые варианты ОС на нём имеются, даже если не учитывать, что изначально язык сам был некоторой операционной средой, не привязанной к существующим ОС.
Форт никогда не будут популизировать — это многим не выгодно. Хотя в игре МineCraft в компьютере аддона RedPower форто-ориентированный язык встроили. Некоторые разработчики после длительного периода возвращаются к Форт с попыткой переосмысления давнего опыта его использования с привнесением синтаксического сахара, мало меняющего суть понимания языка.

GUI Qt подсоединяется к Форт mgw.narod.ru также как и GTK и tcl/tk и другие варианты в разных Форт-системах.

История появления языка Форт в СССР и России

2013/11/16 18:41, Автор сайта #

Я тут вёл речь не о Форте, как таковом, а о том, что он не популярен и вряд ли станет таковым. У Форта было много шансов, но всё — мимо. Форту пошёл пятый десяток, сколько лет ему ещё надо, чтобы он вошёл в ряд общеупотребительных? Чтобы, например, фирме JetBrains захотелось сделать >Что действительно «отпугивает» от языка, то это использование стека

Так в том же Си стек тоже используется, но там эти механизмы спрятаны, а тут «все кишки наружу». Если напишемто всё прозрачно. Мы видим, что является аргументом, что функцией, что помещалось в стек перед вызовом и что будет в стеке после вызова. Если будет записаното тут без стакана не разберёшься, что тут функция, что аргумент; что в стеке перед вызовами и что после. Надо заглядывать в определение функций. Текст программы в Форте лаконичнее. Но краткость достигается в ущерб ясности. Да, я знаю, что в таких случаях советуют писать хорошие комментарии. На это 2 возражения:
1) хорошая программа ясна без комментариев, комментарии лишают программу краткости, т.е. того, что по идее является преимуществом Форта.
2) комментарии — вещь необязательная, они не могут быть проверены компилятором на правильность. В выражении «a(b, c(d,e(f), g(h))» скобки и запятые могут рассматриваться как замена комментариям в Форте. Но, в отличие от них, они проверяются компилятором и если что-то не так, то мы об этом знаем.

Синтаксис и семантика Форт языка позволяет задействовать в максимальной степени комбинаторную составляющую мышления разработчика

Ой, знаете — очень много таких фраз можно найти на просторах Рунета. Хотите, я Вам дам ссылку на автора, который любит употреблять такие слова и фразы: «когнитивность», «интенсификация интеллекта», «математический терроризм»? А по факту, Форт задействован минимально. Он редко нравится разработчикам.

А как технология Форт хорош и, я так считаю, недооценён нашими современниками. И мне бы хотелось из него кое-что использовать. Но, правда, в другой телесной оболочке, с другой формой записи.

Думаю, что форто-подобным (примитивным и быстрым) ответом на вопрос обозначенный в заголовке данной статьи может послужить заголовок другой вашей же статьи:
Бесплатный софт в мышеловке.

Возможно вы уже читали следующую статью посвящённую вариантам реализации Форт-системы с применением различных видов ШИТОГО КОДА.
А может быть вы и сам-с-усам и вам не требуются дополнительные сторонние источники информации, тогда прошу прощения за назойливость.
Иначе — эта статья может чем-нибудь да помочь вам в вашей задаче реализации собственного компилятора программ с применением принципа шитого кода.

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

Ширее надо смотреть на вещи, господа «программисты у мамы». Промышленных роботов и конвейерные линии вон вообще программируют чаще всего на Tcl — и что, скажете тикль непопулярный (или, не дай бог, «эзотерический») язык?

2014/01/23 13:30, Автор сайта #

Вы знаете, язык ассемблера тоже незаменим (посмотрите в Яндексе). Но это строго нишевый язык. Физическая смерть ему не грозит. Но он обречён быть непопулярным: чем дальше движется шкала времени, тем меньшая доля программ пишется на нём. Всё то же можно сказать и о Форте.


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

P.S. Я программировал и на ассемблере, и на Форте, так что неплохо представляю, что это такое.

Знаете, я в середине девяностых много на ассемблере x86 под дос писал, а фортом болел на всю голову. Естественно, написал свой компилятор, с плюшками типа рекурсивное копирование слова в новый словарь, запись бинарников на диск, jit с оптимизацией машинного кода итд. Поработал с ним с мецяц. И что? В конце концов понял что ничего принципиально нового я не сделал, всё что он умеет у меня уже от кого-нибудь было и до этого. Единственный полезный опыт — стал на ассемблере шитым кодом писать, благо на x86 это достаточно удобно делать. Вот так :)

2014/02/01 14:40, Автор сайта #

Я тоже Фортом увлекался :) Помню, как вышла статья в каком-то журнале «Профессионалы выбирают Форт», даже нашёл её следы. «Поигрался» с ним, но чтобы он где-то потом потребовался для работы — такого не было.

В конце концов понял что ничего принципиально нового я не сделал, всё что он умеет у меня уже от кого-нибудь было и до этого.

Знаете, может и напрасно Вы опустили крылья. Ведь Borland тоже не изобретала Паскаль, но тем не менее достигла некоторых успехов.

А вот если бы Вы придали шитому коду некое алголоподобное обличие, да сделали бы это кроссплатформенным, то это, возможно, понадобилось кому-то ещё, кроме Вас.

Эх, напрасно Вы Borland привели в пример. Теперь он скорее памятник нежеланию двигаться в потоке мэйнстрима, посмертный увы.

2014/02/03 16:57, Автор сайта #

От чего же напрасно? Были очень популярные инструменты. Сейчас иначе. Но в нашей стране таких успехов пока никто не добивался. А жаль.

Сколько раз программисты радостно открывали Forth. и с омерзением закрывали.

Давно назрела необходимость ответить на вопрос, почему это происходит.
Без всяких модных манифестов, соплей и слюней.
Чисто по понятиям.

1. Для чего Forth предназначен?
Изначально (автором) — для написания проблемно-ориентированных языков, на которых можно будет легко описать решение задачи (желательно, самим юзером).
Все эти обратные польские записи, стеки, словари и шитые коды — следствие простоты языка и его ориентированности не на вычисления, а на «языкотворчество».
Т.е. имеем A (язык машины), пишем на коленке за неделю F (Forth), затем на нем — P (проблемно-ориентированный язык), отдаем юзеру и тот решает на P свои задачи.
Очевидно: F должен быть максимально прост (если он сравним по сложности с P, то проще сразу P реализовать) и настолько универсален, что его можно создать для любого A. Что и имеем.
Итак — Forth предназначен для сложных задач.

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

3. Куда нужно засунуть Forth-процессоры?
Что мы выиграем от того, что A=F? Практически ничего. Вот от A, ориентированного на конкретный P, мы выиграем много.
Часто, наоборот, подходящий F (для конкретного P) проще написать на обычном, а не на Forth-процессоре.
Почему же делают Forth-процессоры? Потому, что это легко. F прост, почему же не сделать-то?
Основная хитрость — Forth не существует в окончательной форме. Это не язык, а средство написания языков. И увековечивать его в железе — глупость.

Не верите? Посмотрите статьи Дейкстры (оказывается, идею Forth предложил он), Мура (автора Forth) и книги Броуди.

2014/03/09 19:10, Автор сайта #

У меня есть ещё несколько версий, почему его не любят программисты.
1) Он — вне «магистрали», где там, сбоку. Поэтому мало книг, материалов в Инете, мало такого ПО к нему, чтобы «Оп! Заработало!».
2) Нет спроса как со стороны программистов, так и предложения со стороны работодателей. Вы часто видели вакансии, где бы требовался Форт?
3) Нет какого-то стандарта де-факто от какого-то производителя ПО или сообщества программистов. Нет такого, что если мне не понравился один компилятор, то я без проблем перенесу свои разработки на другой.
4) Что нового может предложить Форт? Его идеи остановились на тех же 70-х годах. Или новое — это хорошо забытое старое? А как вы думаете, есть ли полезные идеи в функциональном или контрактном программировании? И что в этом плане может предложить Форт? Многие хотят попробовать что-то новенькое, но Форт как-то не выглядит таким новеньким.
5) Отсутствие совместимости с чем-либо. Вы, к примеру, можете писать программу на Си и Паскале, объединяя объектные модули линковщиком. Очень многие языки имеют совместимость с Си и это повышает их привлекательностью. Форт совместим только сам с собой, а если взять разные версии Форт-систем, то есть проблемы даже в совместимости с самим собой.
6) Если Форт — это не язык, а средство описания языков, то его лучше сравнивать с YACC?

Как бы большинство претензий взаимоисключающие. Даже большинство бывалых фортеров то требует от FORTH каких-то невозможных для языков программирования вещей, то возмущаются, что он не похож на обычный язык программирования.
Допустим, фортер радуется, что умудрился засунуть FORTH в какую-то совершенно не предназначенную для программирования штуку, вроде микроволновки. И рядом другой фортер возмущается отсутствием стандартов. Если даже шнуры электропитания у разных «микроволновок» разные.
Или фортер-филосов начинает измышлять метаязыковые FORTH-аксиомы, а другой, тут же по соседству, требует введения в него инфиксной записи и параметров функций.
.
А устаревшие идеи? Да, как бы, конец 70-х — это смерть кибернетики вообще (японцы, правда, ещё поимитировали бурную деятельность до 92-го). С тех пор ничего и не было. Новые названия для старых идей, да попытки выбросить математику из старых методов.
.
Да, чисто технически, FORTH имеет общие места с YACC: поток лексем, средства для создания грамматических конструкций. Но сама идея обратная: не изготовление машины по готовому языку, но создание языка путем постепенного улучшения машины.

2014/03/11 22:25, Автор сайта #

Да это не претензии, а пожелания. Пожелания обычных для других языков вещей. Другие языки и стандартов придерживаются, и имеют возможность из программ на одном языке вызывать модули на другом. Не требуется ничего волшебного — дайте ту возможность, которая имеется уже 40 — 50 лет в других языках. Похоже, надо писать по кругу то же, что уже написано. А вообще-то тема статьи была такая: «Форт обречён». Годы идут, а о Форте вспоминают всё реже. Чтобы переломить тенденцию, надо разобраться, почему это происходит. Не имея критического взгляда, трудно разобраться в причинах. Вы мне пишите о достоинствах, но о них и так все знают. Надо выявить недостатки — только так можно что-то поправить.

Восприятие синтаксиса Форт языка для текущих массовых прогаммитстов — ниже плинтуса. Отсутствие значимого пласта ПО демонстрирующего и закрываюего какие то задачи не способствует изучению Форт. Но и это не всё, а если рассматривать «обречённость» Форта с точки зрения обречённости Лисп, Пролог языков не особо обсуждаемых массовым рограммистом? Почему например есть ремесленики, а есть творцы? И.т.д. и.т.п. аналогие выведите сами.

К сожалению, общение с «современными фортерами» подтвердило первоначальный вывод. Те, кто предпочитает FORTH-метод FORTH-языку, пишут не на FORTH! А тупо воспринимать FORTH как язык, на котором можно писать, это как программировать на Брайнфаке.

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

Но, если задача «серьезная», то написание «собственного языка» становится слишком важным, чтобы его можно было доверить FORTH.

P.S. «возможность из программ на одном языке вызывать модули на другом» — это возможность не языка, а OC.

2014/07/27 12:35, Автор сайта #

«возможность из программ на одном языке вызывать модули на другом» — это возможность не языка, а OC.

Можно написать одни модули программы на Си, а другие — на Паскале, а затем объединить в исполняемый модуль линковщиком (редактором связей). При этом из подпрограмм на одном языке можно вызывать подпрограммы на другом, передавая параметры и получая результат. Это обеспечивается линковщиком, а не ОС. Для этого нужно лишь поддерживать единые стандарты при передаче параметров, которые одинаковы и в DOS, и в Windows, и в Linux. Форт этих стандартов не придерживается.

Если Вы ведёте речь о вызове исполняемых модулей, то в Си это делается функцией spawnl, например. Вызываемому модулю можно передать параметры через аргументы командной строки. В Форте есть слово RUN (если не ошибаюсь). В той версии Форта, которой я когда-то пользовался, не было возможности чтения аргументов командной строки. С передачей параметров приходилось выкручиваться. Была мысль записывать параметры в файл, чтобы вызванная программа их могла прочитать. Но сделал по-другому: перед вызовом в зависимости от параметров устанавливал курсор экрана DOS в определённую позицию, а вызванная программа эту позицию читала и интерпретировала как значение параметра. Благо, что значения параметров варьировались не сильно.

Это обеспечивается линковщиком, а не ОC.

Линковщик — часть ОС. Cлинковать что-то в одной системе и запустить в другой — нельзя.

Форт этих стандартов не придерживается.

FORTH, вообще стандартов не придерживается. Поэтому любые интерфейсы с любыми линковщиками (и/или API) на нем пишутся легко. Или новый FORTH вокруг любого API (и/или линковщика) — тоже легко.

2014/07/30 18:32, Автор сайта #

Линковщик — часть ОС.

Вот это новость. Не подскажите имя файла линковщика, а так же в какой папке он лежит? Как для Windows, так и для DOS. А то я зачем-то пользуюсь линковщиками из комплекта компилятора.

Установка ОС FreeBSD заключается в компиляции её исходников (личный опыт). Установка Windows (или DOS) делается по-другому, компиляции из исходников нет. Соответственно Windows не нуждается в компиляторах и линковщиках.

Cлинковать что-то в одной системе и запустить в другой — нельзя.

Вы недостаточно осведомлены. Почитайте, например, «Проектирование и конструирование компиляторов», автор — Р. Хантер. Да практически в любой книге по компиляторам пишут о генерации одним компилятором кода для разных целевых машин (процессор + ОС).

FORTH, вообще стандартов не придерживается.

Тем хуже для Форта. Почитайте: Почему никто не использует функциональные языки. Если эту статью озаглавить «почему никто не использует Форт», то она останется верна в значительной части своих аргументов. Главная причина — отсутствие совместимости. Возьмём, к примеру, язык D. Он хорош сам по себе, однако он сделан совместимым с C и C++. И это добавляет ему популярности.

Не подскажите имя файла линковщика, а так же в какой папке он лежит? Как для Windows, так и для DOS.

link.exe — во всех бывших у меня версиях дистрибутивах DOS он лежал там же, где и все остальные исполняемые файлы. Причем, никаких компиляторов в состав DOS отродясь не входило. Как и документации на форматы .OBJ и .EXE.

Странно было бы, если бы линковщик не был частью ОС — ведь формат исполняемых файлов — это личное дело ОС.

Другое дело, что разработчики предлагают «свои варианты», часто более удобные (причем, в DOS-времена, помню, линковщики производились и не производителями компиляторов). Несколько раз даже изобретались новые .OBJ-форматы, не поддерживаемые другими (помните геморрой с перекодировкой MS-библиотек в Borland-формат?)

Вы недостаточно осведомлены.

Ага. Пару месяцев назад был, например, приятно обрадован тем, что из библиотеки хост-машины исчезла библиотека glob. Почти час искал, чем мой Perl-скрипт провинился.
Кстати, история имела продолжение. Исправив скрипт, скопировал склад скриптов на другую машину. Пару дней назад увидел, что там не работает C-скрипт. Ок, очевидно — машина другая, перекомпилирую. Компиляция валится. Опять сижу и тупо соображаю, пока не доходит, что вместе со скриптами перетащил и cygwin1.dll.

Конечно, многие компиляторы являются кросс-. Но значит только то, что они в курсе наличия разных ОС и их форматах, а не то, что есть «единый формат».

Тем хуже для Форта.

FORTH — лишь самый простой способ воспользоваться очень хитрым способом программирования. Жаловаться на то, что в чистом виде редко встречается, это все равно, что сетовать на непопулярность Машины Тьюринга.

2014/08/01 15:46, Автор сайта #

Ваши утверждения усиливает мою догадку, что Вы не понимаете, чем отличаются загрузчик и линковщик (он же компоновщик, он же редактор связей, он же линкер). Не поленитесь, посмотрите ссылки. Загрузчик запускает уже готовые файлы «*.exe». У линковщика совсем другая задача: он берёт файлы «*.obj» «*.lib» и изготавливает из них «*.exe». В программе на Си можно вызвать функцию, написанную на Паскале, сопроводив имя этой функции ключевым словом «extern». Программа на Си компилируется в «*.obj» и функция на Паскале компилируется в «*.obj». Компоновщик из полученных «*.obj» делает «*.exe» и на этом его миссия заканчивается. Запуск получившегося «*.exe» обеспечивает загрузчик. Вот он — действительно неотъемлемая часть ОС.

Джоэл Спольски в статье «Пожалуйста, сэр, могу ли я получить компоновщик?», рассуждая о C#, сожалеет, что среда .NET не имеет компоновщика. Поэтому нет возможности получить «*.exe». Но, согласно Вашей логике, компоновщик (он же линковщик, он же редактор связей) — неотъемлемая часть ОС и Джоэл Спольски не ведает, о чём пишет.

Никто не жалуется на непопулярность Форта, кроме самих фортеров. Его место (так уж получается) — такое же, как и у машины Тьюринга — в учебниках. Но не среди инструментов программиста.

Вы не понимаете

Я очень сильно извиняюсь, но о «загрузчиках» здесь говорили только Вы. Я везде говорил о «линковщиках» (тот же link), т.е. о связывании объектных кодов (правда, местами сбивался на динамическое связывание, чтобы ярче показать зависимость языка от ОС). Ваша ошибка, видимо, в том, что Вы пропустили тот момент, когда ОС перешли от связывания при загрузке, к хранению исполняемых (т.е. уже связанных файлов — т.е. .exe).

В программе на Си можно вызвать функцию, написанную на Паскале, сопроводив имя этой функции ключевым словом «extern».

Чтобы закрыть тему: вызов функций в C и Pascal различается кардинально — порядком параметров,и тем, кто чистит стек. Поэтому приходится использовать не только эту прагму. (Если интересно, посмотрите, как использовали pascal-вызовы при написании Windows). Более того, наиболее удачная реализация Pascal «не делала исполняемых файлов», а переводил программу в p-код виртуальной машины.

Джоэл Спольски не ведает, о чём пишет.

Вопрос терминологии. .EXE в данном случае есть — виртуальная машина, исполняющая написанный на псевдо-ассемблерном языке код. Например, в DOS, как я говорил, входил линковщик link.exe, но BASIC им не пользовался (т.к. сам был .com, позже .exe). Не надо путать интерпретаторы с компиляторами.

Его место — не среди инструментов программиста.

Глубочайшее заблуждение. Как, впрочем, и касательно Машины Тьюринга.

2014/08/03 12:54, Автор сайта #

Вы пропустили тот момент

Я застал тот момент, когда компоновщики уже вовсю использовались для формирования исполняемых файлов. Как и Спольски, который пишет:

Эй, Microsoft, проснись, дай нам замечательный кусочек технологий 1950-х годов, и позволь мне сделать один EXE файл, который запускается на любом компьютере с ОС Win 98 или более поздней без всяких дополнительных требований.

Там же он пишет, что представляет из себя компоновщик:

О каком инструменте идет речь? О компоновщике (linker). Вот что он делает: собирает откомпилированную версию вашей программы с откомпилированными версиями библиотечных функций, которые ваша программа использует. Затем, он удаляет те библиотечные функции, которые ваша программа не использует. И, в конце концов, компоновщик создает один бинарный выполняемый файл, который люди могут запустить на своих компьютерах.

Речь идёт о технологии, которая так стара, как весь компьютерный мир. Лично я собирал исполняемые файлы из объектных ещё на ЕС ЭВМ в ОС MFT и MVT: одни куски были написаны на PL/1, а другие — на ассемблере. Исполняемые файлы переносились на другие машины, как под ОС MFT, так и MVT. И запускались загрузчиком под названием «master scheduler».

Кстати, Вы мне так и не ответили, где в Windows находится тот самый линковщик, о котором Вы говорите. Посмотрел DR DOS: файлы, содержащие в имени «link», есть только в папке c драйверами ЛВС.

Если для Вас Спольски — не авторитет в терминологии, то посмотрите Википедию, ссылки я давал.

.EXE в данном случае есть — виртуальная машина

Что?! Самая что ни на есть реальная! В файле «*.exe» — самые что ни на есть реальные коды процессора x86! Никаких p-кодов, байт-кодов, только команды процессора! Которые исполняются, а не интерпретируются. Загрузчик (но не линковщик!) лишь корректирует адреса перед запуском «*.exe».

о «загрузчиках» здесь говорили только Вы

Так Вы приписывали функции загрузчика компоновщику, потому я об этом и написал.

вызов функций в C и Pascal различается кардинально

Проблема смехотворна: в Си она решается ключевым словом «pascal». А вот с Фортом она вообще никак не лечится. О том я и веду речь. Вместо того, чтобы научить Форт стыковаться с другими языками, фортеры вместо дела предпочитают слова о незаслуженном игнорировании этой замечательной технологии.

наиболее удачная реализация Pascal «не делала исполняемых файлов», а переводил программу в p-код виртуальной машины.

Взрыв популярности Паскаля был связан с Турбо Паскалем, который таки делал «*.exe» и работал на дешёвых персоналках. До этого уделом Паскаля была академическая среда.

Не чистит, а увеличивает значение указателя вершины стека (регистры SP, ESP, RSP). Содержимое памяти, которое раньше адресовал указатель вершины стека, остаётся неизменным, оно не «чистится».

Его место — не среди инструментов программиста.

Заходу на сайт hh.ru, задаю для поиска ключевое слово «Forth», а на выходе — ноль. Ни одного работодателя этот инструмент не интересует! Надо приспосабливать Форт к существующей действительности, помня древнеримскую пословицу «Homo Sapiens non urinat in ventum», а не жаловаться на этот самый «ventum».

Амстердам, шахматный центр Макса Эйве: «Разумный человек не мочится против ветра»

Ладно, раз Вы упорно делаете вид, что не понимаете, о чем идет речь, давайте по порядку:
рассмотрим этапы, на которых мы можем «объединять языки»:
0. На уровне текста
1. На уровне промежуточного кода
2. На уровне объектных файлов
3. При загрузке исполняемых файлов
4. Путем динамического связывания
5. Путем межпроцессорного обмена
Вы, почему-то пытаетесь признать основным (2). И считаете, что до этого места включительно «работает язык», и только где-то выше — ОС. Но это, в конце концов, Ваши проблемы, считайте, как Вам удобнее.

Имеет ли FORTH проблемы на уровне (2)? Если учесть, что в FORTH нет объектных файлов, то, понятно, речь идет о выделении какого-то места в памяти для загрузки туда объектного файла и привязывания его. Возможно это? Почему нет? Если .obj файл имеет описанный формат и не имеет каких-то языковых особенностей (ведь Вы постулировали единый .obj на все языки), то это практически то, чем FORTH и так занимается большую часть времени. Было бы желание.

Так что, боюсь, Вам придется придумать новую причину непопулярности. Например, ту, что «Журден не знал, что говорит прозой».

2014/08/17 23:44, Автор сайта #

Вы, почему-то пытаетесь признать основным (2).

Самым простым, самым очевидным, самым распространённым. Сулящим наибольшие выгоды. Это не я пытаюсь, просто Журден сталкивается с такой прозой жизни. Просто компилируйте в файлы «*.obj», а потом собирайте линковщиком. Тогда становится неважным, из языка X вызываются подпрограммы на языке Y или наоборот. Выбираем самый популярный язык (например C и C++), выбираем самый популярный компилятор (Visual C++ или GCC), и придерживаемся их формата «obj». Вот и всё. Линковщик у этих компиляторов есть. Надо лишь научить Forth изготавливать объектные файлы, чтобы подсовывать их линковщикам. Т.е. сделать то, что люди умеют с 1950-х годов.

речь идет о выделении какого-то места в памяти для загрузки туда объектного файла и привязывания его

Да не в память. На диск, в файл. Похоже, Вы так и не поняли, что такое объектный файл. Объясню вкратце. Этот файл выдаётся компилятором. Это полуфабрикат: код на языке высокого уровня преобразован в машинный код, связь с исходником уже утеряна. Но есть важнейший нюанс: в этом файле нет адресов, но есть символические ссылки. Подпрограммы вызываются по имени (по символической ссылке), а не по адресу. Если Вы в свой программе вызывали функцию sin, то в объектном файле Вы увидите «sin» ли «_sin». Линковщик же собирает из таких полуфабрикатов исполняемый файл («*.exe»), заменяя символические ссылки на относительные адреса. Вот поэтому линковщик и называется редактором связей, что он устанавливает связи (проставляет адреса) между фрагментами кода. Цель линковщика — не загрузка в память (и исполнение) кода, а создание исполняемого файла (запись на диск «*.exe»).

Рассуждая о линковщике, конечно же имею в виду статичную компиляцию, когда исходный код компилируется до выполнения программы. Есть целый класс языков, где компиляция делается во время выполнения. В языке LISP есть функция eval, которая компилирует и выполняет код «на ходу». Потом эта функция появилась в Clipper, PHP и других динамических языках. Соответственно, статичная компиляция там либо невозможна, либо в объектный файл включается код компилятора (так сделано в Clipper).

рассмотрим этапы, на которых мы можем «объединять языки».

Да, варианты есть. Читал о компиляторе, который позволяет использовать вперемешку код на Ada и C++, но это экзотика. Есть ли ней смысл? И вообще, никто не принуждает фортеров к «объединению» языков: это дело добровольное, я лишь высказал своё видение.

Вы постулировали единый .obj на все языки

Я этого не провозглашал. Нет стандатов де юре, но есть то, что считают стандартами де факто. Или Вы имеете в виду вот это:

Для этого нужно лишь поддерживать единые стандарты при передаче параметров

Стыкуя свои программы с С++, надо смотреть следующие вещи: 1) как пишутся в стек параметры (и в стек ли вообще, может, используются регистры), 2) как возвращается результат 3) как используются регистры. Это можно считать стандартами де факто.

Вам придется придумать новую причину непопулярности

Всё давно придумано Чарльзом Муром. Нам остаётся лишь рассматривать его творение. Или отвернуться и рассматривать в другом месте другое творение.

Почему я рассмотрел случай чтения объектного файла, а не записи в него? Потому, что использовать FORTH в качестве промежуточного решения бесполезно. Он предназначен для решений окончательных. Его нельзя рассматривать как язык. Это метод!
P.S. научить FORTH создавать .obj файлы совсем не трудно.

2014/08/21 11:29, Автор сайта #

Мне кажется, что чем более «обычным» станет Форт, тем больше от него будет пользы — всё-таки надо учитывать инертность человеческого мышления, привычки программистов. Я как-то пользовался версией Форта, у которой был встроенный текстовый редактор с экраном 16х64 знакоместа. Потому что так было в «канонической» версии Форта. Но оказалось, что из этого можно не делать религии, фортовский текст вполне можно брать из файла, который правится сторонними редакторами. Многими непринципиальными вещами можно поступиться.

Вам надо все-таки немного разобраться, что есть FORTH-метод, а что есть FORTH-язык. Второе — лишь простейший вариант реализации первого. Почитайте, например, что действительно придумал Чарльз Мур. Язык-то (стековую машину с шитым кодом) он попер готовую.

2014/08/28 15:53, Автор сайта #

Вам надо все-таки немного разобраться, что есть

А зачем? Достоинства — шитый код и стек — известны. Остаётся намотать их на ус. Но при пристальном рассмотрении оказывается, что они тоже не идеальны. Шитый код медленнее родного. Стек проигрывает в скорости регистрам, локальные переменные лучше (при возможности) хранить в регистрах. И в остальном — ничего выдающегося. Я бы Вам посоветовал познакомиться с новыми парадигмами программирования, новыми языками. Там фонтан идей! Расширить круг познания, увидеть новые горизонты полезно. В Форте, языке 40-летней свежести, Вы не найдёте ни контрактного программирования, ни строгой типизации, ни чистых функций, ни ленивых вычислений. Хотя бы почитайте, не обязательно программировать. Попробуйте понять сильные и слабые стороны других языков. Вот Вы можете назвать, чем хороши чистые функции?

Достоинства — шитый код и стек — известны.

Считать достоинствами FORTH эти штуки, по крайней мере, странно. Конечно они имеют к нему отношение, но гораздо меньшее, чем, например, к калькулятору Б3-34. Я повторю: прежде чем ругать FORTH, постарайтесь его понять.

И с чего Вы взяли, что «контрактному программированию, строгой типизации, чистым функциям, ленивым вычислениям» меньше 40 лет? Разве что в смысле, что современное понимание этих штук — достаточно убого, по сравнению с их древним изложением. Например, то же «контрактное программирование» — лишь плохо понятая «Дисциплина программирования» Дейкстры 1976-го.

2014/09/01 15:53, Автор сайта #

прежде чем ругать FORTH, постарайтесь его понять.

Я его не ругал, а отмечал недостатки. Предварительно (заметьте!) отметив понравившиеся достоинства.

постарайтесь его понять

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

Коли Вы ссылаетесь на Дейкстру, то объясните, пожалуйста, почему этот очень известный учёный и программист не пользовался Фортом? Почему все известные учёные сопровождали свои теоретические изыскания и книги кодом на алголо-подобных языках (за исключением Д.Кнута, который использовал псевдо-ассемблер)?

Постарайтесь понять, что такое контрактное программирование, прежде чем говорить, что это плохо понятый Дейкстра. Про функциональное программирование Вы скажите то же самое?

Я его не ругал, а отмечал недостатки. Предварительно (заметьте!) отметив понравившиеся достоинства.

постарайтесь его понять
Т.к. Ваши «достоинства» и «недостатки» — суть его непонимания. Дело не в Вашем виртуозном владении «стековой арифметикой».

Коли Вы ссылаетесь на Дейкстру, то объясните, пожалуйста, почему этот очень известный учёный и программист не пользовался Фортом?

А я разве не писал, что язык FORTH-машины придуман Дейкстрой? Кстати, в это же работе (1962г.) Дейкстра и объяснил «почему он им не пользовался».

Постарайтесь понять, что такое контрактное программирование, прежде чем говорить, что это плохо понятый Дейкстра.

Там нечего понимать, это просто плохо понятый Дейкстра (1976г.).

Про функциональное программирование Вы скажите то же самое?

Нет, не скажу. Оно ещё старше.

2014/09/02 14:41, Автор сайта #

Ваши «достоинства» и «недостатки» — суть его непонимания.

У Сергея Михалкова в спектакле «Пена» одна девушка говорила: «Есть женщины, которые нравятся всем. А есть такие, которые нравятся только избранным». Фортеры могут себя утешать тем, что они «избранные», «особо просветлённые», познавшие тайную суть программирования. А остальное человечество уже 40 лет демонстрирует непонимание Форта. Не понимает, но пишет операционные системы для машин от мала до велика, графические библиотеки, поисковые машины и … Всего не перечислишь. Наработали софта на триллионы долларов. Но всё это — мирская суета. Фортеров, как тибетских монахов, не должна отвлекать бренность бытия — зачем писать софт для этих недалёких людишек? Зачем отвлекаться от постижения мудрости и созерцания красоты Форта?

язык FORTH-машины придуман Дейкстрой? Кстати, в это же работе (1962г.) Дейкстра и объяснил «почему он им не пользовался».

Ссылки в студию! Очень хочется посмотреть, как Дейкстра оправдывался в 1962 году о причинах неиспользования языка, который возник в конце 1960-х — начале 1970-х. Ну и заодно ссылку на слова Ч.Мура о том, что «это не я придумал, это Дейкстра».

Давайте я Вам вкратце расскажу о «плохо понятом Дейкстре». Не только в функциональных языках, но и в гибридных типа D, Rust, Nemerle появилась такая сущность, как чистые функции. Чистые функции — это усеченный вариант обычных функций в программировании, в них запрещено воздействовать на контекст, т.е. менять внешнее состояние вычислительной машины иначе, как через возвращаемый результат. За счёт отказа от взаимодействия с контекстом чистые функции легки в отладке, хорошо распараллеливаются, их можно использовать без опаски в «ленивых» вычислениях и т.д. Этих преимуществ достаточно, чтобы выделить их в отдельную сущность. Большинство языков позволяют писать функции, которые чисты. Но недавно появившиеся языки за счёт синтаксического выделения таких функций позволяют следить за чистотой функций уже на этапе компиляции: если внутри чистой функции употребить нечистую, то компилятор выдаст ошибку. В Форте чистые функции не выделяются в отдельную сущность, Форту не нужна лёгкость отладки таких функций в виду отсутствия контекста, Форту не требуется наилегчайший способ распараллеливания вычислений.

Возьмём контрактное программирование. Контракты — это условия, которые проверяют значения параметров функций на входе и значение результата на выходе. Это дополнительная проверка, повышающая надёжность ПО. В принципе, проверки на входе и на выходе можно делать обычными «if», не изобретая для них отдельного синтаксиса. Но если для них есть свой синтаксис и в проверках задействованы только чистые функции (т.е. на меняющие состояние вычислительной машины), то проверки можно отключить, применив специальную опцию компилятора. Для того, чтобы увеличить скорость работы программы, когда есть убеждённость в корректности её работы.

Есть такие вещи в Форте? Конечно же нет. Форт хранит свою «святую простоту».

Фортеры могут себя утешать тем, что они «избранные», «особо просветлённые», познавшие тайную суть программирования.

Да Мур сейчас так подчас себя и ведет. Мол, у Вас — мегабайты, а у меня — кило. При равной функциональности.
Но, не суть.
Дело даже не в патологическом ухудшении качества ПО, которое на «затраченные триллионы» дает копеечный выход. И, соответственно, практически поголовном переходе программистов на быдлокодерство.
Дело в (повторяю в третий раз!) в непонимании того, что есть FORTH-метод! Это не стек, не шитый код. не отсутствие чистых функций (и чего Вы к ним привязались?). Это — ориентация на написание проблемно-ориентированного языка простейшим способом, и предоставление пользователю возможности на нем писать самому. Все! То, что Мур взял для этого [FORTH-]машину Дейкстры, только следствие простоты мат.модели последней (статью Дейкстры 1962 года можете посмотреть у меня на страничке). Вам никто не запретит вставить FORTH-машину в программу на C++ (так делают очень многие, удивляясь задним числом: «Глядите, опять FORTH-получился»).
Тоже в принципе и с контрактным программированием (опять повторилась история структурного и объектного). Есть основополагающая идея. Математически выверенная и обоснованная. С оценками применимости. И её находят быдлокодеры — «Ур-я-а! Серябряная пуля! Надо только писать не в столбик, а в строчку, или вместо круглых скобок применять квадратные, или начинать имена с префикса, или вставлять предикаты/инварианты. «
Напоследок скажу совсем дикое: на очень плохом FORTH пишут все «визуальные программисты». Отдельные окошки — суть FORTH-слова. Они так же атомарны и пытаются сладить с потоком событий. И пользователь вынужден сам «программировать» и «обрабатывать ошибки». Другое дело, эти Журдены ещё не доросли до понимания концепции проблемно-ориентированного языка.

P.S. Т.к. разговор идет кругами, давайте заканчивать. Лучше пишите на эл.почту.

2014/09/05 19:12, Автор сайта #

Да Мур сейчас так подчас себя и ведет

Пусть Мур напишет кросс-платформенный GUI, который проще, надёжнее, не требует «допиливания» под каждую платформу и естественно «легче» существующих. Вот тогда ему спасибо скажут, и я — тоже. Дела важнее, всё остальное — понты.

Дело в непонимании того, что есть FORTH-метод… Это — ориентация на написание проблемно-ориентированного языка

Ну да, ориентация на никому ненужные глупости. Глупости не могут быть достоинством. Зачем для каждой проблемы изобретать свой язык? Вы дома, в магазине, в автобусе и на работе разговариваете на разных языках? Или же на одном и том же языке, с той же грамматикой и синтаксисом, лишь подбирая из словаря подходящие к контексту существительные, глаголы и прочие части речи?

Зачем плодить для языков разные синтаксисы? Или банковской сфере лучше подходит инфиксная нотация, а всемирной паутине — постфиксная? А чем должна отличаться семантика «if» и «for» языка биологов и языка астрологов? Универсальные языки дают возможность пользоваться одним и тем же синтаксисом и семантикой, лишь меняя «словарный запас». Да и словарный запас стремится к компактности: делая глагол «рисовать» полиморфным, его можно применять к разным объектам. Это один из основоположников ООП Алан Кей ввел моду на это: Кнопка.Рисовать() и Окно.Рисовать() выполняют разные действия, но их объединяет одна суть: они рисуют. Алана Кея можно называть «быдлокодером» и Журденом, не доросшим до понимания проблемно-ориентированных языков. Ещё бы, он изобрёл объектно-ориентированный SmallTalk. А ещё «пилит» систему из 20 тысяч строк кода, которая должна собой заменить собою всё или почти всё.

Проблем, для которых стоит создавать специальный язык, на самом деле очень мало. Например, языки разметки и алгоритмические языки имеют разную природу. И то в html делают вставки на javascript.

разговор идет кругами, давайте заканчивать.

Да, пора. Диалога не получается.

  • Вы путали загрузчик и линковщик, но всех программистов учат этому в институте. Вы же упорно не понимали сути линковки, пока я не объяснил Вам на двух пальцах.
  • Вы утверждали, что линковщик — это часть ОС. Я просил Вас рассказать, где лежит линковщик Windows — Вы до сих пор его ищете.
  • Стек у вас «чистится», на самом деле изменяется значение указателя вершины стека. Содержимое памяти, которое раньше адресовал указатель вершины стека, остаётся неизменным, оно не «чистится».
  • .EXE для Вас — виртуальная машина. На самом деле она реальная.
  • У Вас наиболее удачная реализация Pascal «не делала исполняемых файлов», а переводила программу в p-код виртуальной машины. На самом деле — всё наоборот.
  • Контрактному программированию, по Вашему, больше 40 лет. Нет, читайте Википедию, там всё написано.
  • Я просил Вас дать ссылку на то, как Дейкстра оправдывался в 1962 году о причинах неиспользования языка, который возник в конце 1960-х — начале 1970-х. Ссылку Вы мне не дали.

Увы.

2014/11/16 11:50, Автор сайта #

Вы уверены, что в статье Дейкстры 1962 года можно найти причины, почему он не использовал Форт, созданный лет на 6-10 позже? Если Вам удастся её найти, дайте ссылку и цитату, пожалуйста.

Если Вам удастся её найти

2014/11/16 11:50, Автор сайта #

В первоисточнике An attempt to unify the constituent concepts of serial program execution Дейкстра пишет об обратной польской записи, стеке. Ну так в то время прорабатывалась теория компиляции, и многие авторы писали на эту тему. Стек и обратная польская запись активно использовались при промежуточном представлении программы при компиляции с языков высокого уровня (Дейсктра пишет об Алголе) в машинный код. И никто (в том числе и Дейкстра) не предлагал сделать эту промежуточное представление (постфиксную нотацию) языком высокого уровня. Читайте внимательно статью. Дейкстра писал компиляторы с Алгола, но не создавал языков программирования с описанной в его статье нотацией. И, конечно же, Дейкстра ничего не пишет в 1962 году о Форте и Муре.

Зачем гадать о содержании статьи, если её можно прочитать? Глупее только искать в ней ссылку на Мура.

Случайно набрел на эту страницу и столько всего вспомнилось. Когда-то, наш преподаватель электроники — в СССР такие кружки открывались при институтах, домах молодежи и были БЕСПЛАТНЫЕ. золотые времена, ой, о чем это я? — Так вот, познакомил он нас с языком ФОРТ (где-то достал книжку на аглицком, переводили мы её всем кружком сначала, потом я попросил учительницу по английскому и вопрос был решен). Какое мы получили вдохновение, я помню азарт, или даже кураж от тех идей, которые рождались в наших горячих головах. После этого, армия, институт, практика в НИИ химии металлов прогером на Си, потом (стыдно признаться) 1с. Но что мне дал Форт,- так это возможность НОРМАЛЬНО проектировать приложения и смотреть на проект под разными углами, а иногда и заставлять пользователей четко формулировать задачи (а это поверьте — адское занятие) и я очень благодарен ФОРТу за то, что при всей его простоте (кроме шитого кода :)), он дает такие возможности. Если честно, то я думал, что язык этот давно мертв, потому как ничего за последние десять лет о нем не слышал. Сейчас, зайдя на этот сайт, обрадовался как ребенок, получивший долгожданную игрушку: ФОРТ жив и его обсуждают. О нем можно сказать, что в чем-то плох, можно найти кучу положительных сторон, но друзья, честно скажу, что знания ФОРТа НИ ОДНОМУ программисту не помешают. Сейчас много всяких стандартов, систем программирования и прочего. Иногда возникает ощущение, что все делается под копирку, я имею ввиду, что выучив один язык высокого уровня, можно смело переходить к другому, потому что там — те же конструкции, различия в подключаемых библиотеках и используемых технологиях. На работе требуют больше знаний технологий и стандартов, чем умение мыслить. Да ещё часто слышу споры, какой язык круче. Мы становимся рабами стандартов (может я перегнул, не спорю) и многих из нас раздувает от гордости и знания тех рамок, которыми мы себя ограничиваем, я имею ввиду общепринятые нормы и правила прогинга. ФОРТ — это путь свободы.

2015/10/18 15:39, Автор сайта #

Да, ностальгия тоже иногда посещает. Форт — достаточно занятная штуковина, сам когда-то на неё западал.

В Форте можно переключаться с режима компиляции на интерпретацию и наоборот. Во время исполнения программы переключаться на интерпретацию.
Человек мыслит примерно так. Во время чтения (компиляции) останавливается и начинает думать ( интерпретировать или исполнять прочитанное) и т.д. Хотелось бы примеров на форте на эти темы .

2015/11/17 18:44, Автор сайта #

Насёт примеров я вам на помощник: Forth давненько за пределами моих интересов.

2015/11/25 18:47, Юрий Андреевич #

Главная беда не в ФОРТЕ, а в нас. Мы — русские, т.е. говорим и пишем по-русски, забыв суть и сущность русского языка. А если вспомнить хотя бы древнерусский родовой букварь, то многое стало бы на место.

Все западно-европейские языки — искуственные образования, поэтому они, не русские, легко выдумываются и плодятся, как грибы в лесу. По-русски же понимать — интерпретировать, осмысливать и действовать совершенно различные понятия. Мы прежде всего должны осмыслить понятие, понять его, и уж только потом применять, использовать, реализовывать (материализовывать), создавать то, что осмыслили («Что делать» — вечный русский вопрос), поняли — как делать, и только после этого начали делать. Потому мы долго запрягаем, да быстро ездим. В нашу молодость отводилось на изучение любого языка; АЛГОЛ, КОБОЛ (был русский и нерусский), фортран, PL, Си, ФОКС и т.д.две недели, и мы на них уже выдавали продукцию — готовые программы.

Формализовать русский язык — задача трудней не придумаешь, однако ещё тридцать лет назад я предложил УНИЮ — Универсальный Интерпретирующий язык, высоко оцененный Зубовым Владимиром Ивановичем (ныне покойном), на который в Питере вообще смотрели как в афишу коза, а в Москве и слушать не захотели. Форт предполагался как промежуточный язык между УНИЯ и железом. Но. как всегда даже обрусить Форт оказалось делом весьма сложным (я не видел ни одной русской версии). Пример, переменные форта, как их назвать? BASE, STATE и т.д. Напишем БАЗЕ по-русски, много ли смысла добавится? Нисколько! Потому что BASE означает переменную, содержащую основание системы счисления.

STATE:0 означает, что интерпретатор находится в состоянии исполнения, STATE:1 означает, что в состоянии компиляции. Слово ! явно передёрнуло знак присваивания :=, который в УНИЯ вписался бы как уже привычный метасимвол связи имени и значения, а прилагательное переменная нам бы вообще не понадобилось нигде и никогда. Напротив, слово @ — разыменовать очень хорошо использовать как значения у имени (простого, составного, прямого или косвенного).

Японца спросили, какой язык программирования вы предпочитаете, онответил: «Японский».

Программирование без программистов! Каждый нормальный человек обязан уметь думать правильно, ясно и точно — без дураков. Лечение без врачей: врач от глагола врать, а зачем нам враньё? Лекарь лечит! Вот вам русский язык в действии.Давайте в начале обрусим хоть какой-то формализм, а потом уж можно думатьоб ОС, электронике (без электронщиков), потому что сама электроника доросла до выращивания кристаллов без участия человека, хотя без мозгов никакой кристалл, конечно, не вырастишь, даже самый тупой как INTEL и иже с ним. А где ассоциативная память, расписанная ещё в 60-х годах, процессору для которой требуется всего шесть команд? Сколько ещё будем дуру ломать перед тривиальными вещами?

Автор, почему заменил прямые ссылки в обсуждении неизвестно чем?
У меня их FireFox блокирует и не открывает.

А как насчёт отдельной статьи «Почему ещё жив язык Форт и его идеи»?

2020/01/08 18:19, Автор сайта #

Проверил все ссылки до единой, ФФ их нормально открывает. Из слов «Форт обречён» не следует, что он уже мёртв. Да нет, жив ещё. Но когда-то, говорят, он был третьим по популярности. А сейчас? Сейчас он уже во второй полусотне языков рейтинга tiobe. Ещё лет пять назад он был в первой. Время идёт, о нём забывают. Для своего времени это была хорошая технология, но сейчас…Если преимущества Форт так колоссальны, то почему фортеры не завалят нас своим софтом?

Вы попробуйте сами написать такую статью. И посмотрите, как много читателей у неё наберётся.

Интересные в своей нелогичности у Вас суждения.
Какой процент Форт программистов к общему программирующему сообществу и кода сделанного и открытого в рамках Форт? Почему лисперы не завалили нас програми или Пролог программисты?
Мысль улавливаете? Может он (Форт) и был популярен в 80-х годах где то на Западе, но мне об этом ничего не было известно т.к. родился и живу в России и познакомился с изданными Форт книжками в не самое удачное время начало 90х годов,
а сейчас кого не спросишь, то в лучшем случае спросят Фортран? :)
И если нет рядом Фортёра, то и вероятность про него узнать почти 0-вая в век всеобщего i-neta. И что может сделать Фортёр, если его применение дано ему как хобби?

То что он ещё жив — это возможно самое лучшее что может быть в реалиях современной IT индустрии и какие то компании его применяют в своих продуктах.

2020/01/11 00:23, Автор сайта #

Какой процент программистов.

В чём сила, брат? Не в количестве программистов, а в мощи Форта. Не числом, а умением. Там, где лисперы и прологеры (не говоря уже о сишниках) будут годами потеть, там же фортер лёгким колебанием клавиатуры будет ваять шедевры за вечер. Форт вроде куда круче Лиспа и Пролога — или я что-то не догоняю?

Если нет рядом фортера.

Ну так сеть любого располагает рядом, найти соратников в наш век теперь легко. А хобби — это такая штука, которой занимаешься вопреки, можно сказать, здравому смыслу. От него — никакого проку: ни на хлеб ни намажешь, ни в стакан не нальёшь. Оно пожирает время — самый драгоценный ресурс, который дан человеку единожды. Вот и у меня, если Вы поняли, есть своё хобби.

Форт жив, его никто не пристрелил. Некоторые его идеи можно встретить в других языках, например в PostScript. Но если умрёт, то надо относится к этому философски. Значит, на его почве произрастут другие, более достойные. Се ля ви.

Да на Форте достаточно производительно можно делать софт, но он же не работает сам по себе, а в составе ОС, и с готовыми фреймворками ему ещё необходимо посоревноваться. А это уже немного другой фактор разработки.

На Форте тоже нужно «попотеть», т.к. аспект программирования при создании разнообразного софта ещё никто не смог отменить!

С соратниками тоже не всё просто, т.к. ввиду малочисленности фортеров и их индивидуальности интересов и предпочтений (и не объединенных, например, финансово) сотрудничество тоже представляется плохо формализуемым фактором.

См. примеры на Форт форуме (в лучшем случае будут обсуждения).

2020/10/17 18:08, Александр Николаевич #

Не знаю, насколько актуальны мои замечания сегодня, спустя много лет после начала ветки. Но хотелось бы добавить свои 5 копеек по теме.
Когда я параллельно с работой на ЕС ЭВМ начинал изучать Форт (в середине 80-х), то после первых 4 часов плевался, после 8-ми — «ого, тут что-то есть», после 12-ти — стал его ярым приверженцем, разработчиком ПО, а позже вошел в советскую SIG Forth (группу ACM). Напомню, что в то время только-только появилась IBM PC, мы в Питере работали на машине-стенде на основе процессора 8080, на гибких 8″ дисках на 256 Кб под ОС CP/M (не всегда!), и для работы на практически «голом» железе с успехом использовался Форт. Файлов как таковых не было, текст программы записывался на диск блоками-экранами по 1024 байта. И основным назначением систем были научно-технические разработки, микропрограммирование, кросс-системы. И даже несложную экспертную систему с русскоязычным интерфейсом пользователя смогли написать на таком Форте. Причем уже тогда был разработан стандарт(!) языка — Форт-83, который в дальнейшем расширялся.
Хороший вопрос «Почему Форт остается «нишевым»? С одной стороны, как рассказали коллеги, при компиляции Линукса подгружается ряд библиотек Форта, т.е. некоторые модули ядра написаны на Форте, т.е. «пациент скорее жив, чем мертв». С другой — популярности Си, Паскаля, Java он не достиг. Тут уместно процитировать выражение, относящееся к технологии, предложенной учениками Вирта: «Juice превосходит Java-технологию во всем кроме величины затрат на рекламу» (http://www.uni-vologda.ac.ru/oberon/). Если вспомнить, что предложенный Виртом Оберон был тщательно проанализирован на предмет (частичного) заимствования разработчиками Java, то нетрудно догадаться, что часто именно финансирование предопределяет популярность некоего продукта. Примером тому может служить отечественный визуальный язык автоматического программирования Дракон, разработанный в качестве своеобразного «эсперанто» для инженеров-непрограммистов в области космической техники, созданный в рамках проекта «Буран» (см. Википедию).
Ну и последний штрих, отмеченный выше: леность мышления, инертность ума и зачастую нежелание изучать новое. В качестве примера: спросите себя и коллег, кто при работе в word-е использует стили, хотя бы даже автоматические, не говоря о собственных? А ведь это проще, чем программирование! Посчитайте процент и думаю, не ошибусь, если окажется, что он значительно меньше 10! А если вы зададите «вопрос на засыпку» — сколько в word-е (напр. в популярной версии 2010) инструментов для работы с этими самыми стилями (панелей, диалоговых окон и т.п.) — уверен, что правильное количество (7) не назовет никто :)
Вот и ответ: если нет (финансового) двигателя плюс собственной мотивации, то продвижение под вопросом.

2020/10/17 18:23, Александр Николаевич #

Кстати, вдогонку: «Разработка → Forth и шейдеры»: https://habrahabr.ru/post/209730/

2020/10/24 20:49, Автор сайта #

Только ли отсутствие рекламы виновато в непопулярности Форта? Тогда надо ответить на вопрос, почему PHP ли Ruby впереди Форта — так же при отсутствии рекламы?

Есть ещё один интересный вопрос: почему ИТ-гиганты игнорируют Форт? Это заговор или недальновидность? Было бы интересно услышать из недр, допустим, Гугла мнение о причинах их недоверия к Форту. Наверное, они есть?

Я тоже не считаю, что Форт полностью обречён. Однако, пытаясь реализовать ядро, я каждый раз «натыкаюсь» на странности и на нехватку современной(и понятной) литературы. Также, я думаю, что в будующем нас ждёт новая операционная система, ядро которой будет именно Форт.
Вот моя идея(новой ОС). ОС будет в 2-х вариантах: с собственным функционалом (самостоятельная, как Колибри) [низкоуровневое ядро+ядро Форт], или с использованием функционала другой ОС (Win/Linux/. ) [промеж. слова+ядро Форт]. Но это касается только лишь основных слов (т.е. слов ядра Форта). Всё остальное — кроссистемное+кроссплатформенное!

Простите, я может не совсем ясно выразился, но надейсь, что если не я её сделаю, то кто нибудь ещё. Форт жив!:)

2020/01/04 11:23, Автор сайта #

Прежде чем писать на нём ОС, погоняйте тесты на производительность. У Форта с этим не всё хорошо. И пожелаю Вам успехов!

Один из старых замеров производительности:
SPF4 http://wayback.archive.org/web/20070111200500/http://www.forth.org.ru/

af/shootout.htm
А здесь тест и результаты разных Форт систем: http://www.mpeforth.com/arena/benchmrk.fth

P.S. Java байт код же научились ускорять, а это чем-то близко Форту.

Пишется вариант Форт-оси: https://sites.google.com/site/forthoperatingsystem/

Основная причина непопулярности Форта — это абсолютное игнорирование психологических особенностей человека, или, другими словами, ориентация Форта на все что угодно, кроме устройства самого программиста. Тут выше прозвучало что-то насчет того, что при использовании Форта программист и является транслятором. Это недалеко от истины. Программист прежде всего должен держать в уме решаемую задачу, а не состояние транслятора. Вместе с задачей ещё надо держать в уме и состояние транслятора, а также этим транслятором ещё и управлять (а управлять там есть чем — положением параметров на стеке, состоянием компиляции-исполнения, порядком поиска в контекстных словарях и т.п.), то креативные возможности программиста в части решения собственно задачи снижаются прилично. Форт в текущем виде можно рекомендовать использовать только роботам, которые не имеют ограничений в объеме оперативной памяти.

Если подвергнуть Форт изменениям, направленным на устранение описанного основного его недостатка, при этом оставив его мета-возможости, то возможно, что Форт будет использоваться чаще и более массово. Чарльз Мур сделал попытку улучшить Форт — Color Forth, но она оказалась недостаточной для языка массового использования.

На реплику выше.
Любое программирование это управление кучей абстракций и состояний. Хоть тот же ООП или что то ещё. У Форта своя система определённого уровня абстракций, которая может быть полезна или нет для конкретного программирования или круга решаемых задач.

Еще раз — я говорил об игнорировании устройства человека. Конкретно, в данном случае, стоит лишь остановиться на организации памяти человека. Она представляет собой связанные подсистемы долговременной памяти и кратковременной памяти. Каждая подсистема имеет свои характеристики. Долговременная имеет практически неограниченный объем, кратковременная очень ограниченный объем (см. число Миллера). Зато время записи в кратковременную память очень малое, а в долговременную очень большое. Поэтому оперировать новой информацией приходится в оперативной памяти, которая имеет очень малый объем. Вот на это обстоятельство нужно обратить внимание при создании любого языка программирования, на что при создании Форта внимания не обратили.
Как следствие — засилье в Форте именно оперативного инструментального контекста, то есть использование языковых конструкций Форта, которые загружают оперативную память человека (параметры на стеке, местоположением которых надо оперировать, одинаковые имена в разных словарях — нужно держать в оперативной памяти состояние стека контекста поиска, там же держать состояние переменной исполнение-компиляции). Все это приводит к тому что собственно на саму решаемую задачу оперативной памяти остается немного, что резко замедляет процесс её решения.

В ответ ЧесславуЕще сильно зависит от того, на какой машине работаете. Например всего одна машинная команда. На 486 серии загрузка входного файла в 300 — 400 кбайт в пределах одной секунды. Все вмещается. На Форте можно все, даже то, что непозволительно по правилам программирования. Привожу небольшой фрагмент работающей программы на языке ФОРТ:Думаю, что даже комментарии дополнительные не нужны. И все на родном языке, никаких заморочек. И никаких заморочек со стеком и обратной польской системы записи. Все прозрачно. Зачем организовывать стеки, если можно обойтись массивами, переменными и константами? Скорость написания программы равна скорости написания этого текста. За сколько можно написать страницу текста? И это плохо?

О скорости работы. На моем форте всего три машинных команды! На PDP11 — всего две машинные команды:7 5 +
Группа 5 + на моем форте всего две машинных команды.

Сегмент программ — 64к. Сегмент имен статей, таблиц HELPов — 64к. Сегмент входных данных для обработки — 64к существительное с >
Или Subject-Verb-Object. Или какой-то другой объект, класс и метод. Или какой-то другой метакласс (времени компиляции), его объект и метод метакласса (или мультиметод). Или . (10 категорий Аристотеля из его «Метафизики», например).

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

Дональд Эрвин Кнут изобрёл подход Literate Programming, «грамотное» (vs. illiterate) программирование. Про то, что программы пишутся для людей: как книжка, исполняемое эссе (active essays), а код пишется как наброски (эссе, этюды, пьески и т.п. «макеты и поделки») для иллюстрации места в эссе.

Валентин Фёдорович Турчин изобрёл подход «суперкомпиляция» и теорию метасистем. В книге «Феномен науки, или кибернетическая теория эволюции» пишет про то, что системы эволюционируют, развиваются в метасистемы: управляющие системы систем. и далее вводит понятие метасистемного перехода, когда bootstrap-ом система развивается в метасистему, происходит качественный скачок, сдвиг парадигм и т.п.

Ещё он изобрёл язык РЕФАЛ и «проекции Футамуры-Турчина»: «суперкомпиляция интерпретатора есть компилятор» и «специализация компилятора есть интерпретатор». Про автоматизированное построение компилятора из интерпретатора (референсного, модельного отлаженного и корректного макета) методом суперкомпиляции, метавычислений (вычислений над вычислениями, предметной областью языка РЕФАЛ).

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

Есть три понятия — суперкомпиляция, специализация и прогонка. Прогонка — это выполнение программы при всех возможных исходных данных. Результат работы программы представляется таблично, входы-выходы. Наподобие Tracing JIT compiler (Tamarin в Firefox)

Суперкомпиляция — это не «частичные вычисления» и карринг из функционального программирования (эквивалентные преобразования оптимизированной программы). Это эквивалентные преобразования самой машины вычислений так, чтобы вычисления выполнялись оптимизированным способом. То есть, машина и программа другая — но результат тот же самый. Результат оптимизирован (по времени или по памяти), вычисляется быстрее потому что дерево, граф вычислений программы свёрнут (заменены переходы по графу выполнения входами-выходами, минуя промежуточные переходы).

Суперкомпиляция была реализована для РЕФАЛ в 70-х, затем ученики школы Турчина реализовали её для функциональных языков программирования, пытались применить к Java, реализовали для языка графов и потоков данных Dataflow.

В 1960-е года были похожие по сути и результатам, но отличные концептуально подходы. Это проекты META II, TREE META (и NLS:Augment Дуга Энгельбарта из ‘mother of all demos’, tree grammar), более современный OMETA и проект FONC/STEP.

Здесь идея в том, что пишется метаязык для описания грамматики (наподобие PEG- или BNF- грамматики). пишется для абстрактной машины, затем переводится на любую другую.

Курс по META II: http://www.bayfronttechnologies.com/mc_tutorial.html

Здесь эквивалентными преобразованиями программ пишется компилятор. Из исходного языка машины 1960-х переводится реализация под JavaScript. Но может быть любой другой язык. Получается метакомпилятор Например, lbForth из ссылки выше — реализован подобным образом. Вообще есть ряд подобных языков: META II, TREE META, OMETA (объектно-ориентированный).

Любопытны достижения проекта FONC/STEP, например «Parsers running backwards» для трансляции с любого языка на любой другой. Таким образом выясняется следующая перспектива.

Параллельно с Форт-системой и программой на языке Форт строится МЕТА-система. Это может быть отдельный язык программирования и разметки, как в WEB Дональда Кнута изначальном. Либо полноценный более расширяемый (например, WEB на Форте). Либо более абстрактный расширяемый (например, РЕФАЛ). Либо более расширяемый прикладной (например, Emacs Lisp или Forthmacs, емакс на Форте. См. примеры скриптов выше про eev, escripts, fmacs).

В Форте (как впрочем, и в Лиспе) он может строиться на себе самом, метаязык на языке. Потому что этот базовый язык L0 обладает свойствами composability, homoiconicity, а более сложный язык — не обладает.

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

Например, Лисп, какая-то Схема (Лисп) и её реализация, раскрутка из себя самой (есть текстовый редактор emact на ISO LISP, в котором базовые примитивы реализованы макросами самого Лиспа). Или какой-то другой Лисп, например Common Lisp поверх базового (например, Elisp). В случае Форта, эволюция выглядит примерно так:

Форт (память без GC) => PostScript (добавляется GC для Page Description Language, какая-то Display model, а в остальном — полноценный язык программирования).

=> Display PostScript для GUI (расширена display model).
=> NeWS implementation language (Display PostScript + GC + ООП + green threads (lwp) + события и асинхронность, исключения, FFI с Cи (pswrap) ).

=> например, GML (3D-модели а не 2d, фактически это такой «3D-PostScript»).
=> например, Фактор (или Joy, Cat, и т.п.).


Тезис в том, что такую расширяемую метасистему написать не так уж и сложно на Форте. Читай, например, записки Don Hopkins про реализацию NeWS, HyperTIES, HyperLook. Сейчас у нас уже есть TeX и LaTeX/ConTeX hi-level (и pdfTex/LuaTeX как движки). С одной стороны, и тот же lout, с другой — для Literate Programming и генерации PostScript, например.

В общем, нет ничего что препятствовало бы повторить годные, на мой взгляд, идеи, преждевременно почившей в бозе NeWS, зарезанной Sun-ом по маркетинговым соображениям на базе другой платформы: Ghostscript + GhostPDL (через FFI, dll/so) + современный Форт с FFI к Си-библиотекам dll/so для реализации DPS. Или тот же Фактор: вместо DPS/GhostPDL отдельно самостоятельно (например, посмотрите как строится «композабельный» GUI в Фактор)

Чтобы получить подобную расширяемую метасистему, написанную на себе самой, можно её расширять и далее, в сторону «САПР для всего». Реализуя STEP 10303 EXPRESS, на котором описать метамодели данных. Реализуя GML для 3D-VR ‘Display PostScript’. Реализуя компиляцию в какой-то G-code из таких вот моделей — через asm.js в браузере (из Форта). Реализуя такую расширяемую Форт-МЕТАсистему на себе самой.

С Вами не согласятся вот эти многоуважаемые авторы:
— Баранов С.Н., Ноздрунов Н.Р. Язык Форт и его реализации.
— Ю.А. Семенов. Программирование на языке Форт.
— Броуди Л. Начальный курс программирования на языке Форт.

Почему именно эта книжка? А, например, не Л.Броуди: «Способ мышления — ФОРТ. Язык и философия для решения задач «

Leo Brodie. Thinking FORTH. A Language and Philosophy for Solving Problems. Englewood Cliffs, N.J., Prentice-Hall, Inc., 1984. http://www.enet.ru/win/cherezov/brodie1.html

Видите, философическое? Про бытиё и онтологии в STEP EXPRESS? :-) Когда Аристотель написал книжку про физику, он ещё и написал книжку про МЕТАфизику, в которой описывал расширенный жизненный цикл, метасистему, контекст существования своей физики.

Почему-то противопоставляют Аристотеля Платону, материализм идеализму. хотя на мой взгляд, основной вопрос философии (что первично?) вообще не имеет смысла — первична не материя сама по себе, и не идея сама по себе, сферическая и в вакууме :-) — а та система, системная связь, это вот системноинженерное «система на объекте относительно интегрального качества и порождающее качество процесса» — эта вот связь между материей и сознанием, которая и делает их самореализующимися, как метациклический интерпретатор в SICP :-) (или метациклический интерпретатор PostScript-а http://www.art.net/studios/Hackers/Hopkins/Don/psiber/metacircular.html ).

http://www.art.net/studios/Hackers/Hopkins/Don/psiber/introduction.html : «Cyberspace. A consensual hallucination experienced daily by billions of legitimate operators, in every nation, by children being taught mathematical concepts . A graphic representation of data abstracted from the banks of every computer in the human system. Unthinkable complexity. Lines of light ranged in the nonspace of the mind, clusters and constellations of data. Like city lights, receding . «

Вот это киберпространство Матрицы — первично. Материальное и идейное — из него следует, метациклически вычисляется (Гёдель Эшер Бах, Эта бесконечная гирлянда).

На самом деле, Платон говорил о GML, таком 3D-PostScript, порождающем проектировании. и этой абстрактной идеи реальной вещи (то есть, «тени идей»), и её концептуальной метамодели («идеи, бросающей тень»). Когда Аристотель попытался описать это в терминах «реальных объектов», то что не влезло в первичные 10 категорий, Аристотеля обозвали «метафизикой». Не влезли объекты, классы, интерфейсы, мультиметоды. То, что не входит в простую онтологию Фомы Аквинского, 10500 ангелов на острие булавки :-) Общие роды номинализма, всякие сложносоставные qualia. Исчисление типов высшего порядка и тайпклассы в Хаскель. Или прочие расширяемые метамодели. Расширяйте сознанье, Спинозы! :-)

Автор сайта Когда в языке появляются новые слова, то это не означает появление нового языка. Это лишь расширение старого. Новый язык появляется, когда меняется синтаксис и семантика, когда меняется взаимные связи его составных частей. В русском языке, к примеру, нет звательного падежа или двойственного числа — в отличие от древнеславянского. Подобная разница и позволяет говорить о русском и древнеславянском как о разных языках.

Бессмысленные слова — не составляют языка (с) И. Ильин

Какое же «писанiе» есть вѣрное или правое?

Отвѣчаемъ: то, которое точно передаетъ не только фонему, насыщенную смысломъ, и не только морѳему, насыщенную смысломъ, но прежде всего и больше всего самую семему. И скверное, или кривое «писанiе» будетъ то, которое не соблюдаетъ ни фонему, ни морѳему, ни семему. А вотъ именно въ этомъ и повинно революцiонное кривописанiе: оно устраняетъ цѣлыя буквы, искажаетъ этимъ смыслъ и запутывает читателя; оно устраняетъ въ мѣстоименiяхъ и прилагательныхъ (множественнаго числа) различiя между мужскимъ и женскимъ родомъ и затрудняетъ этимъ вѣрное пониманiе текста; оно обезсмысливаетъ сравнительную степень у прилагательныхъ и тѣмъ вызываетъ сущiя недоумѣнiя при чтенiи и т. д., и т. д.

Статья в защиту дореволюционной орфографии:

http://nngan.livejournal.com/846846.html часть 1
http://nngan.livejournal.com/846940.html часть 2

Процирую суть статьи:

Само собой разумѣется, что и фонема и морѳема служатъ смыслу, который онѣ стараются вѣрно и точно выразить и которымъ онѣ внутренно насыщены. Безсмысленные звуки — не образуютъ языка. Безсмысленные суффиксы, падежи, спряженiя, мѣстоименiя, глаголы и предлоги, дополненiя — не слагаютъ ни рѣчи, ни литературы. Здѣсь все живетъ для смысла, т. е. ради того, чтобы вѣрно обозначить разумѣемое, точно его выразить и вѣрно понять. Человѣкъ даже стонетъ и вздыхаетъ не зря и не безсмысленно. Но если и стонъ его, и вздохъ его полны выраженiя, если они суть знаки его внутренней жизни, то тѣмъ болѣе его членораздѣльная речь, — именующая, разумѣющая, указующая, мыслящая, обобщающая, доказывающая, разсказывающая, восклицающая, чувствующая и воображающая, — полна живого смысла жизненно драгоцѣннаго и отвѣтственнаго. Весь языкъ служитъ этому смыслу, т. е. тому, что онъ хочетъ сказать и сообщить, и что мы назовемъ «семемою». Она есть самое важное въ языкѣ. Ею все опредѣляется. Возьмемъ хотя бы падежи: каждый изъ нихъ имѣетъ иной смыслъ и передаетъ о предметѣ что-то свое особое. Именительный: — предметъ берется самъ по себѣ, внѣ отношенiй къ другимъ предметамъ; родительный: — выражаетъ принадлежность одного предмета — другому; дательный: — указываетъ на приближающее дѣйствiе; въ винительномъ падежѣ ставится имя того объекта, на который направлено дѣйствiе; въ творительномъ падежѣ ставится имя орудiя; мѣстный или предложный падежъ указываетъ на обстоятельства и на направленiе дѣйствiй. И такъ, дѣло идетъ черезъ всю грамматику.

Къ фонемѣ, морѳемѣ и семемѣ присоединяется, наконецъ, запись: слова могутъ быть не только фонетически произнесены, но ещё и начертаны буквами; тогда произносящiй человѣкъ можетъ отсутствовать, а рѣчь его, если только она вѣрно записана, можетъ быть прочтена, фонетически воспроизведена и вѣрно понята цѣлымъ множествомъ людей, владѣющихъ этимъ языкомъ. Именно такъ возникаетъ вопросъ правописанiя. Какое же «писанiе» есть вѣрное или правое?

Отвѣчаемъ: то, которое точно передаетъ не только фонему, насыщенную смысломъ, и не только морѳему, насыщенную смысломъ, но прежде всего и больше всего самую семему. И скверное, или кривое «писанiе» будетъ то, которое не соблюдаетъ ни фонему, ни морѳему, ни семему. А вотъ именно въ этомъ и повинно революцiонное кривописанiе: оно устраняетъ цѣлыя буквы, искажаетъ этимъ смыслъ и запутывает читателя; оно устраняетъ въ мѣстоименiяхъ и прилагательныхъ (множественнаго числа) различiя между мужскимъ и женскимъ родомъ и затрудняетъ этимъ вѣрное пониманiе текста; оно обезсмысливаетъ сравнительную степень у прилагательныхъ и тѣмъ вызываетъ сущiя недоумѣнiя при чтенiи и т. д., и т. д.

Удостовѣримся во всемъ этомъ на живыхъ примѣрахъ.

Вообще говоря, одна единственная буква можетъ совсѣмъ измѣнить смыслъ слова.

Новый язык появляется, когда меняется синтаксис и семантика, когда меняется взаимные связи его составных частей. В русском языке, к примеру, нет звательного падежа или двойственного числа — в отличие от древнеславянского. Подобная разница и позволяет говорить о русском и древнеславянском как о разных языках.

Можно только гадать, не зная правил — два это отдельных языка или один, с диалектами. Русский язык изменялся неоднократно, и при каждой реформе выкидывали «лишние» буквы — а по сути, выкидывали заодно и «лишние» смыслы. К примеру, словоупотребление дореформенного правописания и «революционного кривопiсания» отличается. отличаются смыслы, семемы. Язык был построен так, чтобы облегчать понимание. чтобы писать на нём было сложно — нужно понимать суть корней, происхождение слов, знать правила и исключения.

Но чтобы читать и понимать написанное было просто. «революционное кривопiсание» этим свойством не обладаетъ! Из древнеславянского пропали ариост, плюсквамперфект, время условное, четвертое «как бы» и сила выражения языка, определённых смысловых конструкций, семем понизилась. Поэтому это похоже, действительно уже другой язык — ранее выразительная сила была больше.

Автор сайта Может, для решения задач какой-то предметной области нужны не новые языки, а лишь библиотеки для старых языков? Например, графические библиотеки. Или библиотеки для работы с сетью, или БД. Вы уверены, что для этих целей обязательно изобретать новые языки? Может, если это действительно оправдано, то эти языки надо стандартизовать по ISO в международных комитетах?

Именно так оно и происходит: PostScript, Display PostScript, Display PDF. Используют одну и ту же display model — подмножество display model PostScript изначального.

ISO STEP 10303 — метастандарт состоит из нескольких под стандартов: язык EXPRESS = ER + ООП + rules, ассоциативное черчение, параметрическое моделирование; part 21 — текстовый файл обмена, универсальный, с проверкой версий; EXPRESS-M, EXPRESS-X — для конвертации; EXPRESS-G — графический; EXPRESS-XML — понятно что. Далее 2-3 стандарта про верификацию и валидацию. Далее 200+ стандартов различных Application Protocols — форматов «де юре» на ОНТОЛОГИИ STEP EXPRESS, которые фактически суть интерфейсы. Один из интерфейсов SDAI — ООСУБД ORM. Далее несколько 50..100+ форматов «де факто».

Далее методология IDEF5 и соответствующий ISO для «концептуального метамоделирования», где прописаны стандартные классификаторы и онтологии, в соответствующей предметной области —- а не ad hoc велосипед, изобретаемый по случаю.

Треугольник Фреге «знак-концепт-денотат» для метамоделирования и composability таких вот моделей, метамоделей, метаметамоделей и т.п.

Чесслав Программирование — это раздел математики, математика основана на концепции числа и только на нем. Язык общения появился задолго до концепции числа. Поэтому не надо проводить параллели между языками и языками программирования. Единственно, что можно сказать о естественном языке в части программирования, что он может и выполняет роль метаязыка. У фортеров после освоения Форта в этой роли выступает Форт, что, на мой взгляд, более однозначно и продуктивно в применении.

Автор сайта Нет, надо. Есть целый раздел в математике, который занимается такими параллелями. Это теория формальных языков.

Ну так формальные языки — это не естественные.

Аналогии есть, но они не совсем уж прямые и очевидные. Потом, аналогия — это слабая гипотеза индукции. Например, есть такая работа: John C. Baez, Mike Stay. Physics, Topology, Logic and Computation: A Rosetta Stone.

In physics, Feynman diagrams are used to reason about quantum processes. In the 1980s, it became clear that underlying these diagrams is a powerful analogy between quantum physics and topology. Namely, a linear operator behaves very much like a ‘cobordism’: a manifold representing spacetime, going between two manifolds representing space. This led to a burst of work on topological quantum field theory and ‘quantum topology’. But this was just the beginning: similar diagrams can be used to reason about logic, where they represent proofs, and computation, where they represent programs. With the rise of interest in quantum cryptography and quantum computation, it became clear that there is extensive network of analogies between physics, topology, logic and computation. In this expository paper, we make some of these analogies precise using the concept of ‘closed symmetric monoidal category’. We assume no prior knowledge of category theory, proof theory or computer science

Table 1. The Rosetta Stone (pocket version)Table 4: The Rosetta Stone (larger version): то же, подробнее.

Ещё есть любопытные работы:
David E. Kephart. Topology morphisms and randomness in the space of formal languages.
John M. Lipski. Towards a topology of natural languages.

Так что, с точки зрения теории категорий и каких-то обобщённых логических пространств, многообразий, — вы оба правы:

* язык программирования, формальный описывается объектами (типами данных) и морфизмами (программами),

* язык метапрограммирования, неформальный естественный — тоже образует какие-то морфизмы в топологических пространствах, других (топосах Гротендика, например; glutoses; топосах (topoi) как пространствах с изменяемой топологией; пучках (sheaves)).

Но естественный язык более многозначен, полисемичен — и эту семему построить сложнее. Поэтому нужен какой-то язык ограничений на всё это многообразие естественных. Например, rule engine, правила грамматики, морфологии, формальной семантики естественного языка.

В случае если формальный язык прост и нагляден (Форт или Лисп) — он сам является собственным метаязыком. То есть далее можно бесконечно расширять метациклически, L_(n+1) = L_n — это всё один и тот же базовый расширяемый язык, но с разными DSL, с разными словарями/макросами/macro writing macros, reader macros в Common Lisp. Ну или в Форте через CREATE . SCAN — тот же аналог reader macros, compiler macros, macros writing macros — реализованые как слова времени компиляции.

Язык становится своим собственным метаязыком, бесконечно расширяемым.

Автор сайта То, что в обычных языках программирования называют функциями и процедурами, в Форте называют словами. То есть сказанное Вами (в применении к обычным языкам программирования) можно истолковать так: Язык создан лишь тогда, когда в него не надо вводить новые процедуры и функции. Это бред! Если Вы в уже созданном языке Си описали свою собственную функцию, то Вы (с Ваших слов!) расширили язык, то есть стали создавать новый!

Нет, не расширили. Язык остался тот же самый, концептуально. Потому что first >Может, для решения задач какой-то предметной области нужны не новые языки, а лишь библиотеки для старых языков? Например, графические библиотеки. Или библиотеки для работы с сетью, или БД. Вы уверены, что для этих целей обязательно изобретать новые языки?

Не всегда, но иногда нужно. Иногда, изобретая библиотеку, фреймфорку требуется на самом деле новый метаязык, расширенный. Например, возьмём C++ и Qt framework. Это именно программный каркас, а не просто библиотека. Потому что использутся «метакомпилятор» moc, который переводит исходники на метаязыке C++/Qt, в котором есть сигналы и слоты, сообщения и рефлексия на сигналах и слотах в «базовый» C++. Причём «базовый» С++ тоже развивается: Qt переходит на C++11, C++14, C++17. Нужно ли для этого переписывать сам базовый фреймворк, базовый язык? Зависит от гибкости базового языка.

Язык С++ — негибкий и низкоуровневый. в формулировке от Alan Perlis: «язык низкоуровневый, когда требует упоминания ненужных подробностей». Поэтому moc не может быть реализован на самом С++ — требуется отдельный препроцессор времени компиляции. В каком-нибудь уже D — на CTFE функциях (макросах времени компиляции) moc может быть реализован на себе самом. Не говоря уже о лиспах и фортах.

В Форт не совсем полная аналогия с функциями в классических языках, т.к. параметры вызываемого слова-функции могут быть перемешаны среди вызова других функций ранее (оперативно запомнены на стеке, например, в начале цикла для использования где-нибудь в конце данного цикла или повторно без необходимости их повторного считывания на стек при очередном цикле их обработки). Потому Слово — это гораздо более мощное и абстрактное понятие, чем функция.

2020/12/16 17:20, Автор сайта #

Исторически первыми были подпрограммы в ассемблере, потом процедуры в Фортране и функции в Алголе. В Форте концепции «подпрограмма» лучше всего подходит «слово». Это не одно и тоже, но наиболее похоже. Что же касается «гораздо более мощного понятия», не буду растекаться мыслью по древу в поисках научного доказательства обратного. «Слова», в отличие от «функций», не так востребованы, для этого достаточно сравнить количество проектов на Гитхабе на Форте и на языках, в которых нет «слов». Раз избегают Форта, значит есть причины.

«Избегание» Форт языка, в основном, связано с тем что он, остаётся, «пустым звуком» в череде рассуждений о одинаковости всех языков и их равномощности при решении разных задач без практической попытки его использования, не в упрёк рассуждающего шаблонами непопулярности для уникальных языков.

P.S. Например есть такой радиолюбительский проект практического содержания: «Лазерная установка для засветки фоторезиста от AlphaCrow» (http://radiokot.ru/forum/viewtopic.php?f=8&t=119089), где в части для ПК используется Форт язык, а в части для STM32 Cи. Абсурд, с вашей точки зрения?

Беглый поиск проектов по слову Forth на Github: https://github.com/search?utf8=%E2%9C%93&q=forth&type=
Есть и другие площадки (sourceforge . ) и частные Интернет-ресурсы, показывающие наличие интереса к данному языковому направлению.

2020/12/19 13:20, Автор сайта #

Интересны не абсолютные цифры интереса к Форту, а относительные. Проценты лучше описывают картину. Посмотрите: 15 самых популярных языков программирования по версии GitHub, https://habrahabr.ru/post/310262/
А Вы сами-то работаете Форт-программистом, Вам компания платит за разработанное Вами ПО на Форте? Или Вы руководите такой компанией?

Вопросом на вопрос? Хорошо. Скажите, сколько из этих пятнадцати популярных языков взаимоперекрывают решемые ими задачи и цели их и кем, при этом, поставленные при выводе их на рынок?

2020/12/22 10:20, Автор сайта #

Многие перекрывают друг друга. Ну перекрывают взаимно друг друга C++ и Go, но что это меняет для Форта? А вопросы, в т.ч. встречные, закономерны. Просто интересен портрет человека, самоотверженно защищающего Форт. Насколько он успешен в программировании, какие успешные проекты на Форте у него за плечами, какие перспективы для себя он видит в использовании Форта? Может, такие люди заведут на Хабре раздел для Форта. А пока что с Фортом Вы сами знаете как.

Для Форта это мало что меняет. Он находит своих сторонников на протяжении более 40 лет вопреки всем «новым» и «прогрессивным» технологиям, преподносимыми нам разными корпоративными интересами. Успешность определяется каждым субъектом чисто в индивидуальной системе ценностей и вряд ли имеет смысл в таком публичном обсуждении.

2020/12/24 21:45, Автор сайта #

Прогрессивные технологии рождаются и вне корпораций, примерами тут могут быть PHP и Python. За этими языками не было крупных бюджетов. Ещё можно вспомнить недавно рождённый в Петербурге неподалёку от острова Котлин язык Kotlin, который теперь взяла на вооружение в качестве корпоративного стандарта Google. А Форт. Он застыл, как пирамида Хеопса.

Аналогичная дискуссия у «старперов»: http://www.eevblog.com/forum/vintage-computing/real-‘oldies’-might-remember-‘forth’-!!/

The demise of forth is greatly exaggerated — Кончина Форта сильно преувеличена

2020/01/14 16:41, Автор сайта #

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

По поводу «дела давно минувших дней» — Вы погорячились. А «ностальгируют» — кто на что, а Вы, видимо, — на кончину Forth’a.

2020/01/14 22:16, Автор сайта #

Погорячился?! Да Вы почитайте, что они там пишут. Один пишет, что программировал на ассемблере восьмиразрядного микропроцессора 6502, который разработан 1975 (!) году. В 1975 году, Карл! Другой пишет:

В середине восьмидесятых я разработал и продал компилятор Forth cross для использования с процессорами Z80. Он мог интерпретировать и компилировать код как для хост-системы, так и для целевой системы, то есть такие слова, как ARRAY, могли иметь другое поведение в системе хоста и целевой системе (добавьте информацию в таблицу символов в хост-системе, резервное пространство на целевой системе). Весёлые деньки.

Восьмидесятые годы — это разве не «дела давно минувших дней»?

А «ностальгируют» — кто на что, а Вы, видимо, — на кончину Forth’a

У каждого свой предмет ностальгии. Поверьте, это были достойные (для своего времени!) предметы.

Вы однозначно определили свою точку зрения — «Почему обречён язык Форт».
Я с Вами спорить не собираюсь. https://www.ferra.ru/ru/techlife/review/philae-computer/

Согласен с предыдущим мнением, что даже спора как такового нет. Некоторая история Форт ориентированного железа:
Каршенбойм Иосиф «Стековые микропроцессоры, или новое — это хорошо забытое новое»
http://www.kit-e.ru/articles/cpu/2003_09_98.php Часть1
http://www.kit-e.ru/articles/elcomp/2004_1_102.php Часть2
http://www.kit-e.ru/articles/elcomp/2004_2_130.php Часть3

На этом западном форуме больше информации к размышлению: http://forum.6502.org/viewforum.php?f=9

Сейчас прощё встретить использвание спроектированных ядер Форт-CPU в проектах на FPGA. Один из примеров — проект GameDuino: http://excamera.com/sphinx/gameduino/
ядро процессора J1

Forth в качестве Биоса в компьютере OLPC: http://wiki.laptop.org/go/Forth
на базисе проекта OpenBios: https://www.coreboot.org/OpenBIOS
ПЛК контроллеры с Форт на борту: http://www.es.ua/ru/kataloh/prohramne-zabezpechennia-dlia-kontroleriv-es-forthlogic/forthlogic
Здесь логи IRC-Forth англоязычного канала: http://forthworks.com/forth/irc-logs/

P.S. Рано похоронили Форт, мы ещё не знаем всей его истории, особенно, в настоящем времени. А то что его почти нет в учебных программах, то это отдельный вопрос для рассмотрения. Промышленность про него ни сном ни духом не ведает.

В рамках использования блокчейна для «стимулирования» активности обмена программным Форт-кодом было предложено такое решение:
https://github.com/mak4444/LTCFileShopPlugin (Плагины к https://electrum-ltc.org/ Этот плагины предназначены для удобной купли/продажи дешевых файлов). И продемонстрирована его работоспособность на примере каталога магазина. В частности, в каталоге есть проект авторской сборки кода из проекта OpenBios (OpenFirmware) в рамках российской Форт-системы SPF4. Проверил работоспособность этого проекта на нетбуке (получил терминал системы).

P.S. Предыстория появления этого решения описана здесь http://www.balancer.ru/g/p5509089

2020/01/15 10:23, Автор сайта #

Рано похоронили Форт

Ещё не похоронили. Ещё есть люди, которым нравится рассматривать его в мавзолее.

Промышленность про него ни сном ни духом не ведает.

Я Вас умоляю! Не держите эту промышленность за дураков. Вполне образованные люди. Некоторые из них с Фортом вполне знакомы.

Вы однозначно определили свою точку зрения — «Почему обречён язык Форт».

Вы дали ссылку на статью, где говорится о важности надежности программного обеспечения. Так вот сейчас один из путей совершенствования языков программирования — это повышение их надёжности. К примеру, в языке Rust прорабатывается концепция владения объектами. Компилятор Rust не позволит, чтобы одним объектом одновременно владели несколько процессов. Ещё есть языки, в которых нет неинициализированных переменных — это гарантируется компилятором. В функциональном программировании можно увидеть целый букет идей по повышению надёжности программ.

А что Форт? Он развивается? У него появился контроль доступа за границы массива? Он запрещает неинициализированные переменные? Он делает обязательным контроль результатов ненадёжных функций типа fopen? Нет, нет и ещё раз нет. Кто ж его будет развивать? Он же памятник!

Не льстите себе своей эрудированностью. Любые песочные замки смывает дождём или они рассыпаются под действием ветра. Вы правда думаете что люди использующие Форт направление ограничены в своих умениях?

У него появился контроль доступа за границы массива? Он запрещает неинициализированные переменные? Он делает обязательным контроль результатов ненадёжных функций типа fopen? Нет, нет и ещё раз нет.

2020/01/16 13:30, Автор сайта #

Не льстите себе своей эрудированностью.

Если б была попытка поразить своей эрудированностью, то Вы бы тут видели росыпь наукообразных изречений вроде «экзистенциальная квантификация», «детерминированность». Но Вы здесь видите написанное так, чтоб быть поближе к народу. «Того, кто вышел из народа, в народ обратно не загнать». А я не выходил.

Вы правда думаете что люди использующие Форт направление ограничены в своих умениях?

Людям, которые не сделали мне ничего плохого, я всегда желаю хорошего. Вот и фортерам желаю, чтобы они были успешны. Но… Не вижу успешных фортеров! Ну хоть кто-нибудь написал бы о себе, любимом и успешном! Не о Пете, не о Васе и не о Джоне, а о себе. Что он не просто где-то работает и хорошо зарабатывает, но и работа связана с любимым Фортом! Хочу, чтобы меня ткнули: вот смотри, видишь кучу вакансий по Форту, видишь, какая у фортеров зарплата?

Вы даёте ссылку на то, что запущенными десятилетиями назад космическими аппаратами управляют программы на Форте (наверно, Вы увидели в этом аргумент в пользу Форта?). Но там ещё пишут про надёжность. А Форт в плане надёжности написанных на нём программ остался на отметке «1971 год». А вот новые языки программирования заставляют программистов писать более надёжный код. Я не знаю, что тогда для Вас аргумент.

Что он не просто где-то работает и хорошо зарабатывает, но и работа связана с любимым Фортом!
Хочу, чтобы меня ткнули: вот смотри, видишь кучу вакансий по Форту, видишь, какая у фортеров зарплата?

Т.е. характеристики языка побоку? Главное — шкурный текущий интерес?

1000 Forth repositores по мёртвому языку на GitHub https://github.com/ForthStar?tab=stars

Почему бы Вам в сообществе Forth Hub не прояснить и выше озвученные вопросы?

P.S. Форт — это язык программирования и философия. Он предоставляет программисту контроль над аппаратным обеспечением, а также способность абстрагироваться вверх, ограничиваясь только навыками и воображением программиста. Таким образом, это идеальный способ программирования компьютера на любом уровне с самых низких уровней ядра ядра и драйвера устройства до самых высоких уровней пакетов прикладных программ.

Другие языки программирования также носят универсальный характер, но Forth сильно отличается от них тем, что это язык без синтаксиса! (Уникальная концепция, к которой привыкают, но как только программист привык к ней, сила работы без синтаксиса становится очевидной.)»

Ещё ссылка на интересные суждения о Форт языке и его месте в программном обеспечении:
http://www.exemark.com/FORTH/Ting_Laws_of_Computing_v4.pdf

Есть и такая ожившая с 2011 SVFIG: https://www.meetup.com/SV-FIG/
Сейчас насчитывает порядка 222 участников.

Снимают периодически митапы: https://www.youtube.com/channel/UC2v6b9814uIA5egk5-yHAVw/v > 2020/01/27 15:07, Автор сайта #

Т.е. характеристики языка побоку? Главное шкурный текущий интерес?

Отсутствие востребованности фортеров на рынке труда — это следствие характеристик языка. Зависимость не линейная, но явная. «Программист на Форте» — это не профессия, а хобби. Это как шахматы: любители этой древней игры в массе своей лишь теряют деньги на своём хобби, зарабатывают же на шахматах один из многих тысяч. То же и с любителями древнего языка программирования.

1000 Forth repositores по мёртвому языку на GitHub

Ой, я вас умоляю… А на клингонском языке даже журнал выходит!

Почему бы Вам в сообществе Forth Hub не прояснить и выше озвученные вопросы?

Дело в том, что у меня нет вопросов. А вот почему бы Вам не выставить своё резюме на hh.ru (к примеру) и не огласить поступившие предложения?

Он предоставляет программисту контроль над аппаратным обеспечением

А Вы можете объяснить, почему в правильно написанной программе(тут всё, как в учебнике, не правда ли?) выдаётся неправильный результат? А ведь программа, написанная на хорошем языке программирования, выдаст вместо неправильного результата сообщение об ошибке. А если используем отличный язык программирования, то это сообщение увидим вообще при компиляции!

язык без синтаксиса

Вот поэтому, когда мы пишем add(a, b), то знаем, что является функцией а что аргументом. А в Форте — сплошное месиво: a b add. Где тут что? Никакие анализаторы кода не помогут. Только в рантайме ошибки отлавливать.

Главное — шкурный текущий интерес?
Снимают периодически митапы.

Надо бы поискать видео, как в каком-нибудь ДК совершенно безвозмездно играют разрядники и КМС-ы по шахматам.

Bitcoin uses a scripting system for transactions. Forth-like, Script is simple, stack-based, and processed from left to right:
https://en.bitcoin.it/wiki/Script
Advanced Bitcoin Scripting, Part 1. Transactions & Multisig
https://www.youtube.com/watch?v=8FeAXjkmDcQ

Вот поэтому, когда мы пишем add(a, b), то знаем, что является функцией а что аргументом. А в Форте — сплошное месиво: a b add. Где тут что? Никакие анализаторы кода не помогут. Только в рантайме ошибки отлавливать.

Помогут, если задаться необходимостью его написания и использования.

2020/01/28 14:18, Автор сайта #

Но опять это где-то в параллельной вселенной, только не у нас. Однако же, Forth-like ≠ Forth. Язык Factor — тоже Forth-like, но вы не за Factor переживаете, а за его архаичного предка. Почитайте: История разработки одного компилятора. Это success story про то, что как разработчики решили использовать Forth в качестве скриптового языка (как и в приведённом Вами примере). Но потом жизнь подвела к более мудрому решению использовать скриптовый язык со статической типизацией:

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

Но опять это где-то в параллельной вселенной, только не у нас.

В России Форт никогда не был широко известен и понят среди специалистов

Однако же, Forth-like ≠ Forth. Язык Factor — тоже Forth-like, но вы не за Factor переживаете, а за его архаичного предка.

Под Forth-like можно трактовать множество языков и дискутировать вокруг этого,например как здесь:
https://www.reddit.com/r/Forth/comments/7t9tqs/a_word_histogram_script/

По поводу авторского языка Cixl. Пока не будет около этих инструментариев достаточного кличества единомышлеников и учебной литературы, то обсуждения их применимости будут заходить в «тупик».

По Форту, «худо-бедно», но есть эти составляющие для его развития.
Даже в новых издаваемых рускоязычных книгах можно встретить его упоминание

Вторников А.А. «Стек, или Путешествие туда и обратно» (февраль 2020г):
https://dmkpress.com/catalog/computer/programming/978-5-97060-517-2/

P.S. Изначально достаточно его включения в том или ином виде в учебные программы. Этот язык близок к тематики в применении и развития AI.
Пример: Forth for Artificial Intelligence in Robots:
http://mind.sourceforge.net/forth.html
Еще он использовался и в Экспертных системах (книга Таунсенда) и моделировании клеточных автоматов (книга Тоффоли).

Форт, даже без задействования расширений для формульной записи математических вычислений применим для этого использования. Блог Forth & Math:
http://forthmath.blogspot.ru/2020/
Methods of Computational Physics:
http://galileo.phys.virginia.edu/classes/551.jvn.fall01/

Хотя с использованием Factor языка есть какие то проекты на github:
https://github.com/topics/factor

Это Ваш кошмар? :) 7 Programming Languages That Give Me Nightmares:
https://www.pcmag.com/feature/350479/7-programming-languages-that-give-me-nightmares

P.S. Сколько спроектированных языков выкинули на свалку истории, и сколько ещё придуманных и не придуманных ожидает такая участь.

Аксиома — повышаем градус!
https://habrahabr.ru/post/226235/

2020/01/29 11:41, Автор сайта #

Сколько спроектированных языков выкинули на свалку истории, и сколько ещё придуманных и не придуманных ожидает такая участь.

Мне нравится Форт, вот мой пример иммитационного моделирования на Форте:
http://technic.itizdat.ru/docs/shabronov/FIL14859441100N531932001/1
А так же напоминаю, что латинский язык до сих пор почему то используется медиками. Возможно, с Фортом такая же аналогия.

Удачно Вас прочитал и все мнения. Работал на микрокодах 0 и 1 («Здравствуй, мир» или «Хитрая рыжая лиса перепрыгнула ленивого пса» — знаете о чем говорю). Для I8048, I8051 создали внутрисхемный эмулятор (академик Ершов, журнал «Микропроцессорные средства и системы», год 1987-1989). Не забудем, что есть Assember, Forth, наш Basic тот же наш Fortran. И Си, и Паскаль. Но есть программисты в микрокодах и программисты в ОС РВ.

2013-2020. 5 лет обсуждается статья. Есть комментарии за, есть против. Но если язык обсуждается столько времени, то значит о нём знают и он существует. Я начал изучать этот ЯП из-за того, что в нём отсутствует типизация. Для меня типизация — это лишь ограничение, которое мешает. В криптографии, например, необходимо проводить операции по типу «А / 7 * 6» и т.д. Статичная и динамичная типизация сразу скажут про ошибку, что, по-моему, абсурдно. Вот кто запрещает напихать стакан бумагой? От этого вся вселенная должна перестать работать что-ли? Вот по этой причине я не в ладах с Си и всеми остальными ЯП. А ещё на Форте не нужно писать все слова на английском, можно и на родном. Просто никто не старается взять и сделать что-то глобальное на Форте, вот и знают о нём малый круг людей.

2020/08/31 18:02, Автор сайта #

Различные участки памяти имею различный тип, в одних местах хранятся 8-битные целые значения, в других — 64-битные плавающие. И к ним должны применяться разные операции. Вот для этого и нужна типизация. Она позволяет некоторые типы ошибок выявить уже на этапе компиляции. Да, типизация в каком-то смысле неудобна. Она делает программы многословнее (хотя типизация Хиндли — Милнера отчасти снимает эту проблему), надевает своего рода вериги на программиста. Да и сообщения об ошибках зачастую невнятны, а ещё и на неродном языке. Но что поделаешь? Держаться в общей струе — выгодная по жизни стратегия. Поэтому интересоваться Фортом можно, а работать придётся на других языках.

С каких пор память распределена по типам? Когда я использовал язык ассемблере, никакой ереси такого рода не было.

2020/12/05 16:37, Автор сайта #

Когда Вы программировали на ассемблере, то тип памяти Вы держали в голове. В зависимости от того, что было в Вашей голове, Вы применяли к ячейкам памяти, то одну операцию, то другую. 8-битной ячейке — одни операции, 32-битной — другие. В языках со статической типизацией эту «ересь» помнит компилятор. В языках с динамической типизацией «ересь» хранится в самой программе.

Форт в тренде языков программирования 2020 на 48-м месте! По методике ieee.org — Институтa инженеров электротехники и электроники:
https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2020

Хорошо пошутили. 48-е место является последним с величиной ранга 0.

Там есть вкладкa Trending и Custom фильтра-результата и за счёт 6.8 + 1.8 он на 47-м месте (при этом у него признак только embedded — 15-е место).

P.S. По другим признакам данных по Форту нет, т.к. Форт-слой во многих случаях в проекте реализуется на выбранном языке (убедиться легко — поиск по по слову Forth на Github и какой язык реализации Forth выбран при этом). В каком то виде Форт можно найти и в коммерческих проектах. В платe Pololu Maestro Servo (PIC18F4550) в качестве скриптового языка применён Forth:
https://www.pololu.com/docs/pdf/0J40/maestro.pdf

По 0.0 там только отсекается срез языков, попавших в данный рейтинг. Во вкладках Job, Open у него тоже 0.0 индекс,но это только значит, что в методике анализа нет таких данных или они эпизодичны. Open, во всяком случае, должен был иметь данные по Форту (Forth).

Свежая статья с Хабра, Байт-машина для Форта (и не только) по-индейски:
https://habr.com/post/431932/

2020/12/07 08:57, Автор сайта #

Недавно нашёл Константина Шереметьева на сайте имени себя. Когда-то он сделал ПараФорт — 32-рязрядную версию Форта для 16-разрядных PC. И я купил эту систему, не имея вообще никакого опята программирования на Форте. Просто купился на то, что можно программировать на кириллице. Серьёзных проектов на нём не было. Зато расширил кругозор и увеличил опыт. Ну вот, смахнул ностальгическую слезу.

Форт в тренде языков программирования 2020 на 48-м месте!

За 48 лет существования — на 48-м месте. Нет, не взлетит.

На 47 или 48 месте, если быть немного точнее из 300 языков для анализа.

P.S. И да, на безмоторных самолётах — дельтапланах тоже не всем дано летать. :)

Некоторые статьи с «троллингом» Форта :)
https://trollheaven.wordpress.com/tag/forth/

P.S. Там же обсуждается метаФортность:
https://trollheaven.wordpress.com/2020/09/09/der-forth-metacompiler/

За 48 лет существования — на 48-м месте. Нет, не взлетит.

А мне непонятно сравнение языков программирования по рейтингу популярности. Что-то я не помню, чтобы плотник выбирал между пилой и рубанком, ориентируясь на статистику их покупки в магазинах. Не кажется ли Вам, что рейтинг, в котором свалены все языки без учета их специфики, не адекватен в данном случае? Его используют, например, для выбора специализации студентами. То есть человек учит тот язык, который наиболее востребован и тем самым имеет больше шансов устроиться на оплачиваемую работу. Это объяснимо. Но сравнивать языки МЕЖДУ СОБОЙ таким образом. Немного странная логика.

Discussion: Forth is the programming language of the future
https://comp.lang.forth.narkive.com/Dil22mC1/forth-is-the-programming-language-of-the-future

2020/01/18 13:04, Автор сайта #

У этого сайта кривая вёрстка. Проверил в 4 браузерах.

Проверил в 3 браузерах, кривости не заметил.

Дело не в верстке сайта. Я проверил в опере под VPN — тогда открывается правильно. Значит косяк где-то в DNS- и IP-фильтрах провайдеров.

2020/01/20 16:42, Сорок Сороков #

Чую, что Роскомнадзор приравнял Форт к саентологам. И те, и другие — деструктивные культы. Вот и заблокировал.

Вероятно, это того, что сам narkive.com заблокирован Роскомпозором (интересно за что?).

Судьба Forth: https://felixit.blog/2020/05/11/sudba-forth/

2020/01/25 23:55, Автор сайта #

По этой ссылке — странная статья некого «Феликса».

Чтобы язык стал массовым, он должен быть понятен массам (целевой аудитории).

Спорный тезис. Фортран, Кобол и Алгол были когда-то и понятны, и массовы. Понятность со временем не исчезла, но куда делась массовость? Тот, кто найдёт правильный ответ, заодно узнает, почему упала популярность Форта.

На вершине этой метрики оказываются языки, в текущий момент наиболее близкие бытовому представлению о программировании.

Да нет же, на вершине — языки, применение которых быстро и надёжно даёт результат. Просто умеют считать деньги — ничего личного.

BASIC, Pascal, Python, JavaScript. Это четыре сверхпопулярных массовых языка.

Куда-то дели Java, C, C++.

Все действительно массовые языки исключают понимание работы памяти, стеков, регистров

Форт тоже исключил из своего понятийного аппарата слово «регистр».

Потому языки развиваются в сторону «наиболее раннее обнаружение ошибки на стадии разработки»

И это есть хорошо. Лучше обнаружить косяк при сборке автомобиля, чем при езде на нём.

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

Команда программистов и вычислителей (1956 г.), третья слева — Екатерина Ющенко.
Здесь представлена большая часть программистов планеты — 12 из 17.

До этой «Глаши» (Екатерина Ющенко — первый в СССР доктор физико-математических наук за работы по программированию, член-корреспондент Академии Наук) блогеру «Феликсу» — как до Луны. И до остальных «Глаш» с фотографии — тоже далековато.

«Глаши» начали программировать задолго до появления Форта. Сначала это была женская профессия, мужчины пришли в эту профессию попозже. Физмат всегда программировал на Фортране. Форт когда-то себя хорошо чувствовал за рубежом, но в нашей стране, в виду большей распространённости физмат-образования, Форт никогда не был на гребне.

Forth. Язык, в котором вас никто не защищает ни от чего. Что написал, то в лоб и прилетит.

Что заслужил, то и получил.

Что хотели сказать этой статьёй — непонятно.

До этой «Глаши» (Екатерина Ющенко — первый в СССР доктор физико-математических наук за работы по программированию, член-корреспондент Академии Наук) блогеру «Феликсу» — как до Луны. И до остальных «Глаш» с фотографии — тоже далековато.

Оставлю за кадром все остальные утверждения, которые вы просто не поняли (но мнение имеете), но этот момент оставить не могу: приписывать мне замену плейсхолдера «Глаша» Екатериной Ющенко — нелепо. Это ваших рук и головы дело, вы за эту нелепость и несёте ответ.

Fift — язык программирования для крипто-денег Telegram (последние правки документации и проекта июль — 2020г). Синтаксис, конечно, не Форт (ближе к языку Factror), но его идеи и базис просматриваются при близком взгляде знакомого с Форт языком.

Компилятор fortran + IMSL для Win7

24.03.2012, 20:38

Компилятор Refal для Win7 x64
У кого-нибудь есть ссылка на рабочий компилятор для рефала, не могу найти сколько не искала.

Fortran под Win7
помогите достать фортран для 7 винд. оч надо

Помогите найти компилятор Fortran-а
Мою предыдущую тему переместили, странно. Помогите пожалуйста найти нормальный компилятор для.

Компилятор forth для windows

1.1 Форт FORTH) в настоящее время является одним из популярнейших языков программирования. Он был разработан в начале 70-х годов. Создатели языка Ч.Мур (C.MOORE) и Э.Разер (E.RAZER) в то время были сотрудниками национальной радио-астрономической обсерватории США. Следует отметить, что слово «FORTH» — это не аббревиатура или какое-либо сокращение. Это торговый знак калифорнийской фирмы «FORTH».

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

1.3 Итак, форт с плавающей точкой версии FP50 является одним из языков программирования, используемых в компьютере ZX-SPECTRUM 48K. Естественно возникает вопрос: а разве не бейсик является основным языком вашего компьютера? Если да, то каким же образом используется форт? Ответом является то, что процессор вашего компьютера Z80 является единственной «думающей» частью спектрума, которая не понимает ни бейсика, ни форт, ни что-нибудь отличное от своих машинных кодов. При включении питания процессор автоматически начинает выбирать и выполнять команды машинного кода, размещенные в ПЗУ (ROM). Именно эти команды дают возможность компьютеру воспринимать, интерпретировать и выполнять программы, написанные на бейсике. Эти команды бейсика с помощью программ ПЗУ интерпретируются процессором в последовательности стандартных действий, которые затем выполняются шаг за шагом. Таким образом, именно программы в машинных кодах, хранящиеся в ПЗУ, дают возможность компьютеру обработать команды бейсика. Программирование на бейсике вряд ли когда-нибудь потребует от вас знания, как же работают эти самые машинные коды.

Все сказанное выше в полной мере относится и к FP50, работа которого основана на использовании бейсик-программ и соответствующих им машинных кодов. Именно их вы будете загружать в компьютер на этапе подготовки к работе с фортом. Считанные с магнитной ленты программы” машинные коды и данные размещаются в оперативной памяти (RAM) , создавая видимость изменения содержимого ПЗУ (ROM) и давая тем самым возможность программирования на форте. Все программы, загружаемые в компьютер на этапе подготовки его к работе с фортом, для пользователя будут «прозрачными», т.е. не требуют от вас знания их точек входа и выхода. Исключением могут быть случаи прекращения работы программы по команде «BREAK» с дальнейшим восстановлением процесса функционирования форта.

И наконец следует отметить, что SPECTRUM работает с фортом нисколько не хуже, а порой и лучше компьютера, работающего с бейсиком. Основанием для этого утверждения служит то, что бейсик — ориентированная система, полностью расположенная в ПЗУ, а форт-система (FP50) загружается в более быстродействующую оперативную память. 1.4 Особенности использования форт. Программы, написанные в системе форт, решаются в тысячу раз быстрее аналогичных программ на бейсике. Это обусловлено тем, что форт работает практически со скоростью машинных кодов, в то время как команды бейсика всегда требуют интерпретации. Таким образом, форт всегда предпочтительней использовать там, где бейсик не удовлетворяет своим быстродействием, причем программы, написанные на форте, более компактны.

По сравнению с бейсиком программирование на форте более наглядно, легко изучаемо и более профессионально. Кроме того, в отличие от бейсика, форт позволяет выполнять структурное программирование.

Достоинства форта привели к тому, что многие обучающие курсы уже переведены с бейсик-ориентированных систем на форт-ориентированные. Кроме того, обладая свойством «дружественности», FP50 значительно дисциплинирует программиста, что несомненно скажется при освоении языков более высокого уровня, таких как паскаль, кобол или фортран.

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

1.5 FP50 содержит все структуры стандартной версии FORTH 79. Поэтому средства, освоенные вами в FP50, с успехом могут быть использованы в большинстве версий языка форт. Следует, однако, отметить, что программное обеспечение, созданное для FORTH 79 (или его упрощенной версии FIG FORTH), перед работой в среде FP50 может потребовать ряд несущественных доработок.

Характерной особенностью FP50 является его способность обрабатывать целые числа из множества от -32767 до +32767 с точностью до целого числа, представленные в показательной форме от -2Е127 до +2Е127 с точностью до десяти знаков после запятой.

2. ОСНОВЫ ЯЗЫКА ФОРТ

2.1 Если вы только знакомитесь с языком форт, то настоятельно рекомендуем перед загрузкой кассеты прочитать эту главу. Принципы работы форт отличаются от бейсика, поэтому не следует загружать компьютер форт-системой до тех пор, пока не освоите основные элементы этого нового для вас языка.

Однако, если вам нравится идти более тернистым путем освоения языка (т.е. чесать левое ухо правой рукой), то загрузите форт с помощью команды LOAD » » и вперед!!

Возможна ситуация, когда вам попадается форт-программа, требующая немедленного выполнения. В этом случае обратитесь к разделу 3.1 с обязательным возвратом к этой главе снова. Это сделает ваш путь изучения языка более правильным и менее трудным.

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

То, что вы вводите в компьютер (команда, число, символ, имя, переменная), в рамках форта называется «словом». Принцип программирования на форте основан на том, что вы обучаете компьютер выполнению требуемых операций путем задания и описания новых слов.

Сначала FP50 начинает работать с некоторым набором слов, которые в нем определены заранее. Эти слова загружаются в компьютер из файла «DATA» (см. раздел 3.1). Для просмотра ••• всех слов, находящихся в исходном состоянии в словаре системы FP50, следует обратиться к приложениям 1 и 2. Несмотря на то что все эти слова весьма полезны, вы ничего не сможете сделать, используя их по отдельности. В исходном списке слов FP50 вы не найдете ничего, что бы вам помогло сделать программу «шахматы» или «космическая война». Что же делать? Вывод один :нужно научить ваш компьютер понимать новые слова, которые выполняли бы требуемые вам функции. Для этого вы должны описать новое слово в терминах слов, уже известных вашему FP50. В одном новом слове можно объединить функции пяти, десяти или двадцати ранее известных слов. На основе только что созданных слов можно создать новые слова и т.д. В конце концов ваша программа будет представлена одним-единственным словом, созданным на основе слов, описанных в словаре системы FP50.

2.4 Глубокое понимание словарной концепции форта очень важно. Попытаемся пояснить ее, опять обратимся к бейсику. По существу, программы, написанные на бейсике, тоже состоят из слов, таких, как ‘LET’, ‘FOR’, ‘NEXT’ и т.д., однако бейсик-программа создается непосредственно из этих слов, и вы не сможете задать их одним словом, состоящим из перечисленных выше. Если вы все же попробуете это сделать, то непременно получите сообщение об ошибке. В отличие от сказанного выше форт-программа и форт-слово могут состоять из совокупности исходных слов системы FP50 и слов, определенных вами, что обеспечивает достаточную гибкость системы программирования.

В заключение необходимо отметить, что в бейсике концепция слов частично реализована путем использования подпрограмм. Например, если в вашей бейсик-программе возникла необходимость чередующейся окраски экрана то в белый, то в черный цвет, то необходимо написать подпрограмму, реализующую эту функцию и начинающуюся, скажем, со строки 2000. На соответствующем шаге основной программы путем использования команд ‘GOSUB 2000’ выполняются описанные в подпрограмме действия. В известном смысле ‘GOSUB 2000’ является словом,

которое вы определили сами, а его использование в бейсик-программе ведет к выполнению соответствующих ему функций, описанных вами в подпрограмме. Аналогично и в форте. Вы выбираете какое-либо слово, например ‘PATTERN’ (рисунок), и с помощью уже известных системе слов описываете его действие. Теперь всякий раз, когда компьютеру встретится слово ‘PATTERN’, он будет рисовать на экране соответствующий этому слову рисунок.

Использование стека является очень важной особенностью языка форт. Стек содержит числа. Числа, размещенные в стеке, используются для различных вычислений, результаты которых также помещаются в стек. Стек всегда можно представить в виде колоды карт с написанными на них числами. Последняя карта, которую вы кладете в колоду, будет всегда первой, которая выбирается из колоды обратно. Следовательно, работу со стеком можно представить и описать следующим принципом: последним пришел (LAST IN) — первым обслужен (FIRST OUT), сокращенно — ‘UFO’. Каждый раз. когда вы помещаете в стек новое число, число, занимавшее вершину стека, становится вторым числом стека.

В данном руководстве термин ‘TOS’ используется для обозначения вершины стека, ’20S’ — второго элемента стека, ’30S’ — третьего элемента, считая от вершины, и тд.

Приведенная ниже диаграма должна помочь вам представить принцип построения стека:

Скачать Fortran на русском бесплатно

  • Категория:Офис
  • Операционная система: Windows 10
  • Русский язык: Есть
  • Лицензия: Бесплатно
  • Загрузок: 17908

Скачать Fortran бесплатно

Тем, кто начал программировать на языке программирования Fortran обязательно нужно скачать Fortran для Windows 10. Специальная среда программирования позволит раскрыть все преимущества нового языка программирования.

Среда программирования Fortran

Основной средой программирования на Fortran является софт от компании Intel. Для конечного пользователя эта утилита является лучшим решением, так как позволяет программировать в том числе в визуальном редакторе. Можно программировать и в режиме привычного кода.

Скачать Fortran для Windows 10 нужно вместе с руководством, как программировать на Фортане. Хотя в мире этот язык очень распространен, но в России он лишь набирает популярность. Такие редакторы, как Delphi или Turbo Pascal в этом плане намного проще.

Можно ли вызвать Windows API из Forth?

В C/C ++ исполняемые файлы Windows связаны с статическими библиотеками, которые импортируют файлы DLL, содержащие процедуры Windows API.

Но как мы можем получить доступ к этим процедурам из кода Forth (например, GForth)? Это вообще возможно?

Я знаю, что есть Win32Forth, способный делать вещи Win32, но мне интересно, как (и если) это можно было бы сделать в реализациях Forth, которым не хватает этой функции из коробки (все же они выполняются на целевой ОС и потенциально могут взаимодействовать с ним на определенном уровне).

То, что в настоящее время приходит мне на ум, — это загрузка соответствующих DLL-файлов и каким-то образом определение адреса выполняемой процедуры, но затем выполните как ? (Все, что я знаю, это то, что Windows API использует stdcall конвенции). И как мы можем найти процедуру без заголовка C? (Я очень новичок в Forth и немного менее новичок в C ++. Пожалуйста, несите меня, если мои размышления бессмысленны).

Илон Маск рекомендует:  Что такое код array_merge
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL