Регистрация Вход
Город
Город
Город
Stepan-studio.ru

Stepan-studio.ru

Оригинальная музыка к спектаклям и мюзиклам. Качественная звукорежиссура и стильные аранжировки. Напишите: vk.com/stepan_studio или stepka68@gmail.com
Подробнее
TAGREE digital-агентство

TAGREE digital-агентство

Крутые сайты и веб-сервисы. Комплексное продвижение и поддержка проектов. Позвоните: +7 (499) 350-07-30 или напишите нам: hi@tagree.ru.
Подробнее

Воспоминания советского еврея-программиста. Часть 4

013. Легенды и мифы древних компьютеров

Была такая книжка «Легенды и мифы Древней Греции» – зачитывался в детстве. Мое повествование – о трудах и днях вроде бы не столь отдаленных. Но по меркам компьютерного мира – вполне античных. А уж легенд и мифов тех давних дней – такой ворох накрутился, такая мешанина из обрывков сведений, полуправды и откровенного вранья, что чувствую необходимость хоть чуточку внести ясность...

Вернусь к началу нашего проекта по переносу Unix на Искру. Случайно, в один день, он организовался (я описал, как было дело, в предыдущей главе) и ввязались мы в эту авантюру, как в драку – не подумав нисколько. Впрочем, ничуть не жалею. Во-первых, все кончилось удачно. Во-вторых, даже если б и неудачно, что, расстреляли бы нас? А в-третьих, неудачно не могло кончиться – задача была вполне по плечу, работать мы умели, работа интересная, а альтернатива – черная пахота по внедрению заводской автоматизации была пострашней любого «юникса» на любой, самой кострубатой машине... Все так, но когда с этим компьютером только познакомился – оторопь взяла (потом свыкся, конечно). Это не значит, что был он какой-то совсем уж отстойный. Отнюдь. Исполнение курского завода, конечно, «оставляло желать», но мы люди привычные, да и кудесники-электронщики у нас для чего? Постепенно все наточилось-наладилось. Я о конструктивных решениях, которые... как бы поделикатней выразиться... были весьма своеобразными. Но... по порядку.

Начну с «тайны рождения». В интернете (что по-русски, что по-английски) сведения об Искре-226 – более чем лапидарны. Касаемо создания компьютера сказано так: «export of Wang 2200 to the Eastern block was prohibited by COMCON (Coordinating Committee on Multilateral Export Controls), and the computer design was apparently stolen by Soviet intelligence». Что в этом тексте самое замечательное – аббревиатура. Координационный комитет по экспортному контролю обозначался CoCom. Можно, конечно, и прописными буквами – COCOM. Расхождение в написании слишком велико для опечатки. Ладно, эмбарго комитет накладывал на экспорт в страны СЭВ – по-английски COMECON. Уже ближе но... не то. Что же такое COMCON? На этот вопрос легко ответит поклонник творчества братьев Стругацких – комитет по контактам с инопланетными цивилизациями. Но, думается, этот комитет к нашей истории отношения явно не имеет. В целом, приведенная легенда – редкостное нагромождение совершенно идиотских нелепостей. Советские шпионы воруют на Западе дизайн компьютера. На кой ляд, спрашивается, когда этими компьютерами битком набито здание в Охотном ряду, дом 1? Что, нельзя оттуда (из Госплана) взять пару-тройку машин, разобрать и реверсным инжинирингом восстановить дизайн? К тому же там и документация имеется, услужливо переведенная на русский самой же фирмой Wang Labs. К чему шпионские страсти, когда секрета никакого нету. А с какого бодуна КоКом будет запрещать экспорт персональных конторских машинок для обработки текстов и бухгалтерских расчетов, когда куда более серьезные мэйнфреймы IBM без проблем попадают в Союз. Ну и наконец, даты. Ужесточение торговых санкций против СССР (как и бойкот Московской Олимпиады) были реакцией на советское вторжение в Афганистан и датируются 1980 годом. Как раз в конце этого года (небось к «октябрьскому празднику» седьмого ноября приурочили) собрали первые машины на курском заводе «Счетмаш». Сделать за считанные месяцы дизайн компьютера и наладить его производство невозможно нигде, а уж в плановой советской системе – подавно. На самом деле проектирование началось еще в 78-м году и запуск в серию в 80-м был невероятным (по скорострельности) успехом. Но если работы развернулись в 78-м, то решения по ним принимались не позднее 77-го, иначе они не попали бы в план следующего года. Ну, а тогда у нас еще вовсю был «детант» и санкциями не пахло...

На самом деле (как я узнал от разработчиков машины и кураторов из Госплана), стимулом к ее созданию послужила параноидальная байка о «жучках в импортных компьютерах», которая издавна гуляла среди советской программистской общественности, равно как и промеж начальства. Что, дескать, в машины, закупаемые у «проклятых америкосов» между тысяч всяко-разных микросхем коварные ЦРУшники имплементируют хитрые жучки, которые собирают обсчитываемые данные и... на спутник-шпион. Более того, в машинах, что мы дураки у них скопировали, эти жучки заранее были предусмотрены, так что сами же их теперь и воспроизводим. «А с чего бы это так легко, думаешь, все спереть удалось? Да они их нам специально подсунули!» И теперь вот, подсчитываем, к примеру, сколько шаек оцинкованных двуручных выпущено предприятиями банно-прачечной промышленности в отчетном году... бац! – цифры полетели из вражины-компьютера прямиком в Лэнгли, а там уж через потребность в помывочно-гигиеническом инвентаре ихние аналитики советский мобресурс оценивают... Сколько таких вот страшилок мне «собственноушно» приходилось выслушивать. На полном серьезе!

