nixp.ru v3.0

22 октября 2017,
воскресенье,
07:24:01 MSK

DevOps с компанией «Флант»
fatboy написал 25 июля 2004 года в 22:32 (1071 просмотр) Ведет себя как мужчина; открыл 4 темы в форуме, оставил 11 комментариев на сайте.

Побродил тут по форуму, почитал мессаги разные и несколько раз наталкивался на упоминание о LISP. В частности этот язык ставился в сравнение с С/С++ и др. Так вот созрел вопрос.

Разве поддаются сравнению LISP и языки типа С/С++ и др.? Я всегда думал что это абсолютно не сравнимые вещи, и сферы применения и парадигмы у них АБСОЛЮТНО разные…

Ваше мнение?

Uncle Theodore

Здесь я, пожалуй, согласен. LISP и С/C++ — это яблоки и апельсины. Кстати, интересно, а где cebka пользует лямбда-исчисление? Вроде, он про это упоминал.

Good Luck,

UT

fatboy

Что есть лямбда-исчисление?

Да, кстати я когда Мозиллой из-под Линуха работал, полей «Имя» и «E-mail» на форме небыло, а в Опере под Виндой они есть :-\

Так это же я просто залогинится забыл ! :-)

Genie

Гхм. С такиви вопросами — надо отсылать к первоисточникам, т.е., в данном случае, к истории развития программирования вообще.

Языки программирования делятся на:

1) по уровню абстракции — высокого и низкого;

2) по характеру описания — процедурные, функциональные и декларативные;

3) по методу исполняемости — компилируемые и интерпретируемые, отчасти есть и средняя группа — байт-код компилируемые, которые затем интерпретируются вируальной машиной;

4) … может ещё чего, счас не помню уже.

Соответственно, Си по этой классификации — это язык (sic!) низкого уровня; полупроцедерный/полуфункциональный (большая часть операторов является функцией, но не все) — поэтому, строго говоря, это процедурный язык; компилируемый.

С++ уже не является языком низкого уровня, хотя это, по сути, расширение Си.

Lisp — язык высокого уровня, функциональный, интерпретируемый (в лучшем случае байт-код компилируемый). [[Ну, если подумать, то есть Lisp-машины, у которых это будет полностью компилдируемым языком]].

По своим задачам сильно разные языки.

На C/C++ удобно писать вещи, которые понятно, КАК описать алгоритмически. Отсюда и применение C в системной области.

Lisp — больше подходит для задач, в которых надо определяить ЧТО получить. Одной из сторон этого — использование Lisp в ИИ.

Ну и до кучки, чтоб не было вопроса, а какой тогда язык декларативный — это, ожин из таких — Пролог (и его вариации). Писать на нём КАК делать — это просто невыносимо. ;)

А вот что должно получиться — что говорится «лехко!» На то он и декларативный, описательный, язык.

Ну, что касается лямбда-функций.

У обычной функции аргументами являются значения — численные, символьные, составные,…

Так вот, в языке Lisp, где любой объект, в том числе и любая функция, представляются либо атомом, либо списком, что является S-выражением.

Поэтому значением-аргументом функции может являться так же и функция.

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

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

fatboy

Лямбда-исчисление возможно в С++?

Ведь при таком вызове ф-ц-ии Ф-ЦИЯ1( Ф-ЦИЯ2( ПАРАМЕТР ) ) все равно сначала вычисляется значение ф-ции2 с заданным параметром а потом в качестве параметра ф-ции1 передается РЕЗУЛЬТАТ выполнения ф-ции2, который представляет собой то же число, строку, массив…

Т.е. не возможно?

Или это оно и есть? :)

Чё б я вам тут мозги не #6@1 может дадите ссылку на что почитать по этому вопросу :)

Во! Пока не забыл не знает ли кто где можно почитать в сети чего-то по работе с файлами в С++.

Желательно в виде справочника.

Буду очень благодарен!

Genie
Лямбда-исчисление возможно в С++?


Интерпретатор Lisp написан на C, лябмда функции — в Lisp… Так что, видимо, можно :)

Но. для этого надо часть функциональности Lisp внести в программу….

В общем случае в C/C++ вычисляется значение функции. А потом уже подставляется результат вычисление в более внешнюю функцию.

Это не совсем то, что требуется.

Я несколько неправильно описал — поскольку, как уже говорил, узичал это давно.

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

Если откопаю книжку по Lisp, то опишу это более подробно (сейчас ломает малость — время почти 2:00).

Почитать — любая толковая книжка по Lisp.

fatboy

Нифига же себе! Это где сейчас 2:00?

Что такое (Nsk) не знаю.

Uncle Theodore
fatboy
Лямбда-исчисление возможно в С++?

Ведь при таком вызове ф-ц-ии Ф-ЦИЯ1( Ф-ЦИЯ2( ПАРАМЕТР ) ) все равно сначала вычисляется значение ф-ции2 с заданным параметром а потом в качестве параметра ф-ции1 передается РЕЗУЛЬТАТ выполнения ф-ции2, который представляет собой то же число, строку, массив…

Т.е. не возможно?

Или это оно и есть? :)

