Страницы

Поиск по вопросам

вторник, 26 ноября 2019 г.

Чего не может C# в отличие от Scheme для работы с ИИ? [закрыт]


Почему для работ в области искусственного интеллекта часто выбирают какой-нибуд
из диалектов Лиспа или Пролог, что в них такого, чего нельзя сделать на C#? Интересую
именно сравнение возможностей (что можно сделать в одном языке программирования, но невозможно или проблематично в другом) языка, а не готовых алгоритмов/методов или их количества.

upd: Нашел проект IronScheme, зеркало Github


  IronScheme implements over 99% of the R6RS specification and specified behavior.


пример работы из C#, документация
    


Ответы

Ответ 1



Вполне законно вопрос поставить шире: сравнение возможностей процедурного, функциональног и логического программирования. Вопрос очень широкий и требует как минимум хорошей академической статьи. В принципе, возможности большинства языков всех этих групп достаточно близки. Вопро только в простоте и легкости реализации тех или иных задач. Думаю, все, что можно сделат на Лиспе или Прологе, вполне возможно реализовать и на C#. Только там, где на этих языках та или иная операция будет занимать пару строчек, на процедурном языке может занять пару десятков.

Ответ 2



Scheme - изящный и простой язык, к тому-же близость синтаксиса к соответствующем AST Tree позволяет программисту интуитивно генерировать необходимые языки с помощь макросов. Вообще, для Scheme естественно, что код - это данные. Это полезно для разработчиков всевозможного матана, в тч специфичного для AI (обработка и генерация графов - сильное место любого Lisp), но также и интернет-магазинов.... Есть в Scheme принципиально отсутствующие в C# сущности, например: продолжения (Continuations) как объекты первого класса. Это фактически значит, что состояние всей программы можно сохранять и восстанавливать на уровне языка. Scheme - мультипарадигменный язык, его философия не навязывает ООП, равно как чисто-функционально или реактивное программирование. Экосистема Scheme поддерживает развитые средства для любых, в т.ч. и эксперементальных методик. Хотя не существует единого репозитария Scheme-кода и стандарта модульности, зат развита теория и добрая традиция переиспользования функций, построенных (возможно) в разных стилях. Есть и база качественного кода на Scheme. Скажем, их даже несколько. REPL - традиционный для LISP способ коммуникации с интерпретатором, "выращивания окружений. Изменения вносятся в непрерывно работающую программу - подобным образом математик работают с Maxima и её аналогами. Для некоторых современных языков, того-же С#, совершенно необходимо специальное IDE. Однако есть и мнение, что IDE в целом усложняет процесс разработки, во всяком случае - итеративный процесс разработки очевидно помогает разгрузить оперативную память программиста. Существуют компиляторы и интерпретаторы Scheme для любой архитектуры - ARM, Webkit/ECMAScript .NET, Java... Благодаря простоте, Scheme - в мире, один из самых портированых языков. С недавних пор, он выбран стандартным языком расширения GNU, и на этой платформе построен дистрибутив GUIX с демоном инициализации Shepherd (замена init и systemd).

Ответ 3



Есть множество языков программирования. Вот для алгоритмов или ИИ нужна спец. подготовка А специалистов таких не много. Теперь выберите из этого числа людей тех, кто на профессионально уровне знает тот же С#. Вот и получается что тем, кто занимается ИИ, проще написать (())О() в пару строк - и все готово. Тут тебе и строгой типизации нет, и ООП учить (почти) не надо. А вообще была бы возможность, выучил бы F#. У меня даже книга есть по нем. Но язык мне действительно показался сложноватым.

Ответ 4



Наверное, то, что сама идеология Лисп, в отличие от идеологии С#, более подходи для написания самомодифицирующегося кода - кода, анализирующего и модифицирующего самого себя. То есть Лисп свой собственный исходник может обрабатывать как данные.

Комментариев нет:

Отправить комментарий