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