- •Оглавление
- •От редактора перевода
- •Введение
- •Использовать
- •Аргументировано обсуждать
- •IV. Применять знания
- •Модуль 1. Компьютерные системы
- •Обзор компьютерных систем
- •1.1.1. Компоненты компьютерных систем
- •Эволюция компьютерных систем
- •1.2.1. Краткая историческая справка
- •Закон Мура
- •1.2.2. Применение компьютерных систем
- •Представление данных в компьютерных системах
- •1.3.1. Биты и байты
- •1.3.2. Системы счисления
- •Модуль 2. Системы аппаратного обеспечения
- •2.1 Процессор и память
- •2.1.1 Процессор. Основы.
- •2.1.2 Типы памяти
- •2.1.3 Лабораторная работа: Эталонное тестирование (необязательная)
- •2.2 Внешние устройства
- •2.2.1 Присоединяемые внешние устройства
- •2.2.2 Шины
- •2.2.3 Входные/выходные устройства
- •2.3 Запоминающие устройства
- •2.3.1 Интерфейсы дисковых контроллеров
- •2.3.2 Накопитель (запоминающее устройство большой ёмкости)
- •2.4 Соединение компонентов аппаратного обеспечения
- •2.4.1 Как компоненты компьютера работают вместе
- •2.4.2 Лабораторная работа: Изучение компьютерных систем
- •2.4.3 Лабораторная работа: Конфигурация online
- •2.5 Повышение производительности компьютера
- •2.5.1 Закон Мура
- •2.5.2 “Узкие” места (Bottlenecks)
- •2.5.3 Производительность и время ожидания
- •Модуль 1 и Модуль 2 Обзорные материалы
- •Закон Мура
- •Модуль 3. Программное обеспечение операционных систем
- •Структура
- •3.1.1 Уровни программного обеспечения
- •3.1.2 Bios: Жизнь снизу
- •3.1.3 Управление процессами
- •3.1.4 Лабораторная работа: диспетчер задач (Task Manager)
- •3.2 Управление устройствами и конфигурация
- •3.2.1 Управление прерываниями
- •3.2.2 Характеристики аппаратного обеспечения
- •3.2.3 Конфигурация
- •3.2.4 Лабораторная работа: Управление устройствами
- •3.3. Распределение ресурсов
- •3.3.1 Виртуальная память
- •3.3.2 Совместное использование файлов и принтеров
- •3.4. Файловые системы
- •3.4.1 Организация файлов
- •3.4.2 Таблица размещения файлов (File Allocation Table) и файловая система nt
- •Модуль 4. Прикладное программное обеспечение
- •4.1 Основы программного обеспечения
- •4.2 Использование систем программного обеспечения
- •4.2.1 Лабораторная работа: Команды dos
- •4.2.2 Лабораторная работа: Макросы
- •4.2.3 Лабораторная работа: Встроенные объект-приложения
- •4.3 Пакетные файлы сценариев
- •4.3.1 Расширенные функции командной строки
- •4.3.2 Команды пакетного файла
- •4.3.3 Лабораторная работа: Создание пакетного файла
- •4.4 Базы данных
- •4.4.1 Лабораторная работа: Поиск в библиотеке Конгресса
- •4.5 Проектирование программного обеспечения
- •4.5.1 Введение в разработку крупномасштабных программных систем (Large-Scale Software).
- •4.5.2 Модель открытого кода
- •4.5.3 Средства для создания и управления программным обеспечением
- •Модуль 3 и Модуль 4 - Материалы для проверки
- •Базы данных
- •Виртуальная память
- •Модуль 5. Сетевые системы
- •5.1 Основы Интернета
- •5.1.1 Типы mime
- •5.1.2 Языки Интернет
- •5.2 Локальные и глобальные сети
- •5.3 Стратегии коммуникации
- •5.3.1 Структура клиент-сервер (Client-Server Framework)
- •5.3.2 Равноправное соединение
- •5.4 Технологии передачи данных
- •5.5 Архитектура Интернет
- •5.5.1 Роутеры и tcp/ip
- •5.5.2 Сервис доменных имен (Domain Name Service)
- •5.5.3 Способность к подключению
- •5.5.4 Провайдеры Интернет-сервиса (Internet Service Providers)
- •Модуль 6. Безопасность компьютера
- •6.1 Угрозы безопасности
- •6.1.1 Злоумышленники: кто, зачем и как?
- •6.1.2 Кража личности и нарушение конфиденциальности (Identity Theft and Privacy Violation)
- •6.1.3 Вредоносные программные средства
- •6.1.4 Отказ от обслуживания
- •6.2 Технологии безопасности
- •6.2.1 Шифрование
- •6.2.2 Применение шифрования
- •6.2.3 Идентификация
- •6.3 Предотвращение, определение и восстановление
- •6.3.1 Система сетевой защиты (Firewall)
- •6.3.2 Средства определения вторжения
- •6.3.3 Восстановление данных
- •6.3.4 Обзор типов безопасности
- •Модуль 5 и Модуль 6 Обзорный материал
- •Шифрование
- •Приложение а. Выполнение файла Visual Basic
- •Приложение в. Загрузка приложения WinZip
- •Рекомендации по чтению ssd2
4.5.3 Средства для создания и управления программным обеспечением
-
Редакторы
-
Компиляторы
-
Отладчики
-
Интегрированная среда разработки(IDE)
Программное обеспечение, написанное программистами, использующими специальные приложения, называются программными средствами. Поскольку люди программисты и машины слишком различны, то программы, написанные людьми должны быть приведены к форме, понятной для машинного выполнения. Далее описываются средства, используемые для этого.
Редакторы
Языки программирования точны. Если бы они не были точны, компьютеры не смогли бы надежно выполнять команды. Часть точности получается благодаря очень точному синтаксису языка: синтаксис языка программирования определяет из чего должна состоять программа. Другой важный элемент точности – семантика языка программирования, предусматривающая точные вычисления, которые определяются назначением программы. Для написания программ люди используют текстовые редакторы (text editors) – Microsoft Word, Emacs – универсальные редакторы, наиболее часто применяемые для программирования. Другие редакторы, чаще всего находящиеся в IDE (смотри ниже), настроены на поддержку специфических языков программирования. Такие редакторы имеют определенную степень автоматизации, они могут отслеживать открытые и закрытые круглые скобки и другие разделители для того чтобы сообщить программисту о синтаксических ошибках; фактически, такие редакторы могут автоматически "заполнять" синтаксические конструкции, например, условное выражение или инструкции повтора. Некоторые редакторы делают даже больше, чтобы помочь программисту, также отслеживая семантические элементы программ, гарантируя соответствие между компонентами программ (например, переменная, которой присвоено целое значение, фактически объявляется как переменная целого типа).
Примечание. Одним из наиболее популярных текстовых редакторов, которые применяются программистами вне IDE, является Notepad++. Применение Microsoft Word для таких целей является скорее исключением.
Компиляторы
Компиляторы (Compilers) используют в качестве входных данных код программы, написанный людьми, и создают объектный код, приемлемый для выполнения машиной. Параллельно они диагностируют ошибки в синтаксисе и семантике. Программы с этими ошибками возвращаются программисту для исправления. Сегодня большинство компиляторов предлагают достаточно хорошие сообщения об ошибках. Некоторые компиляторы также оптимизируют исходный код переписыванием определенных операций для создания эквивалентного, но более быстрого объектного кода.
Отладчики
Раньше компьютерные компоненты были смесью электронных и механических элементов. Электромеханические реле были частью самых ранних компьютеров. Легенда гласит, что сбой первого компьютера был вызван мотыльком, который застрял в электромеханическом реле. Он был первым компьютерным жучком (bug). Было это когда-либо или нет, термин жучок стал общепринятым. Когда программы не работают так как должны, в них нужно «вылавливать жучков» (debugged) или «отлаживать». Один из лучших способов для этого – тщательно изучить код и вручную промоделировать поведение программы. Другая техника – выполнять программу команду за командой, наблюдая результаты. Чтобы облегчить этот процесс, были созданы инструменты, которые позволяют программисту просматривать состояние машины в течение выполнения. Самые популярные из этих отлаживающих инструментов – визуальные отладчики, которые обеспечивают графическое отображение выполнения программы.
Интегрированные среды разработки (Integrated Development Environments (IDEs) )
IDE становятся все более и более популярными. IDE подобные Microsoft Visual Studio, IBM Visual Age, и Symantec Cafe – это наборы программ, состоящие из редакторов, компиляторов, отладчиков и средств разработки программной документации и поддержки. Некоторые IDE проверяют синтаксис сразу при вводе кода программистом. Другие предписывают синтаксические ограничения, позволяя вводить только синтаксически допустимые конструкции. IDE могут даже отслеживать семантическую информацию во время работы программиста. Хороший IDE особенно важен, потому что он делает очевидным процесс перехода от одной стадии разработки к другой. Однако вместо того чтобы изучать IDE, некоторые программисты предпочитают использовать обычные текстовые редакторы и компиляторы, которые они уже знают.