Вы находитесь на странице: 1из 14

UNEC-in «Rəqəmsal texnologiyalar və tətbiqi informatika»

kafedrasının dos. Musayev M. N.


e - mail: n_musa_m@rambler.ru
teremki85@mail.ru
2021-2022

Тема 1. Введение в программирование.


План.

1.1 Причины изучения концепций языков программирования.


1.2 Области программирования.
1.3 Критерии оценки языка.
1.4 Влияние на языковой дизайн.
1.5 Категории языков.
1.6 Компромиссы языкового дизайна.
1.7 Методы реализации.
1.8 Среда программирования.
Прежде чем мы начнем обсуждать концепции языков
программирования, мы должны рассмотреть несколько предварительных
сведений. Во-первых, мы объясним некоторые причины, по которым
студенты, изучающие информатику, и профессиональные разработчики
программного обеспечения должны изучать общие концепции языкового
дизайна и оценки. Это обсуждение особенно ценно для тех, кто считает, что
для компьютерных ученых достаточно практического знания одного или
двух языков программирования. Затем мы кратко опишем основные области
программирования. Далее, поскольку в книге оцениваются языковые
конструкции и особенности, мы представляем список критериев, которые
могут служить основой для таких суждений. Затем мы обсудим два основных
фактора, влияющих на дизайн языка: машинную архитектуру и методологии
разработки программ. После этого мы познакомимся с различными
категориями языков программирования. Далее мы опишем несколько

1
основных компромиссов, которые необходимо учитывать при разработке
языка.

Поскольку эта книга также посвящена реализации языков


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

1.1 Причины изучения концепций языков программирования

Для студентов естественно задаться вопросом, какую пользу им


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

• Повышенная способность выражать идеи. Широко распространено


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

Программисты в процессе разработки программного обеспечения тоже


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

Можно возразить, что изучение возможностей других языков не


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

2
который изучил структуру и использование ассоциативных массивов в Perl
(Christianson et al., 2012), может создавать структуры, имитирующие
ассоциативные массивы на этом языке. Другими словами, изучение
концепций языков программирования создает:

1.1 Причины изучения концепций языков программирования

признательность за ценные языковые функции и конструкции и


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

• Улучшен фон для выбора подходящих языков. Некоторые


профессиональные программисты не имели формального образования в
области информатики; скорее, они развили свои навыки программирования
самостоятельно или в рамках собственных программ обучения. Такие
учебные программы часто ограничивают обучение одним или двумя
языками, которые имеют непосредственное отношение к текущим проектам
организации. Другие программисты прошли формальное обучение много лет
назад. Языки, которые они выучили, больше не используются, а многие
функции, доступные сейчас в языках программирования, в то время не были
широко известны. В результате многие программисты, когда им
предоставляется выбор языков для нового проекта, используют язык, с
которым они наиболее знакомы, даже если он плохо подходит для текущего
проекта. Если бы эти программисты были знакомы с более широким кругом
языков и языковых конструкций, они бы лучше могли выбрать язык с
функциями, которые лучше всего решают проблему.

Некоторые особенности одного языка часто можно смоделировать на


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

• Повышение способности изучать новые языки. Компьютерное


программирование все еще является относительно молодой дисциплиной, а
методологии проектирования, инструменты разработки программного
обеспечения и языки программирования все еще находятся в состоянии
непрерывного развития. Это делает разработку программного обеспечения
увлекательной профессией, но это также означает, что непрерывное обучение
имеет важное значение. Процесс изучения нового языка программирования
может быть длительным и трудным, особенно для тех, кто хорошо владеет
одним или двумя языками и никогда не изучал концепции языков
3
программирования в целом. Как только будет получено полное понимание
фундаментальных концепций языков, становится намного легче увидеть, как
эти концепции включаются в структуру изучаемого языка. Например,
программистам, которые понимают концепции объектно-ориентированного
программирования, будет намного легче изучить Ruby (Thomas et al., 2013),
чем тем, кто никогда не использовал эти концепции. То же самое происходит
и в естественных языках. Чем лучше вы знаете грамматику своего родного
языка, тем легче выучить второй язык. Кроме того, изучение второго языка
дает преимущество: научит вас больше о вашем родном языке.

Сообщество программистов TIOBE выпускает индекс (http: // www

.tiobe.com / index.php / content / paperinfo / tpci / index.htm), который


