Сообщество - Типичный программист
Добавить пост

Типичный программист

995 постов 6 262 подписчика

Популярные теги в сообществе:

Восстание компьютеров? Уже было в советское время

«ДВК 2М» – так назывался аппаратный комплекс, на котором создавалась программа «Расчет зарплаты». Для своего времени это был суперкомпьютер. Во-первых, он был персональным. Вполне приемлемого размера, помещался на стол. Во-вторых, у него было огромное быстродействие – целых 10 или 20 тысяч операций в секунду. Да-да, тогда быстродействие измерялось не тактовой частотой процессора, а именно операциями с двоичными числами. И в-третьих, у него было ОЗУ довольно большой емкости – целых 64 килобайта. Туда спокойно помещалась операционка, программа Бейсик, текст прикладной программы и ее данные. Чего в ДВК не было – так это винчестера. А значит, и записанной на нем операционки. К системному блоку прилагался болгарский сдвоенный дисковод размером 5,25 дюйма. В верхний слот я вставлял дискету с операционной системой и бейсиком. А в нижний – дискету с прикладной программой и данными. Компьютер был отечественный, но сильно продвинутый. Поэтому он зависал и перегружался не чаще двух раз в день. При перезагрузке пропадали не только операционка в ОЗУ, но и, скажем, набитый за пару часов в бейсике текст новой программы. Помню, как долго я не мог прийти в себя, когда в обед компьютер завис и унес в небытие пять страниц готовой программы! Как я в ужасе бегал вокруг стола и думал, что «ну должен же где-нибудь остаться хоть какой-то след от такого серьезного труда!». Но, увы, след оставался только в моем мозгу. Именно тогда я впервые столкнулся с таким интересным феноменом: написанная повторно по памяти программа была всегда лучше прототипа! И короче, и работала быстрее.

Со спонтанными перезагрузками ничего нельзя было сделать. Более того, мы искренне радовались, что они не такие частые, как на больших машинах. Например, перезагрузки на ЕС ЭВМ случались раз в полчаса-час и считались нормой! Так вот, для того, чтобы не терять новую программу при каждой перезагрузке, нужно было ее периодически сбрасывать из ОЗУ на дискету. Но. Тут-то и начиналось самое интересное. Болгарский дисковод записывал программу на дискету. Иногда. Но не всегда. Чаще он шипел, трещал, свистел, но... не записывал! Через минуту шипения и свиста появлялось страшное сообщение «Write failure error» и можно было переходить к новой попытке. Иногда, после трех-четырех попыток, файл все-таки записывался. Однако не было никакой гарантии, что он прочитается! «Read failure error». Это было не менее ужасное и не менее редкое сообщение системы. И вот бывает, сидишь ты за компьютером, в конце рабочего дня, смотришь на листинг программы на экране и пытаешься ее хотя бы запомнить. Потому что записать ее не получается. Ну никак! Это ужасное чувство, думаю, напоминающее то, которое должен испытывать человек, бегущий за последним вагоном электрички, уже коснувшийся поручня, и вдруг осознающий, что поезд ушел.

Водоканал, для которого я писал программу, закупил сразу пять ДВК с болгарскими дисководами. Мы с девочками из бухгалтерии пытались найти среди них тот, который бы записывал и считывал файлы наилучшим образом. Дисковод, более надежный, чем другие, ценился на вес золота. Мы предпринимали различные способы улучшить работу болгарских дисководов. Особой популярностью пользовался такой способ. Покупался настольный вентилятор. Он ставился в коробку из-под бумаги. В коробке вырезались две большие дырки. Одна – для поступления воздуха. А вторая, квадратная, для болгарского дисковода. Он устанавливался в эту дырку и интенсивно охлаждался потоком воздуха. Кто-то свято верил в такие «усовершенствования», я же считал, что это все равно, что камлать на бубне – никакой гарантии. 50 на 50: или запишет, или нет. Вот тогда-то во мне и зародилось первое глубокое сомнение в братстве народов, СЭВ1 и целесообразности социалистического пути развития. Боже мой, как же я проклинал братьев болгар – криворуких безжалостных убийц моего времени!

Операционная система, которую мы тогда использовали, называлась RT11SJ. Загружалась она секунд десять и записывалась на диск в виде пары файлов. В отличие от MS DOS, которая появилась чуть позднее, операционка эта обладала намного большим количеством удобных команд. Например, могла выдавать список файлов с подкаталогами, а DOS не умел этого делать! «Убожество» – вот первое мое ощущение от использования DOS. Однако мы все-таки перешли на DOS окончательно и бесповоротно, когда поняли, что под ней «идут» все новые программы и игрушки, а программ для RT11 становится все меньше.

64 килобайт в ОЗУ и 250 килобайт на каждой дискете делали процесс написания большой программы весьма увлекательным. Программисту требовалась определенная сноровка, чтобы правильно разбить программу и данные на части и заставить их успешно взаимодействовать. Программа расчета зарплаты «Роза» работала так. Сперва в оперативную память загружалась система. Потом Бейсик. Потом Главная программа. Она просила вставить в нижний дисковод дискету № 1 с данными цеха 1 за январь 1989 года. Расчетчица могла отредактировать данные работников, ввести табель и посчитать зарплату за месяц. После этого, если дисковод работал, ей даже удавалось сохранить результаты расчета! Если она хотела их распечатать, Главная программа просила вставить диск с Программой для печати, потом диск с данными цеха, потом диск с Главной программой. Потом вставлялась дискета номер 2 для цеха номер 2, и так далее – до диска номер 42. 42 цеха было в Водоканале. И ни разу нам не удалось рассчитать их все. Или болгарский дисковод перегревался и останавливался (зачастую – уже навсегда). Или расчетчица что-то путала и записывала на диск номер 2 данные цеха номер 17. И неделю, матерясь, их восстанавливала. А что делать – дискет для архива просто не было! Или, если все шло хорошо, в каком-нибудь 27-м цехе обнаруживались новый вид расчета или ошибка в алгоритме, и все приходилось начинать заново! Помню, что благодаря тому ужасу, который вызывала необходимость дойти с такой технологией «до конца», все-таки было принято разумное решение принять программу у программистов по акту на примере двух цехов. После чего девочки продолжили считать зарплату в бумажных расчетных ведомостях, вплоть до того момента, пока программа не заработала надежно на «Искре-1030».

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

Восстание компьютеров? Уже было в советское время Программирование, Программист, IT юмор, Длиннопост
Показать полностью 1

Интерфейс для сайта или приложения за минуту

Новый сервис помогает создавать интерфейсы по запросу. Просто напишите, какой компонент вам нужен, и сервис сгенерирует его за считанные секунды.
Сгенерированные элементы можно легко изменить. Затем вы можете просто скопировать сгенерированный код React и вставить его в свой проект.

Попробовать сервис — тут.

Источник мой Телеграм паблик: https://t.me/thefutureidol

Показать полностью

Stable Audio

Stable Audio — первый продукт Stability AI для создания музыки и звуковых эффектов. Пользователи могут создавать оригинальный звук, вводя текстовую подсказку и продолжительность, создавая высококачественный стереозвук с частотой 44,1 кГц. Он использует скрытую диффузию для аудиомодели, обученной на данных AudioSparx, ведущей музыкальной библиотеки.

Сижу как по кайфу

Сижу как по кайфу IT юмор, Программист, Программирование

Вот он, нормальный канал про юмор в IT! Источник.

Показать полностью 1

Как я стал программистом

– Твою мать, – крик раздался прямо из кучи.

Вася с трудом выбрался из свежего серого бетона, весь грязный и мокрый. Отряхнулся, как мог. Стукнул по кузову самосвала кулаком. Еще раз выматерился. И побежал в сторону корпуса № 5. Там был душ. Мы с сочувствием посмотрели ему вслед и снова взялись за лопаты.

В то лето я, студент второго курса строительного факультета института, впервые попал на стройку. В составе стройотряда в 30 бойцов. Нашей задачей было строительство бетонных проездов на огромном химзаводе.

Каждый день мы вставали в 7 утра, чтобы прошагать 4 километра от нашего общежития до столовой. После завтрака отправлялись на рабочее место. Надевали каски и брезентовые перчатки, брали в руки лопаты и ждали первый самосвал с бетоном. Жидкий бетон возили в кузовах ЗИЛов объемом 2,4 кубометра. Три замеса по 0,8 куба. Замесы из гравия, песка, цемента и воды делали бойцы другого стройотряда на бетонно-растворном узле неподалеку.

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

Кучу бетона нужно было быстро разбросать по щебеночной основе – за 30–40 минут, пока бетон не затвердел. Застывший бетон отгребали в сторону бульдозером, а за порчу материала удерживали из зарплаты. Мы работали бригадами по 4 – 5 человек. Налетали на вязкую кучу как муравьи и раскидывали ее по проезду метров на 5 – 7. После чего протаскивали по бетону виброрейку, выравнивали поверхность. Посыпали готовое полотно стружкой, поливали водой, чтобы застывающий бетон не растрескался. И садились на бордюры. Ждать следующий самосвал.

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

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

Однако там я познакомился и с изнанкой строительной профессии. В те времена не было никаких GPS-навигаторов и программ управления автотранспортом. Количество рейсов, которые сделал самосвал, бригадиры бетонщиков вручную отмечали в транспортной накладной водителя. Реальное количество рейсов и то, что попадало в накладную, различались: бригадиры приписывали рейсы. В благодарность водители «не заруливали» с бетоном на сторону, а везли его сразу на стройплощадку.

Да, некоторые самосвалы приходили на четверть пустыми. Жидкий бетон был нужен не только на химзаводе. Из него получались прекрасные фундаменты и дорожки на дачах у садоводов, поэтому нечистоплотные водители шабашили – везли часть бетона в дачные товарищества.

Воспитанный на фельетонах из журналов «Крокодил» и «Фитиль», я вживую наблюдал то, что считал глубоко неправильным и с чем мне пришлось бы мириться или бороться после вуза.

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

Ладно, это бетон. Мы не могли повлиять на его качество. Но то, что происходило дальше, было не лучше. В целом не соблюдался ни один технологический размер. Толщина бетонного полотна — 15 сантиметров. Это в теории. На практике толщина колебалась в значительных пределах: от 5 до 50 сантиметров. 50 сантиметров получались, например, тогда, когда мы отставали от плана с объемами. План в Советском Союзе надо было выполнять, несмотря ни на что. В противном случае объявлялся аврал. И самосвалы с бетоном все шли и шли, с раннего утра и до полной темноты. Но готовых щебеночных оснований не было, и бетон лили прямо на землю. Потом боковины у таких проездов присыпали землей, и со стороны казалось, что все классно.

Если же щебень был плохо выровнен или его было слишком много, никто не парился, чтобы привести все в норму. Бетон лили на то основание, что получилось, и толщина полотна тогда оказывалась очень небольшой, около 5 сантиметров. Мы старались надежно оградить такой участок, чтобы по нему не пустили КАМАЗы до тех пор, пока бетон полностью не затвердеет. Через 28 дней, когда бетон набирал крепость, проезд мог выдержать приемку работ, а там — хоть трава не расти. Ремонт некоторых проездов начинался уже через пару месяцев после завершения строительства.

Это, значит, толщина полотна. Но с его шириной и расположением ситуация была не лучше! Ширина полотна плясала на 5–7 сантиметров. На такие мелочи никто не обращал внимания. Лента бордюров в некоторых местах напоминала кардиограмму. Глядя на нее, можно было сказать, что дорога «приболела». Угол 90 градусов получался далеко не на каждом перекрестке. Да и по высоте полотна на пересекающихся участках зачастую не совпадали.

Все это не являлось проблемой конкретной стройки – это была проблема всей строительной отрасли времен социализма. Главным для каждого рабочего, бригадира, мастера и прораба был вал. Объем работ. Качество соблюдалось ровно настолько, насколько требовалось, чтобы сдать работу.

Через год я побывал еще в одном стройотряде. Теперь уже в роли его командира. Увидев, как мой бригадир, студент 3-го курса, делает фундамент под оборудование, я окончательно понял, что стройка – это не мое. То, что получилось у него, стояло немного «не там». «Ерунда, поставят они свой станок на десять сантиметров правее». Технологические отверстия были вполовину от требуемых. «Да кто будет их измерять?! Главное – они есть». И формой фундамент напоминал валенок вместо прямоугольника. «Ну да, пара досок опалубки отвалились под весом бетона. Но это не страшно, все равно эту дуру в монолитном полу не будет видно». Для меня это был просто кошмар. Я хотел делать работу так, как было описано в учебниках: хорошо, качественно, на совесть. На реальной стройке тогда это было невозможно.

Осенью после этого стройотряда меня посетил самый настоящий экзистенциальный кризис. Я был так разочарован тем, чем мне предстояло заниматься всю оставшуюся жизнь, что решил бросить стройфак. Завербоваться «на севера». В советские времена везде требовались неквалифицированные рабочие руки. Можно было поработать на нефтяных скважинах. Или на сейнере. Я купил пару газет с объявлениями, сходил на сборочный пункт. Написал заявление и прошел медкомиссию. Пора было ехать. И тут я решил рассказать все своему другу Руслану.

– Ты уверен, что обязательно нужно бросать институт? Ты представляешь, что делается «на северах»?

– И что же?

– Там реально некуда пойти после работы. Кругом только снег. Мужики бухают по-черному. Пара лет – и ты рискуешь просто спиться.

– А какие еще варианты? Стройка – это не мое, меня просто мутит от того, что я там увидел.

– Ладно. Тебе не нравится стройка. А что тебе нравится?

– Хороший вопрос. Математика мне нравится. Но больше всего мне нравится программировать. Помнишь, на втором курсе у нас было программирование? Я тогда половине группе программы написал.

– Ну так и сходи к завкафедрой, который вел у нас программирование. Расскажи о том, что тебе нравится. Я знаю студентов, которые работают лаборантами. Может, и тебе работа найдется. А на Север ты всегда успеешь.

– А почему бы и нет? – сказал я. И сразу же пошел на кафедру прикладной физики и химии.

Удивительное дело, им как раз требовался лаборант. Узнав, что я хочу писать программы, меня тут же взяли на ставку. 90 рублей в месяц студенту очного отделения, когда инженер с дипломом получал 118 рублей! У социализма были и свои преимущества. Зарплата неквалифицированного персонала позволяла нормально жить.

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

Котел занимался утилизацией тепла после какого-то химического процесса. Внутри огромного цилиндрического строения высотой

с 20-этажный дом вдоль внутренних стен проходили трубы. В них текла вода. В котел поступали газы из другой огромной установки. Моя задача была смоделировать в программе на языке Фортран процесс теплообмена в трубах котла. Так, чтобы на модели можно было испытать разные режимы работы котла и подобрать оптимальный. Тот, при котором отбор тепла стремился бы к максимуму, а отложения пыли на стенках труб – к минимуму.

Все, что сделал мой научный руководитель, доцент кафедры прикладной физики и химии Александр Иванович, с целью мне помочь, – показал дорогу в библиотеку. Там я и нашел кучу литературы по гидравлике, в которой описывались процессы движения жидкостей и газов в трубах. Пришлось изучить ламинарные и турбулентные потоки и, конечно же, число Рейнольдса. Но самое удивительно было то, что в библиотеке нашлась тоненькая книжица зарубежного автора, в которой были приведены системы линейных уравнений для моделирования потоков в… теплообменниках котлов!

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

Шел 1985 год. В богатом нефтяном институте был свой вычислительный центр, оборудованный большой машиной EC ЭВМ серии 1022. Он находился в главном корпусе в северной части города, а я учился на стройфаке этого вуза в южной части. Всего час на общественном транспорте между корпусами. В течение рабочего дня я писал программу. На листе формата A4. От руки. Красивым шрифтом и без помарок. Если где-то ошибался, то замазывал неверную строку корректором и писал заново. Вечером отвозил листки с кодом в вычислительный центр. Сдавал их в специальное окошечко. Девушка-приемщица улыбалась мне, забирала листочки и несла их операторам. Операторы переносили код с листочков на перфокарты, используя специальные устройства подготовки данных. На здоровых железных ящиках стояли клавиатуры, похожие на печатные машинки. Каждая строчка кода превращалась в перфокарту – прямоугольный кусочек картона размером примерно в четвертушку листа A4. На одной перфокарте помещалась строка кода длиной до 80 символов. Каждый символ представлял собой набор прямоугольных отверстий в нескольких позициях из 12 возможных в одном столбце.

Получив перфокарты, я сверял то, что получилось, с кодом и данными на моих листочках. Если были расхождения, у меня было два пути. Первый – отдать неверно набитые строчки на повторную перфорацию. Для этого мне надо было написать их заново на другом листочке, отнести их операторам и ждать еще день. Или же я мог использовать хитрый метод корректировки перфокарт, которому меня научил Александр Иванович. Состоял он в том, что неверный символ на карте исправлялся вручную. Для этого отверстия в неправильных местах заклеивались, а в правильных – вырезались лезвием для безопасной бритвы. По шаблонной перфокарте с полным набором символов. То есть примерно от 3 до 5 минут работы на исправление одного неверного символа. Понимаете, насколько сейчас все быстрее в части корректировки набора?

Как я стал программистом Программист, Программирование, IT юмор, Длиннопост

Хитрый метод корректировки перфокарт

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

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

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

И все было бы хорошо, если бы не желание шефа сделать из этого науку. Мне пришлось сесть за написание научной статьи. При этом я быстро освоил принятый на кафедре метод написания таких статей. Сейчас его назвали бы «Ctrl + C, Ctrl + V». А тогда это называлось компиляцией. Научная новизна возникала точно так же, как возникает новое блюдо у шеф-повара турецкого отеля. Утренний салат – из того, что не съели гости вечером. Моя просьба к шефу ‑ «Давайте не будем писать статью, тут, правда, нет ничего нового» – не возымела действия. Поэтому, чтобы написать новую статью, мне пришлось прочитать два десятка старых по теме. И подойти к материалу творчески.

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

– Что будем делать, Александр Иванович?

– Как что, ты не понимаешь?

– Доработаем формулу, чтобы учитывала и эту точку?

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

– Как это? Это же подлог.

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

С тяжелым сердцем я перенес точку туда, где она подтверждала формулу. Перед сдачей статьи в журнал меня удивила еще одна вещь. Список авторов. Он включал в себя пять или шесть человек. Двоих ‑ меня и моего шефа – я знал. Кто были остальные? Александр Иванович поморщился.

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

Я, конечно же, все понимал.

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

И пусть я недолго занимался наукой, но все же она оказала существенное влияние на всю мою жизнь. Я понял главное, читая научные монографии и рецензируемые журналы: прежде чем что-то сделать, нужно хорошо изучить то, что сделано до тебя другими. Мы карлики на плечах гигантов. Все, что нужно – проявить уважение к предшественникам. Это железное правило.

Показать полностью 1

Когда код запустился с первого раза:

Когда код запустился с первого раза:

Препарируем Feature Slices Design и находим родовые травмы

Стандартизированная декомпозиция, но..

- Распыление каждой бизнес-фичи по всему проекту.
- Нечёткие сомнительные правила.
- Тонны бойерплейта на синглтонах.
- Ограниченная масштабируемость и гибкость.

Поблагодарить, Обсудить.

Показать полностью

Препарируем Nano Stores и находим родовые травмы

Крайне малые размеры, но..

- Лишние вычисления и сайд-эффекты
- Медленная работа: и архитектурно, и по реализации
- Только статические зависимости с ручным приводом
- Нестабильность поведения

Поблагодарить, Обсудить, Бенчмарки, $mol_wire.

Показать полностью
Отличная работа, все прочитано!