Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт апр 16, 2024 20:25

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 82 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Forth-2012
СообщениеДобавлено: Вт дек 08, 2015 20:29 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
gudleifr писал(а):
И любой поднаторевший в этом деле фортер знает, что 2+ относится не к яблокам, а адресам, не потому, что видит CELL+, а потому, что видит, что это слово явно имеет дело с адресной арифметикой.

Мало ли поводов прибавлять к числу 2...

Численные выражения в тексте вообще признак плохого стиля. Если вот так вот взять и поменять в программе 100 на 1000, потому что захотелось увеличить размер массива, то под раздачу попадет и температура кипения воды. Не говоря уже о том, что заменить значение константы в заголовке программы существенно проще, чем гоняться за ней по всему тексту (а потом еще раз гоняться, чтобы вернуть обратно).

gudleifr писал(а):
Избыточно больших.

Только вот если потратить массу усилий на сокращение объемов кода, видимый эффект будет стремиться к нулю. Все равно ОС по необходимости управляет памятью самостоятельно, подгружая нужные страницы. Это происходит независимо от того, предусмотрели мы оверлеи в явном виде или же нет.

gudleifr писал(а):
Так за рулем-то те же ямщики. И качество их работы только ухудшается. Только еще и бензином воняет. Впрочем, Вы, кажется, раньше уже радовались тому, как стало лучше от внедрения компьютеров в повседневную жизнь, так что замнем.

А это факт. И с машинами, и с компьютерами. От него никуда не деться. Замечу, что фактом тут является не оценка полезности или прогрессивности, а просто количество машин/лошадей и компьютеров. Я не призываю любить какое-то определенное направление, например, процесс разработки онлайн-RPG или интернет-магазинов. Просто эти вещи имеют место в современной IT-индустрии, и кто-то этим всем занимается. Соответственно, формирует требования к инструментам разработки, дает работу дизайнерам и художникам, и т.д. Если принципиально идти поперек течения, никому от этого лучше не станет. А информационный повод от декларирования 16 бит, блоков текста, доступа только к 3,5-дюймовым дискетам и CGA-монитору отдает скорее скандалом, чем благородным налетом понимания основ.

gudleifr писал(а):
И не надо, я же приводил пример - 10 строк на определение примитивов работы со списками, а дальше уже они... Причем, лучше было бы в течение следующих 20 строк перейти на более крупные примитивы, но у меня не получилось...

До ~1000 строк можно и не особенно задумываться о структуре программы. Разве что для пользы дела и выработки стиля. А вот дальше уже просто необходимо. И чем меньше будет подводных камней, тем лучше. Помнить в этой ситуации про 2+ - это примерно как гордиться хождением зимой без шапки ("а Васька из соседнего подъезда так не может!").


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth-2012
СообщениеДобавлено: Вт дек 08, 2015 20:40 
Hishnik писал(а):
Численные выражения в тексте вообще признак плохого стиля.
Угу, "ЧИСЛО-ПОРОСЯТ ПОРОСЕНКА", "ЧИСЛО-ВОЛКОВ ВОЛК И ЧИСЛО-КОЗЛЯТ КОЗЛЯТ"... См. Броуди.
Hishnik писал(а):
Только вот если потратить массу усилий на сокращение объемов кода...
Т.к. речь идет о пределах того, что мы можем запрограммировать, то приходится.
Hishnik писал(а):
До ~1000 строк можно и не особенно задумываться о структуре программы.
1000 строк кода, это по современным нормам ок.30 оставшихся после отладки ошибок. Так что тоже приходится. Если, с точки зрения писания 1000 строк - это фигня, то с точки зрения работы программы или чтения программы другим - это, практически, детективный роман.

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


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth-2012
СообщениеДобавлено: Вт дек 08, 2015 22:33 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
gudleifr писал(а):
Так, что думаю, очевидно, что о необходимости размещения всей этой хрени в одном сегменте кода речь не идет. Повторю, найдите алгоритм на 30-страниц русского текста - и приходите.

Эммм... Так вот же он и есть. Несколько мегабайт кода. Один мегабайт - это 1024 килобайта, а один килобайт - это 1024 байта. Или символа. 30 станиц - это примерно 50 килобайт. 1Мб > 50кб. Что не так то?

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth-2012
СообщениеДобавлено: Вт дек 08, 2015 22:33 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
gudleifr писал(а):
Угу, "ЧИСЛО-ПОРОСЯТ ПОРОСЕНКА", "ЧИСЛО-ВОЛКОВ ВОЛК И ЧИСЛО-КОЗЛЯТ КОЗЛЯТ"... См. Броуди.