И вот кто-то из хитрых руководителей ЛЭМЗ (а может, и кто повыше) воспользовался этим мифом в производственно-личных целях и в цековских верхах родилось постановление о выпуске полностью отечественной ЭВМ, безопасность которой гарантировалась (!) оригинальной архитектурой процессора и системой команд (специалисты юмор, как говорится, «заценят»), а также последовательным употреблением русского языка в программном обеспечении (вот где шпионские жучки-то скрывались — в иностранных словах и командах). А как же быть с миллиардами, уже вбуханными в «еэски» и «эсэмки»? А никак. Те нехай себе выпускаются как прежде, а курский «Счетмаш» будет делать «безопасную» машину для спецприменений. К каковым (к спец, то есть) отнесли: госстатистику и оборонку, т.е. в подразделения Госплана и ВЦ облстатуправлений должна была поступать «машина программируемая электронная клавишная вычислительная Искра-226» и она же в освинцованном радиационно-стойком исполнении – в гарнизоны и на боевые корабли. Конечно, умиляет сочетание требований – радиационно-стойкая бухгалтерская машина (так и просится к ней в пару бухгалтер в противогазе и комплекте ОЗК); представляю, в какой ступор впали бы инженеры из Wang Labs, DEC или IBM, получив такое задание, а наши умельцы – ничего, склепали на коленке, за что заслуженно удостоились Государственной премии.

До сих пор помню свое изумление при знакомстве с документацией на машину. Клавиатура, системный моноблок со встроенным дисплеем, даже графическим – ух ты! Матричный принтер – нормально. Накопитель на гибких дисках – интересно (это были самые первые, еще восьмидюймовые дискеты – мне в диковинку). Магнитные диски и ленты – замечательно. Телекоммуникационный интерфейс: последовательный порт RS-232 – очень хорошо. Даже несколько таких портов – ну, это перебор. Аналогово-цифровые и цифро-аналоговые преобразователи – хм, зачем? Приборный интерфейс IEEE-488 – а это на кой черт? Крейт CAMAC – что-что-что? Не может быть! В бухгалтерской машине? Перечитываю... М-да-а-а... После «камака» все стало ясно. Так вот кто те «влиятельные пользователи», о которых говорил Александр Александрович... Понимаете, я в молодости в армии на ровном месте «залетел» на первый допуск. Потом все годы был невыездным и вот только-только начал из этого дерьма выкарабкиваться – в Польшу недавно съездил – как «на тебе»! Машина-то явно военная. Или ВПКшная, но хрен редьки не слаще. Аж поплохело мне... Потом поразмыслил спокойно. Официально машина какая? Для планово-экономических расчетов. Заказчик кто? Госплан. Проект через первый отдел не идет – грифа нет. Ну, так чего я дергаюсь? Мало ли, какие там «камаки» предусмотрены и для чего. Многие знания – многие печали. Будем себе делать операционную систему с компилятором языка Си для бухгалтерских расчетов, как того желает заказчик. А больше знать ничего не знаю и отзыньте от меня...

Что Искра-226 не является клоном Wang 2200, утверждали еще в те годы разработчики машины. Не без гордости за свою работу, но и не без сожаления. Потому что, если б действительно ее «передрали» (как СМ-4 передрали с PDP-11), то вся «ванговская» математика на машине работала бы без проблем и не нужно было б самим корячиться – писать интерпретатор языка Wang Basic (который в народе звали «васик» или «ванин бейцик»). Но тогда, правда, не получилось бы столь любимой в Союзе техники двойного назначения («мирный советский свеклоуборочный комбайн набрал первую космическую скорость и вышел на орбиту»)... Ладно, сейчас я не поленился найти в сети и почитать «ванговские» спецификации. Подтверждаю: совершенно разные машины. Архитектура «ванга», проектировавшегося в начале семидесятых годов, куда архаичнее «искры». Единственное, можно сказать, что Искра-226 сделана «по мотивам» Wang 2200.

Есть такой феномен советского (российского) сознания: попеременно то надувать щеки, лопаясь от спесивой гордости неизвестно за что, то рвать на себе рубаху и посыпать голову пеплом в порыве самоуничижения. То мы родоначальники всего на свете – от паровоза, самолета, радио до персонального компьютера, то те же самые мы – сплошь бездари-неумехи, «все покрали», ни на что не способны. Этот подростковый комплекс проявлялся и проявляется (если судить по рунету) по сей день. Касательно компьютеров, что уж говорить о какой-то «искре», если «сама» БЭСМ-6 то воспевается, как самая мощная в мире супер-ЭВМ (вранье!), то столь же обоснованно называется клоном знаменитого детища великого Сеймура Крея, первого серийного транзисторного компьютера CDC-1604. Забавно, что основания у «обвинителей» что Искры, что БЭСМа одинаковы – программная совместимость с популярными машинами-предшественниками трактуется как улика. Буквально: знает иностранческий язык – шпион. В шестидесятые годы, когда создавалась БЭСМ-6, корпорация Control Data была несомненным лидером в мире суперкомпьютеров. Ее машины стояли в крупнейших научных центрах, включая как CERN, так и Объединенный институт ядерных исследований в Дубне. Какой вклад в разработку БЭСМ-6 внесли программисты из ОИЯИ, видно хотя бы из названия операционной системы – «Дубна». А «основной» компилятор звался CERN-FORTRAN и реализовывал версию языка, принятую в Control Data Corp. Ну что сказать, разработчики БЭСМа были бы идиотами, если б не обеспечили совместимость с компьютерами CDC на уровне исходных текстов программ и носителей информации. А поскольку они были умными людьми, то... помню, что кодировка перфокарт называлась «сидисишная». Очень даже может быть.

А еще приводят вот какие «улики» – совпадающие детали. Скажем, Wang 2200 и Искра-226 одинаково используют отдельно адресуемую память для программ и для данных. А у БЭСМ-6 и CDC-1604 одинаковый размер машинного слова – 48 бит. А у вас, уважаемый читатель, и у разыскиваемого преступника – одинаковый размер обуви. Резонное основание для вашего ареста, не так ли?.. К сожалению, очень многие люди (даже вроде бы как технические специалисты) совершенно не понимают азов проектирования. Когда создается новый... не важно что – самолет, компьютер, крейсер, пакет офисных программ, танк, соковыжималка... то прежде всего внимательнейшим образом изучаются аналогичные изделия, имеющиеся на рынке (в военном деле аналог рынка – вооружение потенциального противника). Всякое новое изделие проектируется с намерением сделать его лучшим в своем классе. Не всегда это удается, но намерение есть всегда. Обязано быть!.. Кстати, здесь хорошо виден стратегический изъян практики копирования: ее горизонт – сохранение status quo. Но ведь конкурент не дремлет, уже завтра он выпустит что-то лучшее. Конкурируя, напрягаясь изо всех сил – вполне можешь проиграть. Но есть какой-то (пусть крохотный) шанс на победу. Копируя, отказываясь от борьбы – проиграешь стопроцентно... Так вот, не «драть», но творчески использовать чужие удачные решения (улаживая патентные проблемы, естественно) – это совершенно нормальная, ничуть не зазорная практика. В семидесятые, к примеру, целая «свора» фирм (Amdahl, Fujitsu, Hitachi, ICL, Interdata, RCA, Siemens-Nixdorf, Univac, Wang Labs) принялись выпускать компьютеры, архитектурно совместимые с IBM/360. Но это не были тупые копии – каждый добавил какую-то свою «изюминку», постарался сделать или более мощную машину при той же цене, или более дешевую при тех же характеристиках и... отгрызли-таки кусок рынка у IBM.

От легенды так сказать негативной («ничего-то мы сами делать не умеем, а токмо драть у америкашек, да и то – косоруко») перейду к легенде горделивой, духоподъемной, патриотической: «Россия – родина... нет, не слонов, но персональных компьютеров». Какая именно советская железяка является тем самым первым «персональным», тут мнения «патриотов» расходятся – называются разные машины. Но «ход мысли», аргументация – всюду сходны и основаны на том, что у базовых понятий нет формальных определений через другие понятия. Всякий отличит персоналку от мэйнфрейма. А от мини-машины? А от офисной однопользовательской (сиречь, персональной) рабочей станции? Такой, как Искра-226, к примеру. А ежели характеристический признак – что одна персона с машиной работает, так и БЭСМ-6 тогда – персоналка, я вон с ней сколько ночей провел, так сказать, tête-a-tête... Ладно, потуги эти в большинстве своем не стоят внимания, кроме разве что одной легенды. Даже уже не легенды, а целого жития «первого в мире» и «лучшего в мире» советского компьютера, который сами американцы (!) купили (в количестве одной штуки), изучили (передрали, конечно) и от страха пред столь явным превосходством, через своих агентов влияния – загубили, добились прекращения производства. Ни в каких других советских компьютерных мифах нет такой концентрации портяночного патриотизма и густопсовой страсти к обожаемо-ненавидимому Западу, как в этой агиографии «невинно убиенной» и «злодеями умученной» машины. А жаль, машинка-то была на редкость удачная и симпатичная. И разработчики ее (кстати, земляки-киевляне, с некоторыми я был знаком) – достойные инженеры, сделавшие достойный (для своего времени и места) проект и совсем не заслужившие почти полвека спустя оскорбительных славословий от нынешних «патриотов»... Думаю, знающий читатель уже знает, о какой машине речь...

