Pull to refresh

Comments 42

По вашему описанию получается язык Пролог.
Декларативная часть — это часть с которой согласны и могут понять и объяснить и программист и компьютер, процедурная часть — это пояснения от программиста. Можно пояснения превратить в диалог. Но если подумать, декларации и диалог это хорошие части, а сплошные пояснения — не очень.
Для диссера в НИИЧАВО годится.
Программисты в массе очень похоже на того персонажа из НИИЧАВО, который печатал ответы от ИИ сам. Чуть что — программист переписал программу и вот, новая-то получше. А где диалоги? Где возможность для программы сначала тупить, а потом перестать?
Думаю ответ в этом положении:
Объект это граница, разделяющая внутренние свойства от внешних. Минимальный объект не содержит внутренних свойств, и все свойства, включая идентичность, у него внешние.
Кстати, изучение отличия внутреннего от внешнего может полностью загрузить все лабы института, без угрозы замены скриптиком. Эвристическая машина подтвердит.
Описываем данные, указываем взаимосвяли и трансформации, наполняем систему и пожинаем плоды. Хотя, секундочку, разве это не это делают разработчики софта? В чем новизна?
Разработчики софта не позволяют оператору переделывать софт.
ещё как позволяют. как вы вообще данные от алгоритмов с современными базами данных отделяете?
Ваше «ещё как» — сегодня это «в специально отведённом месте».
Так это же специально огораживается, чтобы защититься от неграмотных пользователей. Не путайте необходимость и предпочитаемый способ действий.
не позволяют оператору переделывать софт
А оператор обладает нужной квалификацией, чтобы переделывать софт? Я это к чему — большинство пользователей хочет кнопку «сделать зашибись» и нихрена не разбираться в решаемой проблеме.

И второй вопрос: А вы программы писали?

Чтобы программная система могла задавать вопросы, внутри этой системы должна быть довольно детальная модель предметной области — без этого вопросам взяться просто неоткуда.
Идея банальная… жаль, что на практике она не работает так, как задумано автором.
Никто не будет целиком объяснять компьютеру, что он хочет сделать/получить (это долго и такое описание в виде текстовых требований потом хрен прочитаешь и переделаешь), поэтому человек будет использовать те абстракции ЯП и библиотек, которые понимает сам. А у компьютера в свою очередь не хватит мозгов, чтобы декларации понимать и додумывать правильным образом (нерешённая сейчас проблема искусственного интеллекта, скорее всего, будет постепенно решена при повышении мощности и сложности интеллектуальной системы, ближе всего к этому нейросети, почитайте про GLUE benchmark и Winograd Challenge, скажем).
«На (место? пропущена запятая, как в „на, получи!“?) косе (инструмент, часть берега) стоит (стоимость? стоять? ценность?) косой (пьяный, инвалид, заяц).» «Реализуй быструю (чтобы быстро работала? или такой алгоритм?) сортировку миллиона чисел (целых, вещественных, любых, находящихся в памяти? на диске? на бумажке?)» «Дай мне (лишь тебе? любому пользователю? тому, кто подтвердил свою личность? каким способом?) ввести (веб интерфейс? нативный? под какие платформы?) адрес (нужно ли номер дома? почтовый индекс? любую строчку? доверять ли людям вводить туда невалидные адреса? какой ширины поле? а какого цвета? на каком языке сообщения об ошибках и какие именно?)». Когда все неоднозначности таким образом опишешь — ровно обычную программу и получишь, только потратишь больше сил. А учитывая то, что у тебя вместо архитектуры теперь 1000 страниц текста… удачной доделки или рефакторинга при малейшем изменении требований!
Думаю, следует разобраться прежде всего в том, что текст это всегда всего лишь описание. Непонимание текста можно устранить уточнениями, а принципиальные вопросы решаются именно в диалоге. То что система поняла из ваших объяснений она может попробовать объяснить обратно.