Нет, 3 ПОРОСЕНКА 1 ВОЛК 7 КОЗЛЯТ. В данном случае речь идет о введении в программу констант, которые определяются один раз и будут использоваться на всем протяжении. ЧИСЛО-ПОРОСЯТ - лишняя сущность, поскольку используется один раз, для определения дублирующей по смыслу константы. Однако:

ЧИСЛО-ПОРОСЯТ ЧИСЛО-КОЗЛЯТ + CONSTANT ЧИСЛО-ЖЕРТВ-ВОЛКА

Впоследствии сюда можно добавить учет Красной Шапочки. А если

11 CONSTANT ЧИСЛО-ЖЕРТВ-ВОЛКА , то еще поди догадайся, что это сумма поросят, козлят и Красной Шапочки. Хотя вроде сказки все читали, после объяснения очевидно. Правда, потом можно забыть, почему 11, и это была Красная Шапочка, или еще и ее бабушка. И вот такого по проекту будет навалом.

gudleifr писал(а):
И речь, повторю, не в том, чтобы горевать или радоваться 64-разрядным "солитерам" и "лайнсам", а в том. чтобы не считать "слова, инкапсулирующие размер ячейки" чем-то важным для стандартизации.


Сами по себе слова - вряд ли. Важен подход, заключающийся в том, что Форт должен иметь механизмы контроля и тестирования возможностей, а не замыкаться в том, что "всем очевидно". Ну очевидно же, что 3.1415 - слово двойной длины? Речь же идет о марте 1415 года, разве не понятно? В стандарте ведь именно так трактуется запись с точкой. С очевидными последствиями со стороны тех, кто может написать свою реализацию. Поэтому стандартизация начинается с выработки основных целевых положений и понимания того, зачем именно он нужен, кого и с какой целью собирается объединять, и какие для них будут соотношения выгод и компромиссов. Пока что ANS работает по принципу "создадим уродца, чтобы отличия от общепринятых подходов бросались в глаза, спровоцируем таким образом программистов на критику, чтобы выглядеть жертвами и объяснять таким образом отсутствие практического выхода". Еще можно стараться внедрить в практику как можно больше подходов, плохо сочетаемых с другими инструментами программирования, формируя группку программистов с гипертрофированными навыками, и привязывая их к вожаку. А потом воспитанный ANS "форт-Гуинплен", умеющий писать только на 16-битных числах с фиксированной точкой, уже просто никуда не денется.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth-2012
СообщениеДобавлено: Вт дек 08, 2015 23:13 
VoidVolker писал(а):
1Мб > 50кб. Что не так то?
Давайте рассмотрим регулятор Уатта... А почему не адронный коллайдер? Он, ведь больше...
Ваш текст нам не подходит по очень простой причине - его анализ займет очень много времени. И, думаю, даст заведомо неудобный для Вас результат (навскидку два-три процесса гораздо легче 64K). Не потому, что я хочу Вас обидеть, а потому, что "так всегда бывает". Так что вместо "большого муравейника" прошу показать мне "одного большого муравья".
Hishnik писал(а):
чет Красной Шапочки
Это Вы Броуди расскажите. По своему опыту могу только сказать, что использование констант порождает большее число ошибок, чем "просто числа". Например, даже в такой простой программе, как упомянутые выше "танчики", есть ошибочная константа.
Hishnik писал(а):
Важен подход...
Вы опять путаете "понимать, что такое размерность" с "считать все сущее 16-разрядным". Наверное, умышленно?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth-2012
СообщениеДобавлено: Вт дек 08, 2015 23:34 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
gudleifr писал(а):
Это Вы Броуди расскажите.

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

gudleifr писал(а):
Вы опять путаете "понимать, что такое размерность" с "считать все сущее 16-разрядным". Наверное, умышленно?