С начала шестидесятых в компьютерном дизайне образовалось направление «высокоуровневых» машин, реализующих «в железе» такие языки, как АЛГОЛ, ФОРТРАН или КОБОЛ. Идея в чем: уровень команд традиционных машин, он мелковат для человека – мышиная возня с числами и цепочками байтов, сравнения и перескоки из одной точки программного кода в другую. Именно поэтому, из-за чрезмерной дробности, программирование на машинном языке (ассемблере) такое занудливое и тормозное. Так вот, высокоуровневая машина потому так называется, что непосредственно оперирует объектами языков программирования высокого уровня. Она «знает» о массивах, списках, структурах, подпрограммах, операторах цикла и выбора – умеет непосредственно работать с этими, довольно сложными сущностями. Конечно, конструкция такой машины по сравнению с традиционной усложняется (стоимость изготовления возрастает), но зато работа человека, отладка программ упрощается (и совокупная стоимость автоматизированной системы, вроде бы, снижается). Какое из направлений «лучше» и «правильней» – решает рынок. Доминировала (и доминирует) традиционная архитектура, однако ее оппоненты тоже не бедствовали (и не бедствуют). Создание в 1961 году первой высокоуровневой машины B5000 связано с именем великого дизайнера Роберта Бартона, работавшего в старейшей компьютерной компании Burroughs (основана в 1886 года, на десять лет раньше IBM; начинала с производства арифмометров). С той поры и по сей день, без малого полвека выпускаются потомки B5000. Уже и компании нет (в год своего столетия Burroughs объединилась с другой знаменитой фирмой – Sperry Univac, образовав корпорацию Unisys), а машины по-прежнему производятся. Без особого шума, мало кто о них слышал, но всякий, кто хоть раз делал банковский перевод, неявно с ними дело имел. Всемирная межбанковская сеть SWIFT изначально построена на этих компьютерах и вот уже 35 лет они перелопачивают по два с половиной миллиарда платежных транзакций в год. Так успешным оказалось детище Боба Бартона, или нет?..

Высокоуровневые машины не один Burroughs делал. Здесь отметились – с разной степенью удачливости – многие. В Советском Союзе с конца шестидесятых разрабатывались суперкомпьютеры «Эльбрус», которые называли «Эльбарроуз». Но это шутка, конечно: проект и вправду основывался на «барроузовской» идее высокоуровней архитектуры, но был совершенно самостоятельным и куда более амбициозным – реализовывался очень высокий уровень языка, близкого к Algol-68. Не мне судить об успехе этого начинания, я «эльбрусы» в глаза не видел (вряд ли в Киеве был хоть один) – предназначались они для ядерных исследований, космоса и «оборонки». Судя по тому, что читал, теоретическая разработка очень солидная. С реализацией в железе, по слухам, возникали трудности. Ну, это обычное дело в «стране советов». Из программистских баек запомнилась такая: дескать, из-за водяного охлаждения процессоров главной фигурой в «приэльбрусье» – впереди всех докторов наук и генералов – был вечно пьяный слесарь-водопроводчик дядя Вася. Вот в это верится охотно: у нас в конторе хоть генералы с докторами и не водились, но все же публика была с высшим образованием – программисты, инженеры. Однако главной, незаменимой и прекрасно о своей незаменимости ведающей фигурой был вечно пьяненький Яша-переплетчик, без которого ни один проект не выпускался. Со всеми отсюда вытекающими (из бутылки в стакан) последствиями...

А вот пример сокрушительной неудачи, полного провала, постигшего не кого-нибудь – корпорацию Intel. Сейчас мало кто вспомнит, что с середины семидесятых Intel проектировал супер-микропроцессор iAPX 432, который призван был заменить их же исключительно удачные процессоры 8080 и 8086. Забыли, что лучшее – враг хорошего. В амбициозный проект вбухали огромные деньги. Процессор должен был аппаратно поддерживать ни много ни мало объектно-ориентированный язык Ada (невероятно модный в то время). Какие средства пошли только в пиар, в информационную поддержку проекта видно из того факта, что где-то году в 81-м в Союзе перевели и издали фундаментальный двухтомник с подробным описанием архитектуры процессора (который я старательно за каким-то лешим проштудировал – такой ажиотаж был). А надо отдать должное советским научным издательствам – там, где дело не касалось идеологии, переводились и печатались действительно лучшие, наиболее популярные и значимые книги (во всяком случае, по компьютерной тематике было так)... И вот, наконец, в начале восьмидесятых долгожданные «микромэйнфреймы» выпустили в свет и... пшик! Получились они слишком сложные, слишком медленные и вскоре их «прикончили» шустрые, простые и недорогие «интеловские» же процессоры семействе x86. Кажется, после этого громкого фиаско новые проекты высокоуровневых машин уже не начинали – идея была дискредитирована.

Но в шестидесятые-семидесятые, на гребне популярности, подобных проектов было немало. В том числе, особое направление – ориентированные на пользователя мини-компьютеры. Замысел такой: интерпретатор языка и программный редактор, простенькую операционную систему и набор утилит – все это «вшить» в машину, чтобы человек (не только и не столько программист, но грамотный инженер или ученый) включил ее и сразу начал работать – составлять несложную программу, тут же ее отлаживать, выполнять и анализировать результаты – все в диалоговом режиме. Популярной машиной этого класса был упоминавшийся раньше Wang 2200. Другая примечательная разработка семидесятых – IBM 5100 Portable Computer. Весил сей «портативный компьютер» 25 кило, но для того времени и с учетом его начинки (пользователю предоставлялись на выбор два языка – Бейсик и APL) это было выдающееся достижение. Машины серии 5100 не без оснований называют «персональными компьютерами» и прямыми предшественниками эпохального IBM PC.

Но значительно раньше, еще в 1965 году, в Киеве, замечательным дизайнером Соломоном Погребинским была создана «машина для инженерных расчетов» МИР-1 – одна из самых первых в этом классе. Машина без преувеличений удачнейшая. Я десять лет работал в проектных конторах и могу свидетельствовать: инженеры-расчетчики, которые ни до «миров», ни после них (вплоть до появления на «персоналках» расчетных систем вроде Matlab или Mathcad) не могли самостоятельно решать свои задачи на компьютере без помощи программистов, на «мирах» – решали. Неудивительно, что машину нежно любили в проектно-конструкторских институтах и бюро, впоследствии долгие годы ностальгически о ней вспоминали. Она стала легендой, а уже в новом веке у легенды явственно стал ощущаться конспирологический душок. Но об этом – в следующей главе.

014. Программисты-профессионалы и программирующие инженеры

Есть такой очевидный критерий «персональности» компьютера: если им можно оборудовать существующее рабочее место – поставить на стол экран и клавиатуру, разместить системный блок под столом или сбоку, принтер там куда-нибудь на тумбочку... если это удалось и теперь инженер (бухгалтер, банковский служащий, менеджер) может продолжить свою работу на своем же месте уже с помощью компьютера, то да, компьютер – персональный...

Правда, удаленные терминалы мэйнфреймов и мини-ЭВМ под это определение тоже подпадают, но не беда. Даже хорошо – отражаются этапы развития компьютерной техники. Сперва, с конца шестидесятых, на столах в офисах появляются видеотерминалы (только не в Союзе – эта затея, центральная в проекте ЕС ЭВМ, провалилась), затем приходит черед персональным рабочим станциям типа Wang 2200 (небольшие шкафчики, тумбы, приставные столики), и наконец, в восьмидесятые офисы заполоняют привычные персоналки... Главное же в «персональном компьютинге» – это даже не миниатюрные габариты машины. Главное – возможность обратиться к компьютеру ровно тогда, когда человеку это нужно. А в остальное время железяка (компьютер это или терминал – не суть важно) просто стоит себе на столе и ничего не делает. То есть, рабочее время человека дороже машинного времени. Вот тут-то принципиальное отличие от мэйнфреймов (да и мини), время работы которых планировалось и расписывалось (порой – на три рабочие смены) и человек к ним на свидание ходил не когда ему – человеку – удобно, а когда назначено...

Машины МИР были хоть и довольно миниатюрными, но детищами своего времени: занимали, обычно, отдельную комнату и время работы на них распределялось между пользователями. Но вот что впрямь замечательно: пользователи эти не были программистами. Я, к примеру, за многие годы ни одной программы для этих машин не написал. И вообще, не знал ни одного программера, кто б на них работал; с другой стороны, все, кто писал программы для «миров», программистами не были. Тут читатель наверняка спросит: «как же так, программы писали, а программистами не были?» Поверьте, и тени профессионального снобизма у меня нет – это, действительно, разные виды деятельности. Ну, вот пример: простейшая программа прочностного анализа, скажем, расчет балки по формулам сопромата. Что напишет умеющий программировать инженер-расчетчик: две-три строчки – ввод исходных данных, две-три строчки – собственно вычисления и четыре-пять строчек – печать результатов расчета. Всей программы – десяток строк кода. И написание ее займет от силы полчаса. Ну хорошо, если человек только осваивает компьютер, – два часа. А дальше инженер будет этой программой пользоваться всякий раз, когда ему надо посчитать балку.

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

Обычно, к этому моменту «подследственный» начинает звереть и ерзать на стуле, а ведь мы, по-хорошему, еще даже не начинали. Проверка на допустимые значения параметров по отдельности, это так... даже не разминка. Переходим к проверке соотношений параметров. Формулы сопромата для расчета изгиба балки базируются на допущениях теории Эйлера-Бернулли, коими не буду морить читателя, но скажу лишь, что результаты расчета хорошо согласуются с экспериментом, когда балка – действительно балка, т.е. нечто такое удлиненное по сравнению с сечением (но не слишком). Скажем, книжная полка: пролет метровый, а доска дюймовая. В самый раз. Или брус перекрытия пролетом шесть метров, с высотой сечения 20 см. Тоже нормально. А если мы восьмидюймовым брусом перекроем пролет в в один фут, то это как? А это, извиняюсь, уже не балка будет и считать такую конструкцию (скорей похожую на стеновую панель) надо совсем по другим формулам. И если двухметровый пролет перекроем, к примеру, миллиметровым металлическим листом или затянем пленкой, как в теплицах, то это тоже не будет балкой и считать придется по формулам теории все того же вездесущего Леонарда Эйлера, только совсем другой теории – статики гибкой нити. Инженер все эти вещи «печенкой чует», он интуитивно классифицирует и выбирает метод расчета (а хороший инженер и считает-то «для очистки совести»; он заранее знает результат, моделируя работу конструкции – сопротивление материала – каким-то необъяснимым, помимо сознания, способом, но при этом – безошибочно и весьма точно; если он настоящий инженер, конечно).

