Суть разработки программного обеспечения
— Нужно проделать 500 отверстий в стене, так что я сконструировал автоматическую дрель. В ней используются элегантные точные шестерни для непрерывной регулировки скорости и крутящего момента по мере необходимости.
— Отлично, у неё идеальный вес. Загрузим 500 таких дрелей в пушку, которые мы сделали, и выстрелим в стену.
Я занимаюсь программированием уже 15 лет. Но в последнее время при разработке не принято думать об эффективности, простоте и совершенстве: вплоть до того, что мне становится грустно за свою карьеру и за IT-отрасль в целом.
Для примера, современные автомобили работают, скажем, на 98% от того, что физически позволяет нынешняя конструкция двигателя. Современная архитектура использует точно рассчитанное количество материала, чтобы выполнять свою функцию и оставаться в безопасности в данных условиях. Все самолёты сошлись к оптимальному размеру/форме/нагрузке и в основном выглядят одинаково.
Только в программном обеспечении считается нормальным, если программа работает на уровне 1% или даже 0,01% от возможной производительности. Ни у кого вроде нет возражений. Люди даже гордятся, насколько неэффективно работает программа, типа «зачем беспокоиться, компьютеры достаточно быстрые»:
@tveastman: Я каждый день запускаю программу на Python, она выполняется за 1,5 секунды. Я потратил шесть часов и переписал её на Rust, теперь она выполняется за 0,06 секунды. Это ускорение означает, что моё время окупится через 41 год, 24 дня :-)
Наверное, вы слышали такую мантру: «Время программиста дороже времени компьютера». Это означает, что мы тратим компьютерное время в беспрецедентных масштабах. Вы бы купили машину с расходом 100 литров на 100 километров? Как насчёт 1000 литров? С компьютерами такое происходит постоянно.
Всё невыносимо медленно
Оглянитесь вокруг: портативные компьютеры в тысячи раз мощнее тех, что привели человека на Луну. Тем не менее, каждый второй сайт не может обеспечить плавную прокрутку страницы на 60 FPS на последнем топовом MacBook Pro. Я могу комфортно играть в игры, смотреть видео 4K, но не прокручивать веб-страницы! Это нормально?
Почтовому приложению Google Inbox в браузере Chrome от той же Google, требуется 13 секунд, чтобы открыть письмо среднего размера.
Он ещё анимирует пустые белые формы вместо того, чтобы показать их содержимое, потому что это единственный способ анимировать что-то на веб-странице с приличной производительностью. Нет, не 60 FPS, а скорее «настолько быстро, насколько возможно на этой странице». С нетерпением жду, что же веб-сообщество предложит, когда дисплеи 120 Гц станут мейнстримом. Они еле справляются с 60 Гц.
Обновление Windows 10 занимает 30 минут. Что можно делать так долго? Этого времени достаточно, чтобы полностью отформатировать мой SSD-накопитель, загрузить свежий билд и установить его примерно 5 раз подряд.
Павел Фатин: Набор текста в редакторе — относительно простой процесс, поэтому даже 286 могли обеспечить довольно плавный процесс набора.
В современных текстовых редакторах задержка при наборе больше, чем в 42-летнем Emacs. Текстовые редакторы! Что может быть проще? На каждое нажатие клавиши, нужно всего лишь обновить крошечную прямоугольную область на экране, а современные текстовые редакторы не могут сделать это за 16 мс. А это много времени. МНОГО. 3D-игра заполняет экран сотнями тысяч (!!!) полигонов за те же 16 мс, а также обрабатывает ввод, пересчитывает мир и динамически загружает/выгружает ресурсы. Как так?
Тенденция такова, что софт вовсе не становится быстрее и функциональнее. Мы получаем более быстрое оборудование, на котором софт с теми же функциями ворочается медленнее, чем раньше. Всё работает намного медленнее максимальной скорости. Никогда не задумывались, почему ваш телефон загружается от 30 до 60 секунд? Почему он не может загрузиться, скажем, за одну секунду? Здесь нет никаких физических ограничений. Лично мне бы такое понравилось. Хочется, чтобы разработчики достигли предела, используя каждый бит для производительности.
Всё ОГРОМНОЕ
И ещё это раздутие. Веб-приложения могут открываться в десять раз быстрее, если просто заблокировать рекламу. Google умоляет всех прекратить тормоза с помощью инициативы AMP — технического решения, для которого не нужны какие-либо технологии, просто немного здравого смысла. Если удалить раздувание, интернет станет работать на сумасшедшей скорости. Неужели это сложно понять?
Система Android без приложений занимает почти 6 ГБ. Просто задумайтесь на секунду, насколько неприлично огромное это число. Что там, фильмы в HD-качестве? Думаю, в основном код: ядро, драйверы. Ещё какие-то ресурсы, конечно, но они не могут быть такими большими. Сколько же драйверов вам нужно для телефона?
Windows 95 занимала 30 МБ. Сегодня у нас есть веб-страницы тяжелее, чем эта ОС! Windows 10 уже 4 ГБ, то есть в 133 раза больше. Но разве она в 133 раза лучше? Я имею в виду, функционально они практически одинаковы. Да, у нас появилась Кортана, но я сомневаюсь, что она весит 3970 МБ. Но это Windows 10, неужели Android должен быть ещё в полтора раза больше?
Приложение клавиатуры Google как ни в чём не бывало съедает 150 МБ. Эта программа рисует 30 клавиш на экране — она правда в пять раз сложнее, чем вся Windows 95? Приложение Google app, в основном, просто пакет для Google Web Search, занимает 350 МБ! Сервисы Google Play, которыми я не пользуюсь (я не покупаю там книги, музыку или видео) — 300 МБ, которые просто сидят здесь и которые нельзя удалить.
После установки всех необходимых приложений (социальные сети, чаты, карты, такси, банки и т. д.) на телефоне остался всего 1 гигабайт для фотографий. И это вообще без игр и музыки! Помните времена, когда ОС, приложения и все ваши данные помещались на дискету?
Ваша программа для заметок наверняка написана в Electron и, таким образом, поставляется с драйвером для контроллера Xbox 360, умеет показывать 3D-графику, воспроизводить аудио и фотографировать с помощью веб-камеры.
Простой текстовый чат всегда славился скоростью и малым потреблением памяти. Так что Slack — это пример очень ресурсоёмкого приложения. Я имею в виду, что чат и текстовый редактор — это самые базовые вещи, они должны потреблять меньше всего ресурсов. Добро пожаловать в 2018 год.
Вы можете сказать, что они хотя бы работают. Но увеличение размера — не значит улучшение. Это значит, что кто-то потерял контроль. Мы больше не знаем, что происходит. Увеличение размера — это повышение сложности, снижение производительности и надёжности. Это ненормально и не должно считаться нормой. На раздутый размер нужно сразу обращать внимание — и держаться от них подальше.
Всё гниёт
Android-телефон на 16 ГБ был прекрасен три года назад. Сегодня под Android 8.1 он еле работает, потому что каждое приложение увеличилось минимум вдвое без видимых причин. Дополнительных функций нет. Они не стали быстрее и внешний вид не изменился. Они просто… раздулись?
iPhone 4s вышел с iOS 5, но едва может работать под управлением iOS 9. И это не потому, что iOS 9 намного лучше — в основном, система не изменилась. Но новое оборудование быстрее, поэтому они сделали программное обеспечение медленнее. Не волнуйтесь — вы получили захватывающие новые возможности, например… работа тех же приложений с той же скоростью! Не знаю.
iOS 11 прекратила поддержку 32-разрядных приложений. Это значит, что если разработчик не готов вернуться и обновить приложение, скорее всего, вы не увидите снова эту отличную программу.
@jckarter: Программу DOS можно заставить работать без изменений практически на любом компьютере, сделанном после 80-х годов. Приложение JavaScript может прекратить работу из-за завтрашнего обновления Chrome.
Сегодняшние веб-страницы не будут работать в любом браузере через 10 лет (а может и раньше).
«Нужно бежать со всех ног, чтобы только остаться на том же месте». Но смысл? Я могу постоянно покупать новые телефоны и ноутбуки, как все, но делать это лишь ради того, чтобы иметь возможность запускать все те же приложения, которые стали только медленнее?
Думаю, что мы можем и должны исправить ситуацию. Сейчас все разрабатывают программы для сегодняшнего дня, изредка для завтрашнего. Но будет неплохо делать вещи, которые работают немного дольше.
Хуже — значит лучше
Сейчас никто ничего не понимает. И не хочет понимать. Мы просто выпускаем полусырую ерунду, надеемся на лучшее и называем это «здравым смыслом для стартапа».
Веб-страницы просят обновиться, если что-то пошло не так. У кого есть время, чтобы найти причину неполадки?
Любое веб-приложение выдаёт постоянный поток «случайных» ошибок JS, даже на совместимых браузерах.
Вся архитектура баз данных веб/SQL построена на предпосылке (даже надежде), что никто не изменит данные, пока вы смотрите на открытую веб-страницу.
Большинство приложений для совместной работы сделали «как смогли», там масса типичных сценариев, когда они теряют данные. Видели диалог «Какую версию сохранить?» Сегодня планка так низка, что пользователи рады даже этому вопросу.
И нет, в моём мире не является нормальным приложение, которое говорит: «Я уничтожу часть твоей работы, только выбери какую».
Linux намеренно убивает случайные процессы. И всё же это самая популярная серверная ОС.
У меня каждое устройство регулярно выходит из строя так или иначе. Время от времени монитор Dell нужно аппаратно перезагружать, потому что в нём есть софт. AirDrop? Вам повезёт, если он обнаружит устройство, иначе что делать? Bluetooth? Спецификации настолько сложны, что устройства не будут устанавливать связь друг с другом, а периодические перезагрузки — оптимальный вариант.
И я даже не упоминаю об Интернете вещей. Это настолько за гранью разумного, что даже нечего добавить.
Я хочу гордиться своей работой. Я хочу делать рабочие, стабильные вещи. Для этого нужно понять, что конкретно мы разрабатываем, внутри и снаружи, а это невозможно сделать в раздутых, чрезмерно усложнённых системах.
В программировании такой же хаос
Кажется, что никто больше не заинтересован в качественных, быстрых, эффективных, долговечных, основательных решениях. Даже если давно известны эффективные решения, мы по-прежнему боремся с теми же проблемами: управление пакетами, системы сборки, компиляторы, конструкция языка, IDE.
Системы сборки по своей сути ненадёжны и периодически требуют полной очистки, хотя у них есть вся информация для инвалидации. Ничто не мешает сделать процесс сборки надёжным, предсказуемым и на 100% воспроизводимым. Просто никто не думает, что это важно. NPM уже много лет находится в состоянии «иногда работает».
@przemyslawdabek: Кажется, что rm-rf node_modules является неотъемлемой частью рабочего процесса в проектах Node.js/JavaScript.
А время сборки? Никто не считает проблемой, что компилятор работает минуты или даже часы. А как же «время программиста дороже»? Почти все компиляторы, пре- и постпроцессоры значительно, иногда катастрофически увеличивают время сборки, не обеспечивая пропорционально существенных преимуществ.
Вы ожидаете, что программисты будут принимать в основном рациональные решения, но иногда они делают прямо противоположное. Например, выбирая Hadoop даже если он медленнее, чем выполнение той же задачи на одном десктопном компьютере.
Машинное обучение и ИИ отбросили программное обеспечение к гаданию на кофейной гуще во времена, когда большинство компьютеров даже не были достаточно надёжными.
@rakhim: Когда приложение или сервис говорит «под управлением ИИ» или «на основе машинного обучения», я читаю это как «ненадёжное, непредсказуемое поведение, которое не поддаётся объяснению». Я держусь подальше от «ИИ», потому что хочу от компьютеров противоположного: надёжности, предсказуемости и логики.
Мы засунули виртуальные машины в Linux, а затем засунули Docker в виртуальные машины, просто потому что никто не смог разобраться с бардаком, который производят большинство программ, языков и их окружений. Мы накрываем дерьмо одеялами, чтобы не убирать его. Например, «единый бинарник» остаётся ОГРОМНЫМ преимуществом Go. Нет бардака == успех.
Окружающая среда Python настолько загрязнилась, что мой ноутбук объявили зоной экологической катастрофы.
Примечание. Агентство по защите окружающей среды Python хотело залить его цементом и захоронить с картинкой на входе — предупреждением для будущих цивилизаций об опасности использовать sudo для установки случайных пакетов
А зависимости? Люди бездумно ставят переусложнённые «полные пакеты» для простейших проблем, не думая о последствиях. Из этих зависимостей растут новые. В конечном итоге вы получаете дерево, которое является чем-то средним между фильмом ужасов (огромное и полное конфликтов) и комедией (нет причин, по которым мы добавили сюда эти пакеты, но вот они):
Программы не могут работать несколько лет без перезагрузки. Иногда даже несколько дней — это слишком. Происходят случайные глюки, и никто не знает почему.
Что ещё хуже, ни у кого нет времени остановиться и выяснить, что произошло. Зачем беспокоиться, если всегда есть другой выход. Поднять новый инстанс AWS. Перезапустить процесс. Удалить и восстановить базу данных. Написать скрипт, который будет перезапускать ваше сломанное приложение каждые 20 минут. Включить одни и те же ресурсы несколько раз: тяп-ляп — и в продакшн. Двигайся быстро, не трать время на исправление ошибок.
Это не инженерная работа. Это просто ленивое программирование. Инженерная работа предполагает глубокое понимание производительности, структуры и ограничений того, что вы создаёте. Лепить халтуру из некачественного материала — совершенно противоположное занятие. Чтобы развиваться, мы должны понимать, что и зачем мы делаем.
Мы застряли
Таким образом, всё это просто куча едва работающего кода, добавленного поверх ранее написанного едва работающего кода. Он продолжает расти в размерах и сложности, уменьшая шансы на изменения.
Чтобы иметь здоровую экосистему, необходимо вернуться. Необходимо иногда выбрасывать хлам и заменять его лучшими альтернативами.
Но у кого есть на это время? Новые ядра ОС не выходили сколько, 25 лет? Это сейчас стало слишком сложным, чтобы просто взять и переписать. В браузерах накопилось столько пограничных ситуаций и исторических прецедентов, что никто не осмелится писать движок с нуля.
Сегодняшнее определение прогресса — или подбросить топлива:
@sahrizv: 2014 — нужно внедрить микросервисы для решения проблем с монолитами.
2016 — нужно внедрить Docker, чтобы решить проблемы с микросервисами.
2018 — нужно внедрить Kubernetes, чтобы решить проблемы с Docker.
или изобретать велосипед:
@dr_c0d3: 2000: напишите 100 строк XML, чтобы «декларативно» настроить сервлеты и EJB.
2018: напишите 100 строк YAML, чтобы «декларативно» настроить микросервисы.
В XML были хотя бы схемы…
Мы застряли, и никто нас не спасёт.
Бизнесу всё равно
Пользователям тоже. Они выучились принимать то, что мы делаем. Мы (инженеры) говорим, что каждое приложение для Android занимает 350 МБ? Хорошо, они будут с этим жить. Мы говорим, что не можем обеспечить плавную прокрутку? Окей, они свыкнутся с телефоном, который подтормаживает. Мы говорим: «Если не работает, перезагрузитесь»? Они перезагрузятся. Ведь у них нет выбора.
Конкуренции тоже нет. Все строят одни и те же медленные, раздутые, ненадёжные продукты. Случайный скачок вперёд по качеству даёт конкурентное преимущество (iPhone/iOS против других смартфонов, Chrome против других браузеров) и заставляет всех перегруппироваться, но ненадолго.
Наша миссия как инженеров — показать миру потрясающие возможности современных компьютеров с точки зрения производительности, надёжности, качества и удобства использования. Если нам не всё равно, люди потянутся. И никто кроме нас не покажет им, что такое возможно. Если только нам не наплевать.
Не всё так плохо
Иногда на пасмурном небосводе просвечивают лучики надежды.
Работа Мартина Томпсона (LMAX Disruptor, SBE, Aeron) впечатляет, она освежающе проста и эффективна.
Редактор Xi Рафа Левиена, кажется, построен на правильных принципах.
Джонатан Блоу для своей игры разработал язык компилирования, который компилирует 500 000 строк в секунду на ноутбуке. Это холодная компиляция, никакого промежуточного кэширования, никаких инкрементальных билдов.
Не нужно быть гением, чтобы писать быстрые программы. Здесь нет какой-то магии. Единственное, что требуется, — это не строить софт на базе огромной кучи дерьма, которую поставляют современные инструменты.
Манифест лучшего мира
Я хочу видеть прогресс. Я хочу перемен. Чтобы современное программное обеспечение совершенствовалось, а не стояло на месте. Я не желаю заново изобретать одно и то же, каждый раз выпуская всё более медленный и раздутый продукт. Я хочу во что-то верить — в достойную цель, в будущее, которое лучше, чем то, что мы имеем сегодня, и чтобы появилось сообщество инженеров, которые разделяют это видение.
Что мы имеем сегодня — это не прогресс. Мы едва достигаем бизнес-целей с этими плохими инструментами. Мы застряли в локальном оптимуме, и никто не хочет двигаться. Это даже не хорошее место, оно раздутое и неэффективное. Мы просто как-то привыкли к нему.
Поэтому я хочу заявить: нынешняя ситуация — полное дерьмо. Как инженеры, мы можем и должны, и сделаем лучше. У нас могут быть лучшие инструменты, мы можем создавать лучшие приложения, более быстрые, предсказуемые, более надёжные, использующие меньше ресурсов (на порядки меньше!). Мы должны глубоко понять, что мы делаем и почему. Мы должны выпускать продукты надёжно, предсказуемо, с самым высоким качеством. Мы можем и должны гордиться нашей работой. Не просто «учитывая то, что у нас было...» — никаких оговорок!
Надеюсь, я не одинок. Надеюсь, что есть люди, которые хотят того же. Я буду рад, если мы хотя бы начнём говорить о том, насколько абсурдно нелепа нынешняя ситуация в индустрии программного обеспечения. А потом, возможно, придумаем, как выбраться из неё.
Комментарии
Легко сказать. По смыслу где-то так: "Если вам нравится хорошо прожаренный свиной эскалоп, то не следует городить все эти свинофермы, логистические компании и супермаркеты. Просто заведите себе на балконе хрюшку".
Системе периодически нужна тотальная холодная перезагрузка.
Пожар в лесу - катастрофа, но одновременно и начало новой жизни! Лес очищается от валежника, от слабых деревьев, от паразитов.
В компьютерной индустрии тоже рождаются новые проекты, практически без привязки к старым, тот же Linux, правда все реже и реже
Вся надежда на ИИ, за миллиарды эквивалентных машинолет перепишет весь софт на ассемблере, уберёт избыточность.. а потом ликвидирует неэффективного органического предшественника, чтобы не путался под ногами ;)
Ещё как пример: matrix.org
Замена телеграма, ватсапа и т.п. - открытый, федеративный (можно поставить свой сервер и он будет общаться с другими, как почта). С видео и голосовой связью, безопасный и шифрованный. Т.е. открытый код, твой сервер + e2e шифрование - достаточно надёжно.
Активно развивается. Но есть и минусы - проект достаточно молод и софт не достаточного качества.
Вот почему F-35 так низенько летает!
)) Ну да - там ни китайских, ни руских программеров не пустили отлаживать))))
Это всё делается специально, чтобы стимулировать покупку нового железа. А по поводу раздутых программ Гугла, так Вы не знаете всех интересных опцый, в них заложенных, и не задокументированных. А там мноооого интересного......
Даже микрософт стал легковесней. Прогресс.
Если бы. Это все делается потому-что сроки горят и финансирование режется. Поэтому берется по максимуму готовых компонентов.
Когда мы год назад когда первую версию клиентского интерфейса писали, и нам надо было быстро наколбасить какой-то функционал в браузере - взяли несколько универсальных библиотек, из которых используется по чуть-чуть, а в результате страница весила 6 мегабайт.
Со временем порезали конечно...
Тут бритва Оккамы в полный рост. Даже если денег хоть попой жуй, а времени навалом, то всё равно выйдет шлак. Причина — там, где много денег, есть профессиональные менеджеры, которые руководят разработчиками.
И вот у нас есть два разработчика одного уровня: Светлов пишет отличного качества софт, замечательная оптимизация, никаких утечек памяти, а Темнов не отвлекается на подобные мелочи и делает быстро. Вопрос: кому из них менеджер даст премию? Правильно, Темнову. Потому что он во-первых уложился в сроки, а во-вторых сумел в следующей версии увеличить производительность на 300% (убрав ненужные циклы). В отличие от этого бездельника Светлова, который мало того, что в сроки не укладывается, так ещё и жалкие 1,6% прироста производительности из своего поделия выжать смог.
Заметьте, качество софта не интересует никого.
Тоже правда :-(
Ждем расцвета холакратии
Проблема в победном шествии *товарного* ПО (помните классическое описание той же тенденции в материальном производстве?).
И практической утрате обратной связи с конечным пользователем.
ЗЫ: Сотни процентов прироста производительности несчитово. У нас, когда выпинывали жадного профессионального подрядчика, счёт шёл на миллионы ☺
В этом ничего не понимаю, но на работе, от знающего специалиста узнал, что сложнее всего делать программы интерфейса. Для изготовляемой аппаратуры программы пишутся на Винде, а она не подходит, т.к. её сутью является реакция на действие пользователя. Поэтому все промышленные программы пишут чуть ли не в Досе - он изолирован от ОС.
Военные для своей техники вообще пишут на Ассемблере ;)))
Открою маленький секрет. Дос это ОС, дисковая, помещавшаяся на дискету. Писать было удобно на макроассемблере используя програмные прерывания ОС. Я так свою винду над дос написал. Шутю конечно, но окошечную систему таки сделал на функциях макроассемблера.
Ну ты ему ещё про int 21h расскажи...))) Кстати, 6.0 уже антивирь содержала. Вот был функционал крутой.
ДОС используют для сбора данных в реальном времени. Винда это делать не может, т.к. нельзя приоритет для своей задачи сделать выше чем у всяких микрософтовских дров и сервисов(по сравнению с виндой потери данных в ОС Убунту раз в 10 меньше, т.е. где Винда теряет 10 пакетов данных, Убунту теряет 1 пакет). Под Линукс в РФ к сожалению не так много спецов по программированию.
MS DOS не относится к системам реального времени. Время отклика у неё не предсказуемо. Для управления процессами в реальном времени есть, например, QNX.
Я таки про сбор данных и их запись с датчиков, а не про управление.
Все что мне встречалось под досом 6.0, а на Линукс так с конца 90х не перешли...
Раз под Виндой пришлось работать - это ужас. Досовская версия 4 месяца без сбоев работала, виндовс каждый день по 2 сбоя критических..
Есть разные требования к сбору данных. Где скорость изменения процесса вписывалась в скорость опроса (критерий Котельникова - Найквиста), или было допустимо достраивать недостающие данные интерполяцией - DOS вполне работал. В 1989 году, когда у нас не хватало скорости 286/16МГц для сбора данных опросом с 10 аналоговых каналов пришлось докупать специальную плату на интеловском рисковике - 16 АЦП каналов с дискретизацией по 1Мгц, с буферизацией и отдачей данных на компьютер. Плата стоила дороже чем сам комп - под $2500.
В принципе сейчас производительности на платформе интел CISC достаточно для сбора практически любой информации. Промышленные компьютеры на i386 архитектуре живут и здравствуют. А ведь по сути - это очень кривая архитектура, у которой до сих пор есть совместимость с i8086.
Кстати, да. Недавно столкнулся со станком ЧПУ, где материнка была интеловская тройка.
RTX. Realtime под виндовс. Третий десяток лет на рынке.
Перспективный чат детектед! Сим повелеваю - внести запись в реестр самых обсуждаемых за последние 4 часа.
эпоха менеджеров, взять любую сферу - везде один подход
Проблема есть. Она связана, как я понимаю, с важностью скорости разработки перед эффективностью. Кто первым выбросил на рынок новый функционал - тот и на коне. В свое время именно на скорости разработки в ущерб эффективности и поднялась Майкрософт.
"Успеть первым" -- это только часть проблемы. Ещё одна часть -- вертикальная совместимость. Отдельной, и очень важной статьёй, идут разнообразные попытки создания "промежуточного слоя", который жрёт ресурсы и раздувает объём кода. Слабое управление проектами и низкая квалификация кодеров...да всего и не перечислишь. В итоге имеем то, что имеем.
Посмотрите на драйверы МФУ хулета паккарда. Писали индийцы, им платили за колличество строк кода. Типичный драйвер МФУ у них может больше гига на диске занимать. И время установки до часу. :) Правда время выполнения программ часто зависит от встроенных ожиданий реакций устройств и удалённых хостов, и ограничиваются таймаутами с большим запасом сделанных. Херох такой хернёй не страдает.
У HP нет своих МФУ очень давно. Те же Canon и Toshiba, только с несовместимыми картриджами. Машина одна и та же.
Майкрософт вообще-то в принципе поднялся на удачной попытке неких товарищей из топ-манагеровов Айбиэм украсть софтовый кусочек родной конторы.
Отсюда и гениальный мальчик Билл с тётей в совете директоров, и предзаказы ОС с их гарантированным последующим трудоустройством и прочее.
Таки-да. Мало того, он, согласно легенде, всё это делал в сарае, "на коленке"...
На эту легенду сейчас не купишь даже начинающего программиста. А выглядело так красиво: гигант IBM и "простой парнишка из нашего двора". Прям даже немного жаль, что вся эта история, как говорил Воланд: "вранье от первого до последнего слова".
Ну это сейчас, А раньше вполне себе втюхивали народу, не забывая, при этом, отметить про "Америку равных возможностей".
MS DOS - это разработка ребят из Сиэтла под названием QDOS. Гейтс вовремя купил.
Значит - мальчик был гениальный не только наколенкеписатель, и тётин племянник, но еще и за-деньги-дяди-покупатель каких-то левых чуваков)
Вобщем - куда Гейтса ни ткни - в гения вляпаешься))
Гейтс был отличный программист. Во-первых, он написал интерпретатор бейсика для процессора, которого у него не было. Пол Аллен написал эмулятор процессора, ассемблер, отладчик, а Гейтс написал бейсик на 8 килобайт, которые потом смог ужать до 4 килобайт. Только потом уже Гейтс стал больше заниматься бизнесом, чем программированием. И естественно, похвастаться подобными достижениями ему впоследствии уже больше не удалось: последующие программы разрабатывались другими программистами его фирмы.
По слухам, Гейтс долгое время добавлял к своему имени и должности ещё и "бейсик-программист". Он и меня в своё время заразил этим basic безумием, и я последовательно осваивал (в инициативном порядке) все версии VB, VBA и VBScript. В итоге, эпизодическое применение нашлось только для VBA (в основном для Excel).
Ошибаетесь, Microsoft начала грести деньги задолго до того, как к ним обратились из IBM. До этого Microsoft уже выпускала несколько вариантов бейсика, ассемблеров, фортран, pl/m для нескольких разных компьютеров и уже делали то, что стало потом Microsoft Office, по заказу от Apple.
Ага, прямо-таки грести. Что же касается вариантов Бейсиков и Фортранов (за ассемблер не скажу, ибо, как уже писал, не в теме), то их лепили все, кому не лень. В частности были Фортран - Дубна, и, наиболее распространённый и удобный, на тот момент, Фортран IV, к которым Гейтс ни ухом ни рылом. Мало того, если вспомнить предания старины глубокой, то была такая штука для DOC, как Volkov Commander, который крыл по удобству и производительности широко разрекламированный (на тот момент) Norton Commander, как бык овцу. Но у Всеволода Волкова не было тёти в совете директоров IBM.
Поправка. Конечно же DOS. Набирал в "слепую" и внимательно не вычитал. А время на правку вышло.
Это только "приподнялся". Взлетел "мелкий и мягкий" позже уже не на ДОСе, а Винде.
Так именно вынь-да и была попыткой сляпать NIX на PC, а в фирму мальчик пихал OS/2 первой и второй версии, охрененых и неудобных монстров от которых пошел ряд NT, а по уходу мальчика Билли сделали Warp которая требовала в восемь раз меньше ресурсов и была надежней молотка, да только с рекламой вынь-да уже все сортиры пестрели, вот и разошлись дорожки. Увы но Аврору перекупил какой то чел и так она и сгибла.
Да-да-да... 4.5 полумух с е-бизнесом. Муть она уже была, муть. Нагромождение из кучи старых технологии, зародышей ибм-свойственных новых, с множеством костылей для поддержки драйверов из винды и сборки драйверов из линукса, тот же jfs Паши, наеТБМзнес Жени с Ёко и Серенити системы. Когда хухель с убунту Марка пришёл, пошла гонка версий и в линуксе. Столько на ТБМвертили. Сейчас и в встраиваемых системах, как вынужден брать компоненты, так вешайся, маленьких, узкозаточенных не найти, всё в виде громоздких комбайнов с контейнерами. Одной из всех начала было ТБМлюдочное Дельфи, понизившее требования к программистам, но удешевившее и ускорившее... В итоге, что имеем, то и нас имеет. Дихи.
Гнусная ложь. Первый их basic умещался в 8 килобайт, который для компьютера Altair-8800 удалось ужать вдвое. Подумайте над этим: бейсик в 4 килобайта с поддержкой операций с плавающей запятой, с тригонометрическими функциями на 8-битном процессоре, который умел только складывать и вычитать максимум 16-битные целые числа.
Долгие годы после этого Microsoft считалась лучшим разработчиком компиляторов и интерпретаторов языков программирования. Microsoft разработала свой будущий Office специально для компьютеров Apple, тоже был вполне качественный продукт.
То, о чём вы говорите, началось с попыток Microsoft пробраться на рынок операционных систем. На первых порах, когда IBM обратились в Microsoft за ПО для их будущего компьютера, Билл Гейтс отправил их за операционной системой CP/M к Гарри Килдаллу. Тот сглупил и профукал момент и IBM снова обратилась за операционной системой к Microsoft. И тут Билл Гейтс, который был не только классным программистом, но и отличным бизнесменом, не растерялся и вспомнил о фирме Seattle Computers, один из сотрудников которой работал над операционной системой для их платы с процессором Intel 8086 для компьютеров Altair-8800 (Altair-8800 был настолько модульным, что процессорная плата тоже втыкалась в общую шину на "материнской плате" и процессорную плату можно было менять). DOS был выкуплен вместе с разработчиком и доведён до сколь-нибудь работающего состояния в очень короткие сроки, чтобы было что предложить IBM.
Windows тоже делалась в спешке наперегонки с аналогичными разработками, ведшимися в Apple.
Получается, что Microsoft начали делать быстро и грязно тогда, когда нужно было захватить ещё не хоженный рынок.
Ничего там не делалось наперегонки. Только вдогонку. На Apple II и Mac никогда не было командной строки. Только однокнопочная мышь И окошечный интерфейс. И когда Билл Гейтс выпустил Windows 3.0, Apple подала на него в суд - типа он у них окошки попёр. Хотя до этого Apple сама была ответчиком по тому же поводу - оконный интерфейс, присвоенный у Xerox. Но Билл был умным мальчиком, так что он воспользовался тем же результатом - Apple тогда удалось убедить судей, что оконный интерфейс некопирабелен. На том всё и успокоилось.
Когда Гейтсу понадобилась действительно хорошая сетевая ОС, на которую не тянули не Windows для рабочих групп, ни OS/2, он не стал париться и купил коллектив разработчиков у обанкротившейся DEC, так появилась Windows NT
Когда Гейтсу понадобился SQL сервер, потому что Oracle бодро забивал поляну СУБД, то он не стал ничего разрабатывать сам, а купил Sybase, а на Sybase в ту пору работало 60% американских банков.
И список "Когда Гейтсу понадобилось..." можно продолжать бесконечно.
Ничего там уже не исправить.
Я надеюсь, что однажды люди начнут сначала. Создадут новую чистую среду, где сайты будут работать по-настоящему, а не тупить и тормозить как сейчас.
сначала люди создадут новую философию прогресса
как бы не пришлось для этого упасть в каменный век, или как минимум к земле, на натуральное хозяйство. я эту перспективу в связи с происходящим в мире начал чувствовать уже лет 10 назад или больше.
Полагаете, что для новшеств в философии нужен не развитый разум, а возвращение к примитивизму, вплоть до пробуждения инстинктов? Боюсь, что с таким подходом ничего иного, кроме повторного похода человечества по граблям ожидать не стоит.
,,как бы не пришлось для этого упасть в каменный век,"
Система нуждается в перезагрузке,для того чтобы снести,весь хлам.
Боюсь,что тот ,кто держит палец на кнопке ,,перезагрузка",нашей системы,пришел к тому же выводу,что и ТС.
Как раз об этом подходе пишется в статье ТС, как о вредном тренде в сфере софта. При перезагрузке системы пропадает многое, если не всё, но важно - в том числе пропадает и память о причине ошибкок, что предопределяет их повторение
,,как о вредном тренде в сфере софта.
в том числе пропадает и память о причине ошибкок, что предопределяет их повторение."
Кто знает,быть может,этот вредный тренд, кому-то очень полезен.
Страницы