Чё б я вам тут мозги не #6@1 может дадите ссылку на что почитать по этому вопросу :)

http://en.wikipedia.org/wiki/Lambda_calculus

Вообще же, лямбда-исчисление задумывалось как 1. Основание всей математики; 2. Основание всего программирования. Как ты знаешь, Тюринг придумал абстрактную машину, а Черч — абстрактный алгоритмический язык (lambda-calculus). Все это сейчас имеет по большей части, историческую ценность, поэтому я и спросил cebka, для каких задач ему нужен аппарат лямбды. А когда-то весь искусственный интеллект собирались на этом строить.

Во! Пока не забыл не знает ли кто где можно почитать в сети чего-то по работе с файлами в С++.

Желательно в виде справочника.

Буду очень благодарен!

Я тебе уже давал ссылку один раз. http://www.cplusplus.com/ref/ Не понравилось?

ЗЫ Кстати, там, где я живу, сейчас без двадцати четыре. :-) Удивись еще раз.

Good Luck,

UT

fatboy
Uncle Theodore
Я тебе уже давал ссылку один раз. http://www.cplusplus.com/ref/ Не понравилось?

UT

Да нет нормально, просто я последние 2 дня туда достучаться не могу а тут приперло, срочно надо.

Genie
http://en.wikipedia.org/wiki/Lambda_calculus

Вообще же, лямбда-исчисление задумывалось как…

Мда. Надо взять такой полезный ресурс на заметку. :D

Нифига же себе! Это где сейчас 2:00?

Что такое (Nsk) не знаю.

Интересно. Действительно интересно мне стало..

Это чего же. По умолчанию считается, что живут все пользователи в Москве?

Вот это ничего себе :-/

И географию нынче в школе не преподают..?

Ну ладно, попробовать вставить Nsk между 'http://www.' и '.ru/' оставлю в качестве домашнего задания ;)

[[ Уточнение. Это оно, конечно, жителю Днепропетровска может и не известно.. ;)) ]]

сейчас без двадцати четыре. :-)

Только этта. Видимо, всё же 3:40pm было ;))

Uncle Theodore
Genie
Только этта. Видимо, всё же 3:40pm было ;))

Таки да. Без двадцати четыре дня было.

-- Когда я вернусь, пусть будет шесть часов!

-- Шесть вечера или шесть утра?

-- Шесть дня!..

А сейчас — глубокая ночь и пора спатеньки…

Good Luck,

UT

onrue

www.paulgraham.com

http://www.alu.org/alu/home

http://pco.iis.nsk.su/~fenster/docs/clisp/

http://mitpress.mit.edu/sicp/full-text/book/book.html — буду тыцять всем, кто хочет «научиться программировать». Ну и еще, конечно, Кнута…

myst

К вопросу о lambda-функциях. Грубо говоря lambda-фунция — это анонимная функция, которая задаётся прямо там где и используется (почти). В Python’е удобно юзать с map(). Например:

yy = map(lambda x: 1/x, xx)

что значит: над каждым x из xx проделать 1/x и запихать результат в yy.

Я тут посмторел и вижу, что с темой промахнулся… Ну да ладно…

anonymous

>Языки программирования делятся на:

>1) по уровню абстракции — высокого и низкого;

>2) по характеру описания — процедурные, функциональные и >декларативные;

Что такое «характер описания» ? Common Lisp по этой классификации является и тем, и другим, и третим.

>3) по методу исполняемости — компилируемые и интерпретируемые, >отчасти есть и средняя группа — байт-код компилируемые, которые >затем интерпретируются вируальной машиной;

Нет. Языки не бывают компилируемыми или нет, это определяется реализацией.

>4) … может ещё чего, счас не помню уже.

Да уж, классификация просто блеск.

>Соответственно, Си по этой классификации — это язык (sic!) низкого >уровня; полупроцедерный/полуфункциональный (большая часть >операторов является функцией, но не все) — поэтому, строго говоря, >это процедурный язык; компилируемый.

>С++ уже не является языком низкого уровня, хотя это, по сути, >расширение Си.

С++ — это ассемблер с классами, где там высокий уровень ? Прямая работа с памятью с помощью указателей, ручное управление памятью new/delete и т.п.

>Lisp — язык высокого уровня,

Это правда. Не сказано только, какой именно Lisp, но допустим Common Lisp.

> функциональный,

Неправда или правда на половину. Лисп поддерживает и всячески поощряет функциональный подход, но по сути — это обычный императивный язык программирования, который поддерживает любые конструкции: циклы, изменение переменных и т.п. вещи из «обычных» языков вроде Pascal или С++. Единственное отличие, что вы можете сами добавлять новые управляющие конструкции.

> интерпретируемый (в лучшем случае байт-код компилируемый).

Во ересь. Есть конечно интерпретируемые реализации и байт-код компилируемые, но большинство серьезных реализаций того же Common Lisp компилируются в маш.код и выполняются очень эффективно иногда не медленне программ написанных на Си, это зависит от реализации. www.lispworks.com скачайте Personal Edition и посмотрите, счастливые обладатели Linux могут использовать CMUCL, который не уступает по качеству компиляции сишным аналогам.

