Различия между версиями 26 и 27
Версия 26 от 2008-08-24 06:30:08
Размер: 33637
Редактор: Allena
Комментарий: 50% и мое искреннее сочуствие техническому редактору
Версия 27 от 2008-08-24 16:32:53
Размер: 35557
Редактор: VsevolodKrishchenko
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 2: Строка 2:
Когда компьютеры были очень большие, а программы очень маленькие... Разработка ПО была неотъемлемой частью разработки компьютера. Программное обеспечение было жестко привязано к аппаратному обеспечению конкретной машины. Именно тогда и появились сами термины "аппаратное обеспечение", "программное обеспечение".
Строка 4: Строка 3:
Простая мясорубка состоит из железяк, и работает сама по себе. Элементы компьютера, даже правильно собранные, сами по себе не заработают. Для работы компьютера необходимы программы. Аппаратное обеспечение должно быть скреплено прораммным. В те далекие времена, когда компьютеры были очень большими, а программы -- очень маленькими, разработка программного обеспечения была неотъемлемой частью разработки компьютера. В результате программное обеспечение было жестко привязано к аппаратному обеспечению конкретной машины, позже -- к серии однотипных машин.
Строка 6: Строка 5:
В те времена, когда программное обеспечение было состоявляющей частью компьютера, оно разрабатывалось с той же скоростью и в то же время, что и апаратное обеспечение. Время проектирования ЭВМ Мир, начиная с теоретических разработок и заканчивая эксплуатационным образцом, составило 12 лет. И на протяжении всего этого времени параллельно с аппаратным разрабатывалось программное обеспечение, именно для "скрепления" аппаратуры, а не для решения пользовательских задач. Пользователи для решения своих задач писали программы сами. Заграницей использовались аналогичные подходы. Надо заметить, что в то время, в отличии от нынешней ситуации, Советский Союз опережал весь мир в области разработки вычислительной техники. Именно тогда и появились сами термины "аппаратное обеспечение", "программное обеспечение". Простой арифмометр или мясорубка состоит только из "железа", которое работает само по себе, в то время как "железные" элементы любого компьютера, даже правильно собранные, сами по себе не заработают: для работы компьютера необходимы программы. Для функционирования компьютера аппаратное обеспечение должно быть "скреплено" программным.
Строка 8: Строка 7:
Неотъемлемость программного обеспчения от аппаратного можно наблюдать и в некоторых современных устройствах. Например,в неуправляемых свитчах. В них нет операционной системы, это почти что просто хабы, тем не менее, в них есть регистры для хранения MAC-адресов, реализация технологии защиты от spoof'инга, и т. п. В те времена, когда все программное обеспечение было составляющей частью компьютера (и не подлежалозамене на другое), оно разрабатывалось с той же скоростью и в то же время, что и аппаратное обеспечение. Например, время проектирования ЭВМ Мир, начиная с теоретических разработок и заканчивая эксплуатационным образцом, составило 12 лет. И на протяжении всего этого времени параллельно с аппаратным разрабатывалось программное обеспечение, именно для "скрепления" аппаратуры, а не для решения пользовательских задач. Пользователи для решения своих задач писали программы сами. Ведущей компьютерной фирмой США --- IBM --- использовались аналогичные подходы: создание системы IBM 360 от начала разработки до начала стабильной работы заняло так же около десяти лет и операционная система OS/360 была неотъемлемой частью ЭВМ.
Строка 10: Строка 9:
Исторической и идеологической предшественницей GNU/Linux является операционная система UNIX. История UNIX весьма обширна и интересна, но мы заострим вниманиt лишь на трех вещах, её касающихся. ## Надо заметить, что в то время, в отличии от нынешней ситуации, Советский Союз опережал весь мир в области разработки вычислительной техники.
Строка 12: Строка 11:
== Для себя ==
Исторически операционная система UNIX разрабатывалась "для себя". После того, как Bell Labs отказались от участия в проекте MULTICS группа исследователей из Bell Labs, задействованная в этом проекте, хотела продолжить работу над созданием операционной системы с разделением времени. Название UNIX предложил Брайан Керниган, по ассоциациям с MULTICS. Предложение купить компьютер для проекта было отклонено и поначалу для экспериментов использовался найденный в подвале старый PDP-7.
Неотъемлемость программного обеспчения от аппаратного можно наблюдать и в некоторых современных устройствах, например, в неуправляемых свитчах. В них нет операционной системы, это почти что просто хабы, тем не менее, в них есть регистры для хранения MAC-адресов, реализация технологии защиты от spoof'инга, и т. п.
Строка 15: Строка 13:
Немного ранее Кен Томпсон создал игру Star Trek(в мемуарах используется названии Space Travel, так как Star Trek является зарегестрированным торговым знаком), и был ею весьма увлечен. Дениса Ритчи интересовали больше научные, теоретические вещи --- он разрабатывал языки программирования(A, B). Таким образом, имелась необходимость в обеспечении работы нескольких пользователей на одной машине. Чтобы на одном компьтере могли одновременно выполняться несколько процессов и работать несколько пользователей рабочей среде нужно было ядро, отвечающее за грамотное распределение ресурсов --- машинного времени, оперативной памяти, внешних устройств. Уже тогда было очевидно, что такое ядро должно быть обособлено от пользовательсктих задач, и должно лишь предоставлять возможность разделения ресурсов. Исторической и идеологической предшественницей GNU/Linux является операционная система UNIX. История UNIX весьма обширна и интересна, но мы заострим внимание лишь на трех вещах, её касающихся.
Строка 17: Строка 15:
По сути, ядро операционной системы --- это всего лишь большая библиотека, предоставляющая функции для управления ресурсами. Ресурс можно заказать, освободить, можно получить отказ в доступе к ресурсу, и т.п. Доступ к программному интерфейсу ядра предоставляется в виде системных вызовов(system calls, 2-ая секция man). Программы, позволяющие воспользоваться функциями ядра называют утилитами. По замыслу разработчиков набор утилит должен реализовывать командный интерфейс ядра на основе прораммного. Утилиты позволяют манипулировать файлами, производить печать, и т. д. == Разработка для себя ==

Исторически операционная система UNIX разрабатывалась "для себя". После того как НИИ Bell Labs отказался от участия в проекте MULTICS, группа исследователей из Bell Labs, задействованная в этом проекте, хотела продолжить работу над созданием операционной системы с разделением времени. Название UNIX предложил Брайан Керниган, по ассоциациям с MULTICS. Предложение купить новый компьютер для проекта было отклонено и поначалу для экспериментов использовался относительно старый PDP-7.

Немного ранее Кен Томпсон создал игру Star Trek (в мемуарах используется названии Space Travel, так как Star Trek является зарегистрированным торговым знаком), и был ею весьма увлечен. Дениса Ритчи интересовали больше научные, теоретические вещи --- он разрабатывал языки программирования (A, B, а в будущем С). Таким образом, имелась необходимость в обеспечении работы нескольких пользователей на одной машине. Чтобы на одном компьютере могли одновременно выполняться несколько процессов и работать несколько пользователей рабочей среде нужно было ядро, отвечающее за грамотное распределение ресурсов --- машинного времени, оперативной памяти, внешних устройств. Уже тогда было очевидно, что такое ядро должно быть обособлено от пользовательских задач, и должно лишь предоставлять возможность разделения ресурсов.

По сути, ядро операционной системы --- это всего лишь большая библиотека, предоставляющая функции для управления ресурсами. Ресурс можно заказать, освободить, можно получить отказ в доступе к ресурсу, и т.п. Доступ к программному интерфейсу ядра предоставляется в виде системных вызовов (system calls, 2-ая секция man). Программы, позволяющие воспользоваться функциями ядра называют утилитами. По замыслу разработчиков набор утилит должен реализовывать командный интерфейс ядра на основе программного. Утилиты позволяют манипулировать файлами, производить печать, и т. д.
Строка 20: Строка 24:
Кен Томпсон и Денис Ритчи продвинулись в реализации этой концепции. В начале 70-ых задачей начал заниматься целый отдел, началось внедрение. Начальник отдела увлекался макроязыками и предложил идею конвейера, то есть, потоковую передачу данных вместо макроподстановок и скобочек как в лиспе.
##скобочки это да-а-а. ну да придерживаться лекторского варианта так придерживаться.
В этой технологии отсутствует способ нормальной реализации механизма ветвления, однако, при использовании командной строки механизмы сложнее конвейер могут запутать пользователя.
##как пользователь за шелл садится, так сразу тупеет, видимо.
Строка 25: Строка 25:
Затем в разработке начал принимать участие известный поупляризатор науки Брайан Керниган. Он предложил две вещи:
 * Добавить в язык B некоторые высокоуровневые средства из PL/I, например, структуры.
 * Переписать операционную систему на языке C. Идея состояла в том, что при написании большей части операционной системы на неком языке программирования, этой ОС потенциально можно оснастить любой компьютер, для которого существует компилятор использовавшегося языка.
