Разделение времени от Project MAC до UNIX
В 1959 году Кристофер Стрэчи (Великобритания) и Джон Маккарти (США) независимо друг от друга описали то, что они назвали разделением времени. Тем временем компьютерный пионер Дж. К. Р. Ликлайдер из Массачусетского технологического института (MIT) начал продвигать идею интерактивных вычислений как альтернативу пакетной обработке. В то время пакетная обработка была обычным способом работы с компьютерами: пользователь передавал колоду перфокарт оператору, который подавал их в машину, и через час или более печатный результат был доступен для получения. Понятие Ликлайдера об интерактивном программировании подразумевало ввод текста на телетайпе или другой клавиатуре и получение более или менее немедленной обратной связи от компьютера на печатающем механизме телетайпа или другом устройстве вывода. Именно так работал компьютер Whirlwind в Массачусетском технологическом институте в 1950 году, и это было по сути тем, что Стрэчи и Маккарти имели в виду в конце десятилетия.
К ноябрю 1961 года был создан и испытан прототип системы разделения времени. Она была построена Фернандо Корбато и Робертом Джано в Массачусетском технологическом институте и соединяла компьютер IBM 709 с тремя пользователями, печатающими на пишущих машинках IBM Flexowriter. Это был лишь прототип для более сложной системы разделения времени, над которой работал Корбато и которая называлась Compatible Time-Sharing System, или CTSS. Однако Корбато ждал подходящей технологии для создания этой системы. Было ясно, что электромеханические технологии и технологии вакуумных трубок не подходят для вычислительных требований, которые обмен временем предъявлял к машинам. Нужны были быстрые компьютеры на транзисторах.
Тем временем Ликлайдер возглавил правительственную программу США под названием Агентство перспективных исследовательских проектов (ARPA), созданную в ответ на запуск Советским Союзом спутника Sputnik в 1957 году. ARPA исследовало интересные технологические области, и под руководством Ликлайдера оно сосредоточилось на совместном использовании времени и интерактивных вычислениях. При поддержке ARPA проект CTSS превратился в проект MAC, который был запущен в 1963 году.
Проект MAC был только началом. За ним быстро последовали другие подобные проекты по разделению времени в различных исследовательских институтах, а также начали выпускаться некоторые коммерческие продукты, которые также назывались интерактивными или разделенными временем. (Роль ARPA в создании другой сети с совместным использованием времени, ARPANET, стала основой Интернета и рассматривается в следующем разделе, «Интернет»).
Совместное использование времени представляло собой другую модель взаимодействия, и для ее поддержки требовался новый язык программирования. Исследователи создали несколько таких языков, в первую очередь BASIC (Beginner’s All-Purpose Symbolic Instruction Code), который был изобретен в 1964 году в Дартмутском колледже (Гановер, штат Нью-Гэмпшир) Джоном Кемени и Томасом Курцем. BASIC обладал функциями, которые делали его идеальным для разделения времени, и был достаточно прост, чтобы его могла использовать целевая аудитория — студенты колледжа. Кемени и Курц хотели открыть компьютеры для более широкой группы пользователей и намеренно разрабатывали BASIC с этой целью. Им это удалось.
Совместное использование времени также потребовало создания операционной системы нового типа. Исследователи из AT&T (American Telephone and Telegraph Company) и GE занялись этой проблемой, получив финансирование от ARPA в рамках проекта MAC и разработав амбициозный план по реализации разделения времени на новом компьютере с новой операционной системой, ориентированной на разделение времени. AT&T отказалась от участия в проекте, но GE продолжила его, и результатом стала операционная система Multics, работающая на компьютере GE 645. GE 645 стал примером компьютера с разделением времени в 1965 году, а Multics — образцом операционной системы с разделением времени, созданной для работы семь дней в неделю, 24 часа в сутки.
Когда AT&T вышла из проекта и убрала машины GE из своих лабораторий, исследователи из высокотехнологичного исследовательского подразделения AT&T, Bell Laboratories, были расстроены. Они чувствовали, что им нужны возможности Multics по разделению времени для их работы, и поэтому два сотрудника Bell Labs, Кен Томпсон и Деннис Ричи, написали собственную операционную систему. Поскольку операционная система была вдохновлена Multics, но изначально была несколько проще, они назвали ее UNIX.
Среди прочих новшеств UNIX воплотила в себе понятие «трубы». Трубы позволяли пользователю передавать результаты работы одной программы другой программе для использования в качестве входных данных. Это привело к появлению стиля программирования, при котором небольшие, целевые, однофункциональные программы объединялись для достижения более сложной цели. Однако, возможно, самым влиятельным аспектом UNIX стало то, что Bell Labs свободно распространяла исходный код (некомпилированную, читаемую человеком форму кода, из которого состояла операционная система) среди колледжей и университетов, но не предлагала поддерживать ее. Свободное распространение исходного кода привело к быстрой и несколько разнонаправленной эволюции UNIX. В то время как первоначальная поддержка была привлечена ее бесплатностью, ее надежная многозадачность и хорошо развитые функции сетевой безопасности сделали ее самой распространенной операционной системой для академических учреждений и серверов World Wide Web.