> [[Ну, если подумать, то есть Лисп-машины, у которых это будет

> полностью компилдируемым языком]].

Он будет не только компилируемым, но и поддерживается железом, более того там ОС и дрова тоже написаны на Лиспе !!!

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

> По своим задачам сильно разные языки.

В принципе да, но С++ и Си мешать по задачам не стоит.

> На C/C++ удобно писать вещи, которые понятно, КАК описать алгоритмически.

Согласен полностью.

> Отсюда и применение C в системной области.

И в этой области не всегда ясно как лучше решить ту или иную задачу.

>Lisp — больше подходит для задач, в которых надо определяить ЧТО >получить.

Вы явно спутали его с ПРОЛОГом. Лисп не содержит никаких встроенных движков вывода. КАК получить нужно указать, как

и в С и С++.

>Одной из сторон этого — использование Lisp в ИИ.

Просто язык очень гибкий и меняется как хамелеон, подстраиваясь

под задачу. Что тут говорить Лисп — идеальный язык для ИИ.

> Ну и до кучки, чтоб не было вопроса, а какой тогда язык декларативный — это, ожин из таких — Пролог (и его вариации). Писать на нём КАК делать — это просто невыносимо. ;)

SQL забыли ??? Многие реализации Лисп поставляются с чем-то вроде ПРОЛОГа и это можно использовать в тесной связи с обычной императивной программой.

> У обычной функции аргументами являются значения — численные,

> символьные, составные,…

просто добавлю,что в Лиспе все это есть…массивы, структуры, классы, строки и т.п. И типизация есть, для тех кто не знает, строгая, но динамическая.

> Так вот, в языке Lisp, где любой объект, в том числе и любая

> функция, представляются либо атомом, либо списком, что является > S-выражением.

Дополню. Атом — это все что не список, т.е. число, символ, строка, массив…

> Поэтому значением-аргументом функции может являться так же и

> функция. Отсюда, лямбда-функция — это функция от нескольких

> функций над заданными аргументами (точное описание не помню, > поскольку.. когда это было…).

Пока академики думают о лямбда счислении, в Common Lisp практики используют себе кострукцию (lambda (аргументы) тело), что просто является способом задания безымянной функции. В принципе в Лиспе все функции как бы привязаны к именам и можно иметь одну и ту же функцию под разными именами ;-)

> При помощи лямбда-функций многие сложные формулы

> сворачиваются в более компактные записи, что облегчает

> написание.

И упрощается доказательство «правильности» кода, т.е. соответствие написанного формальной спецификации

Uncle Theodore
Lisper
>Одной из сторон этого — использование Lisp в ИИ.

Просто язык очень гибкий и меняется как хамелеон, подстраиваясь

под задачу. Что тут говорить Лисп — идеальный язык для ИИ.

Ух, щас флейм разведу! Блистательный провал ИИ (полвека работы с нулевым результатом), на мой непредвзятый взгляд, напрямую связан с абсолютно неверным пониманием того, что именно есть интеллект, пониманием навязанным Черчем и Чомским и забитым в «великий и могучий» Шепелявый язык программирования (Кто не знает — «to lisp» == «шепелявить»)!

Поясню. Для Чомского интеллект был способностью жонглировать словами. Все! Слова могли быть «произнесенными», написанными или полученными как «информация» в какой-то иной форме. Отсюда Тест Тьюринга. Отсюда совершенно идиотские методики обучения студентов в американских школах и университетах. Признак понимания и владения предметом — способность говорить о нем. Чомский даже верил в существование «универсального языка» зашитого аппаратно в мозги людей.

Отсюда Шепелявый язык, Элиза и другие «обработчики списков» в качестве «разумных» систем. Отсюда «обработка информации» в качестве задачи компьютерной системы. Даже примитивный парадокс Китайской комнаты не убедил этих языкоблудных дебилов в бесперспективности их подхода. Для них интеллект — это синтаксис. Чем больше правил, тем умнее…

Good Luck,

UT

Genie

lisper,

>2) по характеру описания — процедурные, функциональные и декларативные;

Что такое «характер описания» ? Common Lisp по этой классификации является и тем, и другим, и третим.


Наш мир полон несовершенных вещей :)))

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

То же самое и с Сями. Фнкциональность, точнее присутствие результата у практически каждой операции не мешает существовать операторам, которые такого поведения не имеют.

Лисп сам по себе — почти граничная степень функционального языка.

Нет. Языки не бывают компилируемыми или нет, это определяется реализацией.


Ну, я понимаю, хочется хоть что-то возразить :)))

Увы, это сейчас практически так оно и есть — среднего уже не бывает. Почти.

Но, всё же — посмотрим: «виртуальная java-машина», «p-code», внутренне представление исполняемого perl кода, «warren abstract machine» и многое другое… Стоит только начать искать — как тут же находится.

Так это что?компилированные в машынно-исполняемые коды? или всё же это компиляция в промежуточное байт-код представление, которое затем исполняется виртуальной машиной?

Да уж, классификация просто блеск.


приводилась для понимания сути деления языков. не нравится — представьне ту, которая нормальная ;))

мне перепечатывать из толкового словаря по информатике и программированию было несколько ленива.

Это правда. Не сказано только, какой именно Lisp, но допустим Common Lisp.


если смотреть на раннюю классификацию, то лисп в одно время был ЯВУ, а потом — перестал. :))

но ведь так оно же быть не может, что из-за одного признака язык потерял квалификацию? ;)

Как только появились Лисп-машины, так и пропала в классификации уровня языков необходимость присутствия компьютеров, могущих прямо исполнять конструкции языка, обязательным условием определения языка как низкого уровня.

> функциональный,

Неправда или правда на половину.


Ох, может подучим малость историю развития языков, а? и не будем говорить неподумавши? ;))

Он будет не только компилируемым, но и поддерживается железом, более того там ОС и дрова тоже написаны на Лиспе !!!


А только такое понимание и есть «компиляция». Иначе — это байт-код компиляция. Учим историю языков программирования.

Посмотрите в инете и почитайте про Лисп-машины


:D :D :D :D

Ой… умора.. это мне смотреть?

да я лучше по SWARD поищу. :))) Куда приятнее занятие.

>Lisp — больше подходит для задач, в которых надо определяить ЧТО получить.

Вы явно спутали его с ПРОЛОГом.


Нет, не перепутал. Делов втом, что абстракция Пролога, хоть и выше, но — не настолько гибкая, чтобы быть удобной для всего спектра необходимого процесса вывода/доказательства.

Лисп даёт среду для создания собственного бвижка. Но это уже тонкости, которые познаются на собственной шкурке. С опытом, временем…

Писать на нём КАК делать — это просто невыносимо. ;)


Выносимо. И не только выносимо. Между делом позволяет экономить время нахождения ответа в десятки раз.

Но — жутко неудобно. :))

UT,

Блистательный провал ИИ (полвека работы с нулевым результатом)


Провал-провалом, однако, блистательным назвать его сложно ;))

и про нулёвость результата тоже очень спорно..

Создание и проработка направления ЭС как таковых — решила очень многое.

Да, это не является интеллектом. И не может, поскольку — интеллект — это результат самоорганизации. Создать такое сразу и с нуля — это надо быт гением. Какой степени — это я скромно, по непониманию, умолчу :))

(Кто не знает — «to lisp» == «шепелявить»)


Ни разу не обращал внимания :))

Честно.

Хотя слово это в обиходе было :))

И в противовес экспертным системам, удостоверившись в их неприменимости к реальному миру, в Японии, в недрах крупной корпорации (сами знаете, какой) в течении трёх лет тренировали комочек манипуляторов, с парой видео-камер и опто-кабелем до супер-эвм.

И ходят они теперь, и реагируют на объекты,….

Zert

Развели дискуссию :)

Common Lisp — был первым языком на котором я начал писать. Использовал тогда интерпретатор clisp, который мог делать только байт-код. В поисках чего-то получше, начал пользовать gcl, который уже создавал объектные файлы, загружаемые во время выполнения. Скорость, соответственно, повысилась во много раз. Сейчас пользую chicken. Он из схемовских исходников делает сишные, которые затем компиляются в нативные исполняемые бинари.

И не надо так спорить. Relax & enjoy! Lisp Dzen — это вам не болт в стакане :)

anonymous
fatboy
Лямбда-исчисление возможно в С++?

Ведь при таком вызове ф-ц-ии   Ф-ЦИЯ1( Ф-ЦИЯ2( ПАРАМЕТР ) ) все равно сначала вычисляется значение ф-ции2 с заданным параметром а потом в качестве параметра ф-ции1 передается РЕЗУЛЬТАТ выполнения ф-ции2, который представляет собой то же число, строку, массив…

Т.е. не возможно?

Или это оно и есть?  :)

Чё б я вам тут мозги не #6@1 может дадите ссылку на что почитать по этому вопросу  :)

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

Погугли в нете по словам lazy evaluation.

А вообще , лисп — не чисто функциональный язык, ибо допускает такую конструкцию :

(setq x 10), где x —  mutable object aka переменная.

Чисто функциональные языки — Haskell и , afair, Clean. Было дело, интересовался я этим, но библиотек для верблюда маловато, во всяком случае, меньше , чем для С и Perl. ;-)

anonymous
redbeard
Погугли в нете по словам lazy evaluation.

А вообще , лисп — не чисто функциональный язык, ибо допускает такую конструкцию :

(setq x 10), где x — mutable object aka переменная.

Анонимов берут? ;)

А чем хуже

(defun x () 10) ?

Ну и, ИМХО, забыли один из самых главных плюсов lispa — макры.

decvar

ключевые слова: delegate и generic

в msdn.com

anonymous

>Ух, щас флейм разведу! Блистательный провал ИИ (полвека работы >с нулевым результатом), на мой непредвзятый взгляд, напрямую >связан с абсолютно неверным пониманием того, что именно есть >интеллект, пониманием навязанным Черчем и Чомским и забитым >в «великий и могучий» Шепелявый язык программирования (Кто не >знает — «to lisp» == «шепелявить»)!