Кен Томпсон и Денис Ритчи продвинулись в реализации этой концепции. В начале 70-ых задачей начал заниматься целый отдел, началось внедрение. Начальник отдела Дуглас Макилрой,увлекался макроязыками и предложил идею конвейера, т.е. потоковую передачу данных между процессами и макроязыка для ее описания, вместо макроподстановок и скобочек, как в лиспе. В технологии конвеера отсутствует способ нормальной реализации механизма ветвления, однако, при использовании командной строки механизмы сложнее конвейера могут быть трудными для использования пользователем.
Строка 29: Строка 27:
В то время уже существовали языки программирования, такие как PL/I и FORTRAN. Но они были ориентированы больше на решение пользовательских задач, чем системных. FORTRAN(FORmula TRANslator), первый высокоуровневый язык, был придуман математиками и ориентирован на решение математических задач. ALGOL-60 имел некоторые особенности, не позволявшие создавать нормальные реализации. PL/I только начинал приобретать законченную форму, и также был ориентирован скорее на пользовательские задачи, хотя и содержал много интересных идей. Керниган предложил реализовать язык прогрраммирования ориентированный на системные задачи. Затем в разработке начал принимать участие известный популяризатор науки Брайан Керниган. Он предложил, во-первых, добавить в язык B некоторые высокоуровневые средства из PL/I, например, структуры. Во-вторых, Керниган предложил переписать операционную систему с PDP-ассемблера на язык C. Идея состояла в том, что при написании большей части операционной системы на неком языке программирования, этой операционной системой потенциально можно оснастить любой компьютер, для которого существует компилятор использовавшегося языка.
Строка 31: Строка 29:
Потенциальным результатом использования подобного подхода была возможность портирования операционной системы на компьютер с принципиально отличающейся архитектурой. В 1972 ОС была портирована на 32-разрядный Interdata-32 с 16-разрядного PDP-11. Небольшая часть ядра, отвечающая за работу с аппаратурой, разумеется, реализовывалась и реализовывается на ассемблере в любом случае, однако вся логика операционной системы была написана на языке C. В то время уже существовали языки программирования, такие как PL/I и FORTRAN. Но они были ориентированы больше на решение пользовательских задач, чем системных. FORTRAN(FORmula TRANslator), первый высокоуровневый язык, был придуман математиками и ориентирован на решение математических задач. ALGOL-60 имел некоторые особенности, не позволявшие создавать нормальные реализации. PL/I только начинал приобретать законченную форму, и также был ориентирован скорее на пользовательские задачи, хотя и содержал много интересных идей. Керниган предложил реализовать язык программирования ориентированный на системные задачи. До этого для написания ядра операционных систем использовался машинный язык соответствующей ЭВМ.

Потенциальным результатом использования подобного подхода была возможность портирования операционной системы на компьютер с принципиально отличающейся архитектурой. В 1972 году ОС Unix была портирована на 32-разрядный Interdata-32 с 16-разрядного PDP-11. Небольшая часть ядра операционной системы, разумеется, реализовывалась и продолжает реализовываться на ассемблере, однако вся логика операционной системы была написана на языке C.
Строка 34: Строка 34:
Портируемость программных продуктов стала, в определенном смысле, революционным событием. Появилась возможность создать программный продукт один раз, и после этого использовать его на различных компьютерах. В случае одинаковой архитектуры достаточно было простого копирования, в случае разных --- перекомпиляции. Жизненный цикл программного продукта полностью отделился от жизненного цикла компьютера и даже класса компьютеров. Это начало происходить в 70-ые годы. Стало ясно, что производство программных продуктов отличается от производстав глинянных горшков: для того, чтобы сделать в два раза больше горшков надо потратить в два раза больше времени, сил, глины; для того, чтобы сделать две копии программы достаточно вызвать утилиту копирования. Стало очевидно, что переносимые программные продукты не являются материальными.
Строка 36: Строка 35:
Еще важнее то, что выяснилась еще одна вещь: для создания хорошей программы целесообразно привлечь к её разработке разных людей, заинтересованных в немного разных задачах. Портируемость программных продуктов стала, в определенном смысле, революционным событием. Появилась возможность создать программный продукт системного уровня один раз, и после этого использовать его на различных компьютерах. В случае одинаковой архитектуры достаточно было простого копирования скомпилированного кода, в случае разных --- перекомпиляции. В результате жизненный цикл программного продукта полностью отделился от жизненного цикла компьютера и даже класса компьютеров. Это начало происходить в 70-ые годы. Стало ясно, что производство программных продуктов отличается от производстав глинянных горшков: для того, чтобы сделать в два раза больше горшков надо потратить в два раза больше времени, сил, глины; для того, чтобы сделать две копии программы достаточно вызвать утилиту копирования. Стало очевидно, что переносимые программные продукты не являются материальными, поскольку больше не являются частью "программно-аппаратных комплексов", какими были ЭВМ до 70-ых годов.
Строка 38: Строка 37:
Например, кто-то пишет программу для форматирования текста для печати на принтере IBM. Благодаря портируемости, эту программу могут использовать еще в десятке организаций. В одной из организация сотрудник хочет напечатать поздравление секретарше шефа в стихотворной форме и добавляет в программу возможности центрирования и использования красивых шрифтов.

