?

Log in

No account? Create an account

Предыдущий пост поделиться Следующий пост
Не думай о секундах свысока
lex_kravetski
 
Зачем знать географию, когда есть извозчики?
(краткое содержание фрагмента диалога,
«Недоросль», Фонвизин)

 

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

На ваш недоумённый вопрос «какого хрена?» таксист ответит, что дикий вы, батенька, знать ничего не желаете. А ведь чтобы воспользоваться услугами такси, надо хорошо разбираться в вопросе. Даже странно, что таксисты так не делают. Ведь делают же так разработчики программ. И ничего, всё нормально. Достаточно только заклеймить потенциального пользователя «ламером» и он, устыдившись, заткнётся и возьмёт, что есть. Не отстают от разработчиков программ и разработчики приборов. В том числе и бытовых. Читайте инструкции, граждане, повышайте свой культурный уровень.

Вообще программу, написанную юным дарованием, обладающим недюженным талантом и ещё более недюженной самооценкой («я – гуру, а вы все – старичьё») весьма легко с первого же взгляда отнести в группу программ, написанных юными дарованиями. Точнее, было бы легко, если бы часть более взрослых дарований не грешила бы иногда тем же самым. Условие необходимое, но не достаточное: программа юного дарования будет стремиться затребовать от пользователя все необходимые настройки на каждой итерации процесса её использования. Причём, затребовать в полной мере, не размениваясь на попытки угадать наиболее вероятные настройки и предложить их хотя бы как начальный вариант в диалоге настроек.

Юное дарование, оно же как думает: откуда я могу знать, что нужно пользователю? У меня есть мощный алгоритм, а пользователь пусть задаст все нужные ему параметры. В этом гибкость. Не надо лишать пользователя гибкости. Юные дарования вообще очень часто говорят о гибкости.

Тут можно спросить: а что, гибкость не нужна? Ну... Вот в первом абзаце упоминался таксист, который предоставил клиенту максимальную гибкость. Я бы даже сказал, сурово склонил его к гибкости. Дал клиенту возможность достичь цели наиболее быстрым и эффективным способом. Не стал полагаться на свою способность к угадыванию желаний клиента, а наоборот возвысил его, позволив тому предложить тот самый, совершенный, наиболее удовлетворяющий все нюансы потребностей набор параметров поездки. 

Что вышло в результате? Дорога вместо часа заняла двое суток, из которых 90% времени была потрачена на подбор параметров, а ещё 9% на исправление ошибок при их выборе. Стало ли быстрее? Нет. Стало гораздо медленнее. С большой вероятностью клиент вообще послал таксиста в баню и пошёл искать вменяемого таксиста.

Так оно и есть, при использовании чего либо, пользователь знает нюансы используемого хуже, чем его разработчик. Нюансы, конечно, знать весьма полезно. Однако полезно оно, когда альтернативой является плевание в потолок или просмотр новостей по первому каналу. В ряде же случаев пользователь на деле является разработчиком более сложной вещи. Клиент таксиста мог быть академиком, который ехал на постановку эксперимента века и таксист своим «неламерским» подходом потратил ценное время академика, в ином случае бы потраченное на эксперимент. Пресловутая гибкость в случае с такси академику нафиг не сдалась. Ему надо было просто попасть в свой институт. Пусть не самым идеальным способом, а просто одним из наиболее быстрых – таксист ведь в среднем действительно знает более быстрый способ, нежели его клиент.

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

Таксист, как легко догадаться, предназначается для доставки пассажира в нужное тому место при помощи автомобиля. Логично предположить, что наиболее часто использоваться будет именно эта возможность таксиста. Следовательно, её использование должно быть максимально простым. Казалось бы, всё ясно и очевидно. Но нет. Не всем.

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

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

Особенно ярко это проявляется при работе на компьютере, а совсем ослепительно – при использовании чужого кода. Тут гибкость, любимая юными дарованиями особенно неограничена. Так, например, для конвертирования DVD в divX следует воспользоваться пятью приложениями. Очевидный же бред. Даже если закрыть глаза на неуловимый дух пиратства, заключённый в данном процессе.

А знаете, какие параметры надо задать для пересжатия из divX в divX же? Например, надо задать битрейт. Кто готов хотя бы примерно оценить необходимую для видео величину битрейта? Ещё следует сказать, в сколько проходов (pass) конвертировать фильм. Кроме того, в настройках фигурирует некоторая «квантизация». Она может принимать значения «H.263», «H.263 Optimized», «MPEG-2» и «MPEG-2 custom». Меня впечатляет, да.

Справедливости ради в более поздних версиях кодека разработчики всё-таки добавили пресеты. Однако же их название и предназначение не так, чтобы интуитивно понятно. Если «для мобильного телефона» – туда-сюда, то вот «для домашнего кинотеатра»... И всё-таки лучше хотя бы так.

Если кто-то имел дело с конвертированием звука в mp3, то он мог заметить, что сей процесс идёт куда как лучше, нежели конвертирование видео. По сути достаточно выбрать один из пресетов, которые довольно хорошо и подробно описаны. И несмотря на то, что каждый параметр сжатия можно изменить в отдельности, обычно это не требуется, поскольку разработчики уже подобрали параметры одним из наиболее оптимальных способов. Допускаю, можно подобрать лучше, однако у разработчиков на многочисленные тесты куда как больше времени, нежели у пользователей. Пользователю надо знать примерное соотношения размера результата и его «субъективное» качество в каждом пресете. Всё. Нюансы сжатия подбирают специалисты. Хотя нюансов, повторюсь, немало. Но в среднем разработчики подберут их лучше.

Как можно было сделать с ковертацией видео? Так, как уже сделали. Программа «Auto Gordian Knot» для конвертирования любого видео в формат divX или xVid просит полтора параметра – размер конечного файла и (по желанию) битрейт для аудио. Всё. (Не вдаваясь в нюансы скажу, что по сути эта программа просто в определённой последовательности вызывает те самые пять приложений с заранее подобранными настройками) 

Сторонники гибкости на этом месте возопят: как же так, вас лишают контроля над процессом!!! Хрен знает, чего там эта умная программа за вас додумает!!! Отвечаю. Выдаваемый «негибкой программой результат» ощутимо превосходит (временами на субъективные порядки) результаты, достигнутые при помощи «гибких» программ. Огромное количество валяющихся повсюду divX-фильмов пожаты очень хреново. В том смысле, что при том же размере видеосигнал там просто убит нафиг. Зато всё было гибко.

Надо понимать, что ни один пользователь не будет долго и пристально высчитывать настройки для каждого отдельного фильма. Особенно если учесть время, требуемое на конвертирование даже небольшого фрагмента этого фильма. Он, как и в случае с mp3, однажды выберет набор настроек, которые его устраивают, и будет использовать их в дальнейшем. Ещё лучше будет, если эти настройки выберут специалисты, которые в деталях знают собственный продукт. У них для этого ощутимо больше и знаний, и средств, и времени. Пользователю же нужно просто несколько вариантов с разными соотношениями критических параметров (для аудио это – размер результата и его субъективное качество).

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

Другой пример. Надо было выполнить некоторые операции при помощи OpenOffice (это такой бесплатный аналог Microsoft Office). Однако управлять им необходимо было программно. При помощи некоторого API. Операции были предельно простыми: запустить приложение, открыть в нём таблицу из файла, кое-что прочитать из ячеек, кое-что в них записать, сохранить файл, закрыть приложение. Выяснилось, что для открытия документа следует написать два десятка строк совершенно неочевидного кода. Создать туеву хучу непонятных объектов, которые нужны были только для создания других объектов. Выставить множество параметров. И так далее. Возникает вопрос: какой процент использующих внешний API OpenOffice делает что-то, кроме открытия/сохранения файлов и простейшей их модификации? Думаю, процента два-три. Остальным нужно примерно то, что описано. Почему же тогда API не позволяет достичь такой распространённой цели вызовом одной команды на каждое действие? Ответ очевиден: для гибкости.

Этот ответ, подозреваю, зародился в специальном клубе «Снобы от программирования». Там специально вырабатывались правила, с помощью которых можно легко отсеять чайников и возвеличить гуру. Сама по себе концепция гибкости весьма полезна в практическом плане, однако стараниями снобов она превратила всё связанное с компьютерами в конструктор «сделай сам». Вроде как каждому пользователю предоставляется инструментарий, с помощью которого можно собрать хоть телевизор, хоть космический корабль, однако самый большой элемент конструктора – это транзистор. И все объекты предлагается собирать именно с уровня транзисторов и винтиков.