является индикатором относительной популярности языков
программирования. Например, согласно индексу, C, Java и Objective-C были
тремя наиболее популярными языками, использовавшимися в феврале 2014
года.1 Однако десятки других 1. Обратите внимание, что этот индекс
является лишь одним из показателей популярности языков
программирования, и его точность не является общепризнанной и в то время
широко использовались языки. Данные индекса также показывают, что
распределение использования языков программирования постоянно
меняется. Количество используемых языков и динамический характер
статистики подразумевают, что каждый разработчик программного
обеспечения должен быть готов к изучению разных языков. Наконец, важно,
чтобы практикующие программисты знали словарный запас и
фундаментальные концепции языков программирования, чтобы они могли
читать и понимать описания и оценки языков программирования, а также
рекламную литературу по языкам и компиляторам. Это источники
информации, необходимой для выбора и изучения языка.

• Лучшее понимание важности реализации. Изучая концепции языков


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

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

Поскольку эта книга затрагивает лишь несколько вопросов реализации,


предыдущие два абзаца также служат хорошим обоснованием для изучения
дизайна компилятора.

• Лучшее использование уже известных языков. Большинство


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

• Общее развитие вычислений. Наконец, существует глобальный взгляд


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

Например, многие люди считают, что было бы лучше, если бы АЛГОЛ


60 (Backus et al., 1963) вытеснил Fortran (McCracken, 1961) в

2. Области программирования

Компьютеры используются в самых разных областях, от управления


атомными электростанциями до видео и игр на мобильных телефонах. Из-за

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

• Научные приложения. Первые цифровые компьютеры были


изобретены в конце 1940-х - начале 1950-х годов и использовались в научных
целях. Первые научные приложения требовали использования простых
структур данных, а также вычислений с числами с плавающей запятой.
Наиболее распространенными структурами данных были массивы и
матрицы; Наиболее распространенными структурами управления были
циклы и выборки. Языки программирования высокого уровня, изобретенные
для научных приложений, были разработаны для удовлетворения этих
потребностей. Первым языком, созданным для научных приложений, был
Фортран. Алгол 60 и его последователи также предназначены для
использования в этой области.

• Бизнес-приложения. Внедрение компьютеров в бизнес началось в


1950-х годах. Для этого были созданы как специальные компьютеры, так и
специальные языки. Самым успешным из разработанных языков был COBOL
(ISO / IEC, 2002), опубликованный в 1960 году. Языки, созданные для
бизнеса, позволяют составлять отчеты, использовать десятичные числа и
символы и хранить данные.

• Искусственный интеллект. Искусственный интеллект (ИИ) - это


широкая область компьютерных приложений, в которой используются
символьные вычисления, а не цифровые вычисления. Символьные
вычисления - это манипуляции с символами, состоящими из имен, а не чисел.
Вместо чисел используются символы, а вместо массивов используются
связанные списки. Первым широко распространенным языком
программирования для приложений ИИ был функциональный язык Lisp
(McCarthy et al., 1965), появившийся в 1959 году. Большинство приложений
ИИ, разработанных до 1990 года, были написаны на Лиспе или одном из
языков программирования того поколения. В начале 1970-х появился
альтернативный подход к некоторым из этих приложений - логическое
программирование с использованием языка Prolog (Clocksin, Mellish, 2013). В
последнее время некоторые приложения ИИ были написаны на системных
языках, таких как C. Scheme (Dybvig, 2009), диалекте Лиспа, а Пролог
представлен в главах 15 и 16 соответственно. В последнее время некоторые
приложения AI были написаны на системных языках и Prolog, например
C.Scheme (Dybvig, 2009), который близок к Lisp.

6
• Системное программирование. Используется для написания
операционных систем и программ поддержки. Наиболее часто используемый
язык - C. ОС Windows C ++, ядро (слой между оболочкой пользователя и
устройством) на C, объектив Mac OS C, язык ядра C, ОС Linux в основном C,
большинство запущенных программ Phyton, KDE (среда рабочего стола K /
оболочка) в Написан на C ++.

• Веб-программирование. Всемирная паутина поддерживается


эклектичным набором языков, от языков разметки, не относящихся к языкам
программирования, таких как HTML, до языков программирования общего
назначения, таких как Java. Из-за повсеместной потребности в динамическом
веб-контенте некоторые вычислительные функции включены в технологию
представления контента. Этот тип кода в основном вводится с помощью
языков сценариев JavaScript и PHP. Как правило, HTML используется для
форматирования веб-программ, а JavaScript, ASP и PHP используются для
создания динамического содержимого.