Суть в том, что пользователи модифицируют программный продукт, приспосабливая его к своим нуждам.
Строка 43: Строка 39:
После того, как UNIX получила распространение, в течение порядка десяти лет она развивалась вышеописанным способом. Люди писали программы, на конференциях обменивались ими, находили ошибки и дорабатывали, снова обменивались. Этот процесс затронул не столько UNIX разрабатывавшийся Кеном Томпсоном и Денисом Ричи в Bell Labs(тот был производственным продуктом и принадлежал компании AT&T), сколько UNIX-подобную ОС, создававшуюся американскими университетами и получившую название BSD(Berkley System Distribution). Тогда же появилась концепция создания и распространения некоторого блока программ,написанных различными людьми, называющегося distribution. Авторы программ распространяли их затем, чтобы другие пользователи подправляли и дорабатывали программы. Такая форма разработки программного продукта хорошо себя зарекомендовала уже тогда, хотя в те времена, чтобы передать копию программы надо было записать её на ленту и либо отдать при личной встрече, либо выслать бандеролью. Программы тогда разрабатывались не слишком многочисленными учеными, которые постоянно встречались и общались на различных конференциях, обмениваяь не только идеями, но и их воплощениями.
Строка 45: Строка 40:
Это счастье продолжалось до конца 70-ых-начала 80-ых годов, когда стала очевидно, что ОС UNIX и её подобия обладают с точки зрения бизнеса двумя очень важными свойствами:
 * Для того, чтобы снабдить переносимой ОС новый компьютер/тип компьютеров надо значительно меньше времени, чем тратилось на разработку ОС ранее. Например, полгода вместо пяти лет.
 * UNIX технологична в своей архитектуре и позволяет гибко конструировать всевозможные решения пользовательских задач.
##следующие фразы выше моего понимания. Оставляю как есть.
 Идея в том, что ядро + утилиты + вокруг утилит какие-то приложения, которые в основном, перерабатывают пользовательскую информацию, пользуются утилитами для доступа к ядру (или сами вызывают системные вызовы), главное -- они смотрят на пользователя, решают его, пользовательские задачи. Эта архитектура оказалась достаточно гибкой, чтобы с помощью ее решать практически любую задачу, которую предложит пользователь, причем, в том числе, решать силами самого пользователя. Конструктор такой.
В результате отделения программного беспечения от аппаратного выяснилась еще одна вещь: для создания хорошей программы целесообразно привлечь к её разработке разных людей, заинтересованных в немного разных задачах. Например, кто-то пишет программу для форматирования текста для печати на принтере IBM. Благодаря портируемости, эту программу могут использовать еще в десятке организаций. В одной из организация сотрудник хочет напечатать поздравление секретарше шефа в стихотворной форме и добавляет в программу возможности центрирования и использования красивых шрифтов. Суть в том, что пользователи модифицируют программный продукт, приспосабливая его к своим нуждам.

После того, как UNIX получила распространение, в течение порядка десяти лет она развивалась вышеописанным способом. Люди писали программы, на конференциях обменивались ими, находили ошибки и дорабатывали, снова обменивались. Этот процесс затронул не столько UNIX, разрабатывавшийся Кеном Томпсоном и Денисом Ричи в Bell Labs (тот был производственным продуктом и принадлежал компании AT&T), сколько UNIX-подобную ОС, создававшуюся американскими университетами и получившую название BSD (''Berkeley System Distribution'', по названию самого известного кампуса Университета Калифорнии). Тогда же появилась концепция создания и распространения некоторого блока программ,написанных различными людьми, называющегося ''distribution''. Авторы программ распространяли их затем, чтобы другие пользователи подправляли и дорабатывали программы. Такая форма разработки программного продукта хорошо себя зарекомендовала уже тогда, хотя в те времена, чтобы передать копию программы надо было записать её на ленту и либо отдать при личной встрече, либо выслать бандеролью. Программы тогда разрабатывались не слишком многочисленными учеными, которые постоянно встречались и общались на различных конференциях, обмениваяь не только идеями, но и их воплощениями.

Это счастливое время продолжалось до конца 70-ых-начала 80-ых годов, когда стала очевидно, что ОС UNIX и её подобия обладают с точки зрения бизнеса двумя очень важными свойствами:
 * для того, чтобы снабдить переносимой ОС новый компьютер/тип компьютеров надо значительно меньше времени, чем тратилось на разработку ОС ранее. Например, полгода вместо пяти лет;
 * UNIX проста и технологична в своей архитектуре, что позволяет гибко конструировать всевозможные решения пользовательских задач.

Идея UNIX состояла в том, что ядро, системные утилиты + вокруг утилит какие-то приложения, которые в основном, перерабатывают пользовательскую информацию, пользуются утилитами для доступа к ядру (или сами вызывают системные вызовы), главное -- они смотрят на пользователя, решают его, пользовательские задачи. Эта архитектура оказалась достаточно гибкой, чтобы с помощью ее решать практически любую задачу, которую предложит пользователь, причем, в том числе, решать силами самого пользователя. Конструктор такой.
Строка 52: Строка 51:
Начались так называемые unix wars. Стало выяснятся, что большинство программного кода имеет правообладателей.Более того, если программа не была написана в свободное от работы время и иного не указано в контракте, правообладателем явлется работадатель программиста. Это совершенно не согласовывалось с описанным выше академическим стилем создания программ. Разработчики UNIX-систем привыкли показывать свои работы заинтересованным коллегам, которые высказывали мнения, помогали, дополняли. Работа в сообществе сильно отличается от работы в одиночку.
Строка 54: Строка 52:
Также выяснилось, что многие не задумывались о принадлежности кода, и для большого количества программ установить писались ли они в рабочее время, и кто написал какую часть не представляется возможным. Начались так называемые unix wars. Стало выяснятся, что большинство программного кода имеет правообладателей. Более того, если программа не была написана в свободное от работы время и иного не указано в контракте, правообладателем явлется работадатель программиста (им мог быть и университет). Правообладатели не хотели свободного расспространения исходного кода. Это совершенно не согласовывалось с описанным выше академическим стилем создания программ. Разработчики UNIX-систем привыкли показывать свои работы заинтересованным коллегам, которые высказывали мнения, помогали, дополняли. Работа в сообществе сильно отличается от работы в одиночку. Также выяснилось, что многие не задумывались о принадлежности кода, и для большого количества программ установить писались ли они в рабочее время, и кто написал какую часть не представляется возможным. В результате значительная часть кода была признана принадлежащим компании AT&T (владельцу Bell Labs на момент появления UNIX), кото
Строка 56: Строка 54:
В результате, в 80-ых годах, параллельно с развитием университетских версий, произошел стремительный рост коммерческих UNIX-подобных систем. Дерево родословной UNIX-систем занимает около 24 листов формата А4.('''картинка''') В результате указанных факторов в 80-ых годах, параллельно с развитием университетских версий, произошел стремительный рост коммерческих UNIX-подобных систем: полное дерево родословной UNIX-систем занимает около 24 листов формата А4.

История

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

Именно тогда и появились сами термины "аппаратное обеспечение", "программное обеспечение". Простой арифмометр или мясорубка состоит только из "железа", которое работает само по себе, в то время как "железные" элементы любого компьютера, даже правильно собранные, сами по себе не заработают: для работы компьютера необходимы программы. Для функционирования компьютера аппаратное обеспечение должно быть "скреплено" программным.

В те времена, когда все программное обеспечение было составляющей частью компьютера (и не подлежалозамене на другое), оно разрабатывалось с той же скоростью и в то же время, что и аппаратное обеспечение. Например, время проектирования ЭВМ Мир, начиная с теоретических разработок и заканчивая эксплуатационным образцом, составило 12 лет. И на протяжении всего этого времени параллельно с аппаратным разрабатывалось программное обеспечение, именно для "скрепления" аппаратуры, а не для решения пользовательских задач. Пользователи для решения своих задач писали программы сами. Ведущей компьютерной фирмой США --- IBM --- использовались аналогичные подходы: создание системы IBM 360 от начала разработки до начала стабильной работы заняло так же около десяти лет и операционная система OS/360 была неотъемлемой частью ЭВМ.

Неотъемлемость программного обеспчения от аппаратного можно наблюдать и в некоторых современных устройствах, например, в неуправляемых свитчах. В них нет операционной системы, это почти что просто хабы, тем не менее, в них есть регистры для хранения MAC-адресов, реализация технологии защиты от spoof'инга, и т. п.

Исторической и идеологической предшественницей GNU/Linux является операционная система UNIX. История UNIX весьма обширна и интересна, но мы заострим внимание лишь на трех вещах, её касающихся.

Разработка для себя

Исторически операционная система UNIX разрабатывалась "для себя". После того как НИИ Bell Labs отказался от участия в проекте MULTICS, группа исследователей из Bell Labs, задействованная в этом проекте, хотела продолжить работу над созданием операционной системы с разделением времени. Название UNIX предложил Брайан Керниган, по ассоциациям с MULTICS. Предложение купить новый компьютер для проекта было отклонено и поначалу для экспериментов использовался относительно старый PDP-7.

Немного ранее Кен Томпсон создал игру Star Trek (в мемуарах используется названии Space Travel, так как Star Trek является зарегистрированным торговым знаком), и был ею весьма увлечен. Дениса Ритчи интересовали больше научные, теоретические вещи --- он разрабатывал языки программирования (A, B, а в будущем С). Таким образом, имелась необходимость в обеспечении работы нескольких пользователей на одной машине. Чтобы на одном компьютере могли одновременно выполняться несколько процессов и работать несколько пользователей рабочей среде нужно было ядро, отвечающее за грамотное распределение ресурсов --- машинного времени, оперативной памяти, внешних устройств. Уже тогда было очевидно, что такое ядро должно быть обособлено от пользовательских задач, и должно лишь предоставлять возможность разделения ресурсов.

