воскресенье, 24 ноября 2019 г.

Тим Скоренко. Изобретено в СССР



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

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

С первых же страниц книги на читателя обрушивается антисоветская пропаганда о том, что в Советском Союзе авторское право был уничтожено одним росчерком ленинского пера. На стр. 9 пишется: "Иначе говоря, изобретателю теперь разрешалось только называть изобретение своей фамилией. Он терял право самостоятельно разрабатывать использовать то, что он сам придумал."

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

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

Таким образом в правах были поражены не изобретатели, а капиталисты. Немыслимо, чтобы в пролетарском государстве результаты труда одного человека присваивались другим человеком. Поэтому результаты труда присваивались государством, которое, по крайней мере формально, представляло интересы всего трудящегося населения страны.

О том, что интересы трудящегося населения могут расходиться с интересами капиталистов, можно найти пример на страницах этой же самой книги. Так, на стр. 228 автор пишет о Поморцеве, который изобрёл один из ранних вариантов кирзы, ещё до революции 1917 года: "Но предложение Поморцева делать из кирзы обувь разбилось об экономическую невыгодность: кирза была дешёвой и прибыль фабрикантов от армейских контрактов в случае перехода с кожи на кирзу упала бы в несколько раз. Так что до сапог Поморцев дело так и не довёл, а в 1916 году он скончался, и кирза, казалось бы, ушла в историю". В 1930-х годах, уже при советской власти, другой вариант кирзы - на основе каучука, разработал Плотников. В этот раз фабрикантов не было и изобретение принесло реальную пользу народу, а не "фабрикантам".

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

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

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

На стр. 15 говорится о том, что в СССР неплохо финансировались:
  1. оборонная промышленность,
  2. космос,
  3. фундаментальная наука,
  4. тяжёлая промышленность,
  5. "стройки века".
Хочется однако заметить, что это те области, в которых нынешняя буржуазная Россия пока ещё сильна во-многом просто по инерции. Нынешний вклад в эти области несравним с советским, из-за чего эти направления экономики в целом скорее находятся в стагнации. Из остальных областей, которые при СССР были в упадке, в нынешней буржуазной России хорошее развитие получили, пожалуй, только торговля и транспорт. В СССР была плохая лёгкая промышленность и плохие бытовые товары, но они были свои. Сейчас же все бытовые товары и продукция лёгкой промышленности заводится из-за границы. А ведь для того, чтобы получить хорошую промышленность и хорошие бытовые товары, нужно иметь для начала хотя бы плохие, но свои. Когда есть плохое, его можно улучшать и доводить до ума. Когда нет даже плохого, то улучшать нечего. Например, в городе Уфа, где я живу, на месте швейной фирмы "Мир" сейчас стоит торгово-развлекательный комплекс "Мир". Из швей очень легко сделать продавцов в бутиках, а вот продавцов научить шить одежду может оказаться уже совсем не просто. Торговля стала настолько привычным делом, что проникла даже в сферы образования и здравоохранения. Многие коммерческие учебные заведения и медицинские клиники обучением и лечением не занимаются, по-сути они просто торгуют дипломами и справками, которые нужны для трудоустройства.

На стр. 69 автор радуется тому, что атомная бомба не была создана в СССР до начала Великой Отечественной Войны: "В общем-то история показала, что отказ был к лучшему - неизвестно, что случилось бы, имей СССР ядерную бомбу до начала войны". Подобным образом может рассуждать только человек, который добровольно сокращает своё почти славянское имя Тимофей до западного Тим. Он твёрдо уверен, что ничего хорошего не получилось бы, потому что умеет сравнивать настоящую историю с выдумкой из своей головы. Мне почему-то кажется, что имей СССР к началу войны ядерную бомбу, то Гитлер не напал бы на СССР, СССР не понёс бы огромные человеческие и экономические потери. Не было бы ни сотен сожжённых деревень, ни голодающих сирот, ни блокадного Ленинграда, ни разрушенного до основания Сталинграда. То есть, в моём понимании наоборот - отказ от разработки ядерного оружия привёл к худшим последствиям, а не к лучшему.

На стр. 194 автор, рассказывая о черенковском детекторе, пишет: "Но почему-то у меня в памяти осел другой факт. В то время как Павел Черенков учился, работал, защитил кандидатскую (1935) и докторскую (1940), его отца, крестьянина Алексея Черенкова, сперва раскулачили, а потом в 1938-м, осудили и расстреляли по сфабрикованному делу за "контрреволюционную деятельность". Такие дела".

Во-первых, понятно - почему. Потому что автор рукопожатный либерал и не мог, рассказывая о советском изобретатели, удержаться от того, чтобы не пнуть советскую власть при удобном случае. Ничуть не обеляю период, когда НКВД возглавляли Ягода и Ежов, этот период был действительно самым мрачным в истории Советского Союза. Однако хочется заметить следующее: раскулачиванию подвергали не крестьян, а кулаков, по-сути - сельскохозяйственных капиталистов, которые занимались эксплуатации местного населения или, если говорить политкорректно, бизнесом на селе. Не могу рассуждать, справедливо ли раскулачили Алексея Черенкова, или он попал под каток, но одно могу сказать точно: вряд ли после раскулачивания Алексей Черенков воспылал любовью к советской власти. Поэтому основания вести "контрреволюционную деятельность" у него вполне могли быть. Опять же не берусь говорить о том, вёл ли он на самом деле контрреволюционную деятельность или нет. Для того, чтобы рассуждать о справедливости раскулачивания и обвинении в контрреволюционной деятельности, нужно ознакомиться с материалами дела. В отличие от рукопожатных либералов, я не могу сказать, что дело было сфабриковано, не ознакомившись с его материалами.

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

В-третьих, на стр. 494 автор честно признаётся: "Кроме того, я не историк. Я журналист." На стр. 498 он пишет: "Поскольку моя книга не является научным исследованием и к ней не предъявляются жёсткие требования по списку источников и точности их обозначения, я позволил себе не нагружать этим ни издательство, ни типографию, ни читателя". То есть автор не является историком, но вставляет в книгу замечания, которые напрямую к теме книги не относятся и для которых он не готов привести источники.

В-четвёртых, на стр. 495 автор отвечает на несколько распространённых вопросов, среди которых ему часто задают такой: "Кто проплатил книгу - Фонд Сороса или ещё какая-то зарубежная контора? Никто. Тему "Изобретено в России и СССР" я давно, с 2011 года, хотел раскрыть в серии статей, затем идея переросла в книгу, я написал предисловие, а в 2016-м неожиданно познакомился с издателем - генеральным директором "Альпины нон-фикшн" Павлом Подкосовым, который предложил опубликовать книгу. Так что это моя личная инициатива, и никаких денег, кроме положенных по договору роялти, я за неё не получил." Я на это могу заметить лишь следующее: для того, чтобы получать деньги от Фонда Сороса, совсем не обязательно писать на заказ по утверждённому заданию. Человека можно использовать, что называется "в тёмную". Человек просто пишет то, что хочет, а инвесторы заметят и профинансируют того, кто пропагандирует желаемую ими точку зрения. Когда человек пишет искренне, а не за деньги, ему не приходится идти против своей совести, да и результат получается лучше. Поэтому профинансировал кто-то книгу, или нет, остаётся лишь догадываться. Может быть действительно профинансировал, потому что книга уникальная и никто другой в это время подобной книги не писал. А может быть кто-то ещё писал книгу на схожую тему, но профинансировали именно этого автора, просто потому что он мыслит в либеральном ключе (кстати, коммунисты были либералами - они установили правовое равенство граждан вне зависимости от пола или вероисповедания).

На стр. 202-205 автор перечисляет предметы бытового пользования и указывает, через сколько лет после изобретения за границей эти предметы появились в СССР:
  1. Туалетная бумага изобретена в 1857 г., получила широкое распространение в 1890-е годы, в СССР появилась в продаже в 1968 г.,
  2. Холодильники за границей стали продаваться 1913 г., в СССР - в 1949 г.,
  3. Пылесосы за границей стали продаваться 1905 г., в СССР - в 1937 г.,
  4. Стиральные машины за границей стали продаваться 1904 г., в СССР - в 1950 г.