• Мобильное программирование. Он используется при разработке


мобильных приложений и в настоящее время предназначен для большего
количества систем iOS и Android. Мобильные приложения можно
разрабатывать в трех категориях: локальные (специально для ОС
конкретного устройства), гибридные (кроссплатформенные, т. Е.
Работающие на нескольких платформах) и прогрессивные (простое
приложение, которое запускается по URL-адресу веб-браузера устройства). В
настоящее время Lens-C и Swift широко используются для приложений iOS,
Java и Kotlin для приложений Android, а также Xamarin и C # для гибридных
приложений.

3. Категории языков программирования.

Языки программирования в основном делятся на 5 категорий:


императивные (процедурные или командные), функциональные, логические,
объектно-ориентированные и целевые языки.

o Процедурные языки - построчные команды на языке


программирования. Программирование процедур - важный тип
программирования, в котором программа строится из одной или нескольких
процедур (также называемых подпрограммами или функциями).
Императивные языки состоят из переменных, выражений и циклов. Примеры
- Fortran, C и Pascal.

7
o Функциональные языки. Основной способ выполнения вычислений -
построение функций в соответствии с заданными параметрами. В
функциональном программировании функции являются первичными, то есть
они могут быть связаны с именами (включая локальные идентификаторы),
передаваться в качестве аргумента и возвращаться из других функций. Это
позволяет писать программы декларативно и композиционно, при этом
небольшие функции модульно комбинируются. Примеры: Haskell, LISP,
Scheme, Clojure, Wolfram Language, Erland, OCaml.

o Логические языки - это тип программирования, в котором


используются логические схемы для управления выражением фактов и
правил о проблемах. Хотя команды в функциональных языках связаны с
математическими функциями, в логических языках они основаны на логике.
Примерами являются Prolog, Absys, Cycl, Alice, ALF (язык алгебраического
функционального программирования) и другие.

o Объектно-ориентированное программирование (ООП) - это парадигма


программирования, основанная на концепции классов и объектов. Он имеет
такие функции, как абстракция, наследование, полиморфизм и инкапсуляция.
Java и C ++ - основные используемые языки.

o Разметка - используется для размещения информации на веб-


страницах, даже если они не полностью считаются языками
программирования. HTML и XML являются примерами этого.

4. Критерии языковой оценки

Как упоминалось в начале лекции, нам необходимо выбрать наиболее


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

• Читаемость. Одним из важнейших критериев оценки языка


программирования является способность читать и понимать программы. До
1970-х годов создание языков в основном задумывалось с точки зрения
кодирования. Главной особенностью языков программирования была их
эффективность. Структура языков также была разработана с точки зрения
принципа работы компьютера, а не пользователей компьютеров. Однако в
1970-х годах в индустрии программного обеспечения был введен процесс
проектирования, разработки и тестирования высококачественного

8
программного обеспечения, названный «Жизненный цикл разработки
программного обеспечения» (SDLC) (Booch, 1987). Таким образом, роль
кодирования снизилась, а залог стал более важным, в основном с финансовой
точки зрения. Поскольку простота обслуживания и поддержки определяется
удобочитаемостью программ, удобочитаемость стала важным показателем
качества программ и языков программирования. Если программа,
предназначенная для вычислений в одной форме, написана на языке, не
предназначенном для такого использования, программа может быть
неестественной и запутанной, что делает ее чрезвычайно трудной для чтения.

 Простота - выучить много разных языков сложнее. Использование


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

 Ортогональность - в языке программирования ортогональность


означает, что относительно небольшие примитивные примитивы могут быть
объединены меньшим количеством способов для создания управления
языком и структур данных. Кроме того, все виды комбинаций примитивов
допустимы и значимы. Например, рассмотрим типы данных. Предположим, в
языке есть четыре исходных типа данных (целые числа, числа с плавающей
запятой, пары и символы) и два типа операторов (массивы и указатели). Если
к себе можно применить два типа операторов и четыре основных типа
данных, можно назначить большое количество структур данных. Отсутствие
ортогональности приводит к ошибкам в языковых правилах. Например,
указатели не могут указывать матрицы и т. Д. Функциональные языки
(например, Лисп) - это простые и ортогональные языки.

• Отписаться. Умение писать - это мера того, насколько легко можно


