2454

Спасение принцессы на 8 языках программирования

Спасение принцессы на 8 языках программирования
Вы смотрите срез комментариев. Показать все
90
Автор поста оценил этот комментарий
Как же я проорал с лиспа >_<
раскрыть ветку (47)
61
Автор поста оценил этот комментарий
Аналогично, не могу на него без дурацкой улыбки смотреть )
раскрыть ветку (24)
7
Автор поста оценил этот комментарий
Я даже боюсь представить как бы это выглядело на прологе
раскрыть ветку (23)
7
DELETED
Автор поста оценил этот комментарий

О, его кто-то знает! Народ, а для чего он вообще нужен так-то в современности?

раскрыть ветку (17)
9
Автор поста оценил этот комментарий
Ни для чего, вместо него используют лисп(прологом я последний раз реально интересовался во время учебы лет так 7-8 назад) у них общая концепция, по большей части эти языки используют для написания "экспертных систем" или чего либо имитирующего искусственный интеллект, была даже игруля в вэбэ, там что-то типа джина который отгадывает слово которое ты задумал задавая наводящие вопросы, помнится мне года 2-3 назад весь пикабу там засел после какого-то поста про "О госпаде эта магия он угадывает что я загадал слово член, 10 из 10 лучшая игра года"
раскрыть ветку (12)
3
Автор поста оценил этот комментарий

Наверное речь про "Акинатор". Но очень сомневаюсь, что он написан на прологе или лиспе)

раскрыть ветку (2)
2
Автор поста оценил этот комментарий
Да, он. Там что-то типа либы на лиспе вроде на бэкэ, точно не уверен спорить не буду, но я где-то натыкался на статьи разработчиков этой штуки, лисп там явно упоминался
0
Автор поста оценил этот комментарий

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

4
Автор поста оценил этот комментарий

Не хочу никого расстраивать, но крайне маловероятно, что Акинатор написан на прологе. Его просто нет смысла писать на нем, и я поясню почему.


Пролог - язык логического программирования, основная его "фишка" в неявно производимом логическом выводе.


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


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


Никакого логического вывода здесь нет, задача наиболее эффективно решается языками программирования общего назначения и я знаю о чем говорю, ибо писал аналог.


Лучшее описание, которое я встречал и которое, скорее всего, дает ответ на вопрос о том, что там под капотом:

http://www.machinelearning.ru/wiki/images/7/78/BayesML-2010-...

раскрыть ветку (6)
0
Автор поста оценил этот комментарий
А где я говорил о прологе? Я видел статью в которой разработчики акинатора описывали процесс разработки, и на сколько я помню, там явно упоминался лисп
раскрыть ветку (5)
Автор поста оценил этот комментарий

Была уже глубокая ночь, так что извиняюсь за ошибку. Хотя сказанное отчасти справедливо и по отношению к Lisp. Использовать его тут, опять же, не было никого смысла; фичи функционального программирования здесь совсем не нужны.

раскрыть ветку (4)
1
Автор поста оценил этот комментарий
Я не утверждаю с понтом на 100% правоту что это сделано на лиспе, я говорю что видел где-то статью с упоминанием о том что акинатор вроде как был на нем сделан
раскрыть ветку (2)
0
Автор поста оценил этот комментарий
В моих словах нет "наезда", не надо так остро их воспринимать. Не мог не поделиться своим мнением :)
раскрыть ветку (1)
1
Автор поста оценил этот комментарий
А, окей)
0
Автор поста оценил этот комментарий
фичи функционального программирования здесь совсем не нужны.
Современные лиспы - языки мультипарадигменные.
DELETED
Автор поста оценил этот комментарий

Грусть, когда мы проходим сейчас пролог (2 курс), а ещё на 4 будет лисп. Я и так догадывалась, что пролог донышко, но теперь это вообще никакого смысла не имеет.

раскрыть ветку (1)
6
Автор поста оценил этот комментарий
Он имеет смысл только в том, чтобы показать вам что есть и другие подходы к программированию, кстати если у вас в группе есть девушки которые прогают, то им будет гораздо проще понять пролог чем мужской части группы, к них мозги работают по ебонутому, но если приглядется то они работают по декларативный модели с кучей вероятностных связей и с виду случайно выбранных правил. На сколько я знаю у пролога есть пара диалектов, и у одного даже есть OOП составляющая с вижуал композером для создания формочек, если вы поймёте парадигму этого языка(чистый декларативный подход) то возможно вы сделаете что-то интересное выйдя за рамки учебного курса, и потом вам не будут интересны слова 60 летнего препода с лысой бошкой: "о господи это турбо пролог который совместим с win32 и имеет ебонутейший интерфейс аля fat, чего вам ещё нужно щучьи дети"
0
Автор поста оценил этот комментарий
Я тебе больше скажу, некоторые до сих пор пишут на языке Ада)
0
Автор поста оценил этот комментарий

Как говорил мой препод по прологу:"Я не люблю пролог. Все, что может пролог, намного удобнее написать на других языках. Но он есть у вас в программе, поэтому я преподам, а вы выучите."

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

раскрыть ветку (2)
Автор поста оценил этот комментарий
Это чисто декларативный язык правил и вероятносных связей, говорят он ещё жив и даже где-то в России есть его клуб фанатов. По поводу реализации всех возможностей пролога на других языках это ваш преподаватель погарячился.. Делать предположения на основе некоторой базы знаний в адекватные сроки и с адекватным количеством кода может например лисп, но не как не любой яп
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Каких вероятностных связей? О чем вы? В его основе нет никакой вероятности, он основан основанные на языке предикатов, там нет места вероятностям.

2
Автор поста оценил этот комментарий

У вас Пролог. Вы ставите цель — Принцесса(Спасена). и наблюдаете, как компилятор пытается её выполнить.

1
Автор поста оценил этот комментарий

На прологе: Вы пишите гигантский том под названием "100500 способы выбраться из замка" и шлете принцессе.

раскрыть ветку (3)
1
Автор поста оценил этот комментарий
Так же вы описываете вероятностное поведение принцессы учитывая влажность воздуха и количество ног у лошади на которой возможно прискачет спаситель
раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Да, пожалуй точнее: Присылаешь ей план замка, учебник по физике, анатомию драконов в трех томах и записочку, что ты бы хотел ее увидеть.)

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

Поясните смысл пожалуйста

раскрыть ветку (8)
31
Автор поста оценил этот комментарий

суть в том что там юзают много скобочек, логично же)(((())))))))((((((((((((((((()))))))))))))(((((((())))))))))


Это я так выше пошутить пытался, не бейте

14
Автор поста оценил этот комментарий

Вот такой код там не редкость (вырезка из реального кода):

(not (null (find request-file files :test #'equal))))))

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

раскрыть ветку (6)
5
Автор поста оценил этот комментарий
В вашем примере открывается 3 скобки, а закрывается 6. Это как все современные новости пишутся: заголовок "Инопланетяне найдены!" А потом оказывается что не инопланетяне, и не найдены, и вообще новость не об этом.
раскрыть ветку (5)
3
Автор поста оценил этот комментарий
А вы не думали, что это одна лишь строка кода и остальные три скобки открываются ранее?


Впрочем, вы могли найти материал, откуда код взят и убедится в том, что это реальный код (пример сайта на Common LISP):

https://special.habrahabr.ru/kyocera/p/112051/


Конкретно данный кусок (9-я строка):

http://pastebin.ru/94Awi76P


Так что в реальности скобок еще больше :)

раскрыть ветку (4)
2
Автор поста оценил этот комментарий
Думал, я это и имел ввиду, что ваш пример некорректен, потому что просто вырван из контекста.
Вот аналогичный вашему пример скобочек в javascript:

if (err) console.log('Error writing file: ' + err)
})
}.bind(this))
}
})
})
}
})

тоже реальный пример отсюда: http://callbackhell.com/
раскрыть ветку (3)
1
Автор поста оценил этот комментарий
Вы не правы.


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


Так что мой пример просто показателен, но ни в коем случае не некорректен.


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

раскрыть ветку (2)
1
Автор поста оценил этот комментарий
Просто в языках с "привычном" синтаксисом используются множество разделителей: скобочки, точки с запятой, запятые, точки. А в Lisp - только скобочки.
Вот хороший пример когда сравнивается количество разделителей для функции с идентичным кодом на Javascript и на Clojure( лисп-подобный язык):

https://yadi.sk/i/sDluo_LZwdvqv

так что множество одинаковых скобок в лиспе просто бросается в глаза, а в других языках маскируется "разбавлением" разделителей разного типа и вроде не так страшно уже все :-)
раскрыть ветку (1)
Автор поста оценил этот комментарий
Естественно, это особенность синтаксиса языка и, на мой взгляд, не самая удачная. В том же Haskell код выглядит более читаемым и красивым.


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


И кто сказал, что это страшно? Забавно же :)

Иллюстрация к комментарию
0
Автор поста оценил этот комментарий

Я просто в голос заржал)))

ещё комментарии
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества