Страница:
Сложно сказать, насколько все вышесказанное реалистично: практика показывает, что даже очень удачные находки AMD зачастую довольно медленно пробивают себе дорогу и не находят заслуженного признания (ну вот хотя бы много ли пользователей перешло на 64-разрядные системы?). Однако, в общем-то, это обратная сторона выбранной AMD модели, когда она производит лишь процессоры, и полагается во всем остальном на своих партнеров. Приобретение ATI, будем надеяться, позволит ей более активно продвигать свои технологии на рынок.
Поговорим теперь о минусах сделки и об отношении к ней двух оставшихся наиболее заинтересованных игроков: nVidia и Intel. Основная проблема, на которую указывают многие финансовые аналитики, — в том, что эта сделка является слишком рискованной и опасной. В случае, если Intel сумеет развернуть, пользуясь техническим преимуществом, успешное наступление, а AMD не сумеет «бежать достаточно быстро», чтобы что-нибудь ей противопоставить (что, в общем, не столь уж невероятно), крупный долг, в который она залезла ради приобретения ATI, послужит ей замечательным камнем на шее. Здесь, правда, вполне уместно вспомнить, что кто не рискует, тот не пьет шампанского: в ходе своей конкуренции с Intel, AMD нередко шла и на более серьезный риск, зачастую балансируя на самом краю гибели и спасаясь только продажей «непрофильных» подразделений, да единственным стабильно приносившим доход подразделением флэш-памяти (тоже, к слову говоря, ныне проданным). Так что менеджменту этой славной компании к подобным ситуациям не привыкать.
Что касается nVidia, то она во многом воспринимает покупку ATI как свою победу, рассчитывая на то, что AMD не будет заинтересована в столь же острой конкуренции на рынке графических решений, — а значит, nVidia окажется единственным поставщиком высокопроизводительных графических решений, со всеми вытекающими отсюда последствиями. К тому же представители этой компании вообще достаточно скептически оценивают возможную выгоду от сотрудничества R&D-подразделений ATI и AMD, полагая, что доминированию nVidia ни в части чипсетов, ни в части дискретных видеокарт ничего в обозримом будущем не угрожает, и вообще отказаться от ее услуг и пытаться пробиваться только своими силами, как это, в принципе, может сделать Intel, AMD не сможет никогда. К тому же при сохранении существующей политики, Intel постарается теперь после сделки всячески откреститься от продуктов ATI (напомню, что она располагает лицензией на ATI CrossFire, реализованной в i975X и даже использует чипсеты ATI в некоторых своих материнских платах), что тоже будет на руку nVidia, которая не преминет занять ее место.
Сама Intel предпочитает вообще никак не комментировать сделку, (цитата) «предоставляя это аналитикам». Впрочем, понятно, что ее позиция во многом близка позиции финансовых скептиков и, отчасти, nVidia, за тем исключением, что ни первые, ни вторые непосредственно не страдают от сделки, а вот Intel, если она действительно решит разорвать любое сотрудничество с ATI — страдает, хотя и не слишком значительно. В суматохе первых дней после официального оглашения сделки некоторые горячие головы даже поспешили заявить о том, что Intel уже отозвала у ATI лицензию на процессорную шину QPB, и, соответственно, лишила ее таким образом права на выпуск любых чипсетов для своих процессоров; но позднее эта странная новость (лицензии так просто не отзываются) была полностью опровергнута: расставание с канадской компанией будет происходить очень вежливо и постепенно.
Впрочем, Intel еще может начать действовать более резко, — для столь огромной корпорации, занимающей доминирующие позиции почти всюду (не только по части процессоров, но и в «графическом» сегменте рынка, если учитывать огромную долю ее интегрированных решений), в любом случае «развод» с ATI не станет слишком серьезным испытанием. Вполне вероятно и то, что ради недостающих ей решений (прежде всего топовых чипсетов для энтузиастов с поддержкой конфигураций из нескольких видеокарт) Intel теперь попробует «подружиться» с nVidia, — во всяком случае, пока все именно к этому и идет.
Что же получится из всего этого в итоге? Сказать что-либо уверенно по этому поводу можно будет лишь через год, но мне хочется верить, что альянс AMD и ATI сможет не только выжить, но и действительно представить принципиально новые и интересные решения. Хотя бы потому, что в капиталистической экономике я хочу всегда иметь возможность выбора, — это единственный для меня способ как-то влиять на производителя.
В добрый путь, AMD?
Elan Digital Systems. Частное предприятие Hacker-Daten Technik обладает правами на продажи в Восточной Европе, включая (пока теоретически) Россию. Разумеется, прибор можно приобрести непосредственно у Фриделя, если вы оплатите покупку и доставку банковским переводом [Карточные платежи из России не принимаются]. Но сначала посмотрим, что же вы получите за 296 евро (минимальная комплектация). Стандартная поставка включает в себя собственно прибор, маленький и симпатичный, небольшой удлинительный USB-кабель и диск, содержащий программную оболочку и описание на английском языке. Щуп в комплекте не поставляется, что само по себе выглядит претензией на определенный уровень. Вероятно, подразумевается, что потребитель, избравший USBscope50, знает толк в аксессуарах измерительной техники и может их приобрести отдельно. Осциллограф оснащен специальным выходом для настройки компенсации щупа. Дело в том, что несогласованный щуп с выносным делителем 1:10 вносит искажения в форму входного сигнала. Эталонный прямоугольный сигнал позволяет настроить щуп по минимуму искажений, видимых в окне программы на мониторе компьютера.
Поговорим теперь о минусах сделки и об отношении к ней двух оставшихся наиболее заинтересованных игроков: nVidia и Intel. Основная проблема, на которую указывают многие финансовые аналитики, — в том, что эта сделка является слишком рискованной и опасной. В случае, если Intel сумеет развернуть, пользуясь техническим преимуществом, успешное наступление, а AMD не сумеет «бежать достаточно быстро», чтобы что-нибудь ей противопоставить (что, в общем, не столь уж невероятно), крупный долг, в который она залезла ради приобретения ATI, послужит ей замечательным камнем на шее. Здесь, правда, вполне уместно вспомнить, что кто не рискует, тот не пьет шампанского: в ходе своей конкуренции с Intel, AMD нередко шла и на более серьезный риск, зачастую балансируя на самом краю гибели и спасаясь только продажей «непрофильных» подразделений, да единственным стабильно приносившим доход подразделением флэш-памяти (тоже, к слову говоря, ныне проданным). Так что менеджменту этой славной компании к подобным ситуациям не привыкать.
Что касается nVidia, то она во многом воспринимает покупку ATI как свою победу, рассчитывая на то, что AMD не будет заинтересована в столь же острой конкуренции на рынке графических решений, — а значит, nVidia окажется единственным поставщиком высокопроизводительных графических решений, со всеми вытекающими отсюда последствиями. К тому же представители этой компании вообще достаточно скептически оценивают возможную выгоду от сотрудничества R&D-подразделений ATI и AMD, полагая, что доминированию nVidia ни в части чипсетов, ни в части дискретных видеокарт ничего в обозримом будущем не угрожает, и вообще отказаться от ее услуг и пытаться пробиваться только своими силами, как это, в принципе, может сделать Intel, AMD не сможет никогда. К тому же при сохранении существующей политики, Intel постарается теперь после сделки всячески откреститься от продуктов ATI (напомню, что она располагает лицензией на ATI CrossFire, реализованной в i975X и даже использует чипсеты ATI в некоторых своих материнских платах), что тоже будет на руку nVidia, которая не преминет занять ее место.
Сама Intel предпочитает вообще никак не комментировать сделку, (цитата) «предоставляя это аналитикам». Впрочем, понятно, что ее позиция во многом близка позиции финансовых скептиков и, отчасти, nVidia, за тем исключением, что ни первые, ни вторые непосредственно не страдают от сделки, а вот Intel, если она действительно решит разорвать любое сотрудничество с ATI — страдает, хотя и не слишком значительно. В суматохе первых дней после официального оглашения сделки некоторые горячие головы даже поспешили заявить о том, что Intel уже отозвала у ATI лицензию на процессорную шину QPB, и, соответственно, лишила ее таким образом права на выпуск любых чипсетов для своих процессоров; но позднее эта странная новость (лицензии так просто не отзываются) была полностью опровергнута: расставание с канадской компанией будет происходить очень вежливо и постепенно.
Впрочем, Intel еще может начать действовать более резко, — для столь огромной корпорации, занимающей доминирующие позиции почти всюду (не только по части процессоров, но и в «графическом» сегменте рынка, если учитывать огромную долю ее интегрированных решений), в любом случае «развод» с ATI не станет слишком серьезным испытанием. Вполне вероятно и то, что ради недостающих ей решений (прежде всего топовых чипсетов для энтузиастов с поддержкой конфигураций из нескольких видеокарт) Intel теперь попробует «подружиться» с nVidia, — во всяком случае, пока все именно к этому и идет.
Что же получится из всего этого в итоге? Сказать что-либо уверенно по этому поводу можно будет лишь через год, но мне хочется верить, что альянс AMD и ATI сможет не только выжить, но и действительно представить принципиально новые и интересные решения. Хотя бы потому, что в капиталистической экономике я хочу всегда иметь возможность выбора, — это единственный для меня способ как-то влиять на производителя.
В добрый путь, AMD?
Elan Digital Systems. Частное предприятие Hacker-Daten Technik обладает правами на продажи в Восточной Европе, включая (пока теоретически) Россию. Разумеется, прибор можно приобрести непосредственно у Фриделя, если вы оплатите покупку и доставку банковским переводом [Карточные платежи из России не принимаются]. Но сначала посмотрим, что же вы получите за 296 евро (минимальная комплектация). Стандартная поставка включает в себя собственно прибор, маленький и симпатичный, небольшой удлинительный USB-кабель и диск, содержащий программную оболочку и описание на английском языке. Щуп в комплекте не поставляется, что само по себе выглядит претензией на определенный уровень. Вероятно, подразумевается, что потребитель, избравший USBscope50, знает толк в аксессуарах измерительной техники и может их приобрести отдельно. Осциллограф оснащен специальным выходом для настройки компенсации щупа. Дело в том, что несогласованный щуп с выносным делителем 1:10 вносит искажения в форму входного сигнала. Эталонный прямоугольный сигнал позволяет настроить щуп по минимуму искажений, видимых в окне программы на мониторе компьютера.
USBscope50 и USB-осциллограф Сергея Малыка при всей схожести назначения имеют существенные, скажу больше — концептуальные различия в реализации как аппаратной части, так и программной оболочки. Именно по этой причине мы посвятили каждому из них отдельную публикацию. Если украино-российское устройство позиционируется как прибор начального уровня, то английское ближе к уровню среднему. У него заметно лучше базовые характеристики: частота дискретизации 50 МГц против 200 кГц, диапазон входных напряжений ±30 В против ±20 В, предусмотрена электрическая развязка до 300 В по общему проводу с компьютером. Это актуально, если вы не хотите случайно сжечь материнскую плату своего компьютера или объект измерений [Все тестируемые устройства я подключаю только через недорогой китайский хаб, что и вам советую]. Кроме того, развязка измерительной части по общему проводу снижает наводки от компьютерного источника питания. С другой стороны, в USB-осциллографе используется 10-разрядный АЦП, где старший разряд является знаковым, а младший игнорируется в силу некоторых особенностей конструкции. То есть имеем честные восемь рабочих разрядов. АЦП в USBscope50 заявлен как 8-разрядный, но мне так и не удалось выяснить, эта разрядность эффективная или нет? Если нет, то с вычетом знакового разряда USBscope50 проигрывает по разрядности преобразователя.
Осциллограф USBscope50 одноканальный, но допускает каскадирование до четырех каналов (большее число не поддерживается программой). Каскадирование производится довольно забавно: в специальную колодочку расширения вставляются переходники с длинными выводами, пронзающими разъем насквозь, и на них нанизываются другие аналогичные приборы. Друг с другом они сцепляются защелками на корпусе. Получившиеся четыре канала могут работать как независимо, так и синхронизироваться по сигналу на любом из них. Каждый прибор имеет свой уникальный ID, по которому распознаются каналы. Оригинальное решение, позволяющее нарастить канальность по мере надобности. Увы, синхронизация производится только по входному сигналу. Отдельный вход для синхроимпульсов не предусмотрен.
К качеству изготовления USBscope50 претензий нет. Хорошее впечатление производит многослойная печатная плата, с двух сторон набитая компонентами, с соблюдением всех требований по экранированию и развязкам. Наши ребята тоже научились делать неплохие платы, но досадные мелочи типа заусенцев на литых деталях корпуса, пропиленных напильником пазов и наплывов термоклея красноречиво говорят, что за культуру производства нужно бороться не меньше, чем за снижение себестоимости. Увы, это отдельная больная тема — как сделать электронное изделие мирового уровня, имеющее ограниченный спрос [Явно не сотни тысяч — для серийного производства не очень много], и при этом не превысить планку покупательной способности отечественного потребителя.
С другой стороны, USB-осциллограф (ну придумайте же вы ему, наконец, торговую марку!) наделен такой функциональностью, что, приобретая его, вы убиваете не только двух зайцев, а вообще все, что шевелится в пределах досягаемости. Помните: самописец, анализатор протоколов, логический анализатор и генератор?.. Разработчики USBscope50 пошли другим путем и предлагают купить самостоятельные приборы. Однако ни логического анализатора, ни логического генератора, ни самописца среди них нет. Ладно, это другая бизнес-модель, и, в общем-то, пока для других стран, но почему в функциональный набор программной оболочки USBscope50 не ввели регистратор длительных процессов (самописец) — категорически не понимаю! Ведь это именно тот случай, когда можно полностью использовать преимущества компьютера, оснащенного емким накопителем информации, перед обычным осциллографом. Вот так, незаметно, мы перешли от разговора о железе к обсуждению функций программы, которая должна максимально эксплуатировать возможности аппаратной части.
Я всегда сдержанно относился к идее использования скинов для оформления интерфейса. Разработчики, способные разумно и со вкусом использовать безграничные оформительские возможности сменных «шкурок», встречаются нечасто. Наверное, многим приходилось видеть невероятные загогулины, которыми три-четыре года назад азиатские программисты оснащали свои оболочки для сканеров, принтеров и прочих прикладных изделий. Как правило, обрастая красивостями, интерфейс таких программ напрочь теряет интуитивную понятность. Разработчикам оболочки для USBscope50 удалось остановиться вовремя. Или почти вовремя…
В исходном состоянии окно программы выглядит даже стильно. Воспользовавшись кнопкой для смены цвета панели, можно получить вполне кислотный Barbie-style, что для серьезного прибора выглядит даже странно. Если на программу возлагаются некоторые функции по визуальной имитации реально существующего измерительного прибора, то хотелось бы видеть функциональную схожесть органов управления с этим прибором. Во всяком случае, осциллограф — по сути своей прибор серьезный и консервативный. Не могу вспомнить, когда я в последний раз встречал бытовой или измерительный прибор с ползунковыми резисторами. Сочетание двух горизонтальных движков и одного вертикального на панели осциллографа плохо сочетается с интуитивным восприятием — никаких аналогий из жизни. Аккуратность проработки механизма верньеров могла бы быть лучше. Виртуальные рукоятки можно вращать движением мышки, при этом наблюдается неприятное, отвлекающее мерцание шкалы. Предусмотрена возможность точной настройки некоторых параметров при помощи стандартных линеек Windows, но они ужаты до неудобных размеров. Вот когда я вспомнил пресловутые «крутилки», которые Сергей Малык специально разработал для интерфейса USB-осциллографа. Его верньеры вращаются плавно не только от курсора мыши, но и от колесика и от стрелок клавиатуры. Что касается цвета экрана и лучей развертки, то было бы неплохо иметь в USBscope50 возможность настройки того и другого.
Впервые я столкнулся с ситуацией, когда разработчик и продавец не афишируют возможности своего продукта. Оболочка USBscope50 оснащена традиционным для программ такого рода математическим аппаратом, позволяющим обрабатывать сигнал — например, вычислять его спектр или накладывать фильтры. Теперь представьте: с прибором поставляется руководство годичной давности (20.07.2005), и в нем ни слова не сказано о математических функциях. Скриншоты на иллюстрациях показывают нам интерфейс версии 1.0.0, где эти функции напрочь отсутствуют. Более того, математические функции цифровой обработки сигнала не упомянуты даже в «самохвалке» на сайте. Зато каков сюрприз при первом запуске программы! Как говорится, гораздо лучший мех за те же деньги. Если нажать на кнопку помощи, откроется старый мануал, где эти функции не описаны. Пришлось разбираться почти наугад, по аналогии с осциллографом Сергея Малыка. Мне достался прибор с версией оболочки 1.0.7, под которую, видимо, еще не готово руководство. Во всяком случае, на момент написания статьи его не обнародовали, а дилер продает то, что предоставил поставщик. Впрочем, если учесть, что изделие производится только год, а мануал уже менялся четыре раза, задержку с новой редакцией можно простить. В целом документ написан хоть и более официально, чем у Сергея, но тоже в достаточно вольном стиле.
Теперь о сохранении результатов измерений. Данные сохраняются только в виде простого текстового файла, возможность сохранить скриншот осциллограммы или буфер длительных измерений, увы, отсутствует. Очень жаль. Иногда бывает удобно сохранить буферы нескольких измерений и считывать их потом для сравнения или курсорных измерений. Это еще одна функция, которая естественным образом реализуется в компьютерном цифровом осциллографе. Оболочку можно обновлять, скачивая новую версию с сайта производителя или дилеров. Будем надеяться, что в следующих версиях функция сохранения данных будет расширена.
Откровенно говоря, когда я задумывал написать эту статью в двух частях, то полагал ее заключительный абзац вполне предсказуемым. Дескать, вот недорогая отечественная разработка, а вот — импортная, круче и дороже. Уровень разный, но и цена разная, чего вы хотели? Выбирайте, что больше нравится. Но, как видите, картина получилась не столь однозначная. С одной стороны, USBscope50 имеет лучшие технические характеристики; его схема и конструктивное исполнение реализованы более профессионально. У него, наконец, дизайн лучше. С другой — USB-осциллограф кладет конкурента на обе лопатки широкой функциональностью аппаратной и программной составляющих [Бывает, что одновременно с осциллографом реализуются даже омметры и амперметры. Мне встречалась реклама «До 40 цифровых приборов в одном корпусе!». Такой подход, противоположный зарубежному «одна функция — один прибор», заслуживает отдельного разговора. На мой взгляд, это отражение реалий российского рынка]. Оболочка, написанная Сергеем, мне нравится больше (жаль, нельзя подключить к ней английский прибор!). Поэтому вместо итога рискну высказать предположение. Мне кажется, если Сергей Малык разработает обещанный USB-осциллограф с частотой дискретизации 50—100 МГц и сохранит в нем имеющуюся функциональность, а также подчистит недочеты оболочки, и если производители дополнительно поработают над конструкцией и нюансами товарного качества, то мы получим вполне достойную альтернативу целому букету импортных приборов. Причем по цене, меньшей в несколько раз, если не на порядок.
Мы будем только рады.
МНЕНИЯ: ...А серебряной пули все еще нет
Автор: Зверёк Харьковский
Из всех человеческих существ, которые сегодня являются жертвами классического китайского проклятия «Чтоб тебе жить в эпоху перемен», разработчики программного обеспечения (да и вообще люди, вынужденные иметь дело с «софтом») — самые несчастные. Здесь все может поменяться (и меняется) ежечасно, новые технологии могут родиться (и рождаются) ежедневно, и так же ежедневно вымирают и «изымаются из обращения» технологии, даже не успевшие устареть. В тот момент, когда «девелопер» прекращает самообразование, он начинает отставать от окружающего мира со скоростью консервной банки, выброшенной из окна самолета.
Причина такого печального положения дел — сильная непрозрачность индустрии софтостроения. Причем эта непрозрачность проявляется на всех уровнях: самому лучшему тимлиду [От «team lead» — глава команды разработчиков] крайне тяжело оценить скорость продвижения и качество кода отдельного модуля, который создают программисты его команды; опытнейший менеджер практически беспомощен в попытках осознать, укладывается ли в срок и соответствует ли требованиям работа различных отделов, находящихся под его началом; заказчик (если ПО разрабатывается на заказ) и предположить не может, получит ли то, что хотел; пользователь (если ПО тиражное) не имеет никаких гарантий по какому бы то ни было параметру (глючность, скорость, соответствие определенным задачам и т. д.).
Такая непрозрачность — вовсе не следствие злонамеренности «этих идиотских программистов» («этих разэдаких индусов», «этого злобного Micro$oft’a» — формулировка зависит от настроения, образования и воспитания), а является, в общем-то, фундаментальным свойством мира разработки софта [Частично эти проблемы затрагиваются в моей статье «Незваный гость на пиру воображения» («КТ» #644)]. Роль программиста не имеет точных аналогов в других профессиях (как бы кто ни пытался доказать обратное) — ни инженеры, ни изобретатели, ни писатели, ни журналисты не работают в условиях столь тесного переплетения чистого творчества, точных наук, практических «приемчиков» и сложных взаимодействий между членами команды. Впрочем, на причинах мы подробно останавливаться не станем, а рассмотрим следствия «особого положения» индустрии разработки ПО.
Основное следствие-проблема было сформулировано в 1986 Фредом Бруксом в статье «Серебряной пули нет — существенное и случайное в разработке ПО» ["No Silver Bullet — essence and accident in software Engineering, Brooks, F. P., Proceedings of the IFIP Tenth World Computing Conference, pp. 1069-1076, 1986. Возможно, проблема формулировалась и раньше, тем не менее именно статья Брукса стала классической] следующим образом: «Нет ни одного открытия ни в технологии, ни в методах управления, одно только использование которого обещало бы в течение ближайшего десятилетия на порядок повысить производительность, надежность, простоту разработки программного обеспечения». В более расширенной формулировке (из статей самого Брукса и рассуждений других видных деятелей computer science) можно утверждать, что разработка ПО (и вообще работа в софтверном окружении) всегда будет оставаться деятельностью с непредсказуемой эффективностью и неизвестным результатом. Причем Брукс был уверен (собственно, и до сих пор уверен), что «серебряная пуля» (средство сделать упомянутый процесс эффективным и предсказуемым) не только не существует, но и принципиально не может быть создана.
Однако помимо бруксовой на этот вопрос всегда существовали альтернативные точки зрения. По большому счету весь прогресс технологий разработки ПО (и вообще «софтовых» технологий) можно представить как поиск этой самой мистической серебряной пули; а то, что прогресс до сих пор не стоит на месте (и еще как не стоит!), можно считать косвенным свидетельством того, что серебряной пули как не было, так и нет.
Конечно, сегодняшнее обезсеребрянопуленное состояние совсем не то, что во времена выхода упомянутой статьи: другие масштабы задач, другое соотношение провальных и удачных проектов, другая структура «массы пользователей» и «массы разработчиков» и т. п. Тем не менее все это лишь следствие накопления опыта; опытных разработчиков стало больше, накопленных ими «практических приемчиков, которые могут сработать» — намного больше; а вот общая прозрачность системы не изменилась ни на йоту — по-прежнему практически невозможно понять, что происходит уровнем ниже или уровнем выше, отделом правее или отделом левее тебя.
А значит, продолжаем искать серебряную пулю.
Можно констатировать, что весь процесс поиска заветного боеприпаса — это попытка дать гарантированный ответ на два вопроса: будет ли достигнут результат и будет ли он корректным (приемлемым)? [Некоторые считают, что есть еще и третий вопрос: когда будет достигнут результат? Но в тех случаях, когда он действительно важен, это всего лишь подмножество первого вопроса: будет ли результат достигнут настолько быстро, что он еще будет иметь смысл?] Начиная решать любую софтверную задачу в лоб (будь то создание новой ОС или поиск нужной html-странички), мы не можем заранее знать ответа ни на один из них. А если нет никакого ответа, то нельзя и предпринять заранее меры, чтобы сделать ответ более приемлемым (например, добавить в команду программистов или докупить оборудование). То есть, даже собрав в одной команде три десятка лучших в мире специалистов по разработке ОС, нельзя предсказать, что и когда у них получится и получится ли вообще.
Во времена наивной юности компьютерных наук (лет за десять-пятнадцать-двадцать до написания статьи «No Silver Bullet») было принято считать, что все эти вопросы можно разрешить одним махом: всё должен делать компьютер. Это самое «всё» по минимуму означало автоматизированную проверку корректности (формальная верификация программ, ключевые имена — Хоар и Дийкстра), а по максимуму в идеале — пресловутый Искусственный Интеллект (ключевые имена — от Алана Тьюринга и далее — легион), где человек уже не «решает задачи с помощью компьютера», а лишь «ставит задачи», а вопросы о достижимости и корректности результата являются самоприменимыми (то есть можно поставить компьютеру задачу «определи, можно ли получить решение задачи Х»). По причинам достаточно сложным и неплохо изученным «счастья для всех и даром» не наступило, и дальнейшие поиски «silver bullet» стали концентрироваться на частных решениях. Да и по сию пору концентрируются.
Проанализировав тенденции и основные направления этих поисков, можно с некоторой долей уверенности сделать выводы о текущем и последующем прогрессе софтовых технологий.
Предположим, мы начинаем амбициозный софтверный проект. Что нужно, чтобы быть уверенным в том, что проект будет успешно завершен? Ответ здесь зависит от того, кто такие «мы» — маленький стартап из трех студентов или большой Мicrosoft? [Это, естественно, крайности — зато удобные для иллюстрирования точки зрения] В первом случае «успешно завершен» означает «мы допишем его до того, как нам надоест, и сделаем все настолько cool, чтобы разом уесть всех возможных конкурентов»; во втором — «проект не завалится под собственной тяжестью и будет закончен хоть когда-нибудь». Другими словами, первых куда больше интересует эффективность используемых инструментов-технологий-подходов, а вторых — надежность (при этом первые готовы пойти на некоторые компромиссы в области надежности, а вторые — пожертвовать некоторой эффективностью). Все дальнейшее — следствия этой дихотомии.
Адепты «теории заговора производителей» любят задавать саркастические вопросы вроде: зачем Pentium 4 секретарше, которая использует только Word и пасьянс «Косынка»? Или: зачем 19-дюймовый монитор с 16 миллионами цветов кладовщику?
Ответ на эти вопросы прост: эффективность. В первом случае время разработчика Word было сэкономлено на оптимизации всех этих менюшек, смарт-тегов и бог-знает-чего-еще, предназначенного как раз для нашей секретарши. Все это, наверное, можно было бы реализовать и под IBM PC 386 + Windows 3.11 — чего там, пару сотен килобайт переписать на ассемблере, остальное на C, пооптимизировать пару лет — а «эти ламеры» поленились, выставили требования к железу повыше, зато и управились куда быстрее — с помощью высокоуровневых «крутых» инструментов и не задумываясь об оптимизации.
В случае с кладовщиком и его TFT-монитором ответ еще очевиднее: это всего лишь средство отобразить больше информации, сделать ее выразительнее (за счет цветов, анимации, градиентов и т. д. и т. п.) и в конечном счете — снова повысить эффективность работы, теперь уже — самого пользователя.
То есть технологии, которые развиваются в сторону эффективности работы пользователя, в основном увеличивают выразительность инструментов; будь то выразительность языка высокого уровня или выразительность интерфейса в стиле «модного» Web2.0, цель одинакова — больше информации помещается на экране, меньше рутинных действий приходится выполнять, более четкая связь между идеей и ее реализацией.
Из всех человеческих существ, которые сегодня являются жертвами классического китайского проклятия «Чтоб тебе жить в эпоху перемен», разработчики программного обеспечения (да и вообще люди, вынужденные иметь дело с «софтом») — самые несчастные. Здесь все может поменяться (и меняется) ежечасно, новые технологии могут родиться (и рождаются) ежедневно, и так же ежедневно вымирают и «изымаются из обращения» технологии, даже не успевшие устареть. В тот момент, когда «девелопер» прекращает самообразование, он начинает отставать от окружающего мира со скоростью консервной банки, выброшенной из окна самолета.
Причина такого печального положения дел — сильная непрозрачность индустрии софтостроения. Причем эта непрозрачность проявляется на всех уровнях: самому лучшему тимлиду [От «team lead» — глава команды разработчиков] крайне тяжело оценить скорость продвижения и качество кода отдельного модуля, который создают программисты его команды; опытнейший менеджер практически беспомощен в попытках осознать, укладывается ли в срок и соответствует ли требованиям работа различных отделов, находящихся под его началом; заказчик (если ПО разрабатывается на заказ) и предположить не может, получит ли то, что хотел; пользователь (если ПО тиражное) не имеет никаких гарантий по какому бы то ни было параметру (глючность, скорость, соответствие определенным задачам и т. д.).
Такая непрозрачность — вовсе не следствие злонамеренности «этих идиотских программистов» («этих разэдаких индусов», «этого злобного Micro$oft’a» — формулировка зависит от настроения, образования и воспитания), а является, в общем-то, фундаментальным свойством мира разработки софта [Частично эти проблемы затрагиваются в моей статье «Незваный гость на пиру воображения» («КТ» #644)]. Роль программиста не имеет точных аналогов в других профессиях (как бы кто ни пытался доказать обратное) — ни инженеры, ни изобретатели, ни писатели, ни журналисты не работают в условиях столь тесного переплетения чистого творчества, точных наук, практических «приемчиков» и сложных взаимодействий между членами команды. Впрочем, на причинах мы подробно останавливаться не станем, а рассмотрим следствия «особого положения» индустрии разработки ПО.
Основное следствие-проблема было сформулировано в 1986 Фредом Бруксом в статье «Серебряной пули нет — существенное и случайное в разработке ПО» ["No Silver Bullet — essence and accident in software Engineering, Brooks, F. P., Proceedings of the IFIP Tenth World Computing Conference, pp. 1069-1076, 1986. Возможно, проблема формулировалась и раньше, тем не менее именно статья Брукса стала классической] следующим образом: «Нет ни одного открытия ни в технологии, ни в методах управления, одно только использование которого обещало бы в течение ближайшего десятилетия на порядок повысить производительность, надежность, простоту разработки программного обеспечения». В более расширенной формулировке (из статей самого Брукса и рассуждений других видных деятелей computer science) можно утверждать, что разработка ПО (и вообще работа в софтверном окружении) всегда будет оставаться деятельностью с непредсказуемой эффективностью и неизвестным результатом. Причем Брукс был уверен (собственно, и до сих пор уверен), что «серебряная пуля» (средство сделать упомянутый процесс эффективным и предсказуемым) не только не существует, но и принципиально не может быть создана.
Однако помимо бруксовой на этот вопрос всегда существовали альтернативные точки зрения. По большому счету весь прогресс технологий разработки ПО (и вообще «софтовых» технологий) можно представить как поиск этой самой мистической серебряной пули; а то, что прогресс до сих пор не стоит на месте (и еще как не стоит!), можно считать косвенным свидетельством того, что серебряной пули как не было, так и нет.
Конечно, сегодняшнее обезсеребрянопуленное состояние совсем не то, что во времена выхода упомянутой статьи: другие масштабы задач, другое соотношение провальных и удачных проектов, другая структура «массы пользователей» и «массы разработчиков» и т. п. Тем не менее все это лишь следствие накопления опыта; опытных разработчиков стало больше, накопленных ими «практических приемчиков, которые могут сработать» — намного больше; а вот общая прозрачность системы не изменилась ни на йоту — по-прежнему практически невозможно понять, что происходит уровнем ниже или уровнем выше, отделом правее или отделом левее тебя.
А значит, продолжаем искать серебряную пулю.
Можно констатировать, что весь процесс поиска заветного боеприпаса — это попытка дать гарантированный ответ на два вопроса: будет ли достигнут результат и будет ли он корректным (приемлемым)? [Некоторые считают, что есть еще и третий вопрос: когда будет достигнут результат? Но в тех случаях, когда он действительно важен, это всего лишь подмножество первого вопроса: будет ли результат достигнут настолько быстро, что он еще будет иметь смысл?] Начиная решать любую софтверную задачу в лоб (будь то создание новой ОС или поиск нужной html-странички), мы не можем заранее знать ответа ни на один из них. А если нет никакого ответа, то нельзя и предпринять заранее меры, чтобы сделать ответ более приемлемым (например, добавить в команду программистов или докупить оборудование). То есть, даже собрав в одной команде три десятка лучших в мире специалистов по разработке ОС, нельзя предсказать, что и когда у них получится и получится ли вообще.
Во времена наивной юности компьютерных наук (лет за десять-пятнадцать-двадцать до написания статьи «No Silver Bullet») было принято считать, что все эти вопросы можно разрешить одним махом: всё должен делать компьютер. Это самое «всё» по минимуму означало автоматизированную проверку корректности (формальная верификация программ, ключевые имена — Хоар и Дийкстра), а по максимуму в идеале — пресловутый Искусственный Интеллект (ключевые имена — от Алана Тьюринга и далее — легион), где человек уже не «решает задачи с помощью компьютера», а лишь «ставит задачи», а вопросы о достижимости и корректности результата являются самоприменимыми (то есть можно поставить компьютеру задачу «определи, можно ли получить решение задачи Х»). По причинам достаточно сложным и неплохо изученным «счастья для всех и даром» не наступило, и дальнейшие поиски «silver bullet» стали концентрироваться на частных решениях. Да и по сию пору концентрируются.
Проанализировав тенденции и основные направления этих поисков, можно с некоторой долей уверенности сделать выводы о текущем и последующем прогрессе софтовых технологий.
Взять мертвую линию
["Мертвая линия", или «линия смерти» — deadline. Так буржуи называют время, к которому кровь из носу надо закончить некую задачу]Предположим, мы начинаем амбициозный софтверный проект. Что нужно, чтобы быть уверенным в том, что проект будет успешно завершен? Ответ здесь зависит от того, кто такие «мы» — маленький стартап из трех студентов или большой Мicrosoft? [Это, естественно, крайности — зато удобные для иллюстрирования точки зрения] В первом случае «успешно завершен» означает «мы допишем его до того, как нам надоест, и сделаем все настолько cool, чтобы разом уесть всех возможных конкурентов»; во втором — «проект не завалится под собственной тяжестью и будет закончен хоть когда-нибудь». Другими словами, первых куда больше интересует эффективность используемых инструментов-технологий-подходов, а вторых — надежность (при этом первые готовы пойти на некоторые компромиссы в области надежности, а вторые — пожертвовать некоторой эффективностью). Все дальнейшее — следствия этой дихотомии.
В поисках эффективности
С тех пор как мэйнфрейм размером с пару приличных офисов не является «единственным доступным компьютером на двести километров в округе», эффективность работы в некоторой программной среде означает, что рабочее время человека-пользователя (а не машины-компьютера) должно расходоваться эффективно. Именно этот резон и стимулирует развитие большого количества современных технологий — как софтверных, так и железных.Адепты «теории заговора производителей» любят задавать саркастические вопросы вроде: зачем Pentium 4 секретарше, которая использует только Word и пасьянс «Косынка»? Или: зачем 19-дюймовый монитор с 16 миллионами цветов кладовщику?
Ответ на эти вопросы прост: эффективность. В первом случае время разработчика Word было сэкономлено на оптимизации всех этих менюшек, смарт-тегов и бог-знает-чего-еще, предназначенного как раз для нашей секретарши. Все это, наверное, можно было бы реализовать и под IBM PC 386 + Windows 3.11 — чего там, пару сотен килобайт переписать на ассемблере, остальное на C, пооптимизировать пару лет — а «эти ламеры» поленились, выставили требования к железу повыше, зато и управились куда быстрее — с помощью высокоуровневых «крутых» инструментов и не задумываясь об оптимизации.
В случае с кладовщиком и его TFT-монитором ответ еще очевиднее: это всего лишь средство отобразить больше информации, сделать ее выразительнее (за счет цветов, анимации, градиентов и т. д. и т. п.) и в конечном счете — снова повысить эффективность работы, теперь уже — самого пользователя.
То есть технологии, которые развиваются в сторону эффективности работы пользователя, в основном увеличивают выразительность инструментов; будь то выразительность языка высокого уровня или выразительность интерфейса в стиле «модного» Web2.0, цель одинакова — больше информации помещается на экране, меньше рутинных действий приходится выполнять, более четкая связь между идеей и ее реализацией.