Джедаи за работой
Friday, 26 December 2008 17:10![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Всякий мало-мальски опытный программист интуитивно чует, способен ли компьютер в принципе справиться с поставленной перед программистом задачей. Я сейчас говорю не об искусственном интеллекте, а о простых повседневных программах.
Да, до готовой реализации приходится покопаться в требованиях, пройтись по граблям, победить неочевидные проблемы, а результат может не вписаться в ресурсы и быстродействие. Но саму суть: что компьютер сделает сам, а для каких действий следует вызывать методы человека - программисты обычно чуют сразу.
Да, иногда ошибаются (какой хомо не эррарум эст?), но обычно чуют правильно.
Я чую, что из этого следует какой-то важный вывод из области работы разума и построения искусственного интеллекта, но не знаю, какой именно.
Да, до готовой реализации приходится покопаться в требованиях, пройтись по граблям, победить неочевидные проблемы, а результат может не вписаться в ресурсы и быстродействие. Но саму суть: что компьютер сделает сам, а для каких действий следует вызывать методы человека - программисты обычно чуют сразу.
Да, иногда ошибаются (какой хомо не эррарум эст?), но обычно чуют правильно.
Я чую, что из этого следует какой-то важный вывод из области работы разума и построения искусственного интеллекта, но не знаю, какой именно.
no subject
Date: Friday, 26 December 2008 17:06 (UTC)Лично мне тут всё примерно понятно, поэтому обращу внимание на другую сторону вопроса. Гораздо больше проблем бывает от попыток "впихнуть невпихуемое": от слишком умного софта. Поэтому дизайн софта является очень важной штукой: даже если принципиально возможно автоматизировать какую-либо задачу, нужно подумать, не будет ли у пользователя проблем или неудобств от этого.
no subject
Date: Friday, 26 December 2008 19:50 (UTC)Хотя, может, я не так понял, конечно.
Но, во-первых: программисты _постоянно_ делают крайне фиговые юзеринтерфейсы, которые заставляют юзеров делать то, что на самом деле должна делать сама программа. Может, это от лени в основном конечно, но тем не менее. От какой-то дико злокачественной лени, мешающей даже в софте, написанном для себя лично, сделать правильно. Сравните интеллисенс вижуалстудии и... ну, и всё остальное, по сути.
Во-вторых, хотя это может быть и из субъективного опыта выведено и не относится напрямую к делу, многие программисты крайне фигово понимают, какие вещи на самом деле следует оставить людям. Например, представляя суд как эдакий алгоритм, исходящий из презумции невиновности и принимающий исключительно строгие (в математическом смысле) доказательства, такой воображаемый суд должен был бы оправдать и Ханса Рейзера, и гипотетического чувака, использующего Monolith (http://monolith.sourceforge.net/) (вот весьма поучительная ссылка (http://ansuz.sooke.bc.ca/lawpoli/colour/2004061001.php), объясняющая, в чём проблема, и даже я первый раз читая этот текст был настроен крайне скептически, пока автор не использовал свой Последний Довод).
А что вы имели в виду на самом деле, если я не так понял?
no subject
Date: Saturday, 27 December 2008 09:12 (UTC)Что же до судов и Монолита, я не вижу здесь проблемы. Как справедливо сказано по той ссылке, легальные вопросы решаются отнюдь не формальной логикой, и от логики они весьма далеки. Просто другая область.
no subject
Date: Saturday, 27 December 2008 11:04 (UTC)Вот у Аввы недавно было (http://avva.livejournal.com/1994683.html), в комменты не смотрите, там есть решения. Переформулирую для краткости, есть три типа машин тьюринга:
1) Либо останавливается, либо входит в цикл (состояние ленты и машины повторяется периодически).
2) Либо останавливается, либо входит в цикл (состояние машины и текущий символ повторяются периодически).
3) Либо останавливается, либо входит в цикл (состояние машины повторяется периодически).
Определить, какой класс языков распознают каждый из девайсов.
Первые две довольно тривиальны, над третьей я думал несколько дней (урывками), получая удовольствие в том числе и от того, что почти до самого конца совершенно непонятно, какой будет ответ.
Да, более практический пример: decidablility of java type system is currently unknown. То есть пока непонятно, можно ли написать компилятор, который для любых двух сложных типов корректно ответит, является ли один сабтайпом другого.
no subject
Date: Saturday, 27 December 2008 20:46 (UTC)О приведении сложных типов в Java ощущение сходное: те случаи, которые не поддаются в меру простому решению, решать и не следует, ибо их использование является признаком неприемлемо переусложнённого дизайна, а потому на практике не потребуется.
Это примеры чистого чутья: с обеими областями я знаком чересчур поверхностно.
no subject
Date: Saturday, 27 December 2008 09:25 (UTC)no subject
Date: Thursday, 1 January 2009 08:39 (UTC)