Это очень умно, начинать переводить названия языков программирования с целью увидеть в них какие-то смешные знакомые слова. Причем тут интеллект ? Вы занимаетесь созданием ИИ ? Вы знаете лучший способ ?

Речь идет о написании обычного софта, забудьте про ИИ, Лиспу весьма не повезло, что он вляпался в эту историю с попыткой создания ИИ (см. AI Winter). Сам язык видимо в этом не виноват. Если его (Common Lisp) изучить достаточно хорошо, то в накладе вы не останетесь. Сейчас интерес к Лиспу постепенно возобновляется, так как разные возможности вроде процедурных макросов только начинают внедряться в мэйнстрим.

anonymous

>Паскаль, к примеру — процедурный. Только это не мешает >присутствовать в программах функциям и определениям типов >данных.

>То же самое и с Сями. Фнкциональность, точнее присутствие >результата у практически каждой операции не мешает существовать >операторам, которые такого поведения не имеют.

Вы случайно не думаете, что функциональный язык — это язык с функциями ? ;-) Вы можете писать на Си в функциональном стиле. Да, Лисп функциональный, но еще логический, объектный и объектно-ориентированный и прочая и прочая, потому что это метаязык.

>Увы, это сейчас практически так оно и есть — среднего уже не >бывает. Почти.

Компиляторы Лиспа могут одновременно уметь компилять в байт-код и в маш. код. Например CMUCL.

>Так это что?компилированные в машынно-исполняемые коды? или >всё же это компиляция в промежуточное байт-код представление, >которое затем исполняется виртуальной машиной?

> Иначе — это байт-код компиляция.

Компиляция — это компиляция, не важно кто потом этот код будет исполнять железо или эмулятор.

>Ох, может подучим малость историю развития языков, а? и не будем >говорить неподумавши? ;))

Причем тут история ? Я реально пишу на этом языке и уж лучше знаю, функциональный он или нет. Точно не «чисто функциональный», ибо сторонние эффекты позволены, есть циклы и т.п. Степень чистоты далее определять бессмысленно.

> Ой… умора.. это мне смотреть?

А вы уже видели и знаете их возможности ? Не понял, с чем связаны ваши улыбки до ушей ;-)

>Ëèñï äà¸ò ñðåäó äëÿ ñîçäàíèÿ ñîáñòâåííîãî áâèæêà. Íî ýòî óæå >òîíêîñòè, êîòîðûå ïîçíàþòñÿ íà ñîáñòâåííîé øêóðêå. Ñ îïûòîì, >âðåìåíåì…

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

>Выносимо. И не только выносимо. Между делом позволяет >экономить время нахождения ответа в десятки раз.

>Но — жутко неудобно. :))

С чего это неудобно-то ? Вы пользовались нормальной интерактивной средой разработки типа LispWorks или ACL или Emacs+SLIME+X ? Если все делали из командной строки REPL, то так вам и надо ;-)

Про спорность провала ИИ вас всецело поддерживаю.

2Uncle Theodore

Главной находкой были как раз экспертные системы, которые позволили сэкономить корпорациям многие миллионы долларов, множество из них было написано на Лиспе, так что свистеть про провал не надо. И хоть интеллект так и не создали, но провалом это назвать сложно.

>êëþ÷åâûå ñëîâà: delegate è generic

>â msdn.com

Взгляните и ужаснитесь, что вам придется изучать, если вы пишите не на Лиспе (не используете CLOS) ;-)

Uncle Theodore

Говорил же, флейм разведу! Только что-то долго он не разгорался… :-)

Lisper
>Ух, щас флейм разведу! Блистательный провал ИИ (полвека работы >с нулевым результатом), на мой непредвзятый взгляд, напрямую >связан с абсолютно неверным пониманием того, что именно есть >интеллект, пониманием навязанным Черчем и Чомским и забитым >в «великий и могучий» Шепелявый язык программирования (Кто не >знает — «to lisp» == «шепелявить»)!

Это очень умно, начинать переводить названия языков программирования с целью увидеть в них какие-то смешные знакомые слова. Причем тут интеллект ? Вы занимаетесь созданием ИИ ? Вы знаете лучший способ ?

А если занимаюсь и знаю, от этого что-то изменится? :-) А что название смешное — так нафига ж его так назвали?

Речь идет о написании обычного софта, забудьте про ИИ, Лиспу весьма не повезло, что он вляпался в эту историю с попыткой создания ИИ (см. AI Winter).

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

Good Luck,

UT

anonymous

2UT

>А что название смешное — так нафига ж его так назвали?

«Путин» тоже на каком-то языке означает что-то неприличное и что ?

>Он не вляпался. Он был чуть ли не основной частью гррандиозной >работы по созданию и тебе новой основы математики (лямбда->исчисление) и говорливого интеллекта по Чомскому. Он воплотил в >себе все эти бредовые идеи и для их реализации и был создан.

Мало ли для чего создавалась та же Java, которую хотели сделать языком для стиральных машинок и микроволновок, Perl вот создавался не как язык общего назначения и т.д. и т.п. Сейчас уже всем наплевать, что и зачем создавалось, главное что это работает и приносит пользу.

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

Допустим это все ничто, по сравнению с тем, чего хотели достичь. Если Вы критикуете достижения и неудачи прошлого, и надо признать Ваши доводы (касательно ИИ) вполне справедливы, то Вы должно быть способ знаете как создать ИИ ?

anonymous

2UT

>А что название смешное — так нафига ж его так назвали?

«Путин» тоже на каком-то языке означает что-то неприличное и что ?

>Он не вляпался. Он был чуть ли не основной частью гррандиозной >работы по созданию и тебе новой основы математики (лямбда->исчисление) и говорливого интеллекта по Чомскому. Он воплотил в >себе все эти бредовые идеи и для их реализации и был создан.

Мало ли для чего создавалась та же Java, которую хотели сделать языком для стиральных машинок и микроволновок, Perl вот создавался не как язык общего назначения и т.д. и т.п. Сейчас уже всем наплевать, что и зачем создавалось, главное что это работает и приносит пользу.

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

Допустим это все ничто, по сравнению с тем, чего хотели достичь. Если Вы критикуете достижения и неудачи прошлого, и надо признать Ваши доводы (касательно ИИ) вполне справедливы, то Вы должно быть способ знаете как создать ИИ ?

Uncle Theodore
Lisper
2UT

>А что название смешное — так нафига ж его так назвали?

«Путин» тоже на каком-то языке означает что-то неприличное и что ?

Позвольте не принять Ваш аргумент, коллега. :-) «Путин» может и означает что-то смешное на /каком-то/ языке, но «to lisp» означает «шепелявить» на том языке, на котором говорили его авторы. Вот в чем загвоздка… :-)

>Он не вляпался. Он был чуть ли не основной частью гррандиозной >работы по созданию и тебе новой основы математики (лямбда->исчисление) и говорливого интеллекта по Чомскому. Он воплотил в >себе все эти бредовые идеи и для их реализации и был создан.

Мало ли для чего создавалась та же Java, которую хотели сделать языком для стиральных машинок и микроволновок, Perl вот создавался не как язык общего назначения и т.д. и т.п. Сейчас уже всем наплевать, что и зачем создавалось, главное что это работает и приносит пользу.

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

Допустим это все ничто, по сравнению с тем, чего хотели достичь. Если Вы критикуете достижения и неудачи прошлого, и надо признать Ваши доводы (касательно ИИ) вполне справедливы, то Вы должно быть способ знаете как создать ИИ ?

Меня восхищает Ваше желание вести дискуссию в стиле «сам дурак». :-) Я уже спрашивал, допустим я занимаюсь ИИ и знаю, как его смоделировать, чтО это изменит? Не в моих аргументах, а в несчастной истории провала ИИ? Вы хотите сказать, что ИИ невозможен в принципе, и любая попытка должна автоматически считаться героической? Или, что Чомский и фон Нойман были правы, и мы еще увидим настоящую разумную Элизу? :-)

Good Luck,

UT

Curu3MyHg
Lisper
«Путин» тоже на каком-то языке означает что-то неприличное

На русском..

Any_Key
Uncle Theodore
А если занимаюсь и знаю, от этого что-то изменится? :-)

Оффтопик: Разведчик прокололся? :-)

Genie
Позвольте не принять Ваш аргумент, коллега. :-) «Путин» может и означает что-то смешное на /каком-то/ языке, но «to lisp» означает «шепелявить» на том языке, на котором говорили его авторы. Вот в чем загвоздка… :-)

интересно: энтимологию названия этого языка программирования ты и сам знаешь. так херли…? ;)

о «прикольных» сокращениях. вот, помнится, в эпоху коммунизьма было такое имя: Даздраперма. ничего не ассоциирует? а ведь в то время побочных ассоциаций и не думалось возникать.

или вот, в одном из игровых клубов: «у.е.бон.». тоже ведь «Вот в чем загвоздка… :-)»

в общем, основную генеральную линию рассуждений, я так думаю, додумаешь ;)

Я уже спрашивал, допустим я занимаюсь ИИ и знаю, как его смоделировать, чтО это изменит?

а должно менять? в общем, мысль проста: займись этим настолько, чтобы это стало значимым. не только для тебя одного, но и всего остального мира. ;)

тогда и расскажешь об этом самом чтО.

Не в моих аргументах, а в несчастной истории провала ИИ? Вы хотите сказать, что ИИ невозможен в принципе, и любая попытка должна автоматически считаться героической?

абсолютно ни о чём не говорит. и провала, как такового, ещё не было. самого ИИ, разумеется.

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

т.е. попытка смоделировать не до конца описанное — интеллект — конечной системой — да, провальна. несостоятельна.

теперь — пытаются пойти с другого конца. успехов, что характерно, несколько побольше.

были правы, и мы еще увидим настоящую разумную Элизу? :-)

остаётся лишь надеяться, что такая гениальная штуковина не будет безумно простой. :)

Genie
Lisper
Вы случайно не думаете, что функциональный язык — это язык с функциями ? ;-) Вы можете писать на Си в функциональном стиле. Да, Лисп функциональный, но еще логический, объектный и объектно-ориентированный и прочая и прочая, потому что это метаязык.

я, в частности, основываюсь на <font color=«blue»>определении функционального программирования</font>. в данном случае, указанное, как я понимаю, более авторитетно, чем могу высказать я ;)))

Lisper
Компиляторы Лиспа могут одновременно уметь компилять в байт-код и в маш. код. Например CMUCL.

so what?

с точки зрения x86 компиляция в коды wam — байт-код компилирования, которое затем исполняется (кстати, нитерпретируется) эмулятором Warren abstract machine.

однако, есть и железка, которая исполняет эти коды. для неё это — компиляция.

как видно, это для одного и того же случая компиляции.

so what?

Lisper
Так это что? компилированные в машынно-исполняемые коды? или всё же это компиляция в промежуточное байт-код представление, которое затем исполняется виртуальной машиной?

Иначе — это байт-код компиляция.

Компиляция — это компиляция, не важно кто потом этот код будет исполнять железо или эмулятор.

эмулятор интерпретирует. железо — исполняет.

если эта разница для вас несущественна — ну, тогда да, байт-код компиляции не существует в принципе.

Lisper
Ох, может подучим малость историю развития языков, а? и не будем говорить неподумавши? ;))

Причем тут история ? Я реально пишу на этом языке и уж лучше знаю, функциональный он или нет. Точно не «чисто функциональный», ибо сторонние эффекты позволены, есть циклы и т.п. Степень чистоты далее определять бессмысленно.

ладно, раз то, что я говорю, значения не имеет, тогда, может, <font color=«blue»>wiki</font> будет вновь более авторитетно?

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

Lisper
Ой… умора.. это мне смотреть?

А вы уже видели и знаете их возможности ? Не понял, с чем связаны ваши улыбки до ушей ;-)

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

можно было дополнительно ещё написать и оптимизатор получаемого x86-asm кода, но этого, как было сказано: «Не нужно. И без того быстрее всего ранее виденного. Нам этого достаточно.» :D

Lisper
Нет, не перепутал. Делов втом, что абстракция Пролога, хоть и выше, но — не настолько гибкая, чтобы быть удобной для всего спектра необходимого процесса вывода/доказательства.

Лисп даёт среду для создания собственного бвижка. Но это уже тонкости, которые познаются на собственной шкурке. С опытом, временем…

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

При написании на Прологе интерфейс совершенно отличается от самого Пролога. На Лиспе легче созранить его интерфейс запросов.

(собственно, это как раз касается различия компилирования/интерпретирования. тоже тонкость использования языков и построения на них конечных систем)

Lisper
Выносимо. И не только выносимо. Между делом позволяет экономить время нахождения ответа в десятки раз.

Но — жутко неудобно. :))

С чего это неудобно-то ? Вы пользовались нормальной интерактивной средой разработки типа LispWorks или ACL или Emacs+SLIME+X ? Если все делали из командной строки REPL, то так вам и надо ;-)

эээ. вроде бы как говорилось про Пролог ;)

использование императивного стиля ускоряет вывод, но теряется «чистота» языка.

в общем, в процессе написания компилятора познаётся очень много о самом языке.

правда, советовать браться за такое — не буду. :D

myst

Позволю себе встрять в этот флейм. ;D

эмулятор — интерпретирует, железо — исполняет. если эта разница для вас несущественна, тогда да, байт-код компиляции не существует в принципе.

Компиляция — это процесс перевода программы с одного языка (исходного) на другой (целевой).

— (с) The [Red] Dragon Book.

Таким образом и в 1-ом и во 2-ом случае программа выполняется, а как именно, не важно.

Genie
Таким образом и в 1-ом и во 2-ом случае программа выполняется, а как именно, не важно.

программа исполняется, даже когда запускается в интерпретаторе. так что?

в той же wikipedia:

The word compilation may refer to:
  • compiler, a computer program which translates source code into a usable software package

так что «компиляция — это процесс перевода исходных текстов программы в программный пакет, пригодный для использования.»

а процитированное тобой — это трансляция :)

Genie

ну и в дополнение к той мелкой разнице: байт-код

Uncle Theodore
Genie
теперь — пытаются пойти с другого конца. успехов, что характерно, несколько побольше.

О чем это ты?

Good Luck,

UT

Genie
О чем это ты?

как это о чём?

несколько выше я уже упоминал…

система управления движением робота — ходьба, бег, опознание предметов и людей — это свё ещё относится к области ИИ. и успехов здесь добились бОльших, нежели пытаясь решить эту задачку «сверху»..

anonymous

>улыбки связаны, в первую очередь, с тем, что под заказ была ?>написана одна из самых быстрых реализаций виртуальных машин >и компиляторов для Лиспа и Пролога.

>можно было дополнительно ещё написать и оптимизатор >получаемого x86-asm кода, но этого, как было сказано: «Не нужно. И >без того быстрее всего ранее виденного. Нам этого достаточно.» :D

Про какие виртуальные машины Вы толкуете, что за «одна из самых быстрых реализаций…компиляторов для Лиспа и Пролога», то есть где это все теперь ? Кем было написано ? Кто замерял «быстрость» и в сравнении с чем ?

Ничего не понятно. Как это связано с ЛИСП-МАШИНАМИ ? Вы написали эмулятор Лисп-машины что-ли ? Да еще и компилятор Лиспа и Пролога под нее ?

anonymous

>эмулятор — интерпретирует, железо — исполняет. если эта разница

>для вас несущественна, тогда да, байт-код компиляции не

>существует в принципе.

А ее и так не существует в каком-то отдельном смысле, потому что на настоящей железяке этот байт код будет маш.кодом. Пример: Java на виртуальной машине и Java на специальном Java процессоре. Скомпилированный код будет работать без изменений.

Genie
Про какие виртуальные машины Вы толкуете

виртуальная манина и компиляитор для неё.

отдельно для Лиспа и отдельно для Пролога.

то есть где это все теперь ?

у заказчиков. у меня не сохранилось в связи с печальными обстоятельствами — винт подох. что самое печальное — подох тогда, когда его подключали для того, чтобы слить всё на болванку.

Кем было написано ?

мною. ;) стал бы я тогда об этом иначе говорить? ;)

Кто замерял «быстрость» и в сравнении с чем ?

тестировалось заказчиком. сравнивалось (для пролога) с wam (в лице binprolog), visual prolog.

что для лиспа — не помню :)

имелась так же возможность генерации x86-asm кода, и его можно было дооптимизировать — и выигрыш был местами довольно значительный — до 30% — но для этого надо было напрягать уже мозги самому человеку — программно такого реализовать у меня не получалось, иногда были ошибки. :(

А ее и так не существует в каком-то отдельном смысле

а никто и не говорит о ней отдельно от окружения.

anonymous
Genie
виртуальная манина и компиляитор для неё.

отдельно для Лиспа и отдельно для Пролога.

Только не пойму, почему Вы смеялись, когда я говорил про LISP-машины? Реализованная Вами VM имела с ними что-то общее ?

Какой Лисп поддерживался Вашим компилятором ? (вряд ли Common Lisp).

Genie
Только не пойму, почему Вы смеялись, когда я говорил про LISP-машины? Реализованная Вами VM имела с ними что-то общее ?

нет. не имела. наверное.

но: в процессе написания оной я о реальных Lisp-машинах начитался столько, что, наверное, что-то нового не прочитаю.

и вот с этим, в основном, с тем, сколько я прочитал — и связаны улыбки. ;)

Какой Лисп поддерживался Вашим компилятором ? (вряд ли Common Lisp).

а это так уж сильно принципиально? какой именно диалект?

какой просили, тот и сделан. как просили расширения сделать (в рамках стандарта) — так и сделал.

ps: я одного не пойму: чего этими вопросами добиваемся?

задело за живое?

pps: как я и говорил, в данное время мне lisp и prolog не особенно интересны (хотя несколько программо всё жев активе есть, но это уже чисто для души, и чисто с практическим интересом — для проверок личного характера).

мне больше интересна SWARD. есть что сказать по этому поводу? ;)

anonymous

2Genie

Нет чтобы так сразу и сказать, пришлось целый допрос устраивать, чтобы выяснить, что Вас так развеселило в Лисп-машинах. ;-)

Про SWARD я практически нечего не знаю, поэтому говорить особо нечего. Насколько я понимаю, речь идет о каком-то железе с аппаратной проверкой типов ?

Почему про это читать гораздо приятнее ?

Genie
что Вас так развеселило в Лисп-машинах. ;-)

а отмотаем-ка обсуждение несколько назад, и посмотрим, к чему конкретно относились «:D :D :D»

это для точности понимания.

Насколько я понимаю, речь идет о каком-то железе с аппаратной проверкой типов ?

да, аппаратная проверка типов там более чем присутствует.

а чем интересна? в первую очередь тем, что в этом мире всё циклично, а та разработка была несколько опережающая своё время.

более того, попытка Intel осуществить подобное — провалилась.

но с приобретением Intel-ом команды Эльбрус, в котором типизация данных используется, данная концепция может принять направляющее движение в развитии процессоростроении на некоторое время..

ну, короче, цикличность повторяется.

тем более, что технологии, использовавшиеся в SWARD очень удобны и подходят к миру *nix более чем к чему-либо. одна потенциальная адресация чего стоит. и разделение прав на чтение, запись, удаление и копирование. да-да, копирование. указатель нельзя скопировать, если этого не разрешено. ну не прелесть ли? :)

Any_Key

Опа… а Эльбрус купили? У них на сайте по этому поводу ни гу-гу кажись

Genie

На самом деле, формулировка несколько другая »…зачисление некоторых сотрудников Эльбрус в штат Intel…»

Но на самом деле, зачислено было основное большинство, как самого Эльбрус, так и обоих его филиалов — в СПб и Нск.

И кроме того, стОит призадуматься, над тем, кем в Intel взяли Бабаяна….

В общем. формально продать Эльбрус нельзя. Потому как выполняет правительственные заказы.

Any_Key
…зачисление некоторых сотрудников Эльбрус в штат Intel…»


оригинальная формулировка…

хых просто интересно было-бы их железки пощупать.

ладно это лиричекое отступление, тут вроде о Лиспе спорят