Никто не хочет учиться играть на XYZ
Сегодня я некоторое время размышлял про одну и ту же проблему усиления человеческого интеллекта, обсуждаемую самыми разными людьми в самых разных формулировках. Суть проблемы в том, что усиливать человеческий интеллект оказывается невыгодно и это развлечение для немногих эээ... пассионариев интеллекта, человеческий интеллект выгодно разгружать и это даёт массовость, что понимается как "успех". Наиболее часто обсуждается это в программистских кругах -- ибо в случае софта это наиболее очевидно. Вот несколько примеров этой одной и той же истории в разных её исполнениях.
1. Doug Engelbart считал делом своей жизни усиление/дополнение/приращение/пополнение (augment) человеческого интеллекта, и вычислительная техника подходила для этого наилучшим образом. Под "усилением человеческого интеллекта" он понимал усиление возможностей человека взаимодейстовать со сложной проблемной ситуацией, понимать её для удовлетворения собственных потребностей, а также получать в рассуждении решение проблемы. "Усилить" -- это быстрее по времени и лучше по качеству (http://www.dougengelbart.org/pubs/augment-3906.html).
В его лаборатории было придумано много всякого, чем мы пользуемся до сих пор (мышка, гипертекст и т.д., а демонстрация всего этого в далёком 1968 году называется ни больше ни меньше как The Mother of All Demos -- вполне заслуженно, http://en.wikipedia.org/wiki/The_Mother_of_All_Demos, http://web.stanford.edu/dept/SUL/library/extra4/sloan/mousesite/1968Demo.html). Он создавал инструмент для пытливого ума, желающего учиться и критерием была максимальная производительность профессионала. Его метафора была -- бульдозер/экскаватор, в кабине которого было много-много органов управления, позволяющих лихо этим инструментом управляться и подчинять его власти человека (
,
) против метафоры тепловоза, где человеку предоставлялось поучаствовать в настройке параметров того, что происходит и без него (http://www.contemporary-home-computing.org/car-metaphors/douglas-engelbart-the-automobile-and-other-analogies/).
Невзирая на огромный потенциал всех его новинок и изобретение им основ современного компьютерного интерфейса ещё в конце 60-х, в целом дело Doug Engelbart провалилось. Например, аккордовая клавиатура (вместо клавиатуры пишущей машинки). Alan Kay сказал об этом просто "Энгельбарт, к лучшему или худшему, пытался сделать скрипку, но большинство людей не хотят учиться играть на скрипке" (http://com2710.dedalon.net/S_11_files/BARDINI1995_Social_Constr_User.rtf). Какой критерий вместо "инструмент повышает производительность профессионала" приводил к успеху? Критерий "даже дурак сможет этим инструментом овладеть".
Наиболее красочный и известный рассказ о провале аккордовой клавиатуры в Сети, со множеством ссылок и фотографий, так и называется -- "Скрипка Энгельбарта" Станислава Дацковского: http://www.loper-os.org/?p=861
2. При создании языков программирования всегда стоит дилемма: должен ли быть этот язык мощным или лёгким. Иногда их даже называют LFSP (languages designed for smart peope), навроде Lisp, и LFM (languages designed for masses), навроде C++ -- http://paulgraham.com/vanlfsp.html. Дальше подставляйте сюда любые пары -- Haskell и Java, например. Заканчивайте каким-нибудь Coq.
Ответ в логике "мощь для профи против простоты для масс" понятен: языки для профи (выразительные, но требующие научения) останутся нишевыми. В массы пойдут языки самые простые -- вплоть до языков, в которых не будет логических операторов и циклов, не будет переменных, вообще ничего не будет. Лучше бы, чтобы и языка не было, и программировать было бы вообще не нужно. Ссылок не даю, об этом не спорит только ленивый.
Эта же дискуссия про "стильные языки" против "агглютинативных" в изложении того же Alan Kay (который сам всю жизнь изобретал скрипки, хоть и ругал за это Энгельбарта): "Стильные языки (APL, Lisp, Smalltalk) и агглютинативные ("клейкие") языки типа PL/1. Стильные языки -- для людей, у кторых есть математическая ленивость, они окупаются через год после начала проекта -- когда у вас появляется сильная идея, и вам быстро-быстро нужно все переделать. Агглютинативные языки сопротивляются этой переделке. Кроме того, стильные языки обычно позднего связывания, а агглютинативные языки -- раннего, что приводит к совершенно разным процессам отладки, дает абсолютно разные типы ошибок. И для стильных языков не нужно беспокоиться об архитектуре фон Неймана. Это раздел двух культур, через эти различия в стилях невозможно общаться" -- пункт 8 из http://ailev.livejournal.com/469995.html.
И тут же дискуссия про bootstraping и взаимозаменяемость программистов , про разворачивание собственных подходов и инструментальных сред (Steps Toward Expressive Programming Systems тут: http://vpri.org/html/writings.php, сага о создании офисного пакета на 20тыс. строк), мемуар Михаила Донского, который описывает, что сильный программистский коллектив сам себе разрабатывает фреймворк -- чуть ли не от уровня железа. Создает себе стиль, не обращая внимания на язык. И затем на этом фреймворке получает удивительные результаты -- прирученный тобой язык становится могучим и великим, программирование выдерживает стиль от самого верхнего уровня до самого дна (железа). Похоже, что дело не столько только в языке (когда речь идёт о языке), сколько в стиле его использования в части прихвата чужих библиотек и той самой "заменяемости программистов" -- "голенький" язык подразумевает совершенно другой подход к наращиванию его возможностей. И тот же Донской мне рассказал, что язык программирования только по недоразумению называют языком, настоящий язык -- это собственноручно созданные библиотеки и фреймоворки, на которых и создаётся большая система, и только если у тебя есть такой "свой язык", то безопасно входить в большие проекты, которые идут больше года (http://ailev.livejournal.com/613067.html).
И отчаянный крик души Алана Кея про то, что компьютерная наука не идёт по пути развития эффективных и мощных средств, а сваливается в предложение всё более и более убогих "для масс" -- и массы тупеют. С его точки зрения, люди должны (но не хотят, и нужно что-то с этим делать!) учиться, чтобы осваивать трудные языки -- вкладывать много-много часов, чтобы добиться беглости чтения и говорения на этих языках. И когда софт будет поддерживать таких людей, то в этот момент и будет компьютерная революция -- http://www.vpri.org/pdf/future_of_reading.pdf
3. Закон стандартов John Sowa 1991 года (http://en.wikipedia.org/wiki/John_F._Sowa#Sowa.27s_law_of_standards) -- успешен становится не предлагаемый официальный проработанный до мелочей стандарт, а широко распространённая его упрощённая недоспецифицированная версия, она становится стандартом де-факто. Сложность со всей её мощью проигрывает простоте и недоспецифицированности.
4. Интересно, что этот же подход "мощь для профи против лёгкости для масс" может быть применён к целым отраслям знания. Так, ван Бентем вообще договаривается до того, что вся логика -- это "наука, цель которой в значительной мере определяется поиском определенного балансамежду выразительной силой формальных языков и многосложностью их использования при решении таких задач как осуществление контроля за согласованностью, адекватностью моделирования и правильностью вывода" (http://ailev.livejournal.com/915253.html).
То есть некоторые логики считают ответственными за проигрыш профессиональных языков перед простыми языками себя: именно логики не предложили способы сделать мощные языки доступными обычным интеллектуальным задохликам, а не интеллектуальным качкам.
5. Разные концепции автомобиля без водителя. Некоторые компании считают, что нужно делать автомобиль продолжением водителя, ибо водить (в том числе водить профессионально) -- это удовольствие. Некоторые компании считают, что водителя из контура управления нужно убрать, никаких "профессиональных водителей" -- компьютер лучше справится. То же самое с пилотами в авиации, а космонавтов уже давно убрали из контура управления. Лучшие "водители" и "пилоты" теперь те, кто пишет программы автопилотов, и совсем необязательно, чтобы они сами умели водить-пилотировать.
"Профессиональный автомобиль" -- это возможность газовать каждым отдельным колесом, 8 передних передач и 20 задних. Автомобиль для тупых -- с автоматической коробкой передач и ABS, а в пределе так и вообще с автопилотом. Профессиональная функция отпадает.
Это же всё относится к роботам любого вида: изобретение конвейера не столько "усилило" человека и сделало его более обученным и способным, сколько привело к резкому снижению требуемой квалификации рабочего, "деградация работы в двадцатом веке": http://www.amazon.com/gp/product/0853459401/. Хорошо обобщено это (с поминанием той же скрипки Энгельбарта и призывом не забывать о программе что-то делать и для умных людей, а не только тупых -- делать интерфейс между машиной и человеком более сложным, чтобы у человека был шанс вмешаться в работу машины) в рассказе http://www.macroresilience.com/2013/07/08/explaining-the-neglect-of-doug-engelbarts-vision/. Atul Varma говорит о полностью автономной кофеварке, которая отлично справляется с задачей -- но в тот момент, когда что-то идёт не так, "кофеварка для тупых" терпит полное фиаско. Если бы у человека был шанс вмешаться и человек был бы достаточно умён, то можно было бы что-то ещё сделать -- http://www.toolness.com/wp/2012/03/coffee-machines-and-community/ (но для этого нужно бы "научиться играть на кофеварке", а люди не любят "учиться играть на XYZ". Но некоторые всё-таки будут учиться!).
Впрочем, и с "что-то идёт не так" тоже много чего по пути происходит: happy path становится всё разнообразнее и разнообразнее, плюс появляются resilience systems, задача которых быстро обнаруживать, что что-то идёт не так и пытаться выжить в этих условиях -- вплоть до полной перестройки того, что осталось от системы после поломки "изнутри системы".
* * *
C .15926 Editor мы сделали то же самое -- скрипку, на которой никто не хочет учиться играть. Это же относится не только к инструменту, но и к дисциплине: занятие онтологией требует времени для освоения, в каком-то смысле это освоение нового языка-основы и языка-библиотеки, как об этом говорил М.Донской (там ведь и обширная библиотека справочных данных). Эффективно ли решать задачи интеграции данных, построения концептуальных моделей данных освоившему этот инструментарий человеку? Да, эффективно. Прост ли редактор (и заодно дисциплина, которую он поддерживает) в освоении? Нет, ибо там и 4D extensionalism, и RDL, и Python и много чего ещё. Люди не любят "учиться играть на XYZ", иструменты и языки для smart people не имеют шансов вне рамок выращивания их в каком-то узком комьюнити какого-то многолетнего проекта.
И к системной инженерии это тоже вполне относится. Знаниевые инструменты -- они такие же, как и любые другие. Играть на системноинженерой скрипке нужно долго учиться, но кто-то всё-таки научается. И это не мейнстрим! Мейнстрим -- это автоматизация системной инженерии, а системные инженеры будущего это те, кто программирует системноинженерный софт, системноинженерную скрипку-самоиграйку, системноинженерную кофе-машинку с одной кнопкой "сделай мне красиво". Smart people выжимаются в автоматизацию и делают автоматические скрипки с одной кнопкой Start (используя для этого профессиональные инструменты с огромным временем освоения и доработки до надлежащего уровня), оставшиеся наедине с одной кнопкой masses потом в среднем тупеют, как рабочие на конвейере -- будь то конвейер по сборке автомобилей, разработке софта или созданию ракет для покорения Марса.
И это всё растянуто на длиииинную цепочку творцов-программистов-кодеров-быдлокодеров-операторов-быдлооператоров-роботов.
capitainelesang
10 января 2015, 19:38:07 UTC
>Автомобиль для тупых -- с автоматической коробкой передач и ABS
эка вы лихо...
не согласен я с вами в этом
janez
10 января 2015, 20:09:53 UTC
Бугога, то же самое было 20 лет назад: "Кому нужны эти GUI? Только тупым секретаршам! Настоящий... должен... командная строка... ламеры..." А через 15 лет массы "тупых секретарш" написали, например, Википедию. Видимо, окончательно массово отупев в ходе работы.
С его точки зрения, люди должны (но не хотят, и нужно что-то с этим делать!) учиться, чтобы осваивать трудные языки -- вкладывать много-много часов, чтобы добиться беглости чтения и говорения на этих языках.
Какие люди, сферические в вакууме? У разных людей разные потребности. Я, скажем, системы аэронавигации писать не собираюсь. Мне нужен простой и удобный язык для написания свистоперделок малой механизации для мой основной работы. Начорта мне тратить много-много часов, зачем мне беглость, если я что-то "пишу" раз в месяц?
teo_bon
10 января 2015, 20:25:54 UTC
Глобальный вопрос про стабильность прогресса - при каких условиях будет оставаться критическая масса "желающих учиться", при котором движение "вперед" всей массы народа продолжится?
В фантастике столько попыток ответить на этот вопрос, интересно, есть ли какие серьезные научные исследования на эту тему.
Ну и более приземленные вопросы - нужно ли продвигать людей в правильном направлении, и если да - то как?
Ах да, вопрос на засыпку - какое направление правильное?
Вопросы вроде простые и, возможно, несколько глупые. Но с тематикой расслоения народа на "как это работает" и "где большая кнопка Сделать мне хорошо?" я (и, скорее всего, - каждый из нас) встречается в любой области деятельности человека, и в рамках моей системы ценности получается так, что надо иметь парочку направлений в сторону профессионального роста. Интересны методы как персональной мотивации роста, так и массовые инструменты (например, которые могли бы действовать в масштабах страны).
Почему интересно - хочу понять,
1) почему у меня сформировалась потребность в движении к сложному,
2) как точить пилу (эффективность, вот это вот всё),
3) и как воспитать/обучить этому окружающих (разной степени взрослости).
Прошу извинить за некоторую сумбурность и, возможно, небольшой оффтопик, рой мыслей на тему в что-то более зрелое пока не вырос.
potan
10 января 2015, 21:28:06 UTC
APL?
18cc
12 января 2015, 01:51:57 UTC
chumakin
10 января 2015, 22:15:17 UTC
да, это проблема, и в других отраслях знания: есть решения, но они сложны. Причем избежать сложности никак нельзя, она принципиальна.
proxiper
10 января 2015, 22:25:39 UTC
fsdf
10 января 2015, 23:02:32 UTC
father_gorry
11 января 2015, 12:16:10 UTC
fsdf
11 января 2015, 13:04:41 UTC
thesz
30 января 2015, 08:29:22 UTC
Здесь играет роль нейротрофический фактор мозга, он выделяется и утилизируется во время нагрузок.
Качки не выглядят умными потому, что они просто не умны. Но если вы уберёте у качка занятия спортом, он станет ещё тупее.
justy_tylor
10 января 2015, 23:28:29 UTC
Между мощными и лёгкими языками тоже нет противоречия. Должно быть просто делать простые вещи и пропорционально сложнее сложные. Если язык общего назначения существует достаточно долго, но в настоящее время активно не применяется, то либо в нём проблемы (с реализацией простого и/или сложного), либо он находится в тени более популярного языка, сильно совпадающего по возможностям.
А что касается .15926 Editor, то сработал главный риск, который я упоминал 4 года назад - невостребованность самого ISO 15926 в его "стандартном" варианте (а не в виде marketing bullshit строчки в несовместимых энтерпрайзных решениях). А уж с каким музыкальном инструментом стандарт сравнивать, и в чём там проблемы с простым/сложным - отдельный разговор.
protivoyadie
11 января 2015, 00:45:47 UTC
Напомнило картинку))
Алан Купер в своей книге "Психбольница в руках пациентов", посвященной теме создания пользовательских интерфейсов, указывает на то, что "умные программисты" создают изощренно сложные по меркам "простых смертных" интерфейсы, т.к. сами обожают всякие "головоломки" и разобраться в сложной системе для них - кайф (к тому же порог "сложности" у них завышен). Ну, т.е. более тонкое управление программой - это просто приятный бонус такого сложного интерфейса, при том, что большая часть функций, перегружающих интерфейс, среднестатистическому пользователю скорее всего вообще никогда не понадобится. Программы с таким интерфейсом автор называет "танцующими медведями" - прикольно, если никогда такого не видел, но балерина вообще танцует получше (хоть и умеет только балет, и вообще не так умело ловит рыбу голыми руками).
Ну, т.е. всякие скрипки "не взлетают" не потому, что люди тупые и не могут научиться на них играть, а потому что цели "сыграть что угодно" нет, а цель "получить кайф от того, что можешь" близка очень немногим.
> "Усилить" -- это быстрее по времени и лучше по качеству
В расчет того, что "быстрее", надо только время обучения еще не забывать включать. Ну т.е. в пределе "сложность скрипки" "окупается", если сэкономленное время при "игре на ней" в течение жизни превосходит время обучения (а ведь далеко не факт, что навык игры на скрипке будет использоваться все время жизни после его изучения! Голофоны то уже на подходе!).
В частности поэтому цепочка "творцов-программистов-кодеров-быдлокодеров-операторов-быдлооператоров-роботов" такая длинная - во всех автоматизациях есть оптимум сэкономленных автоматизацией ресурсов (в т.ч. временных!) vs затрат на автоматизацию. "Умная кофеварка", о которой говорит Atul Varma, наверное, не так часто ломается, чтобы каждому пользователю ежедневно пригождалось бы умение "играть на ней" (а если так, то надо "что-то менять в консерватории", производящей кофеварки, например, быдлокодеров на кодеров/программистов/творцов - смотря где оптимум!).
>Люди не любят "учиться играть на XYZ"
А и не надо заставлять людей любить тратить время на изучение технологии, которая обязательно вскоре сменится другой, на изучение которой снова надо будет тратить много часов.
Надо из умения "играть на XYZ" вычленять базовые навыки, лежащие в основе этого умения, и разрабатывать методики построения нужных "рельс мышления" у детей, мозг которых способен научиться "играть на XYZ" гораздо быстрее. Ну или думать, как увеличить продолжительность жизни, чтобы не так жалко было его тратить на "изучение игры на XYZ".
Короче, тут главное дотянуть до технической сингулярности, чтобы цепочка замкнулась (робот=творец), тогда то заживем!
father_gorry
11 января 2015, 12:24:43 UTC
Сложность тут побоку.
Смотрите: программист изначально ориентирован на более сложные задачи, потому и интерфейс рисует навороченный.
И всё, нет никакой глобальной бойни дураков с умными
protivoyadie
11 января 2015, 14:28:51 UTC
В частности, Купер приводит пример, когда интерфейс на самом деле решает не одну задачу, а три или четыре, ну т.е. в одном и том же интерфейсе предполагается работа пользователей с разными пользовательскими ролями (их use cases практически не пересекаются).
В качестве решения предлагается создание отдельных интерфейсов для разных пользователей (на основе их ролей). Но даже внутри одной роли интерфейс может оказаться слишком сложным. Тогда предлагается создание отдельных интерфейсов для новичков (с наиболее часто используемыми функциями) и для экспертов (полный контроль).
В пределе получается "адаптивный интерфейс", который дает пользователю столько возможностей, сколько ему нужно в текущий момент.
С созданием собственных фреймворков вообще ровно это происходит.
Если проводить параллели с кофеварками, то должно быть что-то такое: пока она работает нормально - у нее одна кнопка, как только начинаются проблемы - появляются новые кнопки (по 1 на каждую функцию). А вот с аккордовой клавиатурой такой фокус не прокатит - каждая новая кнопка - это сразу в 2 раза больше аккордов-функций.
Если проводить параллели со стандартами, то он тоже может быть представлен (разбит на части?) в такой форме - "недостандарт-стандарт без мелочей-полный стандарт", тогда и маркетологам будет проще честно указывать, а какой именно уровень матрешки этого стандарта они поддерживают своим софтом.
Комментарий удален
vdggenerator
11 января 2015, 05:19:10 UTC
vlkamov
11 января 2015, 05:19:44 UTC
Как-то пришлось пописать на ассемблере и я очень удивился, когда у меня сформировался набор блоков, вызываемых командами весьма читабельного вида (define)
thedeemon
11 января 2015, 06:05:31 UTC
avlasov
11 января 2015, 08:53:58 UTC
Именно поэтому я считаю, что либерализм дошел до полного маразма. С точки зрения, экономии ресурсов усиливать интеллект выгодно. С точки зрения либеразма - нет.
Единственное, что меня удивляет, что большинство вполне себе умных людей присоединяются к мнению "интеллектуального" большинства. Конформизм, чоуж тут поделаешь.
az_from_belarus
11 января 2015, 11:25:30 UTC
Из той же связки появляется и то, что последнее десятилетия практически вся айтишная индустрия работает на перетягивание из частного сектора в корпоративный даже личной информации. Даже Вашим ЖЖурналом вы владеете не в полной мере. Корпоративному владельцу накладно и опасно поддерживать множество развитых индивидуальностей, выгодней и надежней иметь дело с унифицированным примитивным стадом и всех так или иначе опускать до уровня этого стада.
П.С. Спасибо за ссылку на аккордовую клавиатуру. Не знал этой истории. Когда-то размышлял над чем-то подобным. Аккорд, по моему мнению, невыгоден - большая нагрузка и малая скорость. Выгодней жесты, т.е. каждый палец имеет набор состояний и любой знак - это некоторые изменения состояния группы пальцев.
alexander_mikh
12 января 2015, 18:44:40 UTC Комментарий изменен: 12 января 2015, 18:44:59 UTC
http://eax.me/eaxcast-s02e07/
ailev
12 января 2015, 19:23:03 UTC
andybil
14 января 2015, 10:22:05 UTC
Богу хватило 4 частицы для создания атомов и 100 с лишним элементов для остальнй химии, и три с половиной измерения для создания мира. Все эти языки программирования пишут идиоты. В них (языках) определяется, как перемещать в железке нолики и единички и ничего более.
Так вы с начала с этим разберитесь.
eldhenn
14 января 2015, 10:35:15 UTC
andybil
14 января 2015, 11:23:28 UTC
Протон + электрон + нейтрон + фотон = 4.
Если вам нужно больше, значит вы не Бог.
ailev
14 января 2015, 19:36:17 UTC
andybil
14 января 2015, 19:41:02 UTC
Замечу о параллельных алгоритмах: тень от фонарика прорисовывается мгновенно, но параллельно.
lipkalapka
20 августа 2017, 20:47:19 UTC
lipkalapka
20 августа 2017, 20:58:04 UTC