Да, для точного указания нужно всё указывать точно, а это значит, отделить от того, что верно сейчас от того, что верно при изменениях, это множество метаинформации, которая для текущего момента не обязательна. Но различие константы и её значения как раз в том и состоит, что можно поменять значение, но не переписывать имя константы по всей программе. И значит, вкладывание метаинфмации это часть программирования, вопрос в объемах и возможности заложить ещё больше.

Как вам программа «сделай как вчера, только один момент измени, и запомни как спецшаблон».
В общем, я вам так скажу: возьмите среду попроще, но при этом с минимумом ограничений, например, браузер пользователя.
И попробуйте там попрограммировать на вашем языке (в данном случае, на основе JS).
А потом уже порефлексируйте над обнаруженными проблемами своего подхода.
Тогда ваши тексты станут намного ценнее.
>Как вам программа «сделай как вчера, только один момент измени, и запомни как спецшаблон».
В макросах вполне себе практикуется. На более крупные проекты, понятное дело, в таком виде не идёт.
Судя по тому, что вы проигнорировали примеры, которые были даны в кавычках, программ даже среднего размера вы не писали и не представляете количественную сложность подобных описаний.

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

Другой пример. Решение несложной и типичной для бизнеса задачи «сформировать отчет о зарплате» будет занимать не меньше пары сотен страниц вопросов и ответов. А теперь представьте: вы уволились, и пришедшему на ваше место сотруднику нужно переделать вашу «программу» в соответствии с чуть изменившимся законодательством, сможет он разобраться в неструктурированной каше из 200 страниц текста?
Я в статье разбирал не совсем тему диалога, это только общие хотелки. Я пытался понять базовые понятия, которые должны существовать до того как что либо соображать и доказывать. Вещи более базовые, чем 2+2. Может быть, оттого что другие подходы были не глубокими и формальными у вас сложилось впечатление, что «задолбаешься болтать».
Если любите философию, почитайте Витгенштейна. Тот тоже сначала пытался формализовать язык, написал целый трактат, а потом уехал жить в деревню, и написал другой трактат, где объяснил, почему именно это сделать невозможно :)
Скоро окажется, что он опять был не совсем прав, в связи с развитием моделей языка и моделей знаний личности, но до тех пор…
Но, в общем, с достаточной глубиной и формальностью проблем нет.
Вот, этим аж 25 лет занимались, см. «Symbolic» на картинке ниже.
Просто с текущим уровнем развития ИИ, которые должны «осмысливать» ваш разговор, каждый ваш ответ порождает в среднем два-три новых вопроса…
image
Вначале подумал что текст написан нейросетью. Но увидев в тегах «философия» понял что все норм :)))
UFO just landed and posted this here
Software 1.0 — это когда программист прописывает логику потоков данных.
Software 2.0 — это когда программист готовит data train и выбирает модель машинного обучения, которая генерирует логику потоков данных.
Вы (пмсм) вполне себе заявились на Software 3.0, но так и не рассказали, в чем его суть… ((
Software 3.0 — Это когда программист и программа могут поспорить, потому что знают, что прав не тот кто умней, а тот кто учёл всё.
Программирование — это не о том, чтобы учесть ВСЁ, а о том, как найти достаточное решение, которое было бы устойчивым в диапазоне возможных cases и удовлетворяло бы входных требованиям.
Если не учесть, например, для кого это решение, то можно сделать себе во вред. Наверное, так лучше не делать.
А что у вас с заголовком? Или это фича? :)
Очевидно, шутливо обыгран запрос в поисковик. Но это всё-таки запрос.

Таки без нейросетей даже проблема разбора естественных языков не решена от слова совсем (и будем честны с нейросетями тоже не то чтобы решена, но худо-бедно что-то получается). Ну и 100% детерминированный разбор естественного языка это нонсенс — поэтому, собственно, у нас (математиков, программистов) формальные языки больше в ходу. Так что на первом же шаге у Вас затык фундаментального свойства.

В этом смысле все как раз хоршо. Т.к. все проблемы разбора естественного языка по большей части происходят из-за неоднозначности ЕЯ, то возможность в диалоге снять эти неоднозначности теоретически дает возможность построить даже чисто алгоритмическую систему разбора которая будет делать 100% детерминированный разбор. Вопрос скорей нужна ли такая система человеку…

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

Ну это только в случае злонамеренного запутывания или замкнутых циклов (см. «сепулька»). В остальном не вижу почему бы вдруг на уточняющие вопросы ответы должны добавлять неоднозначность вместо ее уменьшения. Например, в предложении «Обезьяны не стали есть бананы потому что они были старыми.» автоматически не понятно к чему относится «они». Система может задать вопрос: «они — это обезьяны или бананы». Как тут можно увеличить неоднозначность?

Вы знаете, как-то совпало, что на соседнем окне у меня открыта книга Минский М — Вычисления и автоматы (Finite and Infinite Machines by Marvin Minsky).


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


Не тянет это на философию, не тянет.

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

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

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


Вот реализовали мы возможность, которая граничит с бесконечностью… Бедные ординалы, вздохнули и пошли к золотому сечению.

А ещё надо обратить процесс вычисления. Есть обратимые вычисления и необратимые, причём необратимые они последствия, а последствия бывают только у событий. //и дальше в том же духе.
Вы тут вы точно выразилсь более невнятно чем я.
Конечно, я старался, чтобы пример получился поярче да позабористей. Гротеск, называется. А вот как вы почти такой же гротеск в философию записали — это уж вопрос с удивительными ответами.
И все таки попробуйте выразиться ясно, а то как будто это не обязательно.
Объясняю ясно: вы используете слова как термины, но смысл этих терминов не разъясняете.

Вот, например, вы написали «реализовывать только ту возможность, которая граничит с бесконечностью». Что значит «граничит с бесконечностью»? Больше ординала или меньше? Что такое «реализовать возможность»?

Я не понимаю, как можно при такой неаккуратности писать про вычислительные машины и/или процессы (спасибо отцам-основателям, мы знаем, что они эквивалентны с точки зрения эффективного процесса и могут описать друг друга).
Между объектами-числами возможность других чисел. Если погружаться(находить, реализовывать возможность) в ту часть которая одним краем постоянно оставляет бесконечность, получится объекты ряд натуральных чисел. Это элементарная модель, тут очень сложно что то не понять. Бесконечность это один из базовых объектов. Выше написано как получено.
Ищете сложное в элементарном и не находите.
Какую бесконечность она оставляет? Я ж спрашиваю, больше чем нулевой ординал или меньше? Пока что у меня складывается странное впечатление, что вы считаете, что бесконечность одна, причём довольно скромная про своему порядку.

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

Когда вы говорите «элементарная модель» — о какой модели вы говорите? Цермело-Фрнкеля? Если же вы используете что-то кроме ZFC, то ожидать от читателя понимания этой модели без разъяснения о какой модели идёт речь, ну, это, мягко говоря, некорректно.
Вам было сложно заметить что у меня не аксиоматический подход? По вашему я должен был повторять аксиомы а сказать что то новое?
«Погружаться» это будет если расставить числа в системе координат представленной на пятом изображении. Тогда новые объекты будут ниже. Если направить обе координаты вниз, конечно.
У вас не только не аксиоматический подход, у вас и слова значат ровно то, что вы подразумеваете и ничего другого.

Сказал не то и не так. Странно что в опросе в пункте про другие книги стоит ноль.
Эм… основная сложность не в описании объектов, а в создании четких границ этих описаний.
Понимаете, границы — нечетки. Ну и далее, надо читать нечеткую алгебру и думать в ее направлении.
Когда начнете сильно хорошо в ней разбираться, придете к концепту нейронок… И все замкнется.
Sign up to leave a comment.

Articles