Автор пишет: "Вы скажете: была революция, война - понятно, почему мы отставали. На самом деле не очень-то понятно, но давайте я ещё приведу примеры, когда мы продолжали отставать в мирные и сытые годы". А мне не понятно другое: почему перечисленные изобретения, появившиеся ещё до Первой Мировой Войны, и до Февральской и Октябрьской Революций, не появились в царской России? На самом деле понятно: деньги есть у господ, но в их домах вместо туалетной бумаги, холодильников, пылесосов и стиральных машин имелись биде, погреба, домработницы и прачки. У крестьян и рабочих биде не было, уборкой своего дома и стиркой своей одежды они занимались сами, а денег на всякие излишества у них попросту не было. Трудовых людей в то время больше волновали совсем другие проблемы: им элементарно не хватало хлеба и земли, на которой его можно было вырастить. Ещё их беспокоило сословное неравноправие, ограничение в правах по половому признаку и по вероисповеданию. Буржуазная Февральская революция не решила ни одного из этих вопросов, в результате произошла коммунистическая Октябрьская. Капиталисты прошляпили тот момент, когда они могли закрепиться во власти. А автор просто в очередной раз демонстрирует своё непонимание реалий того времен, пытаясь с нынешним сытым капиталистическим аршином подойти к измерению тех времён, когда людей волновали совсем другие вопросы.

Далее на стр. 206-208 идёт перечисление копий иностранных бытовых приборов, в разное время сделанных в СССР: пылесосов, фотоаппаратов, радиопиёмников, видеомагнитофонов, утюгов, швейных машин. Прежде всего мне хотелось бы узнать, насколько достоверно известно, что это именно копии? Как часто вывод о копировании делается лишь на основании внешнего вида, а в каких из указанных случаев достоверно известно, что скопирована была и конструкция? Мне всё-таки почему-то кажется, что копировали прежде всего внешний вид и общую компоновку, а не бездумно всё вплоть до винтика: в конце-концов, в СССР была принята метрическая система единиц (а это болты, гайки, подшипники только стандартных размеров), имелась собственная номенклатура производимых узлов (например, электродвигателей), электронных деталей и материалов (пластмасс и сталей). Скопировать без перепроектирования просто не получится. Да и в конце-концов, зачем изобретать велосипед? Изделия не оборонной важности, можно выбирать лучшие решения и использовать их. Оригинальность - не самоцель. В нынешней буржуазной России утрачена даже способность к копированию (фильмы Бондарчука - не в счёт), потому что проще завести из-за границы готовую продукцию и накрутить маржу. Максимум, на что способен наш бизнес - организовать отвёрточную сборку из готовых импортных компонентов. СССР на этом фоне выглядит гораздо выгоднее.

На стр. 212-213 автор сравнивает СССР и США по количеству доступных в продаже моделей легковых автомобилей. Лишний раз упоминается о том, что в СССР нельзя было купить грузовик или автобус. При этом совершенно упускается из вида несколько обстоятельств.

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

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

Во-третьих, в СССР был принят совершенно иной подход к транспортной инфраструктуре: предпочтение отдавалось общественному транспорту, а большинство социально-значимых объектов (детские сады, школы, поликлиники, гастрономы, аптеки) располагались в шаговой доступности. Не в последнюю очередь это было сделано именно из соображений экономии нефти. Поэтому в СССР городской общественный транспорт был в значительной мере электрическим (трамваи, троллейбусы, метро, пригородные поезда), а железные дороги были электрифицированными почти полностью. Из-за такого упора на общественный транспорт, произошёл один курьёзный случай. Приехавший в Москву писатель-фантаст Роберт Хайнлайн отказывался верить, что в Москве проживает 8 миллионов человек. Исходя из оценки интенсивности уличного движения он считал, что в Москве проживает не более 750 тысяч человек.

Поэтому я хорошо понимаю возмущение пелевинского человека-орануса тем, что в СССР легковые автомобили приобрести было тяжело. У человека-орануса нет потребностей, а есть только капризы. Личный автомобиль у него превращается в самостоятельную ценность, а не в средство решения проблем. Проблема доступности детских садов превращается всего-лишь в транспортную проблему, которую легко решить при помощи личного автомобиля. К тому же автомобили создают рабочие места и положительно влияют на экономику: нужны автозаводы, нужны нефтедобывающие компании, нужны нефтеперерабатывающих заводы, автозаправки, автосервисы, страховые компании, дорожные инспекторы, автоинструкторы, дорожные службы. Врачи и учителя не нужны. Чистый воздух и тишина на улицах тоже не нужны.