использовать язык для создания программ в выбранной проблемной области.
Многие языковые особенности, влияющие на удобочитаемость, также
влияют на написание. Это напрямую связано с тем, что процесс написания
программы требует от программиста частого перечитывания написанной
части программы. Как и в случае с удобочитаемостью, способность к письму
следует рассматривать в контексте языковой проблемы. Если один
предназначен для этого приложения, а другой не подходит, сравнивать
9
навыки письма на двух языках в конкретной области приложения
некорректно. Например, возможности написания Visual BASIC (VB)
(Halvorson, 2013) и C резко различаются для создания программы с
графическим пользовательским интерфейсом (GUI) для VB. Но как мы
можем описать наиболее важные особенности, которые влияют на
способность писать на языке?

 Простота и ортогональность - невозможно знать все особенности


языков с множеством различных структур. Это приводит к неправильному и
менее эффективному использованию, а также случайному применению
функций. Следовательно, согласованный набор правил комбинирования
кодов (т. Е. Ортогональности) лучше, чем исходные данные и коды. Однако
большая ортогональность также приводит к несогласованности кода,
неизвестной компилятору.

 Поддержка абстракции - способность идентифицировать и


использовать сложные структуры или процессы, не обращая внимания на
детали.

 Выразительность - использование относительно удобных способов


назначения операций и формирование основной задачи простым и
естественным образом.

Выделяют 7 критериев - читабельность, письмо, ловкость, степень


обучения, целеустремленность, структура, объектная ориентация. Давайте
подробнее рассмотрим четыре критерия.

• Надежность. Если программа может выполнять свои функции в любых


условиях, то она действительна. Что это за особенности?

 Проверка типов - проверка ошибок типов разработчиком во время


выполнения программы. Это один из важных факторов надежности языка.
Так как реализация этого процесса после запуска программы требует
больших денег, желательно проверить в процессе разработки программы.
Кроме того, чем раньше будут обнаружены ошибки в программном
обеспечении, тем дешевле будет внести необходимые корректировки. Язык
Java спроектирован таким образом, что он требует проверки почти всех
переменных и типов выражений во время компиляции. Он также
практически исключает подобные ошибки при работе в Java-приложениях.

 Обработка исключений - программа обнаруживает ошибки времени


выполнения и предпринимает корректирующие действия. Ada предлагает
10
обширные возможности для работы с исключениями C ++, Java и C #, но
такие возможности практически отсутствуют в некоторых широко
используемых языках, таких как C.

• Финансы.

 Обучение программистов, которые будут использовать язык

 Написание программ

 Запуск и поддержка программ

 Система языковых приложений: наличие бесплатных компиляторов

 Надежность (ошибка в критических системах приводит к высоким


затратам)

 Служба сопровождения программ, внесение корректировок и


изменений.

5. Среды программирования (IDE).

Среда программирования - это набор инструментов, используемых для


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

UNIX - это старая среда программирования, построенная на


переносимой многопрограммной операционной системе, которая
использовалась в середине 1970-х годов. Предоставляет широкий спектр
инструментов поддержки для создания и поддержки программ на разных
языках. Наиболее важной особенностью, которая ранее не была доступна в
UNIX, было отсутствие единого интерфейса между инструментами. Это
очень затрудняло адаптацию и использование окружающей среды. Теперь
UNIX используется вместе с собственным графическим интерфейсом.
Примеры графического интерфейса пользователя UNIX включают общую
11
среду рабочего стола Solaris (CDE), GNOME и KDE. (GUI означает
графический интерфейс пользователя. В отличие от ИНТЕРФЕЙСА
КОМАНДНОЙ СТРОКИ, в графическом интерфейсе пользователь может
произвольно обращаться ко всем объектам (элементам интерфейса), которые
появляются на экране, через устройства доступа (клавиатура, мышь,
джойстик и т. Д.). могут работать с ними напрямую. Графические
интерфейсы пользователя создают среду, которая взаимодействует с
компьютером во время разработки приложений.) Эти графические
интерфейсы делают интерфейс UNIX похожим на системы Windows и
Macintosh.

Borland Jbuilder - это среда программирования, которая предоставляет


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

Eclipse - это многоязычная интегрированная среда программирования.


Написано на Java. Используя Eclipse, можно создавать программы на Java, а
также на других языках программирования, C, C ++, Ruby PHP, Perl, Prolog,
Ada, COBOL, Scala, Haskell, Clojure, Groovy и Scheme.

Microsoft Visual Studio .NET - это более новая среда, используемая в


