June 2017

S M T W T F S
     1 2 3
4 5 6 7 8 910
1112 13 1415 1617
18 19 20 21 22 23 24
252627282930 

Style Credit

Expand Cut Tags

No cut tags
Friday, February 19th, 2016 07:52 am
Моё представление, что Михаил Донской, создатель Каиссы смотрит на мир очень через розовые очки, ибо глядя на новые WIN10 с АЙосями, ежей терзают смутные сомнения, что "культура создания операционных систем" ноне утрачена, возможно и навсегда, вместе с носителями – людьми, которые умеют это делать не только у нас, но и во всём мире, хотя и до этого нужно честно сказать получалось в лучшем случае хорошо. А когда и умеющие думать системно уйдут, то и цивилизация тоже станет совсем другой. Статью Донского кстати лучше прочитать целиком, она довольно любопытна.

Глушков и Кузин победили (а судьей был председатель ГКНТ Кириллин), но все оказалось не так-то просто. Первый компьютер серии с трудом (титаническим трудом инженеров-электронщиков, запустивших его в жаркое лето 1972 года на ВДНХ, после чего они искупались в фонтане Дружбы Народов) был запущен в 1972 году, а массовая работа на нем – только в 1979 году. Все это время я неплохо зарабатывал лекциями по ОС ЕС ЭВМ. Документация по системе переводилась моими однокурсницами и другими людьми, не представлявшими себе, что такое компьютер вообще и операционная система в частности, и разобраться по такой документации было невозможно.

Таким образом, Глушков и Кузин просчитались именно в этой компоненте – культуре пользования. Теперь я понимаю, что неправ был и Кронрод, за которого я «болел», потому что надо было и копировать IBM и делать свои машины именно для сохранения культуры. А в итоге к 80-м мы потеряли культуру проектирования элементов, потом и культуру проектирования устройств, а сейчас от нас уходит (вместе с носителями – людьми, которые умеют это делать) культура создания операционных систем.

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

А в 80-х началась эра языка Си на машинах, скопированных с PDP и IBM PC. Мы потеряли весь свой ассемблерный «языковый запас» и так и не достигли аналогичного уровня инструментария на Си. Это была своего рода эмиграция. Привыкнув к детальному пониманию, как происходят реальные вычисления в памяти, пришлось отвыкать и работать в гораздо более абстрактных сущностях.

Зато остался интерес к базовым понятиям программирования, выходящим за пределы конкретных языков, операционных систем и устройств. Как любят говорить мои сотрудники «В конце концов, в компьютере биты бегают».
Friday, February 19th, 2016 05:07 am (UTC)
Что-то подумалось. А в двоичных кодах кто-нибудь еще пишет? Этакий суперпрограммист.
Friday, February 19th, 2016 05:16 am (UTC)
Ну тот кто делает новую микроархитектуру для МП и использует для реализации команд микропрограммы однозначно пишет.
Friday, February 19th, 2016 05:20 am (UTC)
Это те, кто коды намертво прошивает?
Friday, February 19th, 2016 05:23 am (UTC)
В основном да, но есть и любители менять систему команд и разрядность процессора по ходу выполнения программы.
Friday, February 19th, 2016 05:54 am (UTC)
(с издёвкой) JAVA-"программисты" смотрят на "микрокодных ассемблерщиков" как на лохов. Особенно по зарплате.
(Anonymous)
Friday, February 19th, 2016 06:23 pm (UTC)
Возможно, студенты на лабораторных и до сих пор.
Немножечко, чуть-чуть, команд 15-50 но пишут.
Friday, February 19th, 2016 07:01 am (UTC)
Уходит, и отравленная табуретка ей в спину. Достаточно знать откуда всё это повылазило, чтобы понять что пора всё это закапывать, и кто первым вторым начнёт, тот вырвется вперёд из болота, в которое превратилось программирование. В виде, возникшем около 1970 (С и Юникс, со всеми их регрессивными порождениями до сего дня), программирование как технология достигло предела. Я могу показать таблицу (десятилетней давности) что это значит в валютном выражении, но пока не буду захламлять тезис второстепенными цитатами.