На стр. 279 автор рассуждает, что "Строго говоря, первой ракетой, достигшей границы космоса, была V-2 ("Фау-2"). Запущенный 20 июня 1944 года тестовый образец MW18014 поднялся на высоту 176 километров, преодолев, таким образом, линию Кармана, находящуюся на 100 километрах и считающуюся нижней границей космоса. Так что полигон Пенемюнде, откуда она отправилась в полёт, условно можно назвать первым космодромом. Другое дело, что Пенемюнде никогда не предназначался для космических запусков - это был научно-исследовательский центр и испытательный полигон, и запуск проводился не для достижения космоса, а для другой цели."

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

Космодромом можно считать лишь те сооружения, которые предназначены для запуска космических аппаратов с первой космической скоростью или выше. Так что V-2 совершила лишь баллистический полёт, а Пенемюнде - не космодром.

На стр. 359 автор радуется, что советский проект посещения Луны космонавтами провалился. Авария с потерей Лунохода-1, произошедшая 19 февраля 1969 г. "стала звеном в цепочке событий, которая привела к окончательному закрытию бесполезной пилотируемой лунной программы СССР и движению в сторону совместных проектов, начиная с "Союза - Аполлона"". Надо полагать, что американский проект пилотируемой программы был полезным, а советский - нет. Странно, что все предыдущие советские космические проекты почему-то оказались полезными, а этот - нет. Видимо у США бесполезным проектом был проект орбитальной станции Skylab. Тоже ведь не удался. А если бы удался, то был бы полезным. Так и представляется, как автор рассказывал бы о том, что в рамках пилотируемой программы было добыто столько научных данных, в том числе о действии космической радиации на человеческое тело, сколько не под силу ни одному автомату.

На стр. 411 автор пишет: "Я уже не раз писал в книге, что меня расстраивают такого рода достижения. Мы не первенствовали в разработке бытовой техники, качественной мебели, автомобилей, игрушек - в общем, потребительских товаров, улучшающих жизнь простого гражданина. Зато в области технологий, которые ввиду своей опасности для человечества не применялись никогда, мы гордо несли знамя пионеров. Но что было, то было."

Автор только упускает тут из вида, что во-первых на территории США не было такой разрушительной войны, какая была в Европе и затронула СССР. Один разрушенный Перл-Харбор не сравнится даже с одним Сталинградом, не говоря уже о том, что Перл-Харбор был военной базой, а в СССР страдали мирные жители деревень и городов. США находился на периферии войны, обладал богатыми запасами нефти, а потому мог себе позволить и военные проекты и гражданскую продукцию.

Во-вторых, что касается технологий, несущих опасность человечеству, то пионерами были скорее США, которые испытали чудовищное оружие, сбросив его на два города. Военной необходимости в этом не было - к тому времени Япония уже была сломлена. Необходимостью было продемонстрировать перед СССР свою военную мощь и получить более выгодные позиции на переговорах по послевоенному переустройству.

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

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

воскресенье, 17 ноября 2019 г.

Сергей Тарасов. Дефрагментация мозга. Софтостроение изнутри



Много раз натыкался на эту книгу на полках книжных магазинов. От покупки останавливали сочетание нескольких факторов: 1. специфика книги - она написана разработчиком под Windows, 2. малый объём - 220 страниц и 3. сравнительно высокая цена. Я не готов был выложить требуемые деньги за книгу небольшого объёма на не особо интересные мне темы. Но где-то с месяц назад эта книга снова попалась мне на глаза. В интернет-магазинах её уже не купить, а запрошенная цена в 434 рубля на этот раз показалась мне довольно разумной. Видимо, с тех пор цены на книги выросли, а эта книга продавалась по прежней цене, из-за чего стала теперь казаться не такой уж дорогой.

Принёс книгу на кассу, ожидая заплатить 434 рубля, но кассирша посмотрела на меня как-то пренебрежительно и озвучила сумму в 50 рублей. Я бы сам не поверил в то, что книгу по информационным технологиям можно купить за 50 рублей, но у меня есть доказательство:


Как я уже говорил, судя по книге автор обладает опытом разработки программ под Windows. Насколько я могу судить, это в основном корпоративные приложения с использованием Microsoft SQL Server, написанные на Delphi, Java и C#. Приятно, что автор знаком с историей отечественных информационных технологий и во многих случаях вместо западной терминологии использует исторически возникшую раньше отечественную технологию. Например, вместо понятия ЦОД - Центр обработки данных, автор предпочитает наше понятие ВЦКП - Вычислительный центр коллективного пользования, которое, пожалуй, даже лучше отражает суть.

