Ответ 6
Исследования/Разработка/Понимание популярных виртуальных машин
JVM, виртуальная машина Java, является языком, основанным на стеке. Кроме того,.NET Framework основан на MSIL, который также является виртуальной машиной и языком стеков.
Как встроенный язык сценариев
Я писал подмножество FORTH в С#, в разных стилях (до сих пор, макро, с косвенной и прямой). Я хотел, чтобы он был очень маленьким и переносимым на разные языки и среды, и что-то очень простое должно быть в состоянии сделать это. Синтаксический анализатор представлял собой простую функцию разделения строк, а затем интерпретировал каждое слово (первый способ) или компилировал каждое слово в словарь (второй способ). У обоих были свои сильные стороны.
Это функциональный
Это так. Ты слышал меня. Чисто функциональный означает, что при одинаковых входных данных вы получаете одинаковый выходной сигнал и не производите побочных эффектов. В языке FORTH на основе стека с нулевой точкой, по крайней мере для большинства слов, учитывая стек в качестве входных данных, после запуска слова вы получаете тот же стек, что и выходной. Таким образом, он функционален, со всеми математически гарантированными свойствами, которые сопровождают его! ФОРТ мог добиться большего в этом.
Можно ли создать Haskell-Forth? - чисто функциональный язык Haskell, но повторно выраженный как язык, основанный на стеке? Это уже чисто функциональный язык на основе стека. Hmmmmm...
Объектно-ориентированные исследования
Поскольку FORTH позволяет вам полностью переопределить язык, если вы хотите, и представляет собой глубокое сочетание простых механизмов, он позволил создать множество различных вариантов объектно-ориентированной ориентации. Было много экспериментов с внедрением ООП на FORTH по мере его разработки, и некоторые из тех, о которых я никогда не слышал, были интересны для чтения. К сожалению, я недостаточно углубился в это. Если вам интересно, вы можете найти периодические издания 4th Dimensions для интересных перспектив и идей по ООП, так как это только начиналось.
Я быстро посмотрел их
Вывод вашего оптимизированного программного обеспечения на аппаратный уровень
Чарльз Мур, отец FORTH, одного из первых языков на основе стека, провел всю свою жизнь, оптимизируя разработку программного обеспечения и то, что он мог с ним сделать, вплоть до создания 144-ядерного процессора, который реализует его новейший язык на основе стека.
Исследования в оптимизации
Автор языка программирования Joy использовал свой основанный на стеке язык для исследований по оптимизации кода, природа стековых языков с нулевой точкой частично позволяла это сделать. И Joy - один из стековых языков, которые я уважаю больше всего, поскольку он чисто функциональный.
Вот краткий обзор радости:
Язык Joy - это чисто функциональный язык программирования. В то время как все другие функциональные языки программирования основаны на применении функций к аргументам, Joy основан на композиции функций. Все такие функции принимают стек в качестве аргумента и создают стек в качестве значения. Следовательно, большая часть Joy выглядит как обычная постфиксная запись. Однако в Joy функция может использовать любое количество параметров из стека и оставлять любое количество результатов в стеке. Конкатенация соответствующих программ обозначает состав функций, которые программы обозначают. Одним из типов данных Joy является тип данных указанных программ, списки которых являются особым случаем. Некоторые функции ожидают процитированные программы в верхней части стека и выполняют их различными способами, эффективно удаляя их из кавычек. Поэтому, когда другие функциональные языки используют абстракцию и приложение, Joy использует кавычки и комбинаторы - функции, которые выполняют деквотирование. В результате отсутствуют именованные формальные параметры, нет подмены фактических формальных параметров и нет среды пар имя-значение. Комбинаторы в Joy ведут себя во многом как функционалы или функции более высокого порядка в других языках, они сводят к минимуму необходимость в рекурсивных и нерекурсивных определениях. Поскольку в среде нет необходимости, Joy обладает исключительно простой алгеброй, и ее программами легко манипулировать вручную и другими программами. Многие программы сначала создают другую программу, которая затем выполняется.
Потому что это форма проблемы (или машина!)
Каждая парадигма имеет форму, и каждая проблема, которая должна быть решена, имеет форму. Как только вы разложите свои проблемы на части, они лучше всего подойдут для совместимой парадигмы. Используйте основанный на стеке язык, чтобы выразить основанное на стеке решение для основанной на стеке проблемы.
Спектакль
Производительность - одна из скрытых причин того, что JAVA и .NET основаны на языках стека. Я думаю, что другая причина в том, что JIT-ting, компиляция и оптимизация легче с языками на основе стека. Разве большинство инструкций ЦП не способны эффективно реализовать работу стека? Я полагаю, что это либо основанная на стеке, либо на регистровом основе.
Одна форма
Когда весь ваш код основан на стеке, он не имеет несоответствия импеданса. Вам не нужно переводить. Я имею в виду Homoiconicity, что подразумевает, что вместо совершенно отдельного языка для препроцессора, как в C++, язык может манипулировать собой, а язык, используемый для предварительной обработки (или реализации макросов), является тем же языком, который вы используете для напишите ваши основные файлы кода. Вы можете написать код. Вы можете написать код, который пишет код. Или вы можете пойти дальше, если хотите. На каждом уровне вы можете использовать один и тот же ФОРТ. По-видимому, это также относится и к Lispм, хотя я не сделал достаточно в этом пространстве. (В конце концов я хочу смешать LISP и FORTH - мне интересно, нужна ли нам вся эта мощь макроса LISP в FORTH или нет).
ВПЕРЕД
Я изучал только этот один язык в течение многих лет, и я поражен этим. Здесь я не говорю о FORTH, популяризированном его использованием и стандартизацией в мейнстриме. Здесь я на самом деле говорю о FORTH, как его задумал и определил его создатель Чарльз Мур, который рассматривал его как Язык оптимизации и инструмент для определения глубины простоты и оптимизации, и, честно говоря, немного продвинулся впереди нас. Пока что кажется, что мы никогда не наверстаем упущенное, но у нас есть чему поучиться у него, если мы можем просто сделать это. То, что ему потребовалось на всю жизнь, может найти нас несколько, чтобы понять, если мы не сможем получить посла/переводчика. Тем не мение...
Чарльз Мур написал свой собственный BIOS, операционную систему, библиотеку приложений и программное обеспечение для инженерного проектирования VSLI, с помощью которого он разработал свой 144-ядерный чип. И я полагаю, что по крайней мере один патент вышел из этого - вы видите, он великий исследователь, и он исследовал оптимизацию, как никто другой, которого я знаю.
Если вы написали этот единственный сайт, Джефф Фокс, Ultratechnology, и посмотрите на эту часть, 1x Forth, интервью с Чарльзом Муром Джеффа Фокса. В этом интервью он объясняет, как он больше не использует "другое", и это звучит безумно, но как далеко ушла его оптимизация - он думает: "Вместо этого я просто использую этот код операции, и этот другой трюк, и это проще и быстрее, и я удалил слово из своих кодов операций ".
На этом веб-сайте вам нужно выбирать из многих мест, но вы в конечном итоге понимаете, что они оптимизировали FORTH до сих пор, что они достигли 10% улучшения здесь, 10% улучшения там, оставив 40% код где-то еще,... с удивительным результатом, что их код в некоторых случаях работает в 100 раз быстрее, чем конкурирующий код.
Если бы они были вынуждены запускать тот же самый мусор, как и настоящий эталонный тест, это дало бы гораздо больше аналогичных времен, но только это. Использование FORTH привело к тому, что рефакторинг и оптимизация стали таким способом сделать что-то, что в итоге привело к гораздо более быстрому выполнению, потому что они только что оставили так много мусора, грязи, раздувания, кражи...
Было бы полезно изучить этот "способ", чтобы вернуться к попытке понять, почему мы должны установить столько МБ операционной системы и так много МБ среды разработки, прежде чем мы сможем даже сказать "Привет, мир!"
Post-Script на PostScript
О да, и я забыл упомянуть. И PDF, и PostScript основаны на языке стека, который должен был быть достаточно компактным и обладать достаточной производительностью, чтобы работать на "древнем" оборудовании, когда вычисления только начинались. PostScript... экономный, мощный, производительный и практичный!