В 1970 году процессоры были большими и штучными, а память и программы маленькими, и много программ ждали своей очереди порулить процессором. Вот из этой парадигмы вышла сама концепция операционной системы, которая даёт порулить программам. Однако сегодня процессоры стали маленькими и массовыми, а память и программы большими, и не осталось никакого смысла делить процессоры, которых изобилие, между программами, которых меньше чем процессоров (с учётом ядер GPU в типичном ПК). Всё вывернулось наизнанку: процессоры выросли на порядки больше чем имело смысл их выращивать, во всех существующих степенях свободы. Напихали кучу ядер на кристалл, которые вынуждены конкурировать за общую память на общей шине. Напихали кучу мусорных "улучшений", вроде спекулятивного выполнения, которые только греют воздух, но не дают никакой реальной пользы. И самое извращённое: разогнали ядра до гигагерц, а память осталась медленной, в результате выросли кэши, которые и стали де факто ОЗУ, а ОЗУ стала де факто накопителем. Но всё это лишь железные эффекты извращений программистов. В гадюшнике программистов извращения далеко превзошли возможности человеческих языков для их описания. И вот тут я уже покажу цитату -- результаты работы этих поэтов, музыкантов и мыслителей, среди которых давно не осталось ни одного инженера (computer engineer, как в обитали в IBM два поколения назад). Это список программистских эпикфейлов и прямого валютного ущерба от них. Список старый, составлен 10 лет назад, поэтому не думайте что всё внезапно остановилось тогда.


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


Это статистика дефектов в коде в форме их количества на тыщу строк. Обратите внимание что в статистику вошли лишь "нормальные" программы на языках вроде С. Никаких перлов и подобных пунктуационных оргий. В среднем каждая восьмая строчка содержит дефект, а количество строчек со всеми апи и библиотеками может никто не знать вообще. Вот это полезно утратить вообще и навсегда, желательно физически вместе с носителями, потому что переобучению такие привычки не поддаются. А молодёжь со школы нужно учить только хорошему: ширнармассы Спарку, а будущих инженеров -- ещё и ассемблеру. И только самых идейно-стойких и проверенных инженеров можно допускать к С, потому что на этой фене понаписано очень много очень специфических вещей, которые останутся в железе на поколение (DSP, MCU). И вот главное, что пытались сделать амы, но поторопились и сдались: законодательно заставить писать новое только на хорошем -- программы на Аде, а схемы на VHDL. Это была героическая, гениальная и наивная мысль. Всё остальное должно быть выдавлено из коммерческого и государственного применения всевозможными стандартами качества, ограничениями на применение (как с курением), валютной мотивацией и демотивацией, и прочими грязными но эффективными методами.
Edited 2016-02-19 07:18 am (UTC)
Friday, February 19th, 2016 07:19 am (UTC)
Я зачеркнул "первыми", потому что первыми уже стали заказчики, которые не могут себе позволить ущерб от творчества поэтов, музыкантов и мыслителей -- либо в суде, либо на войне, либо в годовом отчёте. Они все как один выбирают Аду, а скорее Спарк (строгая Ада), чтобы получить 99.9~99.99% чистоты кода. Недавний пример: в приложении на 200к строчек для платёжной системы, написанной конторой Adacore на Спарке, и заказанной неким мудрым руководством, за год нашли 4 дефекта. Три из них были тривиальными и были исправлены за день, ещё один исправлен за два дня. Всё, больше дефектов там нет -- это после года работы системы с реальными бабками. А стоит такой труд на 50% дороже труда рядовой дрессированной абизяны. Вот, коллеги, от чего есть шанс избавиться, и получить непреодолимое преимущество перед глобальным питомником.
Friday, February 19th, 2016 11:22 am (UTC)
Ну это слишком радикально! И это, инженеры - не программисты, их можно допускать ;) Когда-то мне попадалась картинка, где между задачей и компьютером была цепочка человек из пяти, каждый из которых занимался своим этапом работы. Потом эту цепочку сократили в одного человека.
Friday, February 19th, 2016 12:30 pm (UTC)
Это не радикально, а минимально. Не подумайте что я мухоморов объелся и грызу щит, как викинг. Как и все тронутые электричеством люди, я давно знаю в общих чертах что такое "программирование" на самом деле. Но сейчас читаю книгу The Economics of Software Quality, и понимаю как программистам повезло. Если бы они так работали в сороковые-пятидесятые, будь то в штатах или СССР, их бы расстреливали каждое утро по алфавиту по принципу "они сами знают за что". Потому что они таки сами знают за что. В книге даётся страшная статистика, просто чудовищная: экономические потери из-за плохих привычек в программировании выходят далеко за рамки "вредительства с отягчающими", "хищения в особо крупных", и в отдельных случаях (привет программистам Ф-35) даже "измена родине". В сколько-нибудь крупных проектах как минимум потери исчисляются мегабаксами, уходящими на всякие переделки и починки, дебаги и патчи, не говоря о судах и прямом ущербе. Например, там есть одна история о системе учёта ресурсов предприятия. Некая сеть со складами и магазинами заказала себе такое чудо программирования. Чудо ему одному ведомым способом забыло об одном из складов -- на три года! Люди там три года числились и получали зарплату, но товар ни уходил, ни приходил -- склад исчез. Когда на склад случайно наткнулись и нашли, начальство приказало всем молчать и забыть обо всём. Представляете себе исчезнувший склад с товаром и зарплату десятку человек за три года? Это мегабаксы прямого ущерба. Но там случаи абсолютно чудовищные описаны, а всё потому что люди давно потеряли способность осознавать пределы своих возможностей, компетенции, ответственности и прочих некогда важных слов. Когда-то два с половиной человека писали язык программирования для ядерной боевой системы, и всё у них получилось. Сейчас целые банды пишут сотни мегастрочек говнокода, и примерно 10% больших проектов списывают в хлам сразу после доставки, потому что там невыносимое бесполезное говно. А бабло уже потрачено. Вот так, а вы говорите радикально. Радикально -- это расстрелы по алфавиту в день зарплаты.
Friday, February 19th, 2016 01:39 pm (UTC)
Я вспоминаю о "расстреливал" пользуясь современным интерфейсом. Особенно когда поведение программы по командам пользователя (нажатию "кнопок") абсолютно непредсказуемо, непонятно (нет никаких сообщений, прогрессов и прочего) и не контролируется в случае чего (в смысле "зависла", "задумалась", "тупит" без вариантов "отморозить" не прибив). Я удивляюсь терпению современного пользователя.

Хаха, главное что сотрудники - молодцы, молча получали зарплату три года ;) Где раздают такие склады?
Friday, February 19th, 2016 03:05 pm (UTC)
Терпение давно закончилось, но выбора нет, и вот это ещё одно злодеяние программистов, за которое нужно расстреливать, но лишь из автоматического говномёта -- это базовые бесплатные (условно, не условно -- неважно) программы вроде броузеров. Сначала эта бесплатность уничтожила всех конкурентов, а теперь говнософт поставляется на условиях "дык что выросло -- это же бесплатно!" А выбора уже и нет -- во время платных программ покупатель голосовал баблом, как сейчас при выборе железа, а с программами сейчас так практически невозможно делать. Вот за это нужно расстреливать указанным выше методом, запрещать законодательно как грубое нарушение конкуренции, и штрафовать за попытки массового распространения (узкоспецифические, бесполезные, самодельные и демонстрационные версии неактуальны). Это ничем не хуже распространения наркотиков -- путь в один конец.

В штатах конечно.
Friday, February 19th, 2016 08:26 pm (UTC)
Вчера на нервной почве около 4-5 часов этот пост вырвался на несколько минут с парой растрельных примеров безумного творения пограммистов из свежеприбывшего оборудования в этом году. Он был злым и длинным, но одумался, ведь с ним ещё минимум 4-5 лет работать, и с людьми дело иметь, и получается идеологическое расхождение до искрения с распоредителем кредитов, моя оценка гонарар должен быть ногой по яйцам, а у него понять, восхитится, заплатить и посажалеть, что мы опять были не готовы :((
Saturday, February 20th, 2016 04:01 am (UTC)
Этот вид обречён на ужас без конца и ужасный конец, коллега. Если это помнить каждый момент времени, и предельно ясно отличать свой вид от их вида, нервы сохранятся гораздо лучше чем в холодильнике.
Friday, February 19th, 2016 11:26 am (UTC)
Какая-то, на мой взгляд, каша в голове у автора. Я, конечно, ни хрена не программист в смысле специализации, но мне кажется его узкая специализация и подвела. Бросается из стороны в сторону, не охватывая общего и сам себе противоречит.
Friday, February 19th, 2016 08:18 pm (UTC)
А как без каши в голове с тараканами можно уместить в 4К машинных слов шахматную программу?!?! Джава тут просто противопоказана!
Friday, February 19th, 2016 09:25 pm (UTC)
Машинные коды это круто! Вот в программируемые калькуляторы типа МК-52 умудрялись шахматные программы всовывать (правда урезаные сильно конечно) а там 105 шагов (байт) программная память + десяток регистров с плавающей запятой всего!
(Anonymous)
Friday, February 19th, 2016 06:27 pm (UTC)
глядя на новые WIN10 с АЙосями

Году в 1996м, одного моего знакомого попросили переписать кое-что на макинтош.
Продравшись через список функций API, он долго ходил с удивленным видом и рассказывал, что "в этой странной системе есть не меньше шести способов вывести на экран окно с текстом".
Friday, February 19th, 2016 08:15 pm (UTC)
А картинку ещё большим количеством способов :) читал Inside Macintosh и балдел просто или оболдевал :)) но коробка с зинк паскалем до сих пор на полке стоит, душу греет, при таких погодах мерзких это приятно.
(Anonymous)
Friday, February 19th, 2016 10:37 pm (UTC)
Раз уж воспомянули ЕС-эпопею с ее "однообразно, но несколько безобразно".
Богатейшая, но увы, проблематичная к подробному изучению тема "советские военные бортвычислители во всем их разнообразии".
Несмотря на деятельность аргоновцев (А-15 ставили самые разные КБ довольно много куда) во многих наших прославленных КБ и НПО вырастали собственные отделы конструирования ВТ, творившие кто в лес, кто и по дрова.
Вот где не хватало хоть минимальной стандартизации и упорядочения.
Правда, надо заметить, что у верпротивника стандартизированная архитектура была только в ВВС. Армия и флот оставили за собой полную свободу действий.
Friday, February 19th, 2016 10:44 pm (UTC)
Ну с ЕС девиз был скорее — пуская безобразно, лишь бы Единообразно!
Friday, February 19th, 2016 07:45 pm (UTC)
Дискуссия очень интересная получилась! Особенно для тех, кто умеет мыслить системно.
Я вижу довольно любопытную картину, однако, вполне предсказуемую.
Моно ли из предсказуемости извлекать какую-то пользу, на сейчас это меня, правда, больше интересует.. )
Friday, February 19th, 2016 08:16 pm (UTC)
Да, только жаль только сейчас с работы приехал, суеты много было, не очень получилось поучавствовать.
Saturday, February 20th, 2016 12:40 am (UTC)
И, заодно добавить бы.
Михаил Владимирович Донской (8 августа 1948 — 13 января 2009).
Сама статья опубликована 20 августа 2008.
Saturday, February 20th, 2016 12:49 pm (UTC)
Статья интересная, но далеко не со всем сказанным я согласен.
Программирование из высокой науки превратилось в ремесло - да, это нормальный и естественный процесс.
Машинные коды (или даже ассемблер) - вершина мысли? Ну уж нет, увольте... Это все равно, что требовать построить дачный дом при помощи только одного топора. Тем более, что Михаил Владимирович сам далее пишет, что они, еще в *те* годы начинали разработку с создания собственных операционных систем и инструментальных средств. Т.е., будучи профессионалами, свое время они ценили и хотели его использовать максимально продуктивно. А отсюда уже один шаг до создания переносимых программ, т.е., программ, написанных на ЯВУ (языке высокого уровня), в которых на ассемблере пишутся только небольшие куски кода.
"специализированного (для проекта) языка программирования, включавшего специфичные структуры и классы данных и базовые процедуры" - вообще-то это библиотеки. Просто реально крупные проекты (миллионы строк кода) почти всегда начинаются, как мелкие (или даже побочные), и где-то с версии 1.0 встает проблема рефакторинга - переписывания внутреннего программного интерфейса (API) так, чтобы он удовлетворял изменившимся требованиям. И вот в этом случае реально нужен хороший системный архитектор, который сможет разделить сущности с учетом перспективы развития. Потому что любая ошибка на этом этапе - это склад костылей в ближайшие годы.
"разбить процесс создания большой системы на проекты, выбрать для них инструментарий, подобрать исполнителей, суметь их проконтролировать и, в конечном счете, обеспечить работоспособность созданной системы" - у нас это называется главный конструктор. :) Инструментарий он, правда, не выбирает, но за совместимостью следит.
"усилиями крупных фирм по созданию программного обеспечения, в первую очередь, усилиями Майкрософта, этот процесс стандартизовался" - я лучше промолчу.
"Однажды я работал с «юниксоидом», делавшим серверную систему для салона игровых автоматов. На все мои требования сделать возможной выдачу статистики игр, он отвечал, что это уменьшает безопасность системы" - совершенно резонно, кстати. Вероятно, парень имел в бекграунде курс по безопасности информации. А там на первой же лекции объясняют (должны объяснять), что человеческий фактор программно не может быть исключен.
"В моей молодости обучение программированию в институтах было вообще смешным – изучались только синтаксисы разных языков" - ничего не изменилось.
"Они не понимают, что если заказчик меняет требования к уже почти готовой системе, это означает, что система ему нравится" - это означает, что системный архитектор (или project manager) недоработал. Мелочевку типа размера кнопок или еще одной формы для печати в расчет не берем. Если заказчик хочет получить еще одну сущность, реализуемую внутри принятой парадигмы и возникшую уже после подписания ТЗ - то все нормально. Ну, относительно нормально. А вот если вопрос стоит так, что надо изменять "специализированный язык"... А если серьезно изменять?
"изначально в нее (программу) должна быть заложена эластичность, без которой вносить изменения в программу будет крайне сложно" - я это называю масштабируемость. Масштабируемость - это не просто возможность выполнять на трех АРМ программу, написанную для двух АРМ. Это еще возможность добавлять в протокол взаимодействия разных программ новые возможности, которые не потребуют принципиальной переработки всех программ.

Ну и насчет ОС. Количество людей, которые в принципе могут создать новую ОС, на Земле не изменилось. Просто раньше считалось, что программист - это тот, который написал свою ОС или свой язык программирования, а еще лучше - ОС, для которой придумал и реализовал ЯП. Сейчас программист - это человек, который может набрать в редакторе "echo \"hello, world!\"".

Edited 2016-02-20 12:51 pm (UTC)