В целом книга представляет собой сборник статей на разные темы. Однако, если попытаться изложить лейтмотив этих статей, то получится примерно следующее. В настоящее время отрасль информационных технологий состоит примерно на 10% из собственно разработки и примерно на 90% из сферы услуг, связанной с установкой, развёртыванием, обслуживанием и сопровождением информационных систем. Автоматизация процессов учёта и прогнозирования позволяет крупным компаниям сокращать офисных работников, которые до автоматизации занимались обслуживанием этих процессов. Бывшие офисные работники переквалифицируются в программистов и, как правило, получают рабочие места в тех 90% отрасли, которые заняты в сфере услуг. Таким образом, в сфере информационных технологий появляется большое количество работников с низкой квалификацией. Для того, чтобы получать от этих работников более-менее стабильный результат, компании используют разнообразные технологии, снижающие планку требований к работникам: это в первую очередь сборка мусора вместо ручного управления памятью, разнообразные ORM вместо SQL, веб-приложения вместо компонентных распределённых приложений, гибкие и экстремальные методологии разработки вместо проектирования. Ставка делается на то, чтобы разрабатывать большие и сложные системы путём грубой силы. Цикл разработки при этом растягивается, код систем разбухает от большого количества промежуточных слоёв, работа программ замедляется за счёт уменьшения локальности обработки данных - данные обрабатываются всё дальше от того места, где они хранятся.

Далее кратко расскажу о наиболее запомнившихся статьях.

В статье "Круговорот" на стр. 20-23 делается интересное наблюдение о том, как автоматизация вымывает сотрудников компаний из офисной работы и отделов АСУ компаний в IT-компании в качестве низкоквалифицированной рабочей силы.

В статье "Изгибы судьбы при поиске работы" на стр. 31-34 автор занимается самолюбованием, пытаясь продемонстрировать читателю не только свою востребованность на рынке труда, но и умение находить высокооплачиваемую работу окольными путями и пиратскими тропами.

В статье "Эволюция аппаратуры и скорость разработки" на стр. 40-43 автор делится любопытным наблюдением: несмотря на прогресс в вычислительной мощности компьютеров, развитие языков программирования и прочих инструментов разработки, скорость работы программ не растёт, а скорость их разработки со временем даже снижается. Повсеместное насаждение ООП вымывает из отрасли женщин, которые неплохо справлялись с написанием связующего кода в чисто процедурном стиле, но не смогли вписаться в объектно-ориентированную парадигму.

На стр. 44-54 в статьях "О карманных монстрах", "ASP.NET и браузеры", "Апплеты, Flash и Silverlight" автор раскрывает ещё несколько причин тенденции, описанной в главе "Эволюция аппаратуры и скорость разработки". Если раньше интерфейс программы можно было редактировать в визуальном редакторе, а бизнес-логику поместить в хранимые процедуры в базе данных, то сейчас повсеместное распространение получила веб-разработка с трёхзвенной структурой приложений, при которой интерфейс формируется путём ручного кодирования, а бизнес-логика помещается на сервер приложений, который по совместительству выполняет функции посредника между интерфейсом и базой данных, выполняя необходимые преобразования данных из одного представления в другое. Веб не ориентирован на хранение состояния клиента внутри сессии в оперативной памяти, из-за чего большинство веб-приложений всё состояние между отдельными запросами сохраняет в базу данных или передаёт на сторону клиента в виде большого файла-куки, а перед обработкой очередного запроса вновь восстанавливает.

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

В статье "UML и птолемеевские системы" на стр. 135-140 ставится под сомнение ценность UML, т.к. он:
  1. не универсальный, а унифицированный, т.к. объединяет несколько разных подходов разных авторов к графическому изображению логики программ,
  2. не язык, а графическая нотация,
  3. не моделирования, т.к. не позволяет собственно моделировать и верифицировать модель.
В статье "Наживулька или гибкость" на стр. 154-163 делается предположение о том, что гибкие методики разработки появились в качестве ответа на недостаточное количество квалифицированных программистов, обладающих навыками проектирования. Вместо этого в гибких методологиях делается попытка воспользоваться грубой силой, набрав большое количество низкоквалифицированных программистов и заставив их сразу писать код без проектирования. По замыслу идеологов гибких методологий надо лишь периодически проводить рефакторинг кода и качественная архитектура сформируется сама собой. Подобный подход позволяет фирмам-подрядчикам пускать пыль в глаза заказчику, постоянно демонстрируя ему постоянно улучшающийся прототип программы и вытягивая деньги за очередную итерацию разработки.

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