По сути, ядро операционной системы --- это всего лишь большая библиотека, предоставляющая функции для управления ресурсами. Ресурс можно заказать, освободить, можно получить отказ в доступе к ресурсу, и т.п. Доступ к программному интерфейсу ядра предоставляется в виде системных вызовов (system calls, 2-ая секция man). Программы, позволяющие воспользоваться функциями ядра называют утилитами. По замыслу разработчиков набор утилит должен реализовывать командный интерфейс ядра на основе программного. Утилиты позволяют манипулировать файлами, производить печать, и т. д.

[ПРИКРЕПЛЁННЫЙ ФАЙЛ]

Кен Томпсон и Денис Ритчи продвинулись в реализации этой концепции. В начале 70-ых задачей начал заниматься целый отдел, началось внедрение. Начальник отдела Дуглас Макилрой,увлекался макроязыками и предложил идею конвейера, т.е. потоковую передачу данных между процессами и макроязыка для ее описания, вместо макроподстановок и скобочек, как в лиспе. В технологии конвеера отсутствует способ нормальной реализации механизма ветвления, однако, при использовании командной строки механизмы сложнее конвейера могут быть трудными для использования пользователем.

Затем в разработке начал принимать участие известный популяризатор науки Брайан Керниган. Он предложил, во-первых, добавить в язык B некоторые высокоуровневые средства из PL/I, например, структуры. Во-вторых, Керниган предложил переписать операционную систему с PDP-ассемблера на язык C. Идея состояла в том, что при написании большей части операционной системы на неком языке программирования, этой операционной системой потенциально можно оснастить любой компьютер, для которого существует компилятор использовавшегося языка.

В то время уже существовали языки программирования, такие как PL/I и FORTRAN. Но они были ориентированы больше на решение пользовательских задач, чем системных. FORTRAN(FORmula TRANslator), первый высокоуровневый язык, был придуман математиками и ориентирован на решение математических задач. ALGOL-60 имел некоторые особенности, не позволявшие создавать нормальные реализации. PL/I только начинал приобретать законченную форму, и также был ориентирован скорее на пользовательские задачи, хотя и содержал много интересных идей. Керниган предложил реализовать язык программирования ориентированный на системные задачи. До этого для написания ядра операционных систем использовался машинный язык соответствующей ЭВМ.

Потенциальным результатом использования подобного подхода была возможность портирования операционной системы на компьютер с принципиально отличающейся архитектурой. В 1972 году ОС Unix была портирована на 32-разрядный Interdata-32 с 16-разрядного PDP-11. Небольшая часть ядра операционной системы, разумеется, реализовывалась и продолжает реализовываться на ассемблере, однако вся логика операционной системы была написана на языке C.

Переносимость программ

Портируемость программных продуктов стала, в определенном смысле, революционным событием. Появилась возможность создать программный продукт системного уровня один раз, и после этого использовать его на различных компьютерах. В случае одинаковой архитектуры достаточно было простого копирования скомпилированного кода, в случае разных --- перекомпиляции. В результате жизненный цикл программного продукта полностью отделился от жизненного цикла компьютера и даже класса компьютеров. Это начало происходить в 70-ые годы. Стало ясно, что производство программных продуктов отличается от производстав глинянных горшков: для того, чтобы сделать в два раза больше горшков надо потратить в два раза больше времени, сил, глины; для того, чтобы сделать две копии программы достаточно вызвать утилиту копирования. Стало очевидно, что переносимые программные продукты не являются материальными, поскольку больше не являются частью "программно-аппаратных комплексов", какими были ЭВМ до 70-ых годов.

Коллективная разработка

В результате отделения программного беспечения от аппаратного выяснилась еще одна вещь: для создания хорошей программы целесообразно привлечь к её разработке разных людей, заинтересованных в немного разных задачах. Например, кто-то пишет программу для форматирования текста для печати на принтере IBM. Благодаря портируемости, эту программу могут использовать еще в десятке организаций. В одной из организация сотрудник хочет напечатать поздравление секретарше шефа в стихотворной форме и добавляет в программу возможности центрирования и использования красивых шрифтов. Суть в том, что пользователи модифицируют программный продукт, приспосабливая его к своим нуждам.

После того, как UNIX получила распространение, в течение порядка десяти лет она развивалась вышеописанным способом. Люди писали программы, на конференциях обменивались ими, находили ошибки и дорабатывали, снова обменивались. Этот процесс затронул не столько UNIX, разрабатывавшийся Кеном Томпсоном и Денисом Ричи в Bell Labs (тот был производственным продуктом и принадлежал компании AT&T), сколько UNIX-подобную ОС, создававшуюся американскими университетами и получившую название BSD (Berkeley System Distribution, по названию самого известного кампуса Университета Калифорнии). Тогда же появилась концепция создания и распространения некоторого блока программ,написанных различными людьми, называющегося distribution. Авторы программ распространяли их затем, чтобы другие пользователи подправляли и дорабатывали программы. Такая форма разработки программного продукта хорошо себя зарекомендовала уже тогда, хотя в те времена, чтобы передать копию программы надо было записать её на ленту и либо отдать при личной встрече, либо выслать бандеролью. Программы тогда разрабатывались не слишком многочисленными учеными, которые постоянно встречались и общались на различных конференциях, обмениваяь не только идеями, но и их воплощениями.

