Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 00:58

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 164 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 16:29 
Не в сети
Аватара пользователя

Зарегистрирован: Чт апр 26, 2007 21:09
Сообщения: 303
Благодарил (а): 12 раз.
Поблагодарили: 10 раз.
true-grue писал(а):
В языках с динамической типизацией несложно работать с произвольными структурами, описывая их явно:

Код:
def fun1(n):
   if n:
      return ('name', 'localhost')
   else:
      return ('ip', 127, 0, 0, 1)


Далее мы можем узнать размер возвращенного кортежа по len() и его тип. В Форте можно сделать ровно то же самое.

Если же Вы намекали на преимущества вывода типов и статической типизации -- это отдельный разговор.

При чём тут статика и динамика?
Я вообще не представляю, как, говоря о повышении надёжности ПО можно подобный код приводить? Функция, возвращает в разные моменты времени значения разных типов? И, при этом, эти типы ещё никакими отношениями расширения или наследования не связаны? Это что, я в месте вызова этой функции (В ЛЮБОМ МЕСТЕ!) должен прописывать селекторы по типам???


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 17:15 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
тема ушла непонять куда...
Какие-то ПЕРЛы против ФОРТа получаются...

Цитата:
Стоит мужик около урны. Раскуривает сигару, затягивается и выпустив дым бросает сигару в урну. Через некоторое время то же самое повторяет снова. К урне подходит другой мужик, вытаскивает недокуреные сигары и говорит, глядя на первого. Вот, если бы вы так сигары не бросали, эта машина (показывает на стоящий рядом лимузин) могла бы быть вашей. Курящий мужик бросает в урну очередной недокурок и отвечает. А она и так моя!

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 17:44 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Хищник писал(а):
См. nnCron, например... и ведь это "просто еще один планировщик".

Ну уж "просто еще один", он один и не потопляем. Какими я только планировщиками не пользовался, все глючит или убивается рано или поздно. Тот же встроенный виндозный, иногда скажем пароли теряет админские, другие ни с того не с сего с ума сходят из-за вся ких там утечек и прочее. А nncron как настроил 7 лет назад так и не заглядывал, а чего заглядывать когда все архивчики в целости и сохранности (в паре с рар колбасит). Уже весь совт заново по переустанавливали на несколько рядоф, а нкрон пашет как совковая лопата, вот вам и "еще просто один планировщик". А что такое перл, да ни чего, работал я на нем, синтаксис поужасней чем на форте, Гуру может такое заколбасить, что фиг чего поймешь, преимущество языка только в его открытых программах и либах.
P.S Кстати так и не разобрался до сих в nncron граф среде, оно словами форта удобней.

_________________
Меня нет, не будет и не было.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 18:07 
Не в сети
Аватара пользователя

Зарегистрирован: Чт апр 26, 2007 21:09
Сообщения: 303
Благодарил (а): 12 раз.
Поблагодарили: 10 раз.
Я конечно дико извиняюсь, но вот в послеобеденной дрёме, таки напряг моск (за форму записи и расположение операторов - не пинайте - тока учусь...):
Код:
: MAJ ( 3 2 1 -> i | _ )
   OVER OVER        ( 3 2 1 2 1 )
   =                ( 3 2 1 ?   )
   IF               ( 3 2 1     )
      -ROT         ( 1 3 2     )
      DROP DROP    ( 1         )
   ELSE
      ROT          ( 2 1 3     )
      DUP          ( 2 1 3 3   )
      ROT          ( 2 3 3 1   )
      =            ( 2 3 ?     )
      IF           ( 2 3       )
         SWAP DROP( 3         )
      ELSE
         OVER     ( 2 3 2     )
         <>       ( 2 ?       )
         IF       ( 2         ) 
            DROP   (          )
         THEN
      THEN
   THEN
;

Так - можно?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 18:45 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Pretorian писал(а):
Ну уж "просто еще один", он один и не потопляем. Какими я только планировщиками не пользовался, все глючит или убивается рано или поздно. Тот же встроенный виндозный, иногда скажем пароли теряет админские, другие ни с того не с сего с ума сходят из-за вся ких там утечек и прочее. А nncron как настроил 7 лет назад так и не заглядывал, а чего заглядывать когда все архивчики в целости и сохранности (в паре с рар колбасит). Уже весь совт заново по переустанавливали на несколько рядоф, а нкрон пашет как совковая лопата, вот вам и "еще просто один планировщик".

Ну а я о чем? :) Что, nnCron - это мучительно высосанный из пальца "большой проект на Форте". Ничего подобного! Это планировщик. Точка.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 19:11 
Не в сети

Зарегистрирован: Пн ноя 05, 2007 13:54
Сообщения: 144
Благодарил (а): 0 раз.
Поблагодарили: 13 раз.
Wlad писал(а):
Я конечно дико извиняюсь, но вот в послеобеденной дрёме, таки напряг моск (за форму записи и расположение операторов - не пинайте - тока учусь...):
Так - можно?


О чем у нас в теме идет речь? Вообще говоря, о сравнении Perl и Forth. Думаю, не возбраняется говорить и о других динамических языках в этом контексте. В последний момент обсуждение шло на тему «слов оставляющих переменное количество параметров в широком смысле (от N до 0-ля)».

Смысл части моего сообщения сводился к следующему: на Форте не следует злоупотреблять такими словами, равно как и словами, перегруженными 'тяжеловесными' стековыми операциями. На вопрос «как сделать правильно на Форте слово maj3» самый очевидный ответ -- «никак», потому что в хорошей программе не должно быть подобных слов. Если же надо и вот прямо сейчас — локальные переменные в помощь. В любом случае на Форте действует простое правило: если есть сложная задача, прежде чем ее решать нужно создать инструмент решения. Довольно неумно все проблемы решать через ROT.

А уж когда фантазировать, то можно додуматься и до решений, свойственных обычным динамическим языкам. Ведь Вы же фантазией обладаете, не так ли? А стало быть, способны представить себе практическую пользу от введения 'кортежей'. Но на всякий случай вот Вам другой, «полезный» пример:

Код:
(define (positive l)
  (filter (lambda (x) (> x 0)) l))

> (positive '(-5 -4 -3 -2 -1 0 1 2 3 4 5))

(1 2 3 4 5)


Но вернемся к примеру на Python. Какие Вы там значения разных типов-то углядели? Тип один — кортеж из некоторого числа элементов. Селекторы Вас напугали? А динамическое связывание для Вас что-нибудь значит? И давайте уж о «о повышении надёжности ПО» поговорим где-нибудь в другом месте.

P.S. Кстати, пример с positive я могу сходу перевести на Форт.
P.P.S. К своему варианту MAJ лучше бы Вы отнеслись более критически и никому не показывали, особенно после кода от chess.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 19:26 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Wlad писал(а):
Так - можно?

Можно то можно, но OVER OVER эквивалентно 2DUP, а -ROT DROP DROP это NIP NIP, ROT DUP ROT это TUCK SWAP,
а SWAP DROP это NIP.
Потренироваться можно(только для начала) в стековых перестановках, но злоупотреблять ими не надо.
Если без комментариев и без напряга их использовать получается, то можно, если нет, то лучше найти более "простой" способ(локальные переменные, разбивка определения на части, вообщем по ситуации).
Локальные переменные работают только при определении одного слова и могут быть заведены только один раз(это
довольно сильное ограничение на их использование). Чаще пользуйтесь стеком возвратов для разгрузки стека
параметров(>R, 2>R, R@, R> 2R>).

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 19:43 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
Можно то можно, но OVER OVER эквивалентно 2DUP
кое-где нет 2DUP (вот в кварке не было)

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 19:57 
Не в сети
Аватара пользователя

Зарегистрирован: Чт апр 26, 2007 21:09
Сообщения: 303
Благодарил (а): 12 раз.
Поблагодарили: 10 раз.
chess писал(а):
Wlad писал(а):
Так - можно?

Можно то можно, но OVER OVER эквивалентно 2DUP, а -ROT DROP DROP это NIP NIP, ROT DUP ROT это TUCK SWAP,
а SWAP DROP это NIP.
Потренироваться можно(только для начала) в стековых перестановках, но злоупотреблять ими не надо.
Если без комментариев и без напряга их использовать получается, то можно, если нет, то лучше найти более "простой" способ(локальные переменные, разбивка определения на части, вообщем по ситуации).
Локальные переменные работают только при определении одного слова и могут быть заведены только один раз(это
довольно сильное ограничение на их использование). Чаще пользуйтесь стеком возвратов для разгрузки стека
параметров(>R, 2>R, R@, R> 2R>).

Оно, конечно - спасибо, тока это моя третье осмысленное слово на Форте... :)
Я, например, до сих пор про NIP и TUCK и не знал вообще, что это за звери такие?
Локальные переменные я постараюсь вообще не пользовать в связи с личностными установками... :) Конкретно - на сквозную и всеобщую повторную входимость слов.
Со стеком воозвратов я тоже пока опасаюсь работать - я не знаю ещё, как это будет аккуратно перемежаться со структурами (словами) ветвления и циклования...
Со временем, как-нить...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 20:05 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
вопрос писал(а):
Цитата:
Можно то можно, но OVER OVER эквивалентно 2DUP
кое-где нет 2DUP (вот в кварке не было)

Разговор о том, что стек - не место для перестановок. Если слов, работающих со стеком, становится слишком много, значит, что-то не так. Локальные переменные (а то и глобальные), пусть даже повторное вычисление сложных выражений. Но стековые операции не должны становиться предметом постоянного внимания к ним.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 20:33 
Не в сети

Зарегистрирован: Пн окт 15, 2007 17:24
Сообщения: 164
Откуда: Бийск
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Wlad писал(а):
Я вообще не представляю, как, говоря о повышении надёжности ПО можно подобный код приводить?

А кто-то говорил о надёжности?
Языки, предоставляющие слишком много свободы (а форт в этом плане явление выдающееся), не располагают к написанию надёжного ПО, вернее для достижения этой самой надёжности приходится вводить искусственные ограничения, внешние по отношению к языку - например запрет на слова, подобные обсуждаемые примеру.
Когда форт-машина сама с собой может в любой момент сделать все что угодно (а она может это сделать) то говорить о "надёжности ПО", в каком бы смысле этот термин не употреблялся, бессмысленно.

_________________
And so forth ...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 20:45 
Не в сети
Аватара пользователя

Зарегистрирован: Вт ноя 06, 2007 21:23
Сообщения: 227
Откуда: Екатеринбург
Благодарил (а): 4 раз.
Поблагодарили: 7 раз.
:)) Ой, а может код на ПЛ-1/М вставить ???


Последний раз редактировалось Alexander Чт фев 19, 2009 21:16, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 21:12 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Wlad писал(а):
Локальные переменные я постараюсь вообще не пользовать в связи с личностными установками... Smile Конкретно - на сквозную и всеобщую повторную входимость слов.

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

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 21:16 
Не в сети
Аватара пользователя

Зарегистрирован: Чт апр 26, 2007 21:09
Сообщения: 303
Благодарил (а): 12 раз.
Поблагодарили: 10 раз.
Варнак писал(а):
А кто-то говорил о надёжности?

Я. И для меня это - выше всего остального. И - по опыту, и - по приоритетам при разработке.
Параноик я, на счёт надёжности...

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

Ну дык никто и не спорит. Другое дело, что уровень, степень и "охватность" таких ограничений - систмна и неотъемлема при проектировании и производстве систем. От нас же зависит где и как мы организуем комплекс таких ограничений. Что бы с приобретением надёжности эффективность не потерять и не заорганизовать сам техпроцесс...

Варнак писал(а):
Когда форт-машина сама с собой может в любой момент сделать все что угодно (а она может это сделать) то говорить о "надёжности ПО", в каком бы смысле этот термин не употреблялся, бессмысленно.

Не понял! Там унутрях духи водятся что ли?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 19, 2009 21:38 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Хищник писал(а):
вопрос писал(а):
Цитата:
Можно то можно, но OVER OVER эквивалентно 2DUP
кое-где нет 2DUP (вот в кварке не было)

Разговор о том, что стек - не место для перестановок. Если слов, работающих со стеком, становится слишком много, значит, что-то не так. Локальные переменные (а то и глобальные), пусть даже повторное вычисление сложных выражений. Но стековые операции не должны становиться предметом постоянного внимания к ним.

Здесь Хищника всецело поддержива ю.

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 164 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11  След.

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


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

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


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

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