Как бы мы скомпилировали наш код, если бы все двоичные файлы в мире исчезли и у нас был бы только исходный код? Сначала вы можете подумать: «Все в порядке: у меня здесь есть мой код Roslyn», но подождите! Это на С#! Итак, вы смотрите на старый компилятор C#, который, в свою очередь, написан, скажем, на C++, но подождите... и так далее. Вы бы в конечном итоге спаяли себе компилятор ASM?
Как бы мы перестроили текущее программное обеспечение, если бы у нас было все текущее оборудование и весь исходный код программного обеспечения, но не было реального программного обеспечения? Будем ли мы следовать тому же пути, что и раньше, или мы пойдем по сокращенному пути и в конечном итоге получим, например, управляемый код раньше? Можем ли мы полностью отказаться от неуправляемого кода и в конечном итоге получить ОС, подобную Singularity ? Будем ли мы создавать наши новые загрузчики и компиляторы так, чтобы они могли использовать наш существующий (и, возможно, к тому времени, когда мы запустим, древний код), или мы будем писать все с нуля?
Процесс будет происходить поэтапно. Мы не увидим кучу гиков, толпящихся в комнате в течение 4 лет, за которыми следует работающий i7, загружающий Linux. Эти большие сложные процессоры и архитектуры — лишь малая часть современного вычислительного мира. Существуют также тысячи и тысячи более мелких чипов, которые гораздо легче встать.
Мы бы начали с небольшого чипа, такого как ATtiny. Его можно запрограммировать через последовательную шину SPI , которая на 100% синхронизируется мастером. Это означает, что у вас может быть набор из 4 переключателей, управляемых человеческими руками, и если вы поворачиваете их в правильном порядке, вы можете вводить инструкции в память ATtiny.
Теперь первой программы не нужно много. Это хорошо, потому что крутить такие переключатели тяжело. Первым приложением, вероятно, будет текстовый редактор, подобный приложению, которое позволит вам написать приложение с простыми в использовании переключателями (например, установить 8 переключателей на байт, а затем нажать клавишу «подтвердить», чтобы сохранить его в программе), а некоторые базовые возможности чтения/записи (перейдите к байту 200, замените его на e8). Прежде чем отключить его, это будет расширено для записи во флэш-память на ATtiny. Теперь у нас есть рабочий компьютер (хоть и маленький). Когда вы выключите его и снова включите, он может перезагрузить приложение текстового редактора.
Теперь следующая часть головоломки — использовать его для программирования других чипов. Это просто: тот же интерфейс SPI, который вы использовали для разработки первого приложения, — это тот же, который вы будете использовать для создания приложений в других приложениях. Вы можете записать вторую программу во флэш-память, которая по команде запишется в этот второй чип. Теперь мы можем легко дублировать нашу программу текстового редактора, позволяя нескольким разработчикам работать над задачами параллельно.
Теперь мы можем использовать это для программирования большего чипа, такого как ATmega. На самом деле, мы могли бы начать с ATmega, потому что у него схожая программируемость, но я чувствовал, что история была бы более ясной, если бы мы начали с программирования чего-то, что слишком мало, чтобы удержать любой современный инструмент, такой как компилятор C++. Как бы то ни было, как только мы получим достаточно большой чип, мы сможем разработать настоящий ассемблер. Возможно, стряхните пыль с одного из тех старых матричных принтеров и напечатайте текст на параллельный порт. Стряхните пыль со старой клавиатуры PS/2 и подключите ее напрямую к ATmega. Теперь у нас есть полноценный ассемблер с капелькой человеческой порядочности.
Теперь начинается этап начальной загрузки. Мы можем использовать этот ATmega для начальной загрузки некоторых более крупных чипов, таких как i7, потому что мы можем использовать его для программирования чипов FLASH, таких как те, к которым подключен BIOS. Это непросто, но у нас есть много инженеров, которым все еще приходится работать над этими слоями, так что кто-то вспомнит достаточно, чтобы заставить биос работать. При этом вполне разумно ожидать, что рабочая клавиатура и экраны будут работать (больше не нужно печатать код на принтерах, чтобы прочитать его). Мы также должны снова получить доступ к жестким дискам, чтобы мы могли писать код более постоянно. Я ожидаю, что на этом этапе кто-нибудь напишет голую версию vi
(да, она может получить больше голой кости, чемvi
) и ассемблер, оба из которых работают с элементарной файловой системой. Все это находится в пределах возможностей сегодняшнего разработчика. На самом деле, некоторые из них подумали бы, что это действительно весело (пока не закончится Mtn. Dew).
Теперь о реальной фазе начальной загрузки. Кто-то напишет драйвер сборки для доступа к современной файловой системе, например EXT3. Это будет некрасиво, но этого достаточно, чтобы найти копию какой-нибудь древней версии C из первых дней начальной загрузки. C был запущен путем написания очень простого компилятора C, который обрабатывал некоторые (но далеко не все) команды языка C. Затем этот простой компилятор использовался для разработки более продвинутой версии C и т. д., каждый раз добавляя функции по мере того, как их становилось все легче и легче писать.
В конце концов мы напишем достаточно компилятора C, чтобы скомпилировать сам GCC. Как только мы скомпилируем один компилятор GCC, тормоза отпускаются. В течение нескольких недель у нас будут работать все приложения Linux, включая саму Linux. Оттуда другие операционные системы могут ускориться.
How would we rebuild current software, if we had all the current hardware and all software source code, but no actual software?
. У вас уже есть ВСЕ исходные коды для ВСЕХ существовавших программ. Вам просто нужно его скомпилировать. Когда у вас запущен компилятор gcc , что является последней точкой ответа, это просто вопрос цепной реакции компиляции , поэтому я думаю, что нескольких недель должно хватить: PI think "a matter of weeks" is being rather on the optimistic side.
. Я понял, что следующим порядком величины будут годы , поскольку недели и месяцы достаточно близки, чтобы их можно было считать эквивалентами. ^^УМы созвонились с некоторыми людьми, которые сделали это в первый раз.
Нет, серьезно. У нас есть много экспертов в этой области, которые еще живы, и они вполне могут иметь достаточно знаний между собой, чтобы построить работающий BIOS. Оттуда мы можем продолжить процесс намного быстрее, чем это было сделано в первый раз: мы просто консультируемся со следующей группой экспертов для получения следующей части знаний, которую мы используем для создания следующего уровня программного обеспечения.
В конце концов, этот процесс доходит до экспертов Microsoft и всех крупных компьютерных компаний, которые создают и поддерживают языки, которые мы используем сегодня, и они просто нажимают F5, компилируют исходный код языка и предоставляют нам новый набор двоичных файлов.
Большая проблема здесь — перераспределение. Если у всех исчезли двоичные файлы, вам нужно либо восстановить каждый компьютер, либо заставить всех купить новый. Кроме того, для некоторых новых языков, которые не установлены заранее, вам необходимо усилить свои серверы распространения, чтобы они не зависали, когда все пытаются получить копию одновременно.
Сегодня мы не сможем использовать какой-либо компьютер, если исчезнут все бинарные программы, поскольку все они имеют какую-то прошивку (например, BIOS) для загрузки, и эта прошивка находится внутри некоторого ПЗУ (часто флэш-ПЗУ).
Время, когда первобытную программу начальной загрузки можно было легко ввести (без помощи какого-либо другого компьютера), давно прошло. В 1960-х вы могли загрузить IBM7094 с коммутаторами!
Если вы измените свою гипотезу на «все диски, которые у меня есть, стерты», и если ваша прошивка дает вам некоторый доступ для записи (и если у вас есть вся необходимая документация на бумаге!), вы можете загрузить свой компьютер.
Кстати, я полагаю, что если бы мы потеряли все бинарные файлы свободного программного обеспечения на Земле, у нас было бы гораздо больше проблем, чем если бы мы потеряли все бинарные файлы проприетарного программного обеспечения (я предполагаю, что в обоих случаях исходный код остается доступным).
Узнайте больше о начальной загрузке , в частности о компиляторах начальной загрузки , например, как был написан первый компилятор . Читайте также блог J.Pitrat о начальной загрузке искусственного интеллекта , он посвящен вопросам начальной загрузки с точки зрения сильного ИИ.
См. Также этот ответ и тот на очень связанный вопрос. Вас также может заинтересовать Linux From Scratch , или Isaac Operating System (написанная на собственном языке, работающая на «голом железе»), или даже MirageOS .
Конкретная проблема с начальной загрузкой всего компьютера сегодня заключается в том, что это довольно сложно (в частности, но не только, из-за технологических сложностей: справочные руководства Intel x86-64 состоят из многих тысяч страниц, а x86 и ПК очень сложны, в частности потому, что исторических причин и причин обратной совместимости), поэтому это займет много времени (много лет работы), и (к сожалению) трудно получить за это деньги. Итак, есть социальная проблема. Это может быть немного проще с другим оборудованием (например, RISC-V , который на самом деле не существует или гораздо менее эффективен).
Связанный с этим вопрос заключается в том, как перезапустить Интернет, если или когда он выйдет из строя.
Рано утром все бинарные файлы в мире исчезают. Все части скомпилированного кода исчезли; данные все еще там, файлы кода все еще не повреждены, но все части скомпилированного кода исчезли. Пуф.
Первое, о чем будет думать каждый, будет не о том, как вернуть его, а о том, как выжить; летающие по проводам самолеты будут падать с неба, телефоны не будут работать, интернета не будет, машины не заведутся, электростанции остановятся. Все эти устройства и системы, большие или маленькие, имеют маленькие чипы, которые когда-то были заполнены прошивкой. Конечно, все, что было построено в 1980-х годах или раньше, вероятно, будет в порядке; автомобили не начали получать бортовые компьютеры до 1990-х годов, по большей части.
Тем не менее, это не просто инженерная или программная катастрофа. Это событие масштаба апокалипсиса. Хороший кусок мира останется без надежной еды, воды или электричества; связь будет полностью отключена.
Лучшим местом будет колледж или университет, так как у них, скорее всего, есть работающий считыватель перфокарт (и генератор). Используя перфокарты в качестве начального интерфейса, наши бесстрашные программисты могли сразу начать писать код.
Конечно, эти старые машины ужасно медленные и потребляют огромное количество энергии. Итак, наши программисты используют системы, управляемые перфокартами, для программирования микроконтроллеров или их более быстрых собратьев, микрокомпьютеров .
Этим крошечным компьютерам понадобится какой-то интерфейс; будем надеяться, что есть старая клавиатура на транзисторах и несколько старых ЭЛТ . Современные клавиатуры и ЖК-экраны зависят от прошивки. Немного поработав над кодом, наши программисты получили компьютер, клавиатуру, экран и способ сохранить свой код.
Дополнительно будут перепрошиты любые устройства с прошивкой, которую можно быстро перезаписать; некоторое старое оборудование, такое как старые приводы компакт-дисков, имело очень мало прошивки, но все же могло читать современные диски.
Вернуть утраченное будет гораздо труднее. Почти все современное оборудование будет не чем иным, как мусором; почти все чипы со сгоревшим защитным предохранителем будут бесполезны, превратив мобильные телефоны и ноутбуки в кирпичи. Жесткие диски, хотя данные все еще существуют, не будут иметь микропрограммы для извлечения этих данных.
Лучший выбор — компьютеры с открытым исходным кодом. У кого-то где-то будет флеш-чип, не заблокированный защитой, с каким-то сохраненным кодом. Оттуда компьютер с открытым исходным кодом может быть восстановлен, и программисты могут постепенно начать восстанавливать программное обеспечение. В противном случае у кого-то есть резервная копия всего их кода на дешевой флешке; с небольшим аппаратным взломом можно извлечь эти данные, хотя это будет сложный процесс.
Как только компьютеры (какими бы крошечными они ни были) заработают, жизнь станет немного проще, но большая часть современного оборудования станет бесполезной. Даже если бы биос на современной материнской плате можно было бы пересобрать, видео, ethernet, даже звуковые карты были бы без прошивки. Программное обеспечение вернется к тому состоянию, в котором оно было в конце 1980-х годов. Это вернется, постепенно, но я ожидаю, что это займет больше времени, чем в первый раз. Что с апокалипсисом, и все такое.
Одна из самых больших проблем заключается не в компиляции исходного кода, потому что вы потеряете все это, все диски хранятся в двоичном виде, поэтому все, что мы знаем как современную технологию, будет стерто. И перепрограммировать все это было бы большой задачей, учитывая, что все прототипы или версии исчезнут. Я бы ожидал даже нехватки продовольствия или других подобных событий, учитывая, сколько маленьких компьютеров используется в вещах, которые мы так часто используем в нашей жизни, таких как автомобили, управление электросетями и бытовая техника.
Технически прошивка является «аппаратной», поэтому я ожидаю, что она останется. Я предполагаю, что «исчезновение двоичных файлов» больше связано с удаляемой информацией, чем с физическим бедствием, которое поразило все устройства хранения информации, но едва не пропустило все, что не выглядело как работающий машинный код. Если бы действительно прошивка осталась, то думаю у нас была бы хорошая фора. Мы должны быть в состоянии загрузить любую систему, которая может работать с прошивкой и, по крайней мере, иметь какую-то примитивную ОС и возможность редактирования текста. Интересная проблема заключается в том, что если у нас есть исходный код, но большая его часть электронная, то он по большей части бесполезен для нас, пока мы не восстановим системы, способные его прочитать.
Поскольку вокруг так много потенциально полезного программного обеспечения, было бы разумнее воспроизвести компиляторы, которые могли бы перестроить программное обеспечение. Это означает, что общество, скорее всего, не будет пытаться заново изобретать языки программирования с нуля, пока мы не восстановим те, которые мы только что потеряли. Поскольку мы перестали пользоваться Интернетом и хранилищем цифровой информации, лучше всего ориентироваться на наиболее документированные языки, по которым у нас есть книги. Без сомнения, компилятор C будет первым и наиболее важным высокоуровневым инструментом при перестроении. Если у вас есть это, прогресс может быть достигнут очень быстро. Затем вы можете пересобрать целые операционные системы, множество программных инструментов и компиляторов для множества языков. Есть причина, по которой этот 40-летний язык до сих пор возглавляет список TIOBE. Это «английский» мира программирования: неуклюжий, раздражающий,
Поскольку в мире так много экспертов по C/C++, если у вас есть система, которая может вводить текст и сохранять байты на диске, создание компилятора на самом деле не должно быть таким сложным. Скорее всего, группа людей будет улучшать «IDE» с помощью необработанного ассемблерного/машинного кода и, вероятно, заново изобретать его с нуля только для повышения производительности. Многие части минимальной ОС пришлось бы переборщить только для того, чтобы запустить и запустить этот первый компилятор C. Но я почти уверен, что получение первой самодостаточной сборки компилятора было бы моральным эквивалентом стартера на гигантском двигателе, который наконец-то запустил маховик, чтобы он мог работать самостоятельно.
Фактически, этот процесс, скорее всего, произойдет во многих местах по всему миру. Вполне возможно, что Россия или Восточная Европа выпустит первый работающий компилятор C "после катастрофы" из-за большого количества хакеров/вирусописателей, которым приходится разбираться в низкоуровневом коде. Хотя в Китае много хакеров, они склонны проникать в системы более высокоуровневыми путями. Я был бы удивлен, если бы они создали ранний компилятор C с нуля (хотя большая группа предприимчивых студентов университета может сделать это одним лишь усилием воли). Хакеры из США и Западной Европы будут иметь преимущество в том, что им будет доступно наибольшее количество книг по C и справочников, написанных на языке, который они легко понимают.
Теперь, если прошивка также стирается, все становится намного, намного сложнее, как и при переключении переключателей, как описано другими. Это так угнетает, что я даже не могу об этом думать. Но я предполагаю, что потоки объединяются, как только вы получаете базовую консоль (клавиатуру, монитор, постоянное хранилище... будь то диск, лента, флэш-память и т. д.).
Хотя многие языки имеют самостоятельные компиляторы, большинство компиляторов можно было бы перестроить с нуля на C, и большинство разработчиков исходного языка могли бы помочь в этом. Я думаю, что в целом перестройка будет происходить намного быстрее, чем люди могут себе представить (от базовой консоли до самостоятельного компилятора C за 6 месяцев или меньше). Почти во всех случаях люди, вероятно, решат, что лучше просто заменить то, что было утеряно, и восстановить функциональность, чем сходить с рельсов и переделывать вещи.
Редизайн произойдет, если вы также потеряете исходный код . Возможно, информация сохраняется в книгах, но если бы все электронные исполняемые файлы и исходники были утеряны, то, я думаю, мы бы увидели значительный редизайн и переход к более продвинутым технологиям. Я думаю, что С все равно будет перестроен с нуля из-за его статуса своего рода лингва-франка. И, возможно, Java и несколько других основных языков будут возрождены (хотя, очевидно, из реализаций чистой комнаты). С другой стороны, было бы намного сложнее восстановить Linux, Windows или OS X без исходного кода, только по книгам.
Интересно, что мы могли бы воспользоваться этой возможностью, чтобы устранить множество надоедливых недостатков языков, инструментов и операционных систем. Возможно, мы получим не совсем C, а своего рода улучшенный C99, в котором будет удалено много устаревшего хлама. С одной стороны, всем было бы выгодно просто реализовать точный компилятор C99, чтобы люди со всего мира могли обмениваться исходными текстами на языке C по мере перестройки цифрового мира. Это будет препятствовать инновациям. И по этой причине Linux, скорее всего, станет де-факто ОС новой эры, просто потому, что многие ее части можно было восстановить из книг и знаний, запертых у определенных мастеров высокого уровня.
Вероятно, проприетарное программное обеспечение просто не сможет конкурировать, пока не будет заменено большинство функциональных возможностей. Таким образом, перестройка, скорее всего, произойдет в рамках очень открытой модели, если только некоторые страны не заметят, что они развиваются намного быстрее, чем другие, и смогут получить конкурентное преимущество, закрыв свой прогресс от остального мира. В конце концов, глобальная торговля заставит страны восстановить международные стандарты, поэтому трудно сказать, как долго продержатся такие стены.
Хотя многие неудавшиеся языки просто не будут воспроизведены (разве что их любящими создателями), самые популярные языки, несомненно, возродятся из-за сохраненной ценности программистов, хорошо владеющих этими языками. То же самое и с инструментами. Однако потребуется много времени, чтобы перестроить что-то вроде Microsoft Office или Adobe Photoshop, не говоря уже о Windows Server 2012. Эти инструменты могут никогда больше не появиться, и, возможно, начнется новая гонка вооружений, чтобы заново изобрести каждую категорию программного обеспечения с нуля.
Каждая технология с опубликованным стандартом вытеснит проприетарные альтернативы без общедоступного стандарта просто потому, что стандарты будут представлять собой интеллектуальные усилия, сохраненные в тексте, который не нужно переделывать. Но самые слабые стандартные технологии могут быть заменены лучшими альтернативами просто потому, что бремя наследия было снято и больше не является таким большим преимуществом перед плохими старыми решениями.
Когда мы говорим о компьютерных языках и компьютерном программировании в целом, мы говорим о языках и их уровне абстракции. Когда-то у нас были патч-панели, которые использовались для программирования компьютеров. Большинство компьютеров на самом деле не программируются, а жестко запрограммированы на выполнение определенных операций. Позже у нас появились программируемые компьютеры.
Сначала мы использовали двоичные коды операций для создания кода. Вам нужно будет знать каждый код операции, используемый процессором, и вводить свою программу байт за байтом в память компьютера. Позже была изобретена стенографическая форма, в которой для описания операций использовались слова. Это называлось мнемонической формой. Это почти как современная сборка. На втором этапе появились ассемблеры макросов, которые позволяли использовать макросы. Это языки низкого уровня.
Язык среднего уровня — это что-то вроде C и PL/I, это не очень абстрактные языки. Люди обычно считают это самым хакерским языком — «Эй, я использую язык средней абстракции, это должно означать, что я суперхакер». Но, как правило, языки с более низкой абстракцией более подвержены дефектам. C обеспечивает базовый вызов функций на основе аргументов функций и других менее примитивных абстракций, таких как массивы и структуры. Это намного проще программировать, чем чистый ассемблер, и если все сделано аккуратно, может даже получиться переносимый код. Но C не хватает абстракций, таких как объекты, строки (формальные строки, а не строки, основанные на хакерских указателях).
Язык с более высоким уровнем абстракции — это Java или C#. К сожалению, оба языка интерпретируются в виртуальной машине. Это означает, что выполнение кода должно быть переведено на лету из абстрактной виртуальной машины во что-то, понятное процессору более низкого уровня. Вич медленный. Другой язык, предлагающий очень высокий уровень абстракции, — это Python, Ruby и т. д. Поэтому люди думают, что языки высокого уровня должны интерпретироваться. Object Pascal (отвергнутый уродливый сын) столь же абстрактен, как Java, но производит действительно скомпилированный код (вплоть до двоичного формата).
Управляемый код — не самое лучшее изобретение. Это подразумевает огромную цену скорости. Это своего рода абстракция, но не без недостатков.
Процесс создания экосистемы новой компьютерной системы называется начальной загрузкой. Если вы создаете новый компьютер, вам нужно будет сделать два шага: создать компилятор, который может выводить код в ожидаемую для этой машины форму, и новую операционную систему (которая обычно будет написана на этом языке).
Обычно вы начинаете с кросс-компилятора, который будет использовать определенную уже существующую систему для генерации кода для этой новой системы. Затем этот кросс-компилятор будет использоваться для создания базовой операционной системы и для компиляции компилятора в двоичный файл, который запускается на этом новом компьютере.
Поскольку машины реального мира основаны на реальных компонентах, эти машины работают на низком уровне абстракции. Вы не можете иметь виртуальные машины без реальных машин, потому что виртуальная машина на самом деле является компьютерной программой, как и любая другая. Это означает, что между вашим программным кодом и оборудованием существует пустота, которую необходимо заполнить.
тл;др
Сначала вам нужно будет создать с нуля программу мнемонического ассемблера (используя ваши знания о машинах), затем макроассемблер, а затем настоящий компилятор (обычно для языка Си). С этого момента вы сможете компилировать все остальное.
Как бы мы скомпилировали наш код, если бы все двоичные файлы в мире исчезли [...]
Попросите кого-нибудь с Международной космической станции использовать «Союз-ТМА» и привезти все еще работающий ноутбук со всеми доступными компиляторами. (Эй, технически их нет в мире ...)
Найдите машину до 1986 года и поезжайте в компьютерный музей. Запустите ящик Altair, Imsai или Digital Group и запустите его как обычно: включите загрузчик начальной загрузки .
Переключение означает установку адреса памяти на 16 переключателях адреса, затем установку значения данных на 8 переключателях данных и нажатие «ЗАПИСЬ», затем автоматический переход к следующей ячейке памяти, повторение промывки и промывки.
Начальный загрузчик — это очень короткая программа размером около 100 байт, которая может вводить данные с какого-либо другого устройства ввода-вывода, например устройства чтения бумажной ленты.
Используйте устройство для чтения с бумажной ленты, чтобы ввести свою программу, или, эй, вот идея, как насчет операционной системы . Вы знаете, как Apple Monitor (2048 байт), который включает много кода для эмуляции TTY на внутреннем дисплее и клавиатуре Apple, не обязательно, просто используйте физический TTY или VT100.
А теперь перерыв на обед .
Несколько сотен байтов в ОС учат ее читать/записывать кассету. Еще пара тысяч научит его читать/записывать диски. Я не спекулирую, они так работали.
Между тем, параллельные усилия продолжаются
как-то хранить загрузчик в ПЗУ, чтобы срубить мозоли на пальцах
первичная дисковая файловая система
простой текстовый редактор (хм, VT100 еще работают?)
ассемблер (компилятор языка ассемблера, поэтому мы можем сказать LDA #INPUT_MODE
вместо A9 03
.).
И нам лучше поужинать до закрытия всех ресторанов.
На данный момент мы работаем с командной строкой точно так же, как и сейчас, за исключением того, что используем настоящий VT100 вместо окна Terminal/PuTTY. У нас не будет, ls -R
потому что у нас пока нет рекурсивной файловой системы, но маленькие шаги, Элли.
Говоря о маленьких шагах, мы начинаем писать языки высокого уровня и заниматься кросс-разработкой; т.е. используйте Imsai для кросс-компиляции 80386, чтобы загрузить Compaq 386 (помните, что ваш самый первый код x86 будет родным 32-битным и не будет иметь представления о старых барьерах ОЗУ 64k/1MB), затем используйте это для кросс-компиляция для PowerMac G3 и т. д.
Проблема в том, что эти усилия предпринимаются независимо в каждом отдельном месте, где существует работающая машина Altair/Imsai/Digital Group. Теперь задача заключается в координации усилий, когда телефоны не работают. Если бы телефоны работали, любой музейный модем на 300 бод заставлял бы бригады разговаривать и обмениваться кодами.
И телефонная компания не бездействует; они пытаются выяснить, как получить что-то вверх.
Примерно через день после запуска телекоммуникаций кто-то перепишет (пере)программное обеспечение BBS, при условии, что он не нашел старую копию исходного кода BBS в журнале BYTE. Теперь мы делаем то же самое, что и здесь. Это баллистически увеличивает скорость восстановления, особенно с учетом того, что каждая страна в мире определила это как национальный стратегический приоритет.
К сожалению, многие компоненты в настоящее время, такие как USB-брелки, имеют «прошивку», работающую на более низком уровне системы, и на самом деле не имеют «жесткого» бэкдора, такого как передняя панель Imsai, для принудительной загрузки загрузчика начальной загрузки. Если эта прошивка исчезнет, каждую машину придется взломать или утилизировать. Однако это не будет проблемой, пока мы не перейдем к оборудованию 2000-го, так что Pentium и Mac Quadra 800, вероятно, по-прежнему будут работать нормально. И с ними мы можем переделать/заменить другие.
Это правда, что у Quadra 800 нет передней панели переключателей. Тем не менее, на его печатной плате есть следы, и вам придется немного взломать аппаратное обеспечение, чтобы установить в него загрузчик начальной загрузки, или просто научиться записывать EPROM.
Поскольку проблемы проектирования чрезвычайно четко определены и понятны, все, что остается, — это кодирование. Нам не нужно изобретать велосипед, мы все знаем, как выглядят колеса, нам нужно вырезать только одно.
Помните, что почти весь существующий код понимает кто-то , кто жив, и кто, если на него надавить, может переписать его. Лучше.
Это позволило бы нам (хе-хе) «перезагрузить» дизайн наших вычислительных систем с нуля, а не постоянно тащить за собой старую устаревшую инфраструктуру, которая все усложняет. Код будет оптимизирован и унифицирован отчасти потому, что нам нужно восстановить мир, а у нас нет времени на поддержку множества устаревших способов сделать то же самое. Досбокс ушел . Пропали винды . Флэш пропал . Оптимизация HTML/CSS/AJAX . И т.д. и т.п. Правительство растопчет все проблемы с патентами из-за чрезвычайного положения в стране.
Разве вы никогда не хотели, чтобы вы могли просто взять месяц и переписать с нуля весь свой устаревший спагетти-код и устаревшие стандарты? Теперь вы можете.
Когда у нас есть работающий компилятор C89 , проблема далеко не решена: многие программы не могут скомпилироваться без glib, для которого требуется gcc, который также является компилятором C++, требующим библиотек C++.
Таким образом, для компиляции большинства программ вам нужен компилятор C++, а для этого вам нужен компилятор C++.
Для достижения потребуется много времени. И этого времени может быть достаточно, чтобы сделать программное обеспечение C89 популярным, чтобы новое программное обеспечение было написано с нуля или преобразовано в C89.
Такие легкие языки программирования, как lua
C89, заменят остальные.
g++-4.3
для сборки и компиляции g++-4.6
; используйте это g++-4.6
для компиляции , а затем g++-4.9
используйте для компиляции . Насколько мне известно, переход внутренних компонентов GCC с C на C++ был задуман с учетом такого итеративного процесса.
g++-5
g++-6
Джонршарп
Ритис I
Скотт Уитлок
Ритис I
пользователь
пользователь
Трэвис Кристиан
Мерфи
хДайдзу
Дюрандаль
лес