Увы, компьютер начисто лишен интуиции и все «входные» ограничения требует формулировать явно и однозначно. Даже для нашего примитивнейшего случая это далеко не просто... А кстати, мы тут оперируем метрами, сантиметрами, дюймами. А ведь для расчета все размеры надо привести в одну единицу измерения. В какую? В сантиметры? OK. И для входных данные считать, что все задано в сантиметрах? Ах, пусть пролет в метрах, а сечение в сантиметрах? А дюймы-футы? Ага, значит прежде задания размеров из меню выбирается система измерений: метрическая или имперская. А если пользователь ввел в метрах-сантиметрах, а потом решил пересчитать в дюймы-футы? Ага, вводим специальный пункт меню «пересчет». А может пусть указывает единицу измерения при каждом числе? Неудобно? Тогда, значит, пусть будут «правила по умолчанию», возможность выбора системы измерений из меню, режим пересчета, а дополнительно еще чтоб можно было указать единицу измерения при любом индивидуальном размере. Уф! Теперь это все запрограммировать и будет... всего навсего будет ввод геометрических размеров. А еще у нас есть ввод физико-механических свойств материала. Для простейшего изотропного линейно-упругого материала это два числа – модуль Юнга и коэффициент Пуассона. Наше счастье, что второй – безразмерный. Зато первый... та же головная боль с единицами измерений: континентальные килограммы на квадратный сантиметр или может имперские килофунты на квадратный дюйм, а то и вовсе новомодные мегапаскали. И всякие пересчеты между ними. Плюс, конечно, проверки на допустимые диапазоны значений (для обоих параметров) и диагностические сообщения в случае нарушений... А еще у нас ввод нагрузки: проверки, игры с единицами измерений и пересчетами, диагностические сообщения... И это мы топчемся пока всего лишь на вводе данных. А потом еще будет сам расчет, где программист, помимо двух строчек расчетных формул, будет долго и нудно специфицировать все мыслимые и немыслимые ошибки вычислений, реакции на них и опять же диагностические сообщения. Посчитав, наконец, приступаем к печати результатов. Так, во-первых короткая распечатка для рабочих нужд: вывод на экран или консольную пишущую машинку только чисел и минимальных обозначений при них. Теперь дальше: печать в табличной форме для многократных прогонов – чтоб сравнивать варианты. Эх, еще бы графики-эпюры построить. Не беда, что не производятся пока графические принтеры и дисплеи – примитивные графики можно «рисовать» звездочками на текстовых принтерах. И еще не все. Нужна «официальная», полная распечатка, которая будет подшиваться в проект со всеми, кстати, реквизитами проекта (которые тоже надо вводить, как и параметры, задающие форматирование и управляющие процессом печати)...

Ну вот, вроде бы все. На собеседования с будущим пользователем программы ушел хорошо если один рабочий день, а то и два (это называется на нашем жаргоне «обследованием» или «постановкой задачи»). Думаете, теперь-то программист пошел программировать? Ха, как бы не так! Он пошел писать документ под названием «техническое задание» и хорошо, если сам наберет его на компьютере и там же отпечатает. Тогда за пару-тройку дней справится. А вот если он пишет от руки на бумаге, а потом печатают девицы из машбюро, тогда, считай, уйдет неделя. Затем документ читается и согласовывается пользователем (почти всегда при этом – уточняется, правится и переписывается). Наконец утверждается начальством и... всего лишь две-три недели спустя программист приступает собственно к программированию. Помните, что инженер уложился в десять строчек кода? Так вот, программисту со всеми этими проверками, диагностиками и пересчетами придется написать эдак строк двести-триста...

Понятно, что никто не затеет многонедельную бодягу ради одной программки, реализующей один частный вид расчета. Программисту если уж закажут, то какой-нибудь пакет прочностных расчетов, например, балок для доброй сотни разных типов сечений, нагрузок, краевых условий, характеристик материалов и т.д. Тогда техническое задание будет представлять собой увесистый том страниц под тыщу, а в программе будет строк эдак тысяч двадцать. Вообще, размеры профессиональных программ принято измерять в тысячах строк, как дороги – в километрах (тысячах метров). Уже из используемых единиц измерений можно судить как о протяженности дорог, так и о размерах программ... Вернемся к нашим «мирам». Не в том даже дело, что такую большую программу в эту маленькую машинку не всунешь – наш брат ухитрялся и бóльшие всовывать в мéньшие (есть всякие ухищрения в нашем арсенале). Дело в том, что не вяжется одно с другим, не предназначена машина МИР – помощник в инженерных расчетах, по сути – очень продвинутый калькулятор, быть компонентом автоматизированной системы. Не идет одно другому – как корове седло. А значит, программисту-профессионалу делать там нечего.