В статье "Лампа, полная джиннов" на стр. 174-194 рассказывается о двустороннем генераторе кода проекта. Мне эта автоматизация показалась прекрасной иллюстрацией недостаточной гибкости полукомпилируемых языков типа Java или C#. Мне по работе приходится больше всего писать на Python и использовать веб-фреймворк Django. Из моделей Django с минимальными усилиями можно получить готовые веб-формы и административный интерфейс, не прибегая к помощи каких-либо генераторов кода.

Мне приходилось сталкиваться с программированием для Windows лишь в самом начале карьеры. Я писал небольшую программу на Visual Basic для создания трёхмерных моделей зуборезных долбяков (это такой инструмент для изготовления зубчатых колёс или шлицов эвольвентной формы) в SolidWorks. Сейчас я пишу программы в основном на языке Python и иногда использую веб-фреймворк Django. Работа моя непосредственно не связана с программированием, но за мной часто остаётся выбор, каким образом выполнить ту или иную задачу. Если это бывает возможно, то я стремлюсь не делать одноразовой работы, а стараюсь вписывать каждое решение в общую систему, разработкой которой и занимаюсь для автоматизации своей работы. Несмотря на то, что мой опыт работы довольно сильно отличается от опыта автора, большая часть мыслей автора мне хорошо понятна и близка.

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

Я примерно так же как и автор с некоторым пренебрежением отношусь к UML, ООП, ORM и веб-разработке, хотя и пользуюсь ими. Я рисую прямоугольники на клочке бумаги, когда нужно спроектировать структуру таблиц под какую-то задачу. Я не брезгую сделать класс для того, чтобы поместить в него общие данные нескольких десятков функций - ведь эти функции и так имеют общие используемые данные, так зачем использовать процедурный подход, пытаясь скрыть это? Пользуюсь веб-фреймворком Django и его ORM для того, чтобы как можно меньше программировать веб-интерфейсы и как можно чаще пользоваться готовым административным интерфейсом, встроенным в Django. Мне легче написать SQL-запрос, чем запрос с использованием ORM, но я не вижу смысла писать много SQL-запросов и прочего кода, лишь для того, чтобы сделать простейший CRUD. В то же время, я хорошо понимаю, что на ORM бывает нелегко, а то и вовсе невозможно написать эффективный аналитический запрос, который легко пишется на SQL.

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

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

воскресенье, 10 ноября 2019 г.

Иван Михайлович Гостев. Операционные системы. Учебник и практикум. 2-е издание


Учебник написан доктором технических наук, профессором кафедры управления информационными системами и цифровой инфраструктурой Школы бизнес-информатики факультета бизнеса и менеджмента национального исследовательского университета "Высшая школа экономики", а короче - профессором из ВШЭ.

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

На многих иллюстрациях фигурируют английские надписи. В тексте книги эти надписи либо не переводятся вовсе (например, на стр. 19, рис. 1.3 или на стр. 34, рис. 1.11), либо снабжаются не точным, не адекватным переводом (например, на стр. 42 фраза Data Connetion переведена как "структура связей данных", хотя по смыслу больше подходит "связанные данные"). Удачно попала в кадр калька "мультипотоковая модель процесса".



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

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

Часто встречается несогласованность терминологии. Например, буферный кэш (стр. 67) иногда называют буфером кэша (стр. 76).


На стр. 71 в списке типов файлов фигурируют одновременно обычные файлы и жёсткие ссылки, хотя никаких файлов такого типа не существует, т.к. жёсткая ссылка представляет собой другое равноправное имя того же файла.

Встречается и несогласованность единиц измерения. Например, в табл. 4.1. на стр. 74 в одной и той же строке фигурируют 16 терабайт и 264. Почему автор не пытался привести эти числа к единому виду? Читателю для того, чтобы сравнить эти числа, приходится пересчитывать их в уме.