Особенно наглядно это проявляется в разговорах на тему величия С++.

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

Зато, ЗАТО, многие пишущие на С++ считают себя настоящими мастерами. Потому что им, в отличие от ненастоящих мастеров, нельзя не думать каждую секунду о самых низкоуровневых нюансах своей программы. Если во многих других языках, специальные знания применяются только в критичных местах, то С++ требует применять их непрерывно. Из этого проистекает мега-гибкость. Которая компенсирует недостаток полезных средств и неудобство использования. Если ты можешь залезть в память, то зачем тебе какие-то там аннотации?

Каждый разработчик на С++ почитает за честь разработать свой собственный, самый оптимальный, самый удобный в использовании вариант списка, строки, хэш-карты, потока, сортировки и всего такого прочего. На разработку смысловых частей, конечно, времени остаётся гораздо меньше, да и появляется необходимость постоянно конвертировать один список в другой (поскольку разработчик внешней библиотеки тоже ведь сделал свой самый лучший список и свою самую лучшую строку), что время тоже не экономит. Но ядрёнть! Зато каждая библиотека гибка по самое небалуйся. С её помощью можно сделать что угодно, за исключением разве что одного: быстро достичь наиболее распространённой цели.

И это почему-то повод для гордости. Физик, например, задачу по нерелятивистской кинематике будет решать при помощи уравнений кинематики. Хотя он может в совершенстве знать уравнения Шредингера и Лагранжа, все известные способы решения всех известных их частных случаев и даже несколько ещё неизвестных. Но вот программист, применяющий для каждой задачи средства, соответствующие уровню этой задачи, у юных гуру вызывает неудержимое чувство их собственного величия. Юным гуру кажется, что это он по незнанию делает. Вот они-то знают, а вот он – нет. Да ещё и, дурачок, разрабатывает свои системы для чайников. А не как они – для пары-тройки своих элитарных коллег.

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

Ну и конечно же это – следствие неумения или нежелания предугадать наиболее вероятные модели поведения пользователей. Оценить их нужды.

Вообще описание правильного подхода, точнее даже его принципа можно уложить в одно предложение:

 

Ресурсы, потраченные пользователем на решение задачи, должны быть обратно пропорциональны распространённости этой задачи в контексте данной системы.

 

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

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

Общее правило достижения выделенного жирным достойно аналогичного же выделения:

 

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

 

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

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

Гибкость – это прекрасно. Однако принудительная гибкость – это верный путь пресечь использование своей системы всеми, кроме тех, кому без неё вообще никак.

Зато можно отлично выпендриться и блеснуть своей элитарностью.



Замечательно. Мое почтение.:)

Так, например, для конвертирования DVD в divX следует воспользоваться пятью приложениями.

Ващето imToo DVD Ripper давно существует ;-)

Re: Reply to your post...

> Ващето imToo DVD Ripper давно существует

Некоторое количество рипперов действительно существуют. Но однако существуют и технологии
"с пятью приложениями".

У Ю. Мухина все это было описано.

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

Так поступают те, кто хочет избавиться от всякой ответственности и необходимости мыслить. Требуют кучу инструкций на то, на сё, а потом говорят - "ничего не знаю, старший так приказал"...

