Как стать автором
Обновить
-1
0
Алексей Вересов @aversey

Пользователь

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

Исходя из этого спрошу более того: а не подменяется ли при этом сама задача? Там где от оригинала требовалось решить задачу корректно, в вашей модели решение будет получаться с некоторой вероятностью. Поэтому и проблема комбинаторного взрыва остаётся нерешённой. Вы считаете иначе?
Что имеется в виду под заменой прямого вычисления на вычисление с использованием нейросети?
Т.е. при написании в чисто императивном стиле необходимость в вашем языке полностью отпадает. А иначе императивная часть сводится к расширению декларативной — тогда смотрите комментарий выше.
Спасибо за ответ. Насколько я понял, в императивной части можно писать на языке реализации, но есть возможность объявлять функции без типизации, как в примере, которые уже и можно использовать в декларативной части. Будет ли при этом возможность совмещать императивные функции из разных реализаций? Если нет, то я вновь спрошу — зачем придумывать особый синтаксис императивной части, учитывая, что он сводится к объявлению функций? Не проще ли модифицировать сам транслятор плагинами или иными техниками прямо на языке реализации? Ведь так это делают почти со всеми скриптовыми языками, будь то Lua или Tcl — где программист может добавлять функции со стороны реализации на языке реализации, не имея потребности заучивать новый, особый синтаксис. Замечу, что и Пролог тоже можно так расширять.

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

И если вас не затруднит, хотелось бы прочесть подробнее про то, как именно вы решаете проблему комбинаторного взрыва в предложенном языке.
Насколько я понял, все возможности императивной части сводятся к объявлению C++ функций, причём без типизации. В этом смысле я не очень понимаю, как вы собираетесь предоставить «все возможности языка реализации». Более того, какой смысл объявлять новые функции в рамках предложенного языка? Не проще определять их уже в рамках самого C++? Всё равно ведь выходит, что для программирования на предложенном языке человеку нужно уже знать C++.
Декларативная же часть в общем повторяет возможности Пролога. Почему просто не реализовать библиотеку классов С++ реализующую синтаксис близкий к синтаксису Пролога через операции? Код мог бы выглядеть, скажем, так:
Symbol tom, tim, jake, janna, parent, male, female;
male(tom) <<= true;
male(tim) <<= true;
male(jake) <<= true;
female(janna) <<= true;
parent(tom, jake) <<= true;
parent(janna, jake) <<= true;
parent(tom, tim) <<= true;

Symbol brother;
Variable X, Y, Z;
brother(X, Y) <<= parent(Z, X) & parent(Z, Y) & male(X) & male(Y) & X != Y;

brother(X, Y)[0];
brother(X, Y)();

В последних двух строках предполагается запрос первого и всех решений соответственно. В отличие от предложенного вами языка, такой подход не требует значительных усилий по реализации — по сути транслятор сведён к нулю. При этом в программах с использованием такого подхода можно будет сочетать программирование на C++ и логическое программирование. Использование уже существующих библиотек C++ и их интеграция в такую модель логического программирования также упростится.
Это всё я к чему… А нужен ли вам новый язык?
Статья была написана в 1962 году, форда, а тем более фактора тогда просто не существовало. Более того, речь в статье идёт скорее не о языке как о таковом (ведь он — не доведён до конца (в статье)) — а о принципах и идеях (а также их возникновении), лежащих в его основах. Однако, форд и фактор в самом деле основываются на как минимум схожих идеях с теми, что изложил тут Дейкстра.
Nesting store — в оригинале, перевод — магазин. Прошу прощения, пролетело.
Можно почитать классную статью, в ней много значимых и просто интересных фактов про него.
А также тот самый, что придумал семафор и ввёл парадигму структурного программирования, ровно как и многие другие понятия. Он вообще оказал огромное влияние на мир программирования; при этом довольно редко программировал на компьютере — гораздо больше, особенно в последние годы, на бумажке.
С 2:03 в видео через куст вещи пролетают… Но это мелочь, а так — потрясающе. (И сама работа, и результат.)
2

Информация

В рейтинге
Не участвует
Откуда
Саров (Нижегородская обл.), Нижегородская обл., Россия
Дата рождения
Зарегистрирован
Активность