В главе 5 про сетевую подсистему абсолютно игнорируется существование IPv6, для добавления поддержки которого в API сокетов были внесены доработки. Например, на стр. 85 упоминается, что в значение поля sin_family в структуре sockaddr_in всегда равно AF_INET, на стр. 90 описывается функция gethostbyname из старого API, а в примере на стр. 91 используется функция inet_ntoa. С появлением поддержки IPv6 значение sin_family может быть равно AF_INET6, вместо gethostbyname нужно использовать getipnodebyname, вместо inet_ntoa есть аналог inet_ntop.

На стр. 94 сообщается, что не существует других способов передачи информации между операционными системами в сети, кроме механизма сокетов. Но сети существовали в Unix и до операционной системы BSD, в которой был добавлен механизм сокетов. Во-первых существовали терминалы и телетайпы, при помощи которых с системой могло работать множество пользователей. Во-вторых, линии связи, используемые терминалами и телетайпами, можно было использовать для пересылки файлов между системами. Для этого существовал протокол UUCP. В частности, электронная почта существовала до появления сети интернет и работала через протокол UUCP.

Интересно, что судя по списку команд Unix, приведённому на стр. 149-151, автор всё же знает о существовании UUCP, т.к. в этот крайне малый список попали команды uucp, uuname, uupick, uustat, uuto, которые в наше время используются настолько редко, что не входят в базовую поставку операционных систем и устанавливаются отдельно.

На стр. 107 не переведены комментарии в описании структуры. На стр. 112 - аналогично.


На стр. 114 перепутаны описания системных вызовов shmat и shmctl.

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

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

Глава 7 производит впечатление написанной автором лично, информация в ней хорошо структурирована и довольно актуальна. Но и тут не обошлось без недостатков. В разделе 7.9.3 автор не различает языков Java и JavaScript. То программы на Java называются скриптами, то скрипты выполняются на виртуальной Java-машине на стороне клиента. Речь могла бы идти о Java-апплетах, но они не являются скриптами и эта технология так и не получила широкого распространения.

В глоссарии книги можно ещё раз встретить многие из тех несуразностей, какими пестрит вся книга. Тут можно встретить:
  • и бит- и байт-ориентированные устройства вместо символьных и блочных,
  • и перевод термина deadlock как просто блокировки, а не взаимоблокировки,
  • и зомби-процесс, который завершился, но в то же время может и выполняться,
  • и кальку "изображение процесса" вместо "образа процесса",
  • и интерпретатор, преобразующий программу построчно в двоичные коды,
  • и квант времени, чудесным образом позволяющий одновременно выполнять множество процессов на одном процессоре,
  • и модульность, показывающая "на какое число параллельно выполняемых модулей можно разложить некий алгоритм",
  • ещё одну кальку "мультизадачность" вместо многозадачности,
  • и "переключатель русской клавиатуры на английскую аббревиатуру" в качестве примера резидентной программы (сразу повеяло DOS).
Первоначально я купил эту книгу потому, что, как мне показалось, в её достаточно малый объём вместились обзорные сведения по большому количеству тем. Например, из этой книги я впервые узнал о существовании очередей сообщений, реализуемых на уровне операционной системы (каюсь, Стивенса не читал). Но, технического редактора у книги нет, зато есть аж два рецензента, которые либо не читали книгу, либо разбираются в теме ещё хуже, чем автор. Если книгу довести до ума, то она могла бы быть вполне неплохой. Но при таком количестве ошибок, сумбура и наплевательского отношения к терминологии и оформлению, сомнительно, что автор сможет привести материал в сколь-нибудь божеский вид. Если можно охарактеризовать книгу одним словом, то этим словом может быть "небрежность". Я читал второе издание книги, остаётся только догадываться о том, какое качество имело первое издание.

Не стоит думать, что я дотошно искал в книге ошибки, чтобы радостно написать о книге пакости. Я просто читал книгу, первоначально игнорируя мелкие недостатки. Когда же стало понятно, что книга переполнена ими, после прочтения очередного фрагмента книги я садился перелистывать книгу с блокнотом, в котором отмечал самые запомнившиеся ляпы. Я потратил на эту книгу 580 рублей, которых она явно не стоит. (Для сравнения: в том же заказе была книга Тима Скоренко по цене в 607 рублей, тоже в твёрдой обложке, но объёмом и массой в три-четыре раза больше). Решил потратить несколько часов своего отпуска на то, чтобы ещё и отсканировать фрагменты книги и наглядно показать другим читателям, почему не стоит тратить деньги на эту книгу.