Этого программиста-профессионала уподоблю шоферу-дальнобойщику, везущему многотонный груз за сотни километров. Можно, конечно, нанять его громоздкий трак для доставки пиццы на дом – почему бы нет, платите только денежки. Но даже в идиотских советских условиях такого идиотизма на наблюдалось... Ну вот, вроде ясно, осталось только понять, почему это у непрограммиста программа в десять строчек, а у профессионала – раз в двадцать-тридцать больше. Если бы нам за число строк платили, тогда конечно, никаких вопросов... Так ведь не было у нас выгоды накручивать строки в программе, как советскому водиле – километраж на тахометре его грузовика. Никто за размер программы, как таковой, не платил. И какая там выгода, одна головная боль – чем программа больше, тем она сложнее. Почему же так получалось? А все просто: инженер составляет себе машинную программу как подсобное средство, облегчающее расчеты. Ну вот, на логарифмической линейке считать ведь удобнее, чем «в столбик» на бумажке. А на калькуляторе – удобнее, чем на линейке. А на программируемом калькуляторе «с памятью» – еще удобнее. А на компьютере – еще... Соль в том, что считает по-прежнему сам инженер, используя программу (линейку, калькулятор) просто как инструмент. А ежели так, то нужен ли ему в программе миллион проверок? Нет, он сам все проверяет и контролирует. Интуитивно. Ему нет нужды вникать в детали расчета, достаточно взглянуть на результат и... все сразу ясно: правильный он или лажовый. Так что, нужна ему только голая «считалка» для трудоемкого расчета, которую он и запрограммирует за полчаса... А вот наш брат программист делает программу для расчета автоматического (это когда вообще без участия человека) или же автоматизированного (при участии «безответственном», например, клерка, который проверить результаты не в состоянии, бо не знает сопромата; его самого контролировать надо, правильно ли исходные цифры ввел). У компьютера же, как известно, с интуицией напряг, он – очень быстрый и старательный идиот, тупо исполняющий команды. А мы – программисты – представляем интересы этого бедолаги в мире людей. Зная, что сам он не в состоянии предусмотреть аж ничего, решить «интуитивно» («по аналогии», «исходя из здравого смысла») аж никакой, самый крохотный вопросик, вынуждены мы с раздражающим педантизмом, со скурпулезностью нечеловеческой предусматривать самые нелепые, невозможные ситуации, искать ответы на самые дикие, кретинские вопросы. И все эти «а что если?» закладывать в программы, отчего те разбухают неимоверно – в десятки, в сотни раз...

Коль уж зашла речь о ремесле программистском, затрону еще одну его сторону. Внимательный читатель обратил внимание, что, учиняя допрос инженеру-расчетчику, я знал заранее какие ему вопросы задавать. Я знал про допущения теории Эйлера-Бернулли, про то, что расчет балки корректен при определенных соотношениях пролета и сечения. Предположим, что не знал, при каких именно (и спросил у об этом специалиста расчетчика), но знал, что надо спросить. Знал чтó надо спросить. Откуда знал – понятно: сам по образованию прочнист. Но ведь это — случайное совпадение. Вот приходилось мне потом работать в энергетике и полиграфии, на химических и металлургический заводах, в авиакосмической индустрии и торговле, здравоохранении и грузоперевозках. Но ведь невозможно перед каждым новым проектом проходить соответствующий университетский курс. Так как же знать чтó надо спрашивать? И встречный вопрос: а зачем знать что надо спрашивать? Не проще ли попросить специалистов, пусть они сами все расскажут, а ты старательно законспектируешь да и пойдешь себе программу писать... Не тут-то было...

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

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

Бесконечные командировки, дни и недели в цеху, заводоуправлении, на складе, в офисе бок о бок с инженерами, бухгалтерами, работягами, клерками – все это нужно не для составления программ (они и дома неплохо пишутся – знать бы, что писать) но для вживания. Понемногу, день за днем вникаешь в дотоле неизвестную жизнь и потихоньку ее вербализируешь. Вот в этом (а отнюдь не в знании ФОРТРАНа) и заключается твоя профессия – укладывать живую жизнь в строгие параграфы бизнес-правил и спецификаций. И быть готовым терпеливо делать и переделывать, делать и переделывать, делать и переделывать... Никогда, ни разу за сорок лет моей карьеры не удавалось сделать проект с первой попытки. Делаешь и переделываешь. Не потому, что такой уж ты дурак. Отнюдь, и сам не дурак и коллеги твои – инженеры отменные. Просто, существует всегда эта пропасть непонимания – misunderstanding gap. Пока не покажешь клиенту работающий прототип, он и не знает, чего он не хочет. Показал – недолет! Прототип – в корзину, а ты работаешь дальше. Другой вариант – перелет! С третьего раза – в цель. Да только, пока ты идеально подгонял компьютерную систему под бизнес-процесс, сам бизнес-процесс и окружающий его мир изменились. Мочи мочало – начинаем все сначала. Зато не соскучишься...

