Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Компьютерная программа "Hello, World" Брайана Кернигана (1978)

Компьютерная программа представляет собой набор инструкций [1] , которые могут быть выполнены с помощью компьютера , чтобы выполнить задачу , конкретной.

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

Набор компьютерных программ, библиотек и связанных данных называется программным обеспечением . Компьютерные программы можно классифицировать по функциональным направлениям, например прикладное программное обеспечение и системное программное обеспечение . Базовый метод, используемый для некоторых вычислений или манипуляций, известен как алгоритм .

История [ править ]

Алгоритмы взлома кода существуют веками. В IX веке арабский математик Аль-Кинди описал криптографический алгоритм для расшифровки зашифрованного кода в «Рукописи о расшифровке криптографических сообщений» . Он дал первое описание криптоанализа с помощью частотного анализа , самого раннего алгоритма взлома кода. [2]

Ранние программируемые машины [ править ]

Первые программируемые машины предшествовали изобретению цифрового компьютера . Еще в 9 веке программируемый музыкальный секвенсор был изобретен персидскими братьями Бану Муса , которые описали автоматизированный механический флейтист в Книге изобретательных устройств . [3] [4] В 1206 году арабский инженер Аль-Джазари изобрел программируемую драм-машину, в которой можно было заставить музыкальные механические автоматы воспроизводить различные ритмы и паттерны ударных. [5] В 1801 году Жозеф-Мари Жаккард изобрел ткацкий станок.которые соткали бы узор, следуя серии перфорированных карт. Узоры можно было плести и повторять, раскладывая карточки. [6]

Аналитическая машина [ править ]

Диаграмма Лавлейса из Note G, первого опубликованного компьютерного алгоритма

В 1837 году Чарльз Бэббидж был вдохновлен ткацким станком Жаккара на попытку построить аналитическую машину . [6] Названия компонентов счетного устройства были заимствованы из текстильной промышленности. В текстильной промышленности пряжу привозили из магазина на помол. Устройство должно было иметь «хранилище» - память для хранения 1000 чисел по 40 десятичных цифр в каждом. Затем числа из «магазина» были бы переданы в «мельницу» (аналог ЦП современной машины) для обработки. «Поток» - это выполнение запрограммированных инструкций устройством. Он был запрограммирован с использованием двух наборов перфорированных карт - один для управления операцией, а другой для входных переменных. [6] [7]Однако после того, как британское правительство вложило более 17000 фунтов стерлингов, тысячи зубчатых колес и шестерен никогда не работали вместе. [8]

В течение девятимесячного периода в 1842–1843 годах Ада Лавлейс перевела мемуары итальянского математика Луиджи Менабреа . Мемуары касались аналитической машины. Перевод содержал примечание G, в котором подробно описывался метод расчета чисел Бернулли с помощью аналитической машины. Эта записка признана некоторыми историками первой в мире письменной компьютерной программой. [9]

Универсальная машина Тьюринга [ править ]

В 1936 году Алан Тьюринг представил универсальную машину Тьюринга - теоретическое устройство, которое может моделировать каждое вычисление, которое может быть выполнено на полной вычислительной машине Тьюринга . [10] Это конечный автомат с бесконечно длинной лентой для чтения / записи. Машина может перемещать ленту вперед и назад, изменяя ее содержимое по мере выполнения алгоритма . Машина запускается в начальном состоянии, выполняет последовательность шагов и останавливается, когда попадает в состояние остановки. [11] Некоторые считают, что эта машина является источником компьютера с хранимой программой, используемого Джоном фон Нейманом.(1946) для «Электронного вычислительного прибора», который теперь носит архитектурное имя фон Неймана . [12]

Ранние программируемые компьютеры [ править ]

Компьютер Z3 , изобретенный Конрадом Цузе (1941) в Германии , был цифровой и программируемый компьютер. [13] Цифровой компьютер использует электричество в качестве вычислительного компонента. Z3 содержал 2400 реле для создания цепей . Схемы предусмотрена двоичный , с плавающей запятой , девять команд компьютера. Программирование Z3 осуществлялось с помощью специально разработанной клавиатуры и перфоленты .