Это счастливое время продолжалось до конца 70-ых-начала 80-ых годов, когда стала очевидно, что ОС UNIX и её подобия обладают с точки зрения бизнеса двумя очень важными свойствами:

  • для того, чтобы снабдить переносимой ОС новый компьютер/тип компьютеров надо значительно меньше времени, чем тратилось на разработку ОС ранее. Например, полгода вместо пяти лет;
  • UNIX проста и технологична в своей архитектуре, что позволяет гибко конструировать всевозможные решения пользовательских задач.

Идея UNIX состояла в том, что ядро, системные утилиты + вокруг утилит какие-то приложения, которые в основном, перерабатывают пользовательскую информацию, пользуются утилитами для доступа к ядру (или сами вызывают системные вызовы), главное -- они смотрят на пользователя, решают его, пользовательские задачи. Эта архитектура оказалась достаточно гибкой, чтобы с помощью ее решать практически любую задачу, которую предложит пользователь, причем, в том числе, решать силами самого пользователя. Конструктор такой.

Лицензионно-правовые аспекты

Начались так называемые unix wars. Стало выяснятся, что большинство программного кода имеет правообладателей. Более того, если программа не была написана в свободное от работы время и иного не указано в контракте, правообладателем явлется работадатель программиста (им мог быть и университет). Правообладатели не хотели свободного расспространения исходного кода. Это совершенно не согласовывалось с описанным выше академическим стилем создания программ. Разработчики UNIX-систем привыкли показывать свои работы заинтересованным коллегам, которые высказывали мнения, помогали, дополняли. Работа в сообществе сильно отличается от работы в одиночку. Также выяснилось, что многие не задумывались о принадлежности кода, и для большого количества программ установить писались ли они в рабочее время, и кто написал какую часть не представляется возможным. В результате значительная часть кода была признана принадлежащим компании AT&T (владельцу Bell Labs на момент появления UNIX), кото

В результате указанных факторов в 80-ых годах, параллельно с развитием университетских версий, произошел стремительный рост коммерческих UNIX-подобных систем: полное дерево родословной UNIX-систем занимает около 24 листов формата А4.

Одновременно с этим произошло еще три вещи:

  • Стала повышаться информационная связность. В Америке и крупных исследовательских центрах Европы появился Интернет. Компьютеры объединялись в группы, внутри которых люди могли обмениваться программами уже не посылая бандеролью магнитные ленты. Эффективность команд, которые состояли из заинтересованных людей, находящихся в разных местах, сильно повысилась.
  • Стало ясно, что во избежание подобий unix wars необходимо строго разделить свободное ПО, с которым можно делать что угодно без ответственности перед правообладателем, и несвободное.
  • С одной стороны была группа людей, которая хотела придерживаться академического стиля разработки и создавать свободное ПО. Они предпочитали придерживаться научного подхода к программированию --- ученые проводят исследования, публикуют статьи, и это всё на что они претендуют. При необходимости ученые могут оказывать помощь друг другу. С другой стороны, появились люди, осознавшие, что разработку программного обеспечения можно превратить в промышленную отрасль с большими доходами. Эти люди были убеждены, что производство несвбодного и платного ПО можно организовать намного эффективней, чем производство ПО свободного и бесплатного. К рассмотрению этого вопроса мы вернемся позднее.

Для программного производства 80-ые стали временем застоя. Десятилетие прошло под лозунгом "компютер в каждый дом", но при этом технологический прогресс приостановился. На 8-битных домашних компьютера не было даже полноценных операционных систем, их заменяло программное обеспечение --- Macintosh, DOS, Windows. Внимание уделялось разработке интерфейсов, повышению usability(особенно это отличало Macintosh). Технологии же не могут развиваться без исследований, а исследования не могут существовать без академической структуры.

К концу 80-х возросшая информационная связность позволила сформироваться свободному сообществу вокруг программных продуктов --- при совместной работе над проектом людям более не приходилось платить за свой энтузиазм. В конце 80-ых -- начале 90-х стали отмирать такие вещи как система UUCP, FIDO, телефонные BBS-системы, в какой-то период не выпускались даже GNU Distributions, подборки свободного ПО. В России, в силу не очень широкого распространения Интернета, всё это использовалось намного дольше. Вместе с со связностью возросло и напряжение между свободным и несвободным. Появились случаи серьезного преследования инициируемого проавообладателями программных продуктов.