Можно подумать, "понимание размерности" - какое-то сакральное знание :) Получается, 2+ надо писать в программе, чтобы никто не заподозрил программиста в неспособности по прошествии некоторого времени сопоставить разрядность процессора с размером ячейки для одного числа?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth-2012
СообщениеДобавлено: Вт дек 08, 2015 23:47 
Hishnik писал(а):
К тому же кроме Броуди есть, например, Макконнелл, активно критикующий "магические числа".
Имя им - Легион.
Hishnik писал(а):
Получается, 2+ надо писать в программе, чтобы никто не заподозрил программиста в неспособности по прошествии некоторого времени сопоставить разрядность процессора с размером ячейки для одного числа?
Ну, как бы, люди ходят в туалет не для того, чтобы никто их не заподозрил в неумении спускать воду. Просто 2+ ставить естественнее (ведь, 2 байта-то). Если нет отдельных операций сложения для яблок, коров и драконов, то зачем отдельное сложение для адресов?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth-2012
СообщениеДобавлено: Ср дек 09, 2015 00:16 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
gudleifr писал(а):
Имя им - Легион.



Избегайте «магических чисел» Магические числа — это
обычные числа, такие как 100 или 47524, которые появляются в программе без объяснений. Если вы программируете на языке, поддерживающем именованные константы, используйте их вместо магических чисел. Если вы не можете
применить именованные константы, применяйте глобальные переменные, когда это возможно.
Исключение магических чисел дает три преимущества.
- Изменения можно сделать более надежно. Если вы используете именованные константы, нет нужды искать каждое из чисел 100, и вы не измените по ошибке те из этих чисел, что ссылаются на что-либо иное.
- Изменения сделать проще. Когда максимальное число элементов меняется со100 на 200, используя магические числа, вы должны найти каждое число 100 и изменить его на 200. Если вы используете 100+1 или 100%1, вы также должны найти и изменить все числа 101 и 99 на 201 и 199 соответственно. При использовании именованных констант вы просто меняете определение константы со 100 на 200 в одном месте.
- Ваша программа лучше читается. Конечно, в выражении:
for i = 0 to 99 do ...
можно предположить, что 99 определяет максимальное число элементов. А вот
выражение:
for i = 0 to MAX_ENTRIES-1 do ...
не оставляет на этот счет сомнений. Даже если вы уверены, что это число никогда не изменится, применяя именованные константы, вы получите более читабельную программу.
Применяйте жестко заданные нули и единицы по необходимости Значения 0 и 1 используются для инкремента, декремента, а также в начале цикловпри нумерации первого элемента массива. 0 в конструкции:
for i = 0 to CONSTANT do ...
вполне приемлем, так же как 1 в выражении:
total = total + 1
Вот хорошее правило: используйте в программе как константы только 0 и 1, а любые
другие числа определите как литералы с понятными именами.



gudleifr писал(а):
Если нет отдельных операций сложения для яблок, коров и драконов

Ну приехали! Прирост драконов зависит от того, построено ли соответствующее здание, а также от наличия Цитадели и Замка, также могут быть захвачены внешние строения и поставлен Грааль :) Поэтому имеет смысл написать ДРАКОНЫ+ и уже внутрь спрятать логику расчета конкретного прироста.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth-2012
СообщениеДобавлено: Ср дек 09, 2015 00:30 
Hishnik писал(а):
...
Приведеннаяцитата очень напоминает творчество тех же евролузеров. Правдоподобные рассуждения. Посмотрим на канонический пример из Броуди:
Изображение
Изображение
Для Win32FORTH у меня получилось:
Код:
: NOTHING ;
: DOER   CREATE  ['] NOTHING  >BODY ,  DOES> @ >R ;
VARIABLE MRKR
: (MAKE)  R>  DUP 4 +  DUP 4 + SWAP @ >BODY !
   @ ?DUP IF >R THEN ;
: MAKE   STATE @ IF ( compiling)
   COMPILE (MAKE)  HERE MRKR !  0 ,
   ELSE  HERE  [COMPILE] ' >BODY !
   [COMPILE] ]  THEN ;   IMMEDIATE
: ;AND   COMPILE EXIT  HERE MRKR @ ! ;   IMMEDIATE
: UNDO   ['] NOTHING  >BODY  [COMPILE] '  >BODY ! ;

И кого здесь спасет CELL+ ?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth-2012
СообщениеДобавлено: Ср дек 09, 2015 01:07 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
gudleifr писал(а):
Приведеннаяцитата очень напоминает творчество тех же евролузеров. Правдоподобные рассуждения.

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

gudleifr писал(а):
И кого здесь спасет CELL+ ?

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth-2012
СообщениеДобавлено: Ср дек 09, 2015 01:36 
Hishnik писал(а):
Вообще-то, это вещи, к которым так или иначе приходят очень многие программисты,
Это объяснимо, вера во что-то простое гораздо привлекательнее понимания чего-то сложного.
Hishnik писал(а):
Форт как язык не привязан к разрядности ячейки данных, размеру области кода, порядку следования полей в словарной статье.
Ну, во-первых, FORTH - не язык. А, во-вторых, если сделать его независимым от собственного устройства, проще перейти на любой из общепринятых компилирующих языков. Это как независимость lex от регулярных выражений или yacc от грамматики.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth-2012
СообщениеДобавлено: Ср дек 09, 2015 14:12 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
gudleifr писал(а):
Давайте рассмотрим регулятор Уатта... А почему не адронный коллайдер? Он, ведь больше...
Да, больше. И намного сложнее. Я просто использовал наиболее простые примеры. А так да - в БАК, например в детекторах частиц для первичного анализа результатов столкновения частиц используются алгоритмы, реализованные непосредственно в железе. Эти железки генерируют терабайтные потоки данных, которые расходятся на фильтры и идут на более высокие уровни логики.
gudleifr писал(а):
Ваш текст нам не подходит по очень простой причине - его анализ займет очень много времени. И, думаю, даст заведомо неудобный для Вас результат (навскидку два-три процесса гораздо легче 64K). Не потому, что я хочу Вас обидеть, а потому, что "так всегда бывает". Так что вместо "большого муравейника" прошу показать мне "одного большого муравья".

Ну так вот же он - ннкрон, например. Или браузер. Или вообще любая программа.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth-2012
СообщениеДобавлено: Ср дек 09, 2015 14:14 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
gudleifr писал(а):
Это объяснимо, вера во что-то простое гораздо привлекательнее понимания чего-то сложного.

Я даже не удивляюсь :) Не заводить константы - признак начинающего программиста. Упорствовать в том, что так и надо - это уже показатель того, что человек советы воспринимал в штыки, и ни разу не делал проект такой сложности, чтобы собственные заморочки отвалились за ненадобностью.
gudleifr писал(а):
Ну, во-первых, FORTH - не язык.

Конечно, не язык!
"Средь богов он - Великий Брахма,
Среди птиц он могучий Гаруда,
Средь наставников - мудрый Дрона
Среди дваждырожденных - Арджуна..."

(Услышанное во сне после чтения Махабхараты и книги "Язык Форт и его реализации")

И пока одни спорят о терминах и установлении иерархии среди оставшихся полутора лузеров, другим надо писать программы.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth-2012
СообщениеДобавлено: Ср дек 09, 2015 14:33 
VoidVolker писал(а):
Ну так вот же он - ннкрон, например. Или браузер. Или вообще любая программа.
Хорошо, рассматриваем программу, состоящую из 100500 команд "OR EAX, EAX". Видим, что ее можно заменить менее, чем 64K-блоком. Ч.Т.Д.
Hishnik писал(а):
Не заводить константы - признак начинающего программиста.
Сейчас, скорее, наоборот. Но, речь не о том, заводить или не заводить константы, а в том, чтобы понимать, зачем они нужны. Обратите, например, внимание на константу DOES-PFA на экр. 24 приведенного выше листинга.
Hishnik писал(а):
про Брахму
Заголовок Форума читали? Кончайте троллинг...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth-2012
СообщениеДобавлено: Ср дек 09, 2015 15:03 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
gudleifr писал(а):
Сейчас, скорее, наоборот.

Это сейчас-то наоборот? Сейчас годятся любые методы повышения продуктивности программиста и сохранения его контроля над процессом разработки. Способности к концентрации конечны, и засорять память элементарными деталями в угоду некоему "пониманию базовых вещей" попросту вредно. Покажите мне сначала человека, активно пишущего на Форте, который не понимает, сколько надо прибавить к адресу для перехода к следующей ячейке. Годами будем мусолить идею "понимания размера"? А работать уже когда?

gudleifr писал(а):
Обратите, например, внимание на константу DOES-PFA на экр. 24 приведенного выше листинга.

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

gudleifr писал(а):
Заголовок Форума читали?

Нет, я его писал :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 82 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB