Здравствуйте, netch80, Вы писали:
N>"Научился использовать современные железки" вообще не относится к этому сравнению.
N>"Быстрее" — точно быстрее, если сравнить на _одинаковом_ железе? Или просто всё вокруг стало быстрее, от процессоров до SSD?
Точно быстрее. Иначе все бы ставили MS SQL 6 на новое железо. Но сама по себе постановка вопроса не корректна. Для того чтобы задействовать возможности нового железа уже нужны новые версии софта. Например, MS SQL 6 просто не умел использовать память за пределами первых 2 Гб.
N>Компьютеры появились в 1940-х в виде, близком к современному. Первый компьютер на архитектуре "хранимой программы", обычно называемой фоннеймановской — EDSAC — сделан в 1949 — до середины века.
Первый компьютер и "писались программы" — это две большие разницы. Смягчать тут просто не чего. Первые компьютеры вообще программировались в машкодах и только своими авторами.
N>OS/360, тот проект, по мотивам которого написан знаменитый "Мифический человеко-месяц", стартовал в 1964 и закончен в основе в 1966 (хм, таки быстро).
Тебе придется признать, что 1966-й — это совсем не середина прошлого века. Это уже почти 70-й год о котором мы и говорил. И 70-м начался реальный прогресс в области разработки ПО. Шел довольно долго и только в 2010-х пришел к тому, что можно называть современным уровнем.
70-е года — это были года развития языков программирования и компиляторов. Писать софт большими командами тогда было невозможно просто из-за отсутствия необходимого дял этого ПО. Ну, или производительность у подобных команд была ниже плинтуса.
N>Читаем оттуда же у Брукса:
N>Мое профессиональное становление в вычислительной технике первоначально было связано с программированием, однако в период 1956–1963 годов, когда разрабатывались автономные управляющие программы и языки высокого уровня, я занимался
Я для тебя специально жирным выделил. И 1956-й — это уже тоже не совсем середина века.
N>То есть на 1956 уже можно отнести вполне себе разработку ПО.
К начальным стадям на которых не что не задумывались о разработке ПО тысячными коллективами, а думали о том как с машкодов съахать на ассмеблеры, а с них на высокоуровневые языки. Если просто посмотреть на языки тех времен, то сразу поймешь какое они были говно и что на них можно было делать.
И того компьтеры появлись где-то во второй половине 20го века. До 70-х годов шло их становление и разработка языков высокого уровня. Первая пародия на систему контроля версий была создана в 1972. Но это была локальная система для IBM-мовских мэйнфрэймов. Публично ее зарелизили только в 1977 г. Реальное их развитие началось где-то в 80-е. В это же время были придуманы ООЯ и т.п. Причем вещи вроде сборочных конвейеров были придуманы еще позже, так как на мэйнфрэймах они вообще не имели смысла. Эволюция тех же систем контроля версий проходила банально на моих глазах. Еще в середине 90-х это было сташное говно плохо работающее по стеи. О каких тысячах разработчиков можно говорить в таком случае? Сотня то уже упиралась в их качество, а нормально их использовать можно было только на коллективах из десятков человек. CVS — 1990. Subversion — 2004. GIT — 2005. Причем до народа тот же гит доехал куда позже. И даже сейчас, на объемах реального коммерческого продукта GIT дико тормозит. MS сделал даже специальную версию гита с виртуальной файловой системой, чтобы можно было использовать подход Монорепы.
N>Ну или для тебя 1956, 1966 уже не середина прошлого века — ну тогда начни писать на русском языке ;\ а то на каком это не середина века, мне непонятно.
Конечно! Середина это 1950 год в который в реальности просто не было компьютеров у людей. Их только только налаживали к выпуску. Ни о какой разработке больших систем и речи в те времена идти не могло. А 1966 — это уже почти 1970, который ни при каких условиях к середине 20го века не отнесешь. А главное, что то, что что-то появлись в 1966м не значит, что это что-то попало в общественное пользование.
N>Спойлер: над OS/360 работало больше тысячи человек — явно указано в книге. А то и больше:
N>N>С 1963 по 1966 год на ее проектирование, реализацию и написание документации было затрачено, вероятно, около 5000 человеколет.
IBM — это были пионеры, которые до этого еще на механических машинах умудрялись не хилые объемы данных обрабатывать. Не надо выдавать единичный случай за общую практику. Ну, и производительность труда у них была по нашим меркам (нашим временам) никакая. И было это так именно из-за отсутствия необходимого софта. Они в общем-то и родили предков этого самого софта. Первая система контроля версий как раз и была на коленке для OS/360 сделаны в 1972 году. А до этого они без них обходились. Причем это была внутренняя тула IBM, т.е. для всего мира она не существовала. А зарелизили они ее в 1977м году, т.е. практически в 80-х когда и пошло эволюционное развитие систем управления разработки софтом и не закончилось и по сей день.
Ну, и эти 5000 человеколет это не были именно часы тех кто над софтом работал. Они нагревали атмосферу! Архитекторы проектировали на бумаге. Техрайтеры печатали на печатных машинках с рукописей. Сикретутки вбивали перфокарты. Операторы печатали распечатки на принтерах, ставили одни пленки, снимали другие. Отдельные программисты писали подпрограммы и ставили их в очередь на запуск. Ну, и производительность труда соответствующая. По современным меркам это примитивная ОС создавалась не реально раздутым коллективом.
То что они сделали обычные фирмы стали повторять только через десятки лет. Я лично видел как писался код в Госплан СССР, так как мой отец там работал. Они про системы контроля версий и не знали. А когда у них появились первые Писюки они просто визжали от счастья, так как программы стало возможно компилировать, запускать и получить результат сразу, а не записавшись в очередь и получив распечатку на следующий день. Сраный писюк поднял производительность программиста в сотни раз, так как программирование стало интерактивным процессом.
Читая разных Бруксов ты даже представить не можешь как они там в реальности работали.
N>5000/3 ~= 1667, а учесть неравномерность — в пике до 2000, наверно.
А что это за "3"?
Ну, так нулевая эффективность. О чем я тебе и говорю. Пробовать то такими коллективами что-то тварить можно было. Но результат плачевный. По современнм меркам это мелкая система.
В общем, околонулевая, да. Были б у них современные средства сделали бы тоже самое в десятки, а то и сотни раз быстрее и проще.
N>И технология такая была и есть — называется "человеческий разум" со вспомогательными технологиями типа "декомпозиция", "спецификация интерфейсов", "прототипирование" и ещё много других, известных сейчас. Может, для кого-то это и новость
Я главное выделил. Вот тогда только декомпозиция и знали, а банальной системы контроля версий не было. Народ экспериментировал в области ЯП. Только только от машкодов ушли. Люди уже понимали, что, например, кодом нужно управлять, но как — было не известно. SCCS — ту самую систему контроля версий — разработали только для System/370. System/360 писали без нее. Естественно испытывали боль. Два программиста уже один исходник поправить не могли. Интерактивности разработки не было. Ты должен был отдать свою программу операторам и те поставят ее в очередь. А результат на распечатке, на следующий день (а то и через неделю, если тебе время не выделили).
N>Тут интересно то, что Брукс говорит про "грубую силу" — эффективность такого комбината, наверно, была на порядок-два ниже современных. Но основы были заложены именно тогда — анализ разработки данного проекта заложил всю программную индустрию на десятилетия (IBM не стала скрывать эти детали, к счастью).
Да основы наверно были заложены еще теми кто мануфактуры придумал в 14 веке, а так же Генри Форд, когда придумал конвейер. Но одно дело основы, а другое готовые методологии и софт. А мы то сравнивеем не пионеров, а говорим о разработке ПО как об индустрии.
N>Это факт одного отдельно взятого Госплана, который тут скорее антипример.
Да все так работали. Мой отец был начальником отдела. В подчинении у него было где-то 10-20 баб. Но ты думаешь они писали софт? Вот их когда человекочасы считали, то учитывали не только их но еще операторов машинного зала и прочих вахтеров (коими там милиция выступала). У них был WANG на котором наверное какую-то отчетность писали. У них потом ПК повились на которых эта орда баб развлекалась.
N>Я видел работу (сам не работал — ещё был совсем мал) работу киевского НИИ цен (подчинён Госплану? Госснабу? уже неважно) и чуть меньше — НИИ нефтехимии в 1984-1986. Перфокарты — только для особых режимов. Диски для основного софта и данных. Ленты для переноса данных между участниками процесса (а иногда и диски — но тут хуже с совместимостью).
Ну, к 1986му в Госплане уже писюки появились, а перфокарты действительно стали отходить. Но в 1981м, когда я ходил в первый класс, блин, еще во всю использовались и у нас дома в комнате родителей стоял Лейпциг (стенка мебели во всю стену) верхние шкафы которой были заставлены перфокартами. Потом я их в школу относил, чтобы из них делать разного рода карточки со словами и рисунками.
N>И у нас было две "IDE" для редактирования любых текстов на дисплеях (дисплеи были — 4 штуки 7066 на ЕС1022 в Ценах и 8(?) штук 7920 на ЕС1033 в Нефтехиме) и запуска системных команд — примерно как сейчас из vim можно запускать команды — питерская JEC и киевская Вектор. Вокруг была больше знаменита московская Primus, но у нас в тех двух точках её почему-то не было.
Дисплеи были, но почему-то их особо для ввода программ не использовали. Стояли себе рядом с машинным залом. На них даже световые перья были. Вот только сделать с их помощью было ничего не льзя. Так только ребенку по экрану поводить.
N>И это провинциальное ведомство. А уж центральный Госплан... В таком богатом ведомстве "загружать с перфокарт"... Ну или ты работал в каком-то дохлом НИИ подчинённом пятому помощнику заместителя третьего дворника — это вероятнее всего — и ваша работа реально никому не была нужна.
Я тогда не работал. Работал мой отец. Но точно знаю, что загружали именно с перфокарт. А дисплеи эти почеу-то простаивали.
Просто реальность такова, что все огромные коллективы (причем не только у нас, но и у них) в реальности грели воздух! А работали в реальности одиночки или коллективы из нескольких десятков человек. А далее пошла эра ПК и до мэйнфрэймов первые годы им было как до луны. Все сильно деградировало. Те же системы контроля версий изобретались по новой. CVS появился в 1990м году!
N>Что общение софтом было слабым — факт — всё держалось на личных связях. Но всё остальное что ты пишешь — какой-то лютый гон с обобщением личного опыта на весь космос, который не подтверждается как минимум моими данными и наверняка ещё нескольких современников (вон интересно, что Privalov вспомнит).
Нет, просто ты начитался Брукса и думаешь, что то что он рассказывает было везде и всегда. А он писал об истории развития компьютерной техники. О пионерах. О том как делали лутую херню за бешенные деньги! Но и ее покупали потому как другой не было. Наше развитие всегда шло с отставанием. Наши ЕС — это и были копипасщенные IBM-ы с отставанием лет на 5. А эти огромные коллективы ни хера не делали. Работали в них одиночки и мелкие группы. НИИ цен? Сейчас это даже звучит смешно. Задачу вычисления оптимальной цены невозможно решить и сейчас. А главное ее просто не надо решать. Надо просто повышать цены на то, что пользуется излишним спросом пока цена не уравновесит предложение. Коммунисты занимались лютой херней!
N>Они спорны, и я их обсуждаю с EM, но твой метод участия тут точно не сработает.
Нет, нет. Я пример привел. Он это утверждение четко опровергает. Значит утверждение ложно. Других вариантов нет.
То что сегодня не обязательно писать идеальное по производительности ПО не означает, что его не пишут. Это всего лишь вопрос выбора приоритетов. Если производительность важна и за это платят, то софт будет быстрым. За эти десятки лет изобретены более быстрые алгоритмы. Софт адаптирован к более быстрому железу (чтобы иметь возможность использовать его преимущества). При прочих равных я всегда выберу оптимальный по производительности подход. Вопрос лишь в том стану ли я тратить б
ольшие ресурсы на оптимизацию, если производительности и так хватает. На выписывание и оптимизации может уйти много времени. Зачем его тратить, если и у пользователя и более простое решение не взывает нареканий? А ты берешь какой-то частный случай и делаешь на его основе общий вывод — "Софт не становится лучше". Становится еще как! Просто не всегда быстродействие критерий качества.