Именно такая участь постигла одного из самых известных людей в области свободного ПО --- Ричарда Мэтью Столлмана(RMS). Он работал над lisp-машиной(компьютером, имеющим язык lisp в качестве ассемблера), делал для неё "программное обеспечение", и вдруг выяснилось, что всё им разработанное, в том числе и текстовый редактор EMACS, написанный для личных нужд, принадлежит компании-работодателю, так как было сделано в рабочее время. Столлман не остановился на обдумывании идеи того, что ПО должно быть свободным, а перешел к действиям --- изобрел свободное лицензирование программных продуктов.

Свободное лицензирование программ

При распространении программного продукта правообладатель накладывает на него некоторые условия распространения. Ровно также, как в этих условиях может содержаться запрет на копирование, модификацию, дизассемблирование, в них может быть сказано и примерно следующее:"Программу можно дизассемблировать, распространять, модифицировать, совершать прочие действия, но при дальнейшем распространении нельзя ее закрывать или иным способом делать менее свободной."

Используя американский механизм авторской лицензии( подписанный у нотариуса документ, имеющий законную силу) RMS и его коллеги из Free Software Foundation(FSF) добились юридической значимости свободной лицензии(GPL). Во многих странах GPL либо сама является значимой, либо, как в России, принимается во внимание. Таким образом, разработчики получили возможность распространять свои программные продукты по условиям лицензии, запрещающей делать свободное ПО менее свободным. У такого подхода есть свои преимущества, о которых будет рассказано позднее.

В рамках движения FSF было создано большое количество свободных программных продуктов,однако долгое время не было ядра, лицензированного по GPL. В принципе, существовала возможность перелицензировать ядро BSD, но этого так и не произошло. Возможно по причине того, что BSD на тот момент была втянута в unix wars, возможно, из-за каких-то разногласий между RMS и McKusick. Стоит отметить, что RMS --- замечательная личность, харизматичный оратор, но некоторые его высказывания весьма спорны, например:"Все знают Линуса Торвальдса, и считают, что свободное ПО создал он, а FSF ничего не сделало, а на самом деле Линус так, ядро только написал, а сделали всё мы".

Один финнский студент(этнически, кажется, не финн), Линус Торвальдс, экспереминтируя с учебной ОС MINIX(разработанной классиком в области построения ОС --- Э. Танненбаумом), написал собственную маленькую unix-подобную ОС. ОС Линуса умещалась на дискетке и, по обычаям того времени, была несвободной. Её можно было изучать, но распространение допускалось только в университетах. Это вполне соответствовало академическому стилю, ведь никто не предполагал, что на основе учебных наработок будет делаться что-либо серьезное. Следующей целью Линуса стало создание свободной системы, без присущих университетским обучающим системам ограничений,на которой можно было бы "делать всё". Свободные утилиты уже существовали, не хватало ядра, и именно его написал Линус в 1991 году. Ядро оказалось работоспособное, пригодное к использованию в реальных условиях. (уточнить даты и версии) В первых версиях некоторые части были заимствованы из MINIX, но затем, по лицензионным соображениям, они были переписаны. Позднее всего была переделана файловая система, в первоначальном варианте чрезмерно упрощенная.

В 1991(не знаю, откуда взялся 91. Бакалавра он получил в 93, тогда же и слакварь появилась. Найти упоминания до 93 не удалось ) году Патрик Фолькердинк в качестве дипломной работы объединил свободное ядро и свободные утилиты, создав, всего за несколько месяцев, дистрибутив операционной системы, то есть, нечто такое, что, после установки на компьютер, создает операционную систему. Это было беспрецендентное явление, так как ранее создание опреационных систем считалось прерогативой крупных компаний. Благодаря активности заинтересованных в свободной ОС пользователей Патрик продолжал и продолжает делать релизы своего дистрибутива, названного им Slackware.

Как только процесс создания операционной системы стал занимать не несколько лет, а несколько месяцев, начали появляться и другие дистрибутивы --- Debian, SuSe, RedHat. Некоторые люди сочли, что создание дистрибутива это новая технология, позволяющая продавать услуги. В течение 90-ых количество дистрибутивов, получивших название "операционная система GNU/Linux" неуклонно росло. Итак, дистрибутив --- это не свободные программы, и, тем более, не ядро. Дистрибутив --- это сделанная из разрозненного набора компонент операционная система с уникальными свойствами. Например, Ubuntu и ALT Linux далеко не одинаковы, хотя и то и то является операционной системой GNU/Linux.

Статистика

показывает, что с выходом каждой новой версии Windows начинается активный рост как числа дистрибутивов Linux, так и количества их пользователей.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

50

1

1

1

1

PavelSutyrin, Allena, VsevolodKrishchenko


PspoClasses/080716/01History (последним исправлял пользователь DmitryChistikov 2008-11-15 00:49:40)