Локальная архивная копия страницы. Оригинал страницы находится по адресу:
http://www.balancer.ru/tech/forum/2013/04/t87945--neponimanie.html

Непонимание...

 
RU Gudleifr #28.04.2013 11:48
+
-2
-
edit
 
Сколько раз программисты радостно открывали 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) и книги Броуди. Можно у меня на страничке (в разделе FOBOS).
   20.020.0
RU tvv #20.05.2013 05:39  @Gudleifr#28.04.2013 11:48
+
-
edit
 
1. У форта те-же проблемы, что и в ООП - так что его придеться выбросить(так-же как и ООП).
(хотя там где он применялся идея была правильная - но тогда условия были несколько другие чем сейчас, готовых компиляторов и библиотек не было, а надо было что-то сделать по-быстрому с нуля фактически на голом железе. Теперь это не актуально - полно мощных кросс-компиляторов и куча библиотек к ним, на любой вкус + серьезные технологии сразу мультиплатформенные)


2. Если хотите посмотреть пример правильного использования DSL - то посмотрите как сделан REDUCE...
(там несколько надстроек над лиспом - lisp - r-lisp - a-lisp)

Vladimir
PS сам по себе стековый принцип кода нынче используется много где - от байт-кода жабы и Ц#, до .PDF данных...
   
RU tvv #20.05.2013 05:52  @Gudleifr#28.04.2013 11:48
+
-
edit
 
Gudleifr> Все эти обратные польские записи, стеки, словари и шитые коды - следствие простоты языка и его ориентированности не на вычисления, а на "языкотворчество".

на быструю реализацию - аналитические преобразования подменены тупыми вычислениями
(причем которые сильно инкапсулированы и уже не поддаются оптимизации!!!)

Но если форту можно это простить(там где он применялся для раскрутки на голой машине),
"современный" ООП это такая срань и вредительство, что ее придеться выбросить, даже если для этого придеться полностью заменить всех программистов... Достали уже тормоза и глюки!


Gudleifr> Итак - Forth предназначен для сложных задач.
Gudleifr> 2. Почему его не любят программисты?
Gudleifr> А программисты вообще не любят сложных задач.

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

ООП эти дебилы и паразиты тоже очень любят... (и с ним тоже придеться бороться)

Gudleifr> Они любят простые задачи, которые выглядят сложными для пользователя.
Gudleifr> Слложные - тот же геморрой - ни самому посмотреть (взглядом не окинешь), ни другим показать (не поймут).

там по сути квази-упрощение - с наружи выглядит вроде бы просто(ну как процедура PREVIEW в том-же бровзере), но внутри эта процедура рекурсивно запустит ядро и подную прорисовку страницы - но этого не видно из-за инкапсуляции!!!
(поэтому и тормозят бровзеры, даже такие лучшие как OPERA - сделайте побольше строчку где вкладки - увидите что там не просто иконки, а мини-картинки с полным изображением всего содержимого страницы!!!
Вот вам и пример использования ООП - с наружи вроде бы удобно, дернул за метод и готово, но внутри жуткое Г которое снаружи не вижно, и это так и попадает в .EXE без всякой оптимизации! )

Gudleifr> 3. Куда нужно засунуть Forth-процессоры?
Gudleifr> Что мы выиграем от того, что A=F? Практически ничего. Вот от A, ориентированного на конкретный P, мы выиграем много.

похоже что так...

Vladimir
   
RU Balancer #20.05.2013 16:50  @tvv#20.05.2013 05:39
+
-
edit
 

Balancer

администратор

tvv> 1. У форта те-же проблемы, что и в ООП

Какие же? :)

tvv> PS сам по себе стековый принцип кода нынче используется много где - от байт-кода жабы и Ц#, до .PDF данных...

Почему «ныне»? Стек — изначально основная структура внутреннего хранения массы классических языков. Как раз, наоборот, регистровые виртуальные машины были в загоне до последних лет.
… чтобы понять рекурсию, нужно сперва понять рекурсию …   21.021.0
RU Gudleifr #20.05.2013 23:36  @tvv#20.05.2013 05:39
+
-
edit
 

Gudleifr

втянувшийся

tvv> 1. У форта те-же проблемы, что и в ООП
Не... Они антиподы: первый не требует полного достижения нирваны до начала программирования. Хотя C++ из ныне живущих ближе всех подошел к возможности писания на нем Проблемно-ориентированных языков (ПОЯ). Правда, все написанные на нем ПОЯ должны иметь его синтаксис и его логику...
   20.020.0
MD Wyvern-2 #20.05.2013 23:52  @Gudleifr#28.04.2013 11:48
+
-
edit
 

Wyvern-2

координатор

Gudleifr> 1. Для чего Forth предназначен?
Gudleifr> Изначально (автором) - для написания проблемно-ориентированных языков, на которых можно будет легко описать решение задачи (желательно, самим юзером).

Извини, но это глупость. ФОРТ изначально создавался, как язык управления реальными объектами Т.е. фактически - ФОРТ язык МИКРОКОНТРОЛЛЕРОВ. А стековая архитектура (откуда и польская запись) результат стремления к миниатюризации и удешевлению МК.
Невостребованность ФОРТА - результат, как ни странно, прогресса микроэлектроники :) Когда микроконтроллер, ценой в $0,99 уже может содержать десяток миллионов транзисторов, встроенное АЦП и кучу прибамбасов, экономия на регистрах и памяти становится неактуальной...

Кстати, ФОРТ породил массу "деток", шуршащих и поныне: тот же PostScript, та же Джава...
[b]Жизнь коротка, путь искусства долог, удобный случай мимолетен, опыт обманчив....[/b]   20.020.0
RU Gudleifr #20.05.2013 23:56  @Wyvern-2#20.05.2013 23:52
+
-
edit
 

втянувшийся

Wyvern-2> Извини, но это глупость.
Это Вы не со мной спорите, а с Чарльзом Муром.
   20.020.0
RU Balancer #21.05.2013 00:14  @Gudleifr#20.05.2013 23:56
+
-
edit
 

администратор

Gudleifr> Это Вы не со мной спорите, а с Чарльзом Муром.

Чарльз Мур язык придумывал для конкретной и узко прикладной цели — управления телескопом. То, что ему результат понравился и он начал пытаться расширять его применение не отменяет первоначального целеполагания языка :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …   21.021.0
RU AXT #21.05.2013 00:14  @Wyvern-2#20.05.2013 23:52
+
-
edit
 

AXT

инженер вольнодумец

Wyvern-2> Кстати, ФОРТ породил массу "деток", шуршащих и поныне: тот же PostScript, та же Джава...

PostScript, конечно, да. А вот Java-то тут причём? Это же диалект Objective C, где тут Форт вообще?
... так пускай наступает на нас холодным рассветом новый день ...   
RU Gudleifr #21.05.2013 00:20  @Balancer#21.05.2013 00:14
+
-
edit
 

Gudleifr

втянувшийся

Balancer> Чарльз Мур язык придумывал для конкретной и узко прикладной цели — управления телескопом.
Сам Мур это отрицает: CHARLES H.MOORE. PROGRAMMING A PROBLEM-ORIENTED-LANGUAGE, июнь 1970.
Он писал не язык управления чем-то, а язык, на котором можно писать такие языки.
Balancer> Чарльз Мур язык придумывал для конкретной и узко прикладной цели — управления телескопом.
Мур его не придумал, а реализовал. Придумал Дейкстра: Е.W.Dijkstra.
An attempt to unify the constituent concepts of serial program execution. 1962.
   20.020.0
RU Balancer #21.05.2013 00:21  @Sandro#21.05.2013 00:14
+
-
edit
 

Balancer

администратор

AXT> где тут Форт вообще?

JVM — стековая машина. И первые Java-процессоры были переименованными старыми Форт-процессорами :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …   21.021.0
RU Balancer #21.05.2013 00:25  @Gudleifr#21.05.2013 00:20
+
-
edit
 

Balancer

администратор

Gudleifr> июнь 1970

Ага. А язык начал разрабатываться в 1958-м. За 10 лет можно много чего понапридумывать :)

Gudleifr> Он писал не язык управления чем-то, а язык, на котором можно писать такие языки.

Это интерпретация уже полученного результата. Первоначально задача стояла именно в написании управляющего языка. То, что в процессе его написания появилась идея метаязыка, не отменяет первоначальной цели.
… чтобы понять рекурсию, нужно сперва понять рекурсию …   21.021.0
RU Gudleifr #21.05.2013 00:37  @Balancer#21.05.2013 00:25
+
-
edit
 

Gudleifr

втянувшийся

Balancer> Это интерпретация уже полученного результата. Первоначально задача стояла именно в написании управляющего языка. То, что в процессе его написания появилась идея метаязыка, не отменяет первоначальной цели.
Почему же? Если задача написания управляющего языка была решена путем написания метаязыка?

Впрочем, мы можем не верить Дейксре и Муру и верить уважаемому Balancer. Что мы тогда имеем? Forth, как никуда не годный управляющий язык. Гасим свет, сливаем воду...
   20.020.0
RU Balancer #21.05.2013 00:47  @Gudleifr#21.05.2013 00:37
+
-
edit
 

Balancer

администратор

Gudleifr> Почему же? Если задача написания управляющего языка была решена путем написания метаязыка?

То, что на PHP сегодня пишут GUI-приложения не делает его универсальным языком и не меняет причин его создания. То же самое касается Бейсика, Паскаля, Форта… :)

Gudleifr> Впрочем, мы можем не верить Дейксре и Муру и верить уважаемому Balancer.

Просто важно не путать факты и их трактовку.

Gudleifr> Что мы тогда имеем? Forth, как никуда не годный управляющий язык.

Я такого не говорил. Форт — это так и не прижившийся в чистом виде метаязык. Но рождавшийся именно как управляющий. И почему «никуда не годный»? Как управляющий он был очень неплох. Он очень нишевый, но в тех нишах, где приживается, подходит неплохо. Потому-то я его и использую вот уже более 20 лет.
… чтобы понять рекурсию, нужно сперва понять рекурсию …   21.021.0
RU Gudleifr #21.05.2013 01:02  @Balancer#21.05.2013 00:47
+
-1
-
edit
 

Gudleifr

втянувшийся

Balancer> Просто важно не путать факты и их трактовку.
Хорошо. Forth - язык для управления телескопом? Там есть нужные для этого операторы? Нет.
Можно на нем написать язык управления? Можно.
Можно предположить, что метаязык родился сам по себе из управляющего, без явного принятия решения о таком способе решения задачи? Нет.
Так, что, чего бы ни думал Мур в конце 50-х (дата явно натянута, чтобы обойти Дейкстру), в конце 60-х он это похерил и понял, что метаязык представляет большую ценность, чем конкретный управляющий.

Balancer> Как управляющий он был очень неплох.
Только тем, что просто реализуется. Иллюзия экономии места и реальная потеря быстродействия.
На нем можно "то-то" и "то-то"? Только там, где "то-то" требует метаязыка.

Balancer> Он очень нишевый, но в тех нишах, где приживается, подходит неплохо.
Причины загона его в... нишу я описал выше.
   20.020.0
RU Balancer #21.05.2013 01:03  @Gudleifr#21.05.2013 01:02
+
-
edit
 

Balancer

администратор

Gudleifr> Хорошо. Forth - язык для управления телескопом?

Уф. Ещё раз. Не надо мне приписывать то, что я не говорил.

Всё остальное почти на том же уровне. Бисер закончился.
… чтобы понять рекурсию, нужно сперва понять рекурсию …   21.021.0
MD Wyvern-2 #21.05.2013 01:15  @Balancer#21.05.2013 00:25
+
-
edit
 

Wyvern-2

координатор

Gudleifr>> Он писал не язык управления чем-то, а язык, на котором можно писать такие языки.

"Ну, можно и так"(с)И.В.Сталин :F Что не отменяет основной парадигмы.
[b]Жизнь коротка, путь искусства долог, удобный случай мимолетен, опыт обманчив....[/b]   20.020.0
RU Gudleifr #21.05.2013 01:19  @Balancer#21.05.2013 01:03
+
-
edit
 

Gudleifr

втянувшийся

Balancer> Чарльз Мур язык придумывал для конкретной и узко прикладной цели — управления телескопом. То, что ему результат понравился и он начал пытаться расширять его применение не отменяет первоначального целеполагания языка
...
Balancer> Уф. Ещё раз. Не надо мне приписывать то, что я не говорил.
Да, Вы правы. Предпочтения трудно обосновать. Играть словами легче.
И не жалуйтесь мне на то, что весь бисер потреблен, у меня больше нет.
   20.020.0
MD Wyvern-2 #21.05.2013 01:19  @Gudleifr#21.05.2013 01:02
+
-
edit
 

Wyvern-2

координатор

Balancer>> Просто важно не путать факты и их трактовку.
Gudleifr> Хорошо. Forth - язык для управления телескопом?
ФОРТ, как тут кое кто заметил - язык написания языка управления телескопом ;) В т.ч. И телескопом.

Gudleifr>Там есть нужные для этого операторы? Нет.
Как это нет? ЖР На нем можно написать любые операторы

Gudleifr> Можно на нем написать язык управления? Можно.
Угу. А вот что либо другое - тут же превращается в жесткое порно.
[b]Жизнь коротка, путь искусства долог, удобный случай мимолетен, опыт обманчив....[/b]   20.020.0
MD Wyvern-2 #21.05.2013 01:21  @Gudleifr#21.05.2013 01:19
+
-
edit
 

Wyvern-2

координатор

Balancer>> Уф. Ещё раз. Не надо мне приписывать то, что я не говорил.
Gudleifr> Да, Вы правы. Предпочтения трудно обосновать. Играть словами легче.

Ты сам то понял, что сказал? Тебя макнули фейсом в ФАКТ - историю написания языка. А ты почему то говоришь о каких то "предпочтениях" ЖР И кто тут д`Артаньян, а кто сексменьшинство?
[b]Жизнь коротка, путь искусства долог, удобный случай мимолетен, опыт обманчив....[/b]   20.020.0
RU Gudleifr #21.05.2013 01:24  @Wyvern-2#21.05.2013 01:21
+
-
edit
 

Gudleifr

втянувшийся

Wyvern-2> Тебя макнули фейсом в ФАКТ
В игнорирование фактов. В угоду предпочтениям.
   20.020.0
RU Balancer #21.05.2013 01:24  @Wyvern-2#21.05.2013 01:21
+
-
edit
 

Balancer

администратор

Wyvern-2> Ты сам то понял, что сказал?

Забей. Тут уже ничем не поможешь. Вообще, не в первый раз вижу, как много представителей э... логических меньшинств привлекает к себе образ Форта. На этом фоне даже за себя побаиваться, порой, начинаю. Мне же тоже язык нравится. Вдруг это диагноз? :D
… чтобы понять рекурсию, нужно сперва понять рекурсию …   21.021.0
RU Gudleifr #21.05.2013 01:26  @Wyvern-2#21.05.2013 01:19
+
-
edit
 

Gudleifr

втянувшийся

Wyvern-2> Угу. А вот что либо другое - тут же превращается в жесткое порно.
Почему? Да по тем причинам, что я указал в первом посте.
Блин, сказка про белого бычка.
   20.020.0
MD Wyvern-2 #21.05.2013 01:29  @Gudleifr#21.05.2013 01:24
+
-
edit
 

Wyvern-2

координатор

Wyvern-2>> Тебя макнули фейсом в ФАКТ
Gudleifr> В игнорирование фактов. В угоду предпочтениям.

А ты, мил дружок, случаем не выдаешь свои (неграмотные и необоснованные) умозаключения за факты, ась? Кажется, и не только кажется, что именно так.
ФАКТ тут только один: Мур писал язык для управления устройством(телескопом) Еще есть косвенные фактики: клоны ФОРТА прижились и наиболее распространены именно в системах управлениях (тот же Постскрипт)
Остальное - лукавое теоретизировании, да еще и небеспристрастное, как оказывается...
[b]Жизнь коротка, путь искусства долог, удобный случай мимолетен, опыт обманчив....[/b]   20.020.0
RU Gudleifr #21.05.2013 01:33  @Wyvern-2#21.05.2013 01:29
+
-
edit
 

Gudleifr

втянувшийся

Wyvern-2> А ты, мил дружок, случаем не выдаешь свои...
Не мои, а Дейкстры и Мура.
   20.020.0