Мой опыт ограничивается маленькими группами разработчиков – артелями в три-четыре, максимум – семь человек. В больших коллективах, конечно, все не так. Там правит бал специализация. Программисты клепают программы, а описанной выше деятельностью занимаются особые люди – постановщики задач. Откуда же они берутся? Порой это специалисты в своем деле, которые участвовали, например, в разработке проекта в качестве «подследственных» специалистов, увлеклись делами компьютерными, хорошо вникли (вжились) в нашу проблематику. Работа постановщика – интереснейшая, да и по части оплаты... такие специалисты не бедствуют. Однако, чаще в постановщики приходят все-таки из программистов. Занимается, к примеру, человек лет двадцать разработкой бухгалтерских программ и потихоньку становится классным бухгалтером, оставаясь при этом классным программером. Вот он – мостик через пропасть взаимонепонимания, драгоценный «междисциплинарный» опыт. В начале 90-х, когда в Украине софтверные проекты сошли на нет, а в услугах бухгалтеров, напротив, нуждались вновь создающиеся фирмы, многие мои коллеги были вынуждены сменить род занятий и оказались очень востребованы в «бухгалтерском» качестве. Ну, а в стабильной стране программист, доработав до благородных седин (сиятельной лысины), уходит в постановщики – оно и спокойней и денежней. Программер в пятьдесят, тем паче – в шестьдесят, это, как правило, недавний эмигрант... Так что, не случись известная заварушка, гужевался бы я сейчас все в той же своей конторе постановщиком задач, расписывал бы спецификации. А если б удалось мне свалить из Совка в семидесятые, был бы сейчас... постановщиком задач, специфицировал бы бизнес-объекты да процессы. Впрочем, если бы да кабы... спасибо на том, что есть.

Вернусь к «мирам». На моей первой работе в проектном институте машина МИР-2 появилась в самом начале семидесятых и я с ней лет семь сталкивался. Нет, не программировал (выше я объяснил, почему), но именно сталкивался. Всякий инженер, составлявший на «мире» свои программы, если дело не ладилось, не стеснялся «дергать» программиста, сиречь меня. Я конечно исправлять неполадки в железе не мог (тут приходилось звать электронщика), но диагностировать оные и уж конечно – выявлять всякие «кости» в программах... этим приходилось заниматься регулярно. Так что машину, ее язык и нехитрую операционную систему поневоле освоил досконально. А в 79-м чуть было не занялся переносом «мирового» программного обеспечения. К тому времени стало ясно, что жизнь этого семества клонится к закату. Возникало естественное желание сохранить наработанный за столько лет программный фонд (почти у каждого расчетчика была своя коллекция перфолент и магнитных карт с полезными «считалками») . Поскольку продолжения машинного ряда ожидать не приходилось, оставалось перенести эти программы на другие машины, например, на только появившиеся, куда более мощные «эсэмки». В конце концов, ценность ведь была именно в программах, а никак не в устаревшем, потихоньку разваливающемся железе... История о том, как и почему я не сделал эту безусловно нужную работу и никто нигде – не сделал, хотя всем было нужно... история эта довольно поучительная и заслуживает изложения в следующей главе.

Ni:
К сожалению, следующей главы нет. Последняя была написана декабре 2009 г. (на форуме по ссылке), и других следов этих публикаций я не нашёл. Регистрироваться на еврейском форуме, чтобы выяснить больше об авторе (кроме его ника: Самуил) мне было лень...



Источник: http://berkovich-zametki.com/Forum2/viewtopic.php?f=7&t=1034

Поделитесь с друзьями:

Смотрите также:

история ВТ

 

Комментарии:

жаль, что нет продолжения...
сохранил все...

Ответить

Wic

+ спасибо интересный материал

Ответить

Спасибо за репост. Безумно интересный материал, прочитал все четыре части на одном дыхании. Сидя за своими современными компами мы так редко задумываемся, а из чего же они выросли, как развивалось их программное наполнение. Благодаря этим воспоминаниям все это стало чуточку ближе и понятнее.
Действительно, жаль, что продолжения не последовало...

Ответить

Очень, очень годный сборничек, спасибо.

Ответить

На РФФ ТГУ МИР-2 была привязана к лабораторной установке, снимала ВАХ. Заря автоматизации, еще до появления Электроники-60. Чудная была машинка, многое умела для своего времени.

Ответить

борсалино

точно точно-последняя часть такой примерно диалог навеяла"древний охотник-мы тут понимаете мамонта загоняем в яму всем племенем и бьем,современный охотник-ну с этим все просто если пули слонового калибра под рукой"

Ответить

Tак начиналась эпоха компьютеров в СССР
http://pogrebinsky.livejournal.com/1200.html

Ответить

Спасибо, что перепечатали! Многое оригинально и интересно!
Тем более, что автор - "Самуил" - по оригинальной ссылке
свои заметки снёс... :(
[quote="Самуил"][i]По просьбе некоторых коллег, увидевших себя в легко идентифицируемых персонажах и не желающих такой идентификации, вынужден снять данный текст. С.[/i][/quote]

Ответить

 
Автор статьи запретил комментирование незарегистрированными пользователями. Пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте, чтобы иметь возможность комментировать.