Список ненужных FORTH структурностей (пополняется).

Перейти вниз

Список ненужных FORTH структурностей (пополняется).

Сообщение автор Gudleifr в Пн Апр 17, 2017 2:39 pm

1. На первое место нужно, конечно, поставить желание сделать более "наглядным" синтаксис языка - от придания большего "смысла" управляющим словам (с введением, даже, специального стека для отслеживания "управления"), до введения специальных редакторов/систем с раскрашенными "по смыслу" словами (на последнее купился даже сам Мур). Не, ребята, идеал FORTH - максимальное приближение к человеческому языку. Ведь, не требуем же мы раскрасить и отформатировать "Войну и мир"... Или уже требуем?

2. Второе, заслуженное, место - у ООП. И никого не смущает, что FORTH и ООП являются выражением разных подходов к проблеме сложности программ. FORTH - средство написания проблемно-ориентированных языков. Современное ООП - способ написания сложных программ путем чистого масштабирования - объединения малых кусков кода/данных в крупные. Даже просто понятие "структур" данных FORTH не требуется - он язык действий, а не данных.

3. Сложная система словарей - словари поиска/компиляции, текущего контексты, стеки контекстов... Исторически считаются очень полезными, но с точки зрения "проблемно-ориентированного языка" - лишь вредная избыточность. Запомнить, что слово делает гораздо проще, чем помнить в какую "библиотеку" оно входит. Не делайте новый словарь - пишите новую машину!

4. Библиотеки - почему-то считаются сугубо необходимыми для того, чтобы превратить FORTH в "настоящий язык программирования". Но, ведь, библиотеки - это часть операционной системы, но не языка... В этот же раздел можно отнести несбыточные мечты о FORTH-совместимости.

5. Локальные переменные. Их легко реализовать, и поэтому считается, что каждый "серьезный" FORTH должен их иметь. Однако, еще никому не удалось привести пример их полезности. Более того, применение этого механизма провоцирует нетвердых умом фортеров к писанию в C-стиле, теряя разом все преимущества FORTH-программирования.

6. Структурные исключения. Они и в компилируемых-то языках никому не нужны, символизируя, лишь неспособность "структурных" программистов управляться со своей "структурности". Есть слово/процедура ОК, отлавливающая ошибки. Не хватает? Пишите вторичную машину с новым ОК!

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

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

...
avatar
Gudleifr
Admin

Сообщения : 879
Дата регистрации : 2017-03-29

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Список ненужных FORTH структурностей (пополняется).

Сообщение автор Gudleifr в Вс Май 21, 2017 1:57 pm

9. Следствием 8-й ненужности является желание написать FORTH-оптимизатор. Зачем? Не "зачем", а "почему". Это легко! FORTH позволяет легко править и переосмысливать код в любом его представлении - от языка высокого уровня, до машинных кодов. И, вот, люди, не умеющие писать на FORTH, вдруг замечают, что "20 10 +" в шитом коде выглядит "некрасиво". FORTH позволяет разбивать программу на смысловые куски любого размера. Но, быдлокодеры привыкли к кускам строго определенным. И, значит, тем хуже FORTH! Даешь оптимизацию! Даешь бантики на паровозе!
avatar
Gudleifr
Admin

Сообщения : 879
Дата регистрации : 2017-03-29

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Список ненужных FORTH структурностей (пополняется).

Сообщение автор Gudleifr в Пт Дек 22, 2017 7:08 pm

На кошачьем форуме наконец-то объявился автор FORTH-системы для программируемого компилятора МК-161. Мегареспект! Что может быть лучшим подтверждением идеи: "FORTH можно написать на чем угодно!"?
Однако автор сделал огромную ошибку: он, изначально взял равнение на мертворожденные правильные FORTH-системы и стандарты. Поэтому результат его работы ужасает:
1. Для системного программирования и на его FORTH необходим настоящий компьютер.
2. Интерпретация одного блока занимает минуту и десятки минут.

А всего-то надо было быстренько замкнуть "цикл управления" вокруг программиста, производя часть вычислений и (работы программы) просто на бумажке. (Как мы все и делали в 80-х).

Но дело даже не в этом. Посмотрим на пример так понимаемого FORTH-программирования:

listmkt v1.0 (c) Васильев И.В., 7 ноября 2017, Файл: B043.mkt
0 \ Pacman music #43, AtH, 20150413
1
2 forth definitions 5 value темп
3
4 vocabulary ММЯ ММЯ definitions \ Музыкальный Макро Язык
5 : нота ( частота длительность --)
6 <builds темп * , , does> here 4 cmove 4 allot ;
7 : ; ( --) ?csp here over 2+ - 4 / <-> !
8 [compile] forth ; immediate
9
10 0 1 нота . 0 2 нота .. 0 10 нота .10
11 2470 1 нота b< 4939 ^ 1 нота b2 нота b+ 2616 1 нота c
12 5233 1 нота c> 3111 ^ нота d# 3 нота d#++
13 3296 ^ 1 нота e 3 нота e++ 3492 1 нота f 3699 1 нота f#
14 3920 1 нота g4153 1 нота g# 4400 1 нота a
15
16 forth definitions
17 : :мелодия ( --) <builds here 2 allot !csp ММЯ
18 does> 2+ .. u@ (play) ;
19
20 :мелодия Пакмэн \ Манве, 13 апреля 2015
21 b< . b . f# . d# . b f# .. d#++ . \ такт 1
22 c . c> . g . e . c> g .. e++ . \ такт 2
23 b< . b . f# . d# . b f# .. d#++ . \ такт 3
24 d# e f . f f# g . g g# a . b+ .10 ; \ такт 4
25
26 : tune \ ( ) воспроизведение мелодии
27 begin Пакмэн ?break again ;
28 \s

Что мы тут видим?
(Окромя отсылу к столь нами всеми любимому методу FORTH-компиляции путем создания большого числа компилирующих слов - ТЕМА #29, АБЗАЦ #212).
Бумажка програмиисту по-прежнему необходима (где-то же записаны эти константы-ноты). Программист тупо ждет 10 минут, пока вся эта лабуда загрузится. После чего слушает песню "Валенки" "Пакмэн" до полного морального удовлетворения...
Чего тут нет?
Нет никаких средств правки мелодии. Нет намеков на какое-либо "саморазвитие", на которое так любят намекать фортеры.

А что мы можем успеть за 10 минут иначе? Бумажка с нотами есть? Есть. Так в чем проблема? Берем программу-программатор, которую легко написать, и тупо вбиваем ноты. Замечаем, что некоторые константы связаны с другими? Легким движением руки вставляем в нашу программу некоторые управляющие коды. Хотим просматривать/редактировать - да ради бога! Хотим что-то попутно считать - опять пожалуйста!

Главное помнить: FORTH не должен жить дольше проекта, для которого он создан. Как никакому другому методу программирования, FORTH противопоказано "писание только потому, что легко написать".
avatar
Gudleifr
Admin

Сообщения : 879
Дата регистрации : 2017-03-29

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Список ненужных FORTH структурностей (пополняется).

Сообщение автор Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения