Зачем использовать стек-ориентированный язык? [closed]

Менее чем за месяц: & nbsp;

SELECT * FROM people WHERE MOD( DATEDIFF( CURDATE( ) , `date_birth`) /30, 12 ) <1 and (((month(`date_birth`)) = (month(curdate())) and (day(`date_birth`)) > (day (curdate() ))) or ((month(`date_birth`)) > (month(curdate())) and (day(`date_birth`)) < (day (curdate() ))))
41
задан madth3 8 October 2013 в 00:35
поделиться

1 ответ

Исследование / Разработка / Понимание Популярных Виртуальных машин

JVM, виртуальная машина Java, является стековым языком. Кроме того, Платформа.NET основана на MSIL, который является стековой виртуальной машиной и языком также.

Как Встроенный Язык сценариев

я писал подмножество Forth в C#, в различных стилях (до сих пор, макрос, косвенно поточный и поточный прямым образом). Я хотел, чтобы это было очень маленьким, и мобильным на различные языки и среды, и что-то очень простое должно быть в состоянии сделать это. Синтаксический анализатор был функцией разделения простой строки, и затем интерпретируйте каждое слово (первый путь) или скомпилируйте каждое слово в словарь (второй путь). У обоих были их преимущества.

Это Функционально

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

Haskell-Forth мог быть создан? - чисто функциональный язык Haskell, но повторно выразил как стековый язык? Это уже чисто функционально как стековый язык. Hmmmmm...

Объектно-ориентированное Исследование

, поскольку Forth позволяет Вам полностью переопределять язык, если Вы хотите, и это - глубокое соединение простых механизмов, это предоставило себя созданию многих различных разновидностей объектной ориентации. Было большое экспериментирование с реализацией ООП на Forth, поскольку ООП разрабатывало, и некоторые из тех, я никогда не услышал о больше нигде и был интересен читать. К сожалению, я не копался в этом достаточно. Если Вам интересно, можно взорвать 4-е Размеры периодические издания для интересных перспектив и идей об ООП, поскольку оно просто начинало в то время.

я быстро смотрел они

Bringing Your Optimized Software к Аппаратному уровню

, Charles Moore, родительский элемент Forth, один из первых стековых языков, потратил свою разработку программного обеспечения оптимизации времени жизни и что он мог сделать с ним, на грани ровного создания 144 основных процессоров, которые реализуют его последний стековый язык.

Исследование Оптимизации

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

Вот Резюме Joy:

язык Joy является языком чисто функционального программирования. Принимая во внимание, что все другие языки функционального программирования основаны на приложении функций к аргументам, Joy основана на составе функций. Все такие функции берут стек в качестве аргумента и производят стек как значение. Следовательно, большая часть Joy похожа на обычную постфиксную запись. Однако в Joy функция может использовать любое количество параметров от стека и оставить любое количество результатов на стеке. Конкатенация соответствующих программ обозначает состав функций, которые обозначают программы. Один из типов данных Joy является одним заключенных в кавычки программ, из которых списки являются особым случаем. Некоторые функции ожидают заключенные в кавычки программы сверху стека и выполняют их по-разному, эффективно dequoting. Так, где другие функциональные языки используют абстракцию и приложение, Joy использует цитату и combinators - функции, которые выполняют dequotation. В результате нет никаких именованных формальных параметров, никакой замены фактических для формальных параметров и никакой среды пар "имя-значение". Combinators в Joy ведут себя во многом как functionals или функции высшего порядка на других языках, они минимизируют потребность в рекурсивных и нерекурсивных определениях. Поскольку нет никакой потребности в среде, у Joy есть исключительно простая алгебра, и ее программами легко управляют вручную и другими программами. Много программ сначала создают другую программу, которая тогда выполнена.

, поскольку Это - Форма проблемы (или Машина!)

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

Производительность

Производительность является одной из скрытой причины, почему и JAVA и.NET основаны на языках стека. Я думаю, что другая причина состоит в том, потому что звон JIT, компиляция и оптимизация легче со стековыми языками. Разве большинство инструкций по ЦП не в состоянии реализовать операцию стека эффективно? Это является или стековым или основанным на регистре как акцент, я верю.

Одна Форма

, Когда весь Ваш код является стековым, он не имеет никакого несоответствия импеданса. Вы не должны переводить. То, что я имею в виду, является Homoiconicity, который подразумевает, что вместо абсолютно отдельного языка для препроцессора, как в C++, язык может управлять собой, и язык, используемый для предварительной обработки (или макросы реализации), является тем же языком, который Вы используете для записи основных файлов кода. Можно написать код. Можно написать код, который пишет код. Или можно пойти дальнейшие уровни глубоко, если Вы хотите. На каждом уровне можно использовать тот же Forth. По-видимому, это также верно для Того, чтобы шепелявить, хотя я не сделал достаточно в том пространстве. (Я в конечном счете хочу смешать LISP, и Forth - интересно, нужно ли нам все то питание макроса LISP в Forth или не).

FORTH

я изучал просто этот язык много лет, и я изумлен в нем. Здесь я не говорю о Forth, популяризированном его использованием и стандартизацией в господствующей тенденции. Здесь я действительно говорю о Forth, столь же предполагаемом и определенном его создателем, Charles Moore, который видел его как Язык оптимизации и инструмента для spelunking глубины простоты и оптимизации, и к тому, чтобы говорить истину, работал немного далеко впереди нас. До сих пор кажется, что мы никогда не будем нагонять, но у нас есть много для изучения от него, если мы можем просто сделать так. То, что взяло его время жизни для нахождения, может взять нас несколько, чтобы выяснить, не можем ли мы получить посла / переводчик. Так или иначе...

Charles Moore записал свой собственный BIOS, операционную систему, библиотеку приложения и программное обеспечение инженерного проектирования VSLI, с которым он спроектировал свои собственные 144 базовых микросхемы. И я полагаю, что по крайней мере один патент вышел из него - Вы видите, он - большой проводник, и он исследовал оптимизацию как никто больше, кого я знаю.

, Если Вы spelunk этот сайт, Jeff Fox Ультратехнология , и взгляд на эту часть, 1x Forth, интервью с Charles Moore Jeff Fox. В этом интервью он объясняет, как он больше "еще" не использует, и это звучит сумасшедшим, но это - то, как далеко его оптимизация взяла его - он думает "вместо этого, что я просто использую этот код операции и этот другой прием, и это легче, и более быстро, и я удалил слово из своих кодов операций".

На том веб-сайте, необходимо подобрать из многих мест, но Вы в конечном счете понимаете, что они оптимизировали Forth до сих пор, что, они сделали 10%-е улучшение здесь, 10%-е улучшение там, не учли 40% кода где-то в другом месте... с удивительным результатом, который их код в некоторых случаях выполняет в 100 раз быстрее, чем конкурирующий код.

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

было бы полезно изучить этот "путь" только для возвращения к попытке изобразить, почему мы должны установить так многих МБ Операционной системы и так многих МБ среды разработки, прежде чем мы сможем даже сказать "Привет, Мир!"

PostScript на PostScript

, О, да, и я забыл упоминать. И PDF и PostScript основаны на языке стека, который должен был быть и достаточно компактным и иметь производительность достаточно для работы "древних" аппаратных средств, когда вычисления просто начинали. PostScript... экономный, мощный, производительный, и практичный!

2
ответ дан 4 August 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: