Forth
http://fforum.winglion.ru/

Провокация? FORTH и LISP
http://fforum.winglion.ru/viewtopic.php?f=4&t=68
Страница 2 из 3

Автор:  Kopa [ Чт апр 17, 2008 10:45 ]
Заголовок сообщения: 

Статья
Крис Касперски
Языки, которые мы потеряли. ( куда лучше поместить на нее ссылку?)

http://www.bestreferat.ru/archives/69/bestref-93569.zip ( ~19.5Кб в архиве)

P.S. Все просто, доступно и понятно написано, ( спасибо Крису Касперски)
Форт и Лисп упоминаются между строк,
как антагоники к существующему положению вещей.:)

Автор:  Владимир [ Чт апр 17, 2008 12:38 ]
Заголовок сообщения: 

Вымерли языки? Перестали их использовать? Значит их использование стало невыгодным.
Появились новые языки, усложняются языковые конструкции? Значит в этом сейчас есть необходимость.
Цитата:
Симула и Смолток естественным образом поддерживают многозадачность, многопоточность и распараллеливают вычисления на уровне языка.

Не понимаю я Касперского. Ну не поддерживает C++ многопоточности на уровне языка. А должен? В конце концов есть функции ОС, которые обеспечивают эти возможности. Введение многопоточности на уровень языка, является ИМХО не упрощением языковых конструкций, а их усложнением. C++ это не Java, которая сейчас вполне предендует на квази-ОС.
Хотя в будующем стандарте С++ многопоточность на уровне языка уже объявлена, как и кое-что из функционального программирования, замыканий... На РСДН писали об этом.
Цитата:
Остановить этот суицид очень просто—достаточно на законодательном уровне потребовать от производителей отвечать за свой продукт, выплачивая неустойку за каждую критическую ошибку. Программисты мгновенно одумаются и выкинут из программы все лишние узлы, а оставшиеся перепишут с использованием «легких» языковых средств, выбросив «заумные» и «тяжелые» в топку.

Смеялся. :))
Цитата:
Впрочем, процесс упрощения языков пошел уже и без того. При всей моей нелюбви к С#, я все-таки вынужден признать, что это большой шаг вперед, поскольку из него выкинули кучу конструкций Си++, которые были слишком сложны для рядовых программистов. В результате на С# намного меньше шансов написать уродливую программу

Ну-ну. :) Сегодня выкинем одни конструкции, завтра добавим другие. Потом появится еще одна статья, наподобие этой, где нововведенные конструкции будут критиковаться, потому, что в очередной раз сменилась парадигма их применения, и вообще нынешнее мейнстримовое N-ориентированное программирование стало не тру. :shuffle;
Я вообще не считаю Java или C# шагом вперед по сравнению с <<подставить любой язык программирования>>. Это просто еще два языка программирования, которые что-то вобрали от других языков, видоизменились, приспосабливаясь к необходимым в данное время задачам.
Изменились задачи - дополняйте или меняйте возможности языка. Хотите - придумывайте новый язык, если есть мнение что это будет удобнее для использования. :)
Лично я в основном работаю с С++ (BC++, MSVC++, g++), и меня в большинстве задач он полностью устраивает. Где не устраивает - пишу на других языках. Пусть даже некоторые из них товарищ Крис Касперский посчитает вымершими. Главное, что они будут соответствовать задаче.

Получилось сумбурно, но уж как получилось. :shuffle;

Автор:  chess [ Чт апр 17, 2008 14:19 ]
Заголовок сообщения: 

Владимир писал(а):
Сегодня выкинем одни конструкции, завтра добавим другие.

Больное место - выкидывают и добавляют не те кто использует язык.

Автор:  Kopa [ Ср авг 13, 2008 15:54 ]
Заголовок сообщения: 

Статья в Dr. Dobb`s о функциональном стековом языке CAT

http://www.ddj.com/architect/207200779

Можно сравнить вариант вычисления факториала

для CAT
Код:
define fact
{ dup 1 <= [pop 1] [dec fact *] if }


для Forth
Код:
: fact dup 1 <= if drop 1 else dec fact * then ;


P.S. И небольшой блог по этой статье
http://blogs.gotdotnet.ru/personal/sos/ ... 7a8024f735

Автор:  Hishnik [ Ср авг 13, 2008 20:43 ]
Заголовок сообщения: 

И мой вариант: :)

Код:
CREATE FACT_TABLE[] 1 , 1 , 2 , 6 , \ и другие значения факториала

: FACT ( X -- X!)  + @ ;

Автор:  mOleg [ Ср авг 13, 2008 21:01 ]
Заголовок сообщения: 

Хищник писал(а):
И мой вариант:

а смысл? сравнивается два рекурсивных алгоритма...

кстати, код для форта не совсем ANSI

Kopa писал(а):
: fact dup 1 <= if drop 1 else dec fact * then ;

должно бы так:
: fact dup 1 <= if drop 1 else dec RECURSE * then ;

Автор:  Hishnik [ Ср авг 13, 2008 21:04 ]
Заголовок сообщения: 

mOleg писал(а):
а смысл? сравнивается два рекурсивных алгоритма...

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

Автор:  mOleg [ Ср авг 13, 2008 21:10 ]
Заголовок сообщения: 

Хищник писал(а):
Все равно именно так факториал считать не будут

а с чего Хищник взял, что не будут?
Поройся по инету - везде примеры нахождения факториала именно с помощью рекурсии ;)

с другой стороны, если сравнивать рекурсию, то почему бы и не факториал?

Автор:  Hishnik [ Ср авг 13, 2008 21:15 ]
Заголовок сообщения: 

mOleg писал(а):
а с чего Хищник взял, что не будут?
Поройся по инету - везде примеры нахождения факториала именно с помощью рекурсии

Красивый в теории, но ненужный на практике пример. Сколько там будет считаться факториал от 10000 через рекурсию? А насколько нагрузит память системы таблиц факториалов такого размера? Я уже не говорю о том, что 10000! - это непомерное число, диапазон представления (даже 80-битного формата comp) очень скоро переполнится.

Автор:  Kopa [ Чт авг 14, 2008 08:07 ]
Заголовок сообщения: 

Хищник писал(а):
Красивый в теории, но ненужный на практике пример. Сколько там будет считаться факториал от 10000 через рекурсию?


Пример иллюстративный :) ( Но рекурсия неплохо понимается с использованием стека )

P.S. Подтекст в том, что оператор if выступает в роли обычной функции
принимающей на входе ( bool xt1 xt2 -- ).

Можно реализовать Фортовские if ... else ... then и другие ветвления
с использованием данной семантики, если этого еще не было.

Автор:  Kopa [ Вт окт 28, 2008 10:14 ]
Заголовок сообщения: 

Проект перевода книги по использованию Common Lisp. ( почти законченный )
By: Peter Seibel ( Published Apr 2005 )

http://pcl.catap.ru/doku.php

P.S. Дальнейшее рассмотрение реалий программирования.

Автор:  Alexander [ Чт окт 30, 2008 15:55 ]
Заголовок сообщения: 

fac(1,1).
fac(N,M):-
N1 is N-1, fac(N1,N2), M is N*N2.
Ну вот как-то так на Прологе, а если еще и assert использовать?!

Автор:  true-grue [ Чт окт 30, 2008 17:30 ]
Заголовок сообщения: 

А если просто немного подумать и вместо мемоизации(assert) использовать простейшую хвостовую рекурсию(вызов fac() должен быть в последнем утверждении правила)? Да и с 0! как-то некрасиво получилось. Если есть желание продемонстрировать свои способности на Прологе, почему бы не сделать это на соответствующем форуме?

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

Автор:  Pretorian [ Чт окт 30, 2008 17:56 ]
Заголовок сообщения: 

А я ни как не могу понять причем тут lisp и forth? Вобще разные механизмы. Лисп расчитан в логике на обработку списков и там совсем другое. Это как сравнивать C# и форт, C# красив, но если приглядется в фрамеворк то гнильцой попахивает.

Автор:  Mihail [ Чт окт 30, 2008 19:35 ]
Заголовок сообщения: 

Pretorian писал(а):
А я ни как не могу понять причем тут lisp и forth?


Давным давно, на каком-то семинаре, гаворилось о реализации Лиспа и Пролога
в Форте, при этом можно было писать на смеси Лиспа и Пролога. По моему, это уже
все утеряно.

Страница 2 из 3 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/