Вспомнил сов. книгу "Как себя вести" (перевод с эстонско

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

Там по этому поводу говорится примерно следующее: "Садясь в машину, не поучайте шофера. И не просите его ехать быстрее - достаточно при посадке сказать, что спешите, об остальном позаботится водитель. А вот снизить скорость попросить водителя можно".

Re: Вспомнил сов. книгу "Как себя вести" (перевод с эстонс

Шофёр - человек, а не машина. Более того, это человек, который заведомо лучше и быстрее вас разберётся в дорожной ситуации.

Аналогии - зло.

Такси - инструмент, управляемый ДРУГИМ ЧЕЛОВЕКОМ, и этот другой человек будет за тебя думать, по какой дороге ехать и каким бензином заправляться. Во всех остальных случаях другого человека нет, думать, кроме тебя, НЕКОМУ.
Есть замечательная программа, называется Windows XP. Все настройки закопаны глубоко, глупого пользователя ничего не пугает. Но вот проблема - если я включаю роутер после того, как на компе запустится пресловутая виндовс икспи, я не смогу выйти в сеть. Не смогу и всё. Я не получаю сетевого адреса, и никакие пляски с бубном не помогают. Я могу сделать disable подключению, могу сделать затем enable - ничего не изменится. Поможет только перезагрузка. При этом на компьютере жены такой фигни нет, когда бы сеть не включили, она появится. В другой замечательной программе - Debian GNU/Linux тоже есть красивые гуёвые средства по управлению сетью. И они тоже чёрт знает что делают и чёрт знает через что работают. Но там у меня есть консоль, и волшебная команда ifconfig, с помощью которой я могу настроить сеть даже через libastral.so Для этого надо почитать литературу, покурить ман по ифконфигу - но я выберусь из любой ситуации, стандартной или нестандартной.
По поводу видеомагнитофонов. Я думаю, создатели этих устройств не считали встроенные часы основным источником информации о текущем времени. Более того, скорее всего часы в них встроены для того, чтобы оценивать время во время просмотра фильма, то есть во время использования устройства. Поэтому и настройка этой функции доступна только в варианте полноценного использования устройства - то есть при включенном магнитофоне и включенном телевизоре. Что до иерархии и вложенности - ну тебе часто надо настраивать часы, кто-то смотрит каждый фильм со своими настройками цветности, кто-то любит играться с параметрами деинтерлейса (если такое есть на видаках и телевизорах) - всё это выносить на верхний уровень? Почему ты считаешь, что часы важнее настроек цветности? Потому что так удобнее лично тебе?
Про конвертирование видео. Как мне кажется, тут уши растут из кучи стандартов. Каковая куча есть зло, но есть по факту. Поэтому, если ты переведёшь, к примеру, в H.263, а потом дашь этот фильм посмотреть мне, может оказаться, что у меня нет необходимого софта, понимающего этот формат. Или мой видеомагнитофон не понимает этот формат. Или все портативные видеопроигрыватели не понимают этот формат. Поэтому тут, увы, без знания матчасти никуда - иначе скорее всего придётся пять раз перегонять фильм с разными настройками формата и качества, что отнимет вчетверо больше времени, чем предварительное изучение матчасти.
Про OO.org API. Я думаю, что люди, использующие API системы, выполняют массу самых разных операций, далеко не только чтение полей документа и сохранение файла. Использование API говорит о том, что пользователю не хватает стандартных средств, и ему нужно самому написать НЕЧТО. Чем будет это НЕЧТО - создатели продукта не знают, поэтому они ДОЛЖНЫ дать возможность написать ВСЁ ЧТО УГОДНО. Кстати, можно конкретный пример, что за десять непонятных строк кода надо написать? Держу пари, там будут операции получения сессии, получения текущего документа, открытия документа в режиме редактирования и т.п. Что в них непонятного?
Про C++. Во-первых, тема сисек^W C и ассемблера не раскрыта. В первом вообще нет классов, а во втором даже функций. Во-вторых, не надо путать качество инструмента и ненадлежащее использование инструмента. Карандашеточилка куда удобнее хирургического скальпеля, нужно ли на этом основании заявлять о ненужности скальпеля?

В целом. Выпендриваешься и блестишь элитарностью как раз ты. Ты прекрасно знаешь, что кому нужно, какие функции выносить в верхнее меню, что большинство пользователей пишет с помощью API, и вообще, весь мир должен вести себя так, как тебе удобно. DS: индивидуализм в тяжёлой форме.

PS Текстовые процессоры не нужны. Есть текстовые редакторы, которые могут сделать простой форматированный текст (шрифты, цвет, вставка картинок), есть TeX, есть Adobe Acrobat. Я плачу, когда при разработке технического проекта люди перекидываются сотнями писем с вордовыми файлами внутри... MS Word, как бы он ни назывался (в т.ч. OO.org Writer) нафиг не нужен.

Re: Аналогии - зло.

Я могу сделать disable подключению, могу сделать затем enable - ничего не изменится.

Ой, правда ? А я-то, лох этакий, не знал, и получал айпишник именно с помощью disable-enable, когда у провайдера ДХЦП глючил. Спасибо, теперь буду перезагружаться.

Для этого надо почитать литературу, покурить ман по ифконфигу

Вы правда думаете, что для обычного пользователя, не гика, проще почитать литературу и покурить ман, чем перезагрузить компьютер ?

НИЧЕГО СВЕРХ МЕРЫ. (с) Древняя Греция

Вспоминается давняя мечта:Фотожоп и единственная больашя кнопка "Сделать красиво". По сути,любая пользовательская программа должна к этому стремиться. А профи себе могет скачать плагины или профверсию.

Re: Reply to your post...

В этом плане, кстати, мне особенно нравится подход, практикуемый в профессиональных и,
скажем так, в полупрофессиональных фотоаппаратах. Там обычно есть спецпереключатель,
который контролирует градации "автоматизма". В некоторых положениях автоматически делается
вообще всё. В "крайне правых" вообще всё настраивается вручную. В промежутках вручную
настраивается часть параметров. Спецы из числа юных дарований, конечно же, сообщат, что
автоматика - фигня, а настоящий профессионал всё должен настраивать вручную. Однако
профессионалы почему-то так не считают и пользуются автоматическими режимами до тех пор,
пока они "справляются" с условиями. Если не справляются, то переключаются на следующую
градацию.

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

Стоит ли говорить, что у профессионалов в результате получается лучше, чем у юных
дарований. Зато последние уверены, что они - настоящие гуру и всё знают. А какие-то
бакланы только и умеют, что фотографировать в автоматическом режиме.

обычная демагогия - то что вы описали в виде 5 приложений является нормальной идеологией юникса. 1 - программа = одно действие. tar хорошо тарит, gzip неплохо жмет, никто из них не умеет читать RSS фиды, или скачивать "новые улучшеные возможности в интернете при этом вообще вас не спрашивая" - и слава богу.

Зато в середину цепочки можно без особого вреда для психики встроить любое другое приложение.

Нужен вам удобный интерфейс вызывающий эти приложения - флаг вам в руки. Простыми вызовами 5 описаных вами приложений вы можете сделать всё что угодно, прикрутить к нему мордочку и назвать все это "One and Only User Friendly divx recoder" - теперь сделаейте тожесамое с программой в вашем стиле, пусть даже у вас есть исходники?

По поводу того что де ловить ошибку 25 лет.... это просто говорит о непроффесионализме, лики валгрид ловит на раз. Логических ошибок с некорректным отпусканием ссылок я могу и в яве наделать легко - но там это отловить будет в разы труднее :) А про "священный ужас прямого доступа к памяти" при применении строк - это вообще смешно.

Или вы говорите о программировании для девочек аля Builder? Когда все исключения уже исключены, все гипермега и везде проверяется самой программой (изрядно тормозит делая применение вашей программы в перформанскритикал приложениях невозможным), программа всенасвете вбивает по умолчанию сама... все звучит весьма неплохо до тех пор пока вам не придется столкнуться с реальностью в которой уже функционируют тысячи программ написаных иногда более 20 лет назад - и с которыми вам придется интегрироваться и взаимодействовать, мир не гомогенная среда - как бы вам этого не хотелось, и от этого всё пляшет - гетерогенность подразумевает ваш контроль над параметрами (В Библиотеках это необходимо 100%) а самый простой способ заставить вас эти параметры контролировать это выделить эти параметры в энумы и дать вам самим их проставить.

то что вы описали в виде 5 приложений является нормальной идеологией юникса. 1 – программа = одно действие. tar хорошо тарит, gzip неплохо жмет, никто из них не умеет читать RSS фиды, или скачивать "новые улучшеные возможности в интернете при этом вообще вас не спрашивая" – и слава богу.
Зато в середину цепочки можно без особого вреда для психики встроить любое другое приложение.

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

>Что вышло в результате? Дорога вместо часа заняла двое суток, из которых 90% времени была потрачена на подбор параметров, а ещё 9% на исправление ошибок при их выборе. Стало ли быстрее? Нет. Стало гораздо медленнее. С большой вероятностью клиент вообще послал таксиста в баню и пошёл искать вменяемого таксиста.

Клиент послал опенсорс нафиг и пошёл в Майкрософт. :)

Ой как длинно-то об очевидном.

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

Так вот. Вы бы таки почитали Getting Real (на русском) на досуге. А если потом поинтересуетесь если творчеством 37signals, поймёте, что вы в мире не одиноки, постепенно мир приходит к тому, что платить начинают за простоту и эффективности, а не за "гибкость" =) В первую очередь всякие Highrise-ы и Campfire-ы самих 37signals, ну и FamSpam, Twitter и т.п., которые основаны на фреймворке производства 37signals и в той или иной мере следует GR.

Когда читал про такси, забился в угол от страха, когда перешел к чтению про аудио/видео - ностальгически соглашался, при чтении про С++ - кричал все это правда!
)))

Re: Reply to your post...

Это да. Знающие люди - знают.

вообще все универсальное надо выкидывать...
рабочие места должны быть жесткими и настроенными...
всякая универсальность - это лень...
потому что влом продумать эргономически эффективное рабочее место для каждого сотрудника...
это подход "системных" программистов и прочих ИТ-шников... типа а мало ли что может понадобится, это же придется потом доделывать и переделывать... сделаю универсальную вещь на все случаи жизни, а то что с это вещь для каждого в общем адаптирована не более, чем на 80% - ну и хрен с ним.. функционал-то есть.. а 20% неэффективность буде касаться не меня..