Электронный цифровой интегратор и компьютер (осень 1945 г.) был Тьюринга , компьютер общего назначения , который используется 17,468 вакуумных трубок для создания схем . По своей сути это была серия соединенных воедино паскалинов . [14] Его 40 единиц весили 30 тонн, занимали 1800 квадратных футов (167 м 2 ) и потребляли 650 долларов в час ( в валюте 1940-х годов ) в электроэнергии в простое. [14] У него было 20 аккумуляторов с основанием 10 . Программирование ENIAC заняло до двух месяцев. [14]Три функциональные таблицы были на колесах, и их нужно было свернуть на фиксированные функциональные панели. Таблицы функций были подключены к функциональным панелям с помощью тяжелых черных кабелей. Каждая таблица функций имела 728 вращающихся ручек. Программирование ENIAC также включало установку некоторых из 3000 переключателей. Отладка программы заняла неделю. [14] Программистами ENIAC были женщины, известные под общим названием «девушки ENIAC» [15], включая Джин Дженнингс Бартик , Бетти Холбертон , Марлин Вескоф , Кэтлин МакНалти , Рут Тейтельбаум и Фрэнсис Спенс . [16] В ENIAC реализованы параллельные операции.. Разные наборы аккумуляторов могут одновременно работать по разным алгоритмам. Он использовал перфокарты для ввода и вывода и управлялся с помощью тактового сигнала . Он работал восемь лет, рассчитывая параметры водородной бомбы, прогнозируя погодные условия и создавая таблицы стрельбы для прицеливания артиллерийских орудий.

Манчестер Ребенок (июнь 1948) был запасенной компьютерная программа . [17] Программирование перешло от перемещения кабелей и регуляторов настройки; вместо этого компьютерная программа хранилась в памяти в виде чисел. Для хранения каждой инструкции было доступно только три бита памяти, поэтому она была ограничена восемью инструкциями. Для программирования было доступно 32 переключателя.

Более поздние компьютеры [ править ]

Переключатели для ручного ввода данных на устройстве Data General Nova 3, выпущенном в середине 1970-х годов.

Компьютеры, выпускавшиеся до 1970-х годов, имели переключатели на передней панели для программирования. Компьютерная программа была написана на бумаге для справки. Инструкция представляла собой конфигурацию настроек включения / выключения. После настройки конфигурации была нажата кнопка выполнения. Затем этот процесс был повторен. Компьютерные программы также вводились вручную с помощью бумажной ленты или перфокарт . После загрузки носителя с помощью переключателей был установлен начальный адрес и нажата кнопка выполнения. [18]

В 1961 году был построен Burroughs B5000 специально для программирования на языке ALGOL 60 . Аппаратные средства включают схемы для облегчения фазы компиляции . [19]

В 1964 году IBM System / 360 представляла собой линейку из шести компьютеров, каждый из которых имел одинаковую архитектуру набора команд . Модель 30 была самой маленькой и дешевой. Заказчики могли обновлять и сохранять то же прикладное программное обеспечение . [20] В каждой модели System / 360 реализовано мультипрограммирование . При поддержке операционной системы в памяти может одновременно находиться несколько программ. Когда один ожидал ввода / вывода , другой мог вычислить. Каждая модель также могла эмулировать другие компьютеры. Заказчики могли перейти на System / 360 и сохранить свое прикладное программное обеспечение IBM 7094 или IBM 1401 . [20]

Компьютерное программирование [ править ]

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

Иногда длительный процесс компьютерного программирования обычно называют разработкой программного обеспечения . Термин « программная инженерия» становится популярным, поскольку этот процесс рассматривается как инженерная дисциплина.

Языки программирования [ править ]

Компьютерная программа, написанная в стиле императивного программирования.

Компьютерные программы можно классифицировать по парадигме языка программирования, используемой для их создания. Две основные парадигмы - императивная и декларативная .

Императивные языки [ править ]

Языки императивного программирования определяют последовательный алгоритм с использованием объявлений, выражений и операторов: [21]

  • А декларация пара переменного имя для типа данных - например: var x: integer;
  • Выражение дает значение - например: 2 + 2 выходы 4
  • Оператор может присвоить выражение переменной или использовать значение переменной для изменения программы потока управления - например:x := 2 + 2; if x = 4 then do_something();

Одной из критических замечаний по поводу императивных языков является побочный эффект оператора присваивания для класса переменных, называемых нелокальными переменными. [22]

Декларативные языки [ править ]

Декларативные языки программирования описывают, какие вычисления должны выполняться, а не как их вычислять. Декларативные программы пропускают поток управления и считаются наборами инструкций. Две широкие категории декларативных языков - это функциональные языки и логические языки . Принцип функциональных языков (таких как Haskell ) состоит в том, чтобы не допускать побочных эффектов , что упрощает рассуждение о программах, таких как математические функции. [22] Принцип логических языков (например, Prolog) состоит в том, чтобы определить решаемую проблему - цель - и оставить подробное решение самой системе Prolog. [23] Цель определяется путем предоставления списка подцелей. Затем каждая подцель определяется путем дальнейшего предоставления списка ее подцелей и т. Д. Если по пути подцелей не удается найти решение, то эта подзада возвращается назад, и систематически предпринимаются попытки по другому пути.

Составление и интерпретация [ править ]

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

Компиляторы используются для перевода исходного кода с языка программирования в объектный или машинный код . [24] Объектный код требует дальнейшей обработки, чтобы стать машинным кодом, а машинный код состоит из собственных инструкций центрального процессора , готовых к выполнению. Скомпилированные компьютерные программы обычно называют исполняемыми файлами , двоичными изображениями или просто двоичными файлами  - ссылка на формат двоичного файла, используемый для хранения исполняемого кода.

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

Интерпретаторы используются для построчного выполнения исходного кода на языке программирования. Интерпретатор декодирует каждый оператор и выполняет его поведение. Одним из преимуществ интерпретаторов является то, что их можно легко расширить до интерактивного сеанса . Программисту предоставляется подсказка, и отдельные строки кода вводятся и выполняются немедленно.

Главный недостаток интерпретаторов - компьютерные программы работают медленнее, чем при компиляции. Интерпретация кода выполняется медленнее, потому что интерпретатор должен декодировать каждый оператор, а затем выполнить его. Однако разработка программного обеспечения может быть быстрее с использованием интерпретатора, поскольку тестирование выполняется немедленно, когда этап компиляции опускается. Еще один недостаток интерпретаторов - наличие интерпретатора на исполняющем компьютере. Напротив, скомпилированные компьютерные программы не нуждаются в компиляторе во время выполнения.

Своевременные компиляторы предварительно компилируют компьютерные программы непосредственно перед выполнением. Например, Hotspot виртуальной машины Java содержит Just In Time Compiler, который выборочно компилирует байт-код Java в машинный код, но только код, который прогнозирует Hotspot, вероятно, будет использоваться много раз.

Скомпилированные или интерпретируемые программы могут выполняться в пакетном режиме без вмешательства человека.

Языки сценариев часто используются для создания пакетных процессов. Одним из распространенных языков сценариев является оболочка Unix , а среда ее выполнения называется интерфейсом командной строки .

Никакие свойства языка программирования не требуют его эксклюзивной компиляции или эксклюзивной интерпретации. Категоризация обычно отражает самый популярный метод языкового исполнения. Например, Java считается интерпретируемым языком, а C - компилируемым языком, несмотря на существование компиляторов Java и интерпретаторов C.

Хранение и исполнение [ править ]

В 1950-х компьютерные программы хранились на перфорированной бумажной ленте.

Как правило, компьютерные программы сохраняются в энергонезависимой памяти , пока не просил прямо или косвенно будет выполняться на компьютере пользователя. По такому запросу программа загружается в оперативную память компьютерной программой, называемой операционной системой , где к ней может получить доступ непосредственно центральный процессор. Затем центральный процессор выполняет («запускает») программу, инструкция за инструкцией, до завершения. Выполняемая программа называется процессом . [25] Прекращение действия происходит либо в результате нормального самовыключения, вмешательства пользователя, либо в результате ошибки - программной или аппаратной ошибки.

Одновременное исполнение [ править ]

Многие операционные системы поддерживают многозадачность, что позволяет запускать множество компьютерных программ одновременно на одном компьютере. Операционные системы могут запускать несколько программ по планированию процесса  - программный механизм для переключения на CPU между процессами часто , так что пользователи могут взаимодействовать с каждой программой в то время как она работает. [26] В аппаратном обеспечении современные многопроцессорные компьютеры или компьютеры с многоядерными процессорами могут запускать несколько программ. [27]

Самомодифицирующиеся программы [ править ]

Компьютерная программа в исполнении , как правило , рассматриваются как отличаются от данных , программа работает на. Однако в некоторых случаях это различие стирается, когда компьютерная программа модифицируется. Модифицированная компьютерная программа впоследствии выполняется как часть той же программы. Самомодифицирующийся код возможен для программ, написанных на машинном коде , языке ассемблера , Lisp , C , COBOL , PL / 1 и Prolog .

Функциональные категории [ править ]

Компьютерные программы можно разделить на функциональные категории. Основные функциональные категории - прикладное программное обеспечение и системное программное обеспечение . Системное программное обеспечение включает операционную систему, которая связывает компьютерное оборудование с прикладным программным обеспечением. [28] Целью операционной системы является обеспечение среды, в которой прикладное программное обеспечение выполняется удобным и эффективным образом. [28] Помимо операционной системы, системное программное обеспечение включает встроенные программы , программы загрузки и микропрограммы . Прикладное программное обеспечение, разработанное для конечных пользователей, имеет пользовательский интерфейс. Прикладное программное обеспечение, не предназначенное для конечного пользователя, включает промежуточное программное обеспечение , которое связывает одно приложение с другим. Прикладное программное обеспечение также включает служебные программы . Различие между системным программным обеспечением и прикладным программным обеспечением является предметом обсуждения.

Прикладное программное обеспечение [ править ]

Пример приложения: GCalctool , программный калькулятор.

Существует много типов прикладного программного обеспечения:

  • Слово приложение появилось в 21 веке. Это вырезка от слова «приложение». Они были разработаны для многих платформ, но сначала это слово было использовано для небольших мобильных приложений. Настольные приложения - это традиционные компьютерные программы, которые запускаются на настольных компьютерах . Мобильные приложения работают на мобильных устройствах . Веб-приложения запускаются внутри веб-браузера . Мобильные и настольные приложения можно загрузить с веб-сайта разработчиков или приобрести в магазинах приложений, таких как Microsoft Store , Apple App Store , Mac App Store , Google Play или Intel AppUp..
  • Пакет приложений состоит из нескольких связанных вместе приложений. Примеры включают Microsoft Office , LibreOffice и iWork . Они объединяют текстовый процессор, электронную таблицу и другие приложения.
  • Корпоративные приложения объединяют приложения бухгалтерского учета, персонала, клиентов и поставщиков. Примеры включают планирование ресурсов предприятия , управление взаимоотношениями с клиентами и программное обеспечение для управления цепочками поставок .
  • Программное обеспечение инфраструктуры предприятия поддерживает программные системы предприятия . Примеры включают базы данных, почтовые серверы и сетевые серверы.
  • Программное обеспечение для информационных работников предназначено для сотрудников на уровне отделов. Примеры включаютсебя управление временем , управление ресурсами , аналитическое, сотрудничество и документацию инструменты. Текстовые процессоры, электронные таблицы, клиенты электронной почты и блогов, личная информационная система и отдельные редакторы мультимедиа могут помочь в решении множества задач информационных работников.
  • Программное обеспечение для разработки средств массовой информации создает печатные и электронные средства массовой информации для использования другими, чаще всего в коммерческих или образовательных учреждениях. Они производят графику, публикации, анимацию и видео.
  • Программное обеспечение для проектирования изделий используется для разработки больших машин и другого прикладного программного обеспечения. Примеры включают автоматизированное проектирование (CAD), автоматизированное проектирование (CAE) и интегрированные среды разработки .
  • Под развлекательным программным обеспечением могут пониматься видеоигры, видеомагнитофоны и плееры, а также музыкальные рекордеры и плееры.

Служебные программы [ править ]

Служебные программы - это прикладные программы, предназначенные для помощи системным администраторам и программистам .

Операционная система [ править ]

Операционная система является программным обеспечением низкого уровня , который поддерживает основные функции компьютера, такие как задачи планирования и управление периферийными устройства. [28]

В 1950-х годах программист, который одновременно был оператором, писал программу и запускал ее. После завершения выполнения программы выходные данные могли быть напечатаны или перфорированы на бумажной ленте или карточках для последующей обработки. [18] Чаще всего программа не работала. Затем программист посмотрел на индикаторы консоли и возился с переключателями консоли. Если повезло меньше, была сделана распечатка памяти для дальнейшего изучения. В 1960-е годы программисты сократили время, которое тратится впустую, за счет автоматизации работы оператора. Программа, называемая операционной системой, всегда хранилась в компьютере. [29]

Первоначально операционные системы программировались на ассемблере ; Однако современные операционные системы , как правило , написаны на C .

Загрузочная программа [ править ]

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

Встроенные программы [ править ]

Микроконтроллер на правой части USB флэш - диск управляется со встроенной микропрограммы .

Независимо от главного компьютера, аппаратное устройство может иметь встроенное микропрограммное обеспечение для управления его работой. Прошивка используется, когда компьютерная программа редко или никогда не будет меняться, или когда программа не должна быть потеряна при отключении питания. [29]

Программы микрокода [ править ]

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

См. Также [ править ]

  • Искусственный интеллект
  • Автоматическое программирование
  • Компьютерный вирус
  • Прошивка
  • Убийственное приложение
  • Программного обеспечения
  • Программная ошибка
  • Фаза жизненного цикла программы

Ссылки [ править ]

  1. ^ Рохкинд, Marc J. (2004). Расширенное программирование Unix, второе издание . Эддисон-Уэсли. п. 1.1.2.
  2. ^ Дули, Джон Ф. (2013). Краткая история криптологии и криптографических алгоритмов . Springer Science & Business Media. С. 12–3. ISBN 9783319016283.
  3. ^ Koetsier, Теун (2001), "О предыстории программируемых машин: музыкальные автоматы, ткацкие станки, калькуляторы", механизм и теория машина , Elsevier, 36 (5): 589-603, DOI : 10.1016 / S0094-114X (01) 00005-2 .
  4. ^ Капур, Аджай; Карнеги, Дейл; Мерфи, Джим; Лонг, Джейсон (2017). «Громкоговорители по желанию: история электроакустической музыки без громкоговорителей» . Организованный звук . Издательство Кембриджского университета . 22 (2): 195–205. DOI : 10.1017 / S1355771817000103 . ISSN 1355-7718 . 
  5. ^ Ноэль Шарки (2007), Программируемый робот 13-го века , Университет Шеффилда
  6. ^ a b c Маккартни, Скотт (1999). ENIAC - Триумфы и трагедии первого в мире компьютера . Уокер и компания. п. 16 . ISBN 978-0-8027-1348-3.
  7. ^ Бромли, Аллан Г. (1998). «Аналитическая машина Чарльза Бэббиджа, 1838» (PDF) . IEEE Annals of the History of Computing . 20 (4).
  8. ^ Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 15 . ISBN 978-0-13-854662-5.
  9. ^ Дж. Фуэги; Дж. Фрэнсис (октябрь – декабрь 2003 г.), «Лавлейс и Бэббидж и создание« заметок » 1843 года », Annals of the History of Computing , 25 (4): 16, 19, 25, doi : 10.1109 / MAHC.2003.1253887
  10. ^ Розен, Кеннет Х. (1991). Дискретная математика и ее приложения . McGraw-Hill, Inc. стр. 654 . ISBN 978-0-07-053744-6.
  11. ^ Линц, Питер (1990). Введение в формальные языки и автоматы . Округ Колумбия Хит и компания. п. 234. ISBN 978-0-669-17342-0.
  12. ^ Дэвис, Мартин (2000), Двигатели логики: математики и происхождение компьютера (1-е изд.), Нью-Йорк, Нью-Йорк: WW Norton & Company, ISBN 978-0-393-32229-3, (pb.)
  13. ^ «История вычислительной техники» .
  14. ^ а б в г Маккартни, Скотт (1999). ENIAC - Триумфы и трагедии первого в мире компьютера . Уокер и компания. п. 102 . ISBN 978-0-8027-1348-3.
  15. Фринк, Бренда Д. (1 июня 2011 г.). «Исследователь показывает, как компьютерные фанаты заменили« компьютерных девушек » » . Гендерные новости . Стэндфордский Университет. Архивировано из оригинала 12 марта 2015 года . Проверено 22 октября 2018 года .
  16. ^ Бартик, Джин Дженнингс (2013). Рикман, Джон; Тодд, Ким Д. (ред.). Пионер-программист: Джин Дженнингс Бартик и компьютер, изменивший мир . Издательство государственного университета Трумэна.
  17. ^ Enticknap, Николас (лето 1998), "Computing Золотой Юбилей" , Воскресенский (20), ISSN 0958-7403 , архивируются с оригинала на 9 января 2012 года , получен 19 апреля +2008 
  18. ^ a b Зильбершац, Абрахам (1994). Концепции операционной системы, четвертое издание . Эддисон-Уэсли. п. 6. ISBN 978-0-201-50480-4.
  19. ^ Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 20 . ISBN 978-0-13-854662-5.
  20. ^ a b Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 21 . ISBN 978-0-13-854662-5.
  21. ^ Уилсон, Лесли Б. (1993). Сравнительные языки программирования, второе издание . Эддисон-Уэсли. п. 75. ISBN 978-0-201-56885-1.
  22. ^ a b Уилсон, Лесли Б. (1993). Сравнительные языки программирования, второе издание . Эддисон-Уэсли. п. 213. ISBN 978-0-201-56885-1.
  23. ^ Уилсон, Лесли Б. (1993). Сравнительные языки программирования, второе издание . Эддисон-Уэсли. п. 244. ISBN 978-0-201-56885-1.
  24. ^ "Что такое компилятор?" . Проверено 10 января 2012 .
  25. ^ Silberschatz, Abraham (1994). Концепции операционной системы, четвертое издание . Эддисон-Уэсли. п. 97. ISBN 978-0-201-50480-4.
  26. ^ Silberschatz, Abraham (1994). Концепции операционной системы, четвертое издание . Эддисон-Уэсли. п. 100. ISBN 978-0-201-50480-4.
  27. ^ Ахтер, Шамит (2006). Многоядерное программирование . Ричард Боулз (Intel Press). С. 11–13. ISBN 978-0-9764832-4-3.
  28. ^ a b c Зильбершац, Абрахам (1994). Концепции операционной системы, четвертое издание . Эддисон-Уэсли. п. 1. ISBN 978-0-201-50480-4.
  29. ^ a b Таненбаум, Эндрю С. (1990). Структурированная компьютерная организация, третье издание . Прентис Холл. п. 11 . ISBN 978-0-13-854662-5.
  30. ^ Silberschatz, Abraham (1994). Концепции операционной системы, четвертое издание . Эддисон-Уэсли. п. 30. ISBN 978-0-201-50480-4.

Дальнейшее чтение [ править ]

  • Кнут, Дональд Э. (1997). Искусство программирования, Том 1, 3-е издание . Бостон: Эддисон-Уэсли. ISBN 978-0-201-89683-1.
  • Кнут, Дональд Э. (1997). Искусство программирования, Том 2, 3-е издание . Бостон: Эддисон-Уэсли. ISBN 978-0-201-89684-8.
  • Кнут, Дональд Э. (1997). Искусство программирования, Том 3, 3-е издание . Бостон: Эддисон-Уэсли. ISBN 978-0-201-89685-5.