wizzard: (Default)
[personal profile] wizzard

все, казалось бы, хорошо в современном стане активистов от программирования. по одну сторону стоят различные Ruby, Python, PHP, по другую - Ocaml, Haskell, F#, теперь вот Ur/Web – казалось бы, чего можно еще желать?

и в чем, собственно, вопрос?

Но вся эта братия деликатно обходит стороной два (связанных, в общем-то) вопроса – взаимодействие с другими системами (существующими и будущими), а также эволюция и взаимодействие с прошлыми и будущими версиями себя. Их решению мешает то, что ВСЕ theorem prover`ы, contract verification тулзы, генераторы тестов и пр. предполагают, что тестируемая система замкнута. Что неверно – ведь таким образом полностью протестировать можно только ПО, которое работает исключительно с предметной областью, порожденной единожды зафиксированной формальной логикой – например, компилятор или систему решения уравнений.

Понятно, что всякие твиттеры с веселыми фермерами можно отправить на свалку истории, и никто о них толком не вспомнит впоследствии, а что делать, например, с управляющим ПО автомобилей, электростанций, поездов и прочих комплексов со сроком службы более 20-30 лет? за это время успеет несколько раз смениться железо, ОС, а в запущенных случаях – протоколы обмена информацией и форматы файлов.

у нас же не просто так образовывается куча кода, который уходит на выброс (к вопросу о bit rot, который поднимался ранее), она образуется именно из-за нерешенной проблемы совместимости в малом масштабе (языков, платформ и т.д.) и в большом масштабе (взаимодействие построенных на этой базе систем).

революционное (write-build-test-release-repeat) развитие софта во многом упрощает разработку каждой следующей версии, но оставляет нас со старыми данными, зоопарком плохо совместимых (т.к. не все апгрейдятся мгновенно, по разным причинам) систем, и риском остаться с носом для тех, кто доверил софту свои данные, в случае внезапного исчезновения вендора или угасания комьюнити (да, понятно, что опенсорс частично решает эту проблему. но какой процент не-софтописательских организаций способен самостоятельно написать, скажем, конвертор хотя бы ODF в HTML, SVG в что-нибудь еще, или перенос нетривиального обьема и структуры БД, скажем, с MySQL на постгрес, включая переписывание всего использующего эту БД софта, если такой вопрос вдруг встанет?)

совместимость с другими существующими платформами – та же проблема, только в профиль. задача слегка облегчается тем, что есть “живое” окружение, на котором можно протестировать работу системы и заложить его в требования изначально. в случае с софтом, созданным после разработки оригинальной системы, таких поблажек нет.

тонкость в том, что все современные высокопроизводительные компиляторы, что у императивных, что у функциональных языков являются частными случаями проекций Футамуры. ключевое здесь именно слово “проекция” – т.е. происходит отображение А → B, а не A ↔ B, которое приводит к потере информации о исходной системе, или, точнее, потери информации о модели, реализацией которой является система.

к этому вопросу пытаются подходить с разных сторон – динамические ЯП (Lisp, Python, IO) позволяют интроспекцию структур данных “напрямую”, JVM и CLR имеют Reflection, более-менее продвинутые модели обмена данными между системами, известные в народе как “веб-сервисы” в той или иной форме самодокументируемы, а web медленно, но уверенно завоевывает семантическая разметка (другой вопрос, что там она далеко не всем нужна, т.к. конечные авторы и потребители информации – люди, а не машины), и именно поэтому она вряд ли получит такую же популярность как, например, CSS :)

ну и где же выход?

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

а) быть изменяемы без привлечения сторонних инструментов (которые могут стать недоступны по тем или иным причинам)

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

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

фух. введение получилось в 4 раза дольше, чем собственно мысль. зато, вроде, теперь понятно, “зачем всё это нужно”. продолжение следует… черт. пост, к которому нужно оглавление – не такой уж и хороший пост…
NOTE TO SELF: перевести на английский, а то что-то я совсем англ версию бложека забросил.

Date: 2010-03-08 07:27 pm (UTC)
From: [identity profile] kunaifusu.livejournal.com

??? О_о
Что то не видно в мире работающего сервиса AI. Может я плохо искал?
Или под задачами ты имел что то другое?


Что есть "сервис AI", кому он нужен и кто за него готов платить деньги?

Date: 2010-03-08 07:34 pm (UTC)
From: [identity profile] fi_mihej.livejournal.com
Ну как бы сервис доступа к искусственному интеллекту (штука универсальная, а потому выгодная тем, у кого она есть), по, ну например, автоматической аналитике чего то там. Предприятиям вполне могло бы такое понадобится (хотя бы для перепроверки/уточнения/поиска каких то ошибок).

Date: 2010-03-08 07:37 pm (UTC)
From: [identity profile] fi_mihej.livejournal.com
То есть был бы сабж, а применение уже найти не сложно. :)

Date: 2010-03-08 08:16 pm (UTC)
From: [identity profile] kunaifusu.livejournal.com
A solution looking for problem to solve. Это и убило весь AI ресеч в котором была куча бабла и куча мозга.

Date: 2010-03-08 08:30 pm (UTC)
From: [identity profile] fi_mihej.livejournal.com
Возможно. А возможно дело в слишком большой неповоротливости соответствующих имеющихся систем: то что есть сейчас - учится слишком медленно, работает слишком медленно, жрет ресурсов слишком много, в использовании не слишком удобно, ... И вообще неполноценно. Не получился AI, хоть ажиотаж, если не ошибаюсь, был немал - ну и закинули до лучших времен. Может в будущем и придумают что по-лучше.
(если я сейчас не прав и говорю чушь - хотел бы что бы меня поправили)

Date: 2010-03-08 10:50 pm (UTC)
From: [identity profile] kunaifusu.livejournal.com
Напомнило одного полкана на военной кафедре, который рассказывал про машину, работающую на воде вместо бензина. Советские ученые ее сделали, но в производство не смогли запустить - очень ненадежная была, взрывалась часто.

Date: 2010-03-08 08:14 pm (UTC)
From: [identity profile] kunaifusu.livejournal.com
Можно конкретный пример предприятия и ошибок которые этот AI ищет?
Самое близкое, что я видел это системы, читающие новости для трейдеров на бирже - но это никакое не IT, там все пишут на С++ настоящие инженеры.

Date: 2010-03-08 08:20 pm (UTC)
From: [identity profile] fi_mihej.livejournal.com
Нельзя: я сказал то, что первым в голову пришло. В конце концов я не размышлял особо (в деталях) о применимости AI - его все равно пока нет. :)

Date: 2010-03-09 09:32 am (UTC)
From: [identity profile] grey-kristy.livejournal.com
Классический пример - автоматический перевод с одного естественного языка на другой. Спрос существует огромный (посмотрите сколько в мире переводчиков работает). Задача до сих пор не решена. Хотя уже лет 40 как поставлена.

Date: 2010-03-09 09:39 am (UTC)
From: [identity profile] kunaifusu.livejournal.com
Я знаю много вычислительных задач, которые еще не решены, классичискей пример полиномиальная факторизация, но какое это имеет отношение к IT? IT это программисты прикормленые у производства, к программированию не имеющего отношения. Но даже, допустив, что это относиться к IT - что, существует какое-то сложное решение автоматического перевода, которое не могут сейчас реализовать из за сложности? Интересно было бы почитать, я думал там проблема в отсутсвии решений, а не в сложности реализации.

Date: 2010-03-09 11:13 am (UTC)
From: [identity profile] grey-kristy.livejournal.com
Если программирование не имеет отношение к IT, то к чему же оно имеет отношения?

Решения на данный момент не существует. И не существует именно из-за сложности задачи. В процессе решения выяснилось, что для адекватного перевода нужно построить полную семантическую модель нашего мира внутри вычислительной системы. Как это сделать - пока не понятно.

Date: 2010-03-09 11:18 am (UTC)
From: [identity profile] kunaifusu.livejournal.com
Если программирование не имеет отношение к IT, то к чему же оно имеет отношения?
Это вы к чему, вообще?
Решения на данный момент не существует. И не существует именно из-за сложности задачи.
Я говорил о сложности решения, а не сложности задачи. Ибо автор ОП говорит о преимуществе использования сложных решений вместо простых. Если решения не существует то о его сложности судить бессмыслено.

Date: 2010-03-09 11:31 am (UTC)
From: [identity profile] grey-kristy.livejournal.com
Если решение есть, то какая тут сложность? - все уже решено.
Сложность как раз и возникает при решении задач, который до сих пор не имели решения.

Date: 2010-03-09 11:38 am (UTC)
From: [identity profile] kunaifusu.livejournal.com
Сложность алгоритма, например по Колмогорову.

Profile

wizzard: (Default)
wizzard

January 2019

S M T W T F S
  12 345
6789101112
1314 1516171819
202122 23242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 26th, 2025 05:40 am
Powered by Dreamwidth Studios