бугога, подход типичного манагера, картина маслом

адово количество буков.

с тем что гибкость не стоит переоценивать если стоит вопрос о невозможности "человеком с улицы" согласен.

однако с тем, что бы все инструменты делались исключительно для "человека с улицы" категорически не согласен.

вижу проблему с тем, что у одного кодера критерии качества для кодирования того же видео одни, а у другого другие, поэтому при кодировании видео по схеме 3 балла качества из пяти возможных у разных программ может получится разный результат. где брать критерии для этой fuzzy logic, общественный совет создавать? :)

с апи опеноффиса пример плохой, если вы "человек с улицы" нехрена лезть в апи. если вы гуру, то нехрена кричать что апи не такой какой должен быть.

общаясь с миром UNIX/OpenSource продолжительное время, встречал крайне мало программ, которые требуют задания большого количества параметров, которые в принципе не нужны. подавляюще большинство програм и утилит с которыми имел дело могут работать с параметрами по-умолчанию, однако практически все параметры могут быть настроены вручную при желании.

и опять же, где UNIX на декстопах и где Windows там же, первый подход сочетает гибкость и доступность, второй только доступность при максимальном ограничении функционала и адаптации к людям с улицы. казалось бы людям не нужна гибкость, им бы кнопки давить, однако по вполне ясным причинам "прафиссианалы" виндоус не используют. во многих местах, за исключением пожалуй такси и подобного, по мере вникания в суть процессов нужно заменять "ламерский" подход на "гуровский".

гуру пишут на C. C++ гуано :)))

Re: Reply to your post...

> однако с тем, что бы все инструменты делались исключительно для "человека с улицы"
> категорически не согласен.

Смысл статьи не в этом. Смысл статьи выделен жирным шрифтом. Там не написано, что надо
обрубать возможность настройки, там написано о необходимой реализации параметров по
умолчанию и простоте доступа к решению наиболее распространённым задачам.

> вижу проблему с тем, что у одного кодера критерии качества для кодирования того же видео
> одни, а у другого другие,

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

> с апи опеноффиса пример плохой, если вы "человек с улицы" нехрена лезть в апи. если вы
> гуру, то нехрена кричать что апи не такой какой должен быть.

Логика порочная. Гуру ровно так же не должен тратить время на разруливание проблем с
реализацией чужой библиотеки. Время гуру, кстати, гораздо ценнее, чем время человека с
улицы. Так что ему как раз особенно важна простота использования чужого кода.

> подавляюще большинство програм и утилит с которыми имел дело могут работать с
> параметрами по-умолчанию, однако практически все параметры могут быть настроены вручную
> при желании.

А в моей статье что написано?

> по мере вникания в суть процессов нужно заменять "ламерский" подход на "гуровский".

Если я сейчас вникать во все нюансы используемых мной библиотек, то первые строки моего
кода появятся лет через двадцать.

> гуру пишут на C. C++ гуано :)))

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

Система должна быть двухуровневой: иметь 1) ядро с функциональностью, достаточно гибкой для решения некоторого класса задач и 2) оболочку, настроеную под наиболее распространенные юзкейзы в рамках данного класса (пусть даже эта оболочка сводится к некоторому набору настроек). Ядро можно спроектировать и разработать, исходя из теоретических представлений о классе задач, а вот для разработки юзкейзов нужно исследовать условия работы и практические потребности пользователей. А для этого ж надо жопу поднять от компа и пойти с людьми общаться. Те, кому этот аццкий труд не под силу, сдают пользователю, фактически, голое ядро.

Re: Reply to your post...

Про это, собственно, и написано.