программировании. Каждый из них представляет собой большой набор
инструментов, используемых через оконный интерфейс. Эта система может
использоваться для создания программ на любом из 5 языков .net (C #, Visual
Basic.NET, JScript (версия Microsoft JavaScript), F # (функциональный язык) и
C ++ / CLI.).

NetBeans - это среда программирования, которая в основном


используется для создания приложений Java, но также поддерживает
JavaScript, Ruby и PHP. Он имеет такие преимущества, как Swing GUI
Builder, инструментарий JavaFX UI, платформа netbeans, объединение
netbeans. И Visual Studio, и NetBeans очень эффективны в качестве среды
программирования. Они также являются фреймворками, которые фактически
предоставляют общие части кода приложения.

ЛИТЕРАТУРА
12
1. Информационные технологии и вычислительные системы. Программное
обеспечение. Операционные системы. Математическое моделирование.
Интернет-технологии / Под ред. С.В. Емельянова. - М.: РОХОС, 2003. -
148 c.
2. Артамонова, Н.В. Операционные системы для организации
производства в промышленности: Учебное пособие / Н.В. Артамонова. -
СПб.: ГУАП, 2012. - 224 c.
3. Астахова, И.Ф. Компьютерные науки. Деревья, операционные системы,
сети / И.Ф. Астахова, И.К. Астанин и др. - М.: Физматлит, 2013. - 88 c.
4. Астахова, И.Ф. Компьютерные науки. Деревья, операционные системы,
сети / И.Ф. Астахова и др. - М.: Физматлит, 2013. - 88 c.
5. Батаев, А.В. Операционные системы и среды: Учебник / А.В. Батаев и
др. - М.: Academia, 2013. - 512 c.
6. Батаев, А.В. Операционные системы и среды: Учебник / А.В. Батаев и
др. - М.: Academia, 2012. - 352 c.
7. Батаев, А.В. Операционные системы и среды: Учебник / А.В. Батаев,
Н.Ю. Налютин, С.В. Синицын и др. - М.: Academia, 2018. - 271 c.
8. Батаев, А.В. Операционные системы и среды: Учебник / А.В. Батаев. -
М.: Академия, 2011. - 208 c.
9. Вавренюк, А.Б. Операционные системы. Основы UNIX: Учебное
пособие / А.Б. Вавренюк, О.К. Курышева, С.В. Кутепов и др. - М.:
Инфра-М, 2013. - 256 c.
10. Дейтел, Х., М. Операционные системы. Основы и принципы. Т. 1 / Х. М.
Дейтел, Д.Р. Чофнес. - М.: Бином, 2016. - 1024 c.
11. Дейтел, Х.М. Операционные системы.Т. 1. Основы и принципы / Х.М.
Дейтел, П.Д. Дейтел, Д.Р. Чофнес; Пер. с англ. С.М. Молявко.. - М.:
Бином-Пресс, 2011. - 1024 c.
12. Дейтел, Х.М. Операционные системы. Т. 2. Распределенные системы,
сети, безопасность / Х.М. Дейтел, П.Д. Дейтел, Д.Р. Чофнес; Пер. с англ.
С.М. Молявко.. - М.: Бином, 2013. - 704 c.
13. Дейтел, Х.М. Операционные системы. Распределенные системы, сети,
безопасность / Х.М. Дейтел, Д.Р. Чофнес. - М.: Бином, 2013. - 704 c.
14. Дроздов, С.Н. Операционные системы: Учебное пособие / С.Н. Дроздов.
- Рн/Д: Феникс, 2018. - 480 c.
15. Дроздов, С.Н. Операционные системы: учебное пособие / С.Н. Дроздов.
- РнД: Феникс, 2016. - 361 c.
16. Иртегов, Д. Введение в операционные системы / Д. Иртегов. - СПб.:
BHV, 2008. - 1040 c.

13
17. Иртегов, Д. Введение в операционные системы / Д. Иртегов. - СПб.:
BHV, 2012. - 1040 c.
18. Иртегов, Д.В. Введение в операционные системы / Д.В. Иртегов. - СПб.:
БХВ-Петербург, 2012. - 1040 c.
19. Иртегов, Д.В. Введение в операционные системы / Д.В. Иртегов. - СПб.:
BHV, 2008. - 1040 c.
20. Карасева, М.В. Операционные системы. Практикум для бакалавров /
М.В. Карасева. - М.: КноРус, 2012. - 376 c.
21. Киселев, С.В. Операционные системы: Учебное пособие / С.В. Киселев.
- М.: Academia, 2018. - 250 c.

14

Вам также может понравиться