Оглавление
- 1 Компьютерная программа
- 1.1 История компьютерного программирования
- 1.2 Развитие компьютеров
- 1.3 Компьютеры с сохраненными программами
- 1.4 Очень масштабная интеграция
- 1.5 Микропроцессоры и микрокомпьютеры
- 1.6 История языков программирования
- 1.7 Эволюция микропроцессоров
- 1.8 Язык ассемблера x86
- 1.9 Эволюция среды программирования
- 1.10 Парадигмы и языки программирования
- 1.11 Поколения языков программирования
- 1.12 Императивные языки
- 1.13 Фортран
- 1.14 КОБОЛ
- 1.15 Алгол
- 1.16 BASIC
- 1.17 Развитие языка Basic
- 1.18 Язык программирования C
- 1.19 Объектно-ориентированные языки
- 1.20 Декларативные языки
- 1.21 Недостатки Lisp
- 1.22 ML
- 1.23 Prolog
- 1.24 Объектно-ориентированное программирование
- 1.25 Синтаксис и семантика
- 1.26 Разработка программного обеспечения и компьютерное программирование
- 1.27 Уникальность и стоимость
- 1.28 Модель водопада
- 1.29 Роль программиста
- 1.30 Модули программ
- 1.31 Уровни связности и связности
- 1.32 Анализ потока данных
- 1.33 Функциональные категории
- 1.34 Прикладное ПО
- 1.35 Операционная система
- 1.36 История операционных систем
- 1.37 Функции ядра
- 1.38 Современные операционные системы
- 1.39 Микрокод
- 1.40 Полный текст статьи:
- 2 Компьютерные программы – Википедия
Компьютерная программа
-
История компьютерного программирования
- Чарльз Бэббидж создал аналитическую машину в 1837 году.
- Ада Лавлейс написала первую компьютерную программу для аналитической машины.
- Алан Тьюринг представил Универсальную машину Тьюринга в 1936 году.
-
Развитие компьютеров
- ENIAC был создан в 1943-1945 годах и использовал 17 468 вакуумных ламп.
- Преспер Экерт и Джон Мочли предложили концепцию хранимой программы в 1944 году.
- Джон фон Нейман разработал архитектуру фон Неймана в 1945 году.
-
Компьютеры с сохраненными программами
- Компьютеры с сохраненными программами загружают инструкции в память.
- IBM System/360 имела архитектуру набора команд и мультипрограммирование.
- PL/1 был разработан для замены Cobol и Fortran.
-
Очень масштабная интеграция
- Изобретение СБИС в 1964 году.
- Роберт Нойс усовершенствовал производство полевых транзисторов в 1963 году.
- Программируемое ПЗУ стало использоваться для управления электрическим потоком.
-
Микропроцессоры и микрокомпьютеры
- Intel 4004 и Intel 8008 были первыми микропроцессорами.
- Билл Пенц создал первый микрокомпьютер на базе Intel 8008 в 1972 году.
-
История языков программирования
- Дисковая операционная система была запрограммирована на языке ассемблера IBM Basic.
- Приложение для ведения медицинских записей было запрограммировано на интерпретаторе BASIC.
- Компьютер оказался тупиковым из-за высокой стоимости и узкой специализации.
-
Эволюция микропроцессоров
- Intel 8080 был разработан в 1974 году.
- Intel 8086 был упрощен для производства Intel 8088.
- IBM внедрила Intel 8088 в персональные компьютеры в 1981 году.
- Серия x86 включает микропроцессоры, совместимые с Intel 8086.
-
Язык ассемблера x86
- Семейство обратно совместимых машинных инструкций.
- Инструкции памяти, ALU, стека вызовов и SIMD.
-
Эволюция среды программирования
- Схемы СБИС позволили перейти от компьютерных терминалов к GUI.
- Полноэкранное редактирование исходного кода стало возможным в 1970-х годах.
-
Парадигмы и языки программирования
- Функции языка программирования: выражение идей, независимость идей, взаимосвязи между идеями, свободное комбинирование идей.
- Парадигмы программирования: процедурные, функциональные, логические.
- Языки программирования основаны на формальных языках.
-
Поколения языков программирования
- Первое поколение: машинный язык.
- Второе поколение: язык ассемблера.
- Третье поколение: компиляторы и интерпретаторы.
- Четвертое поколение: декларативные языки.
-
Императивные языки
- Определяют последовательный алгоритм.
- Примеры: Fortran, COBOL, ALGOL, BASIC.
-
Фортран
- Разработан для научных расчетов.
- Поддерживал массивы, подпрограммы, циклы.
- Стандартизирован ANSI в 1966 году.
-
КОБОЛ
- Разработан для бизнес-приложений.
- Ввел строки и объектно-ориентированное программирование.
- Не менялся до 1974 года.
-
Алгол
- Оказал влияние на разработку языков программирования.
- Использовал стандартную математическую нотацию.
- Прямые потомки: Pascal, Modula-2, Ada, C, C++, Java.
-
BASIC
- Разработан для обучения студентов.
- Интерпретатор установлен в микрокомпьютерах конца 1970-х годов.
-
Развитие языка Basic
- Basic стал пионером интерактивного сеанса
- Команды операционной системы в среде Basic
- Синтаксис Basic был слишком прост для больших программ
- Microsoft Visual Basic обеспечивает графический интерфейс пользователя
-
Язык программирования C
- C получил название от языка BCPL
- Цель: написание операционной системы UNIX
- C позволяет управлять памятью
- Глобальные и статические переменные хранятся в области глобальных и статических данных
- Локальные переменные хранятся в стеке
- Куча используется для динамического выделения памяти
-
Объектно-ориентированные языки
- Объектно-ориентированные языки поддерживают классы и объекты
- C++ разработан для расширения C с объектно-ориентированными средствами
- Объектно-ориентированный модуль состоит из заголовочного и исходного файлов
-
Декларативные языки
- Декларативные языки опускают оператор присваивания и поток управления
- Функциональные языки используют лямбда-исчисление
- Функциональные языки подчеркивают значение “что”
- Lisp предназначен для обработки списков
- Lisp использует древовидную структуру данных для рекурсивных функций
-
Недостатки Lisp
- Вложенные функции могут выглядеть запутанно
- Поддержка императивных языковых операций
- Динамическая привязка типов данных
-
ML
- Проверяет типы данных
- Статическая привязка типов данных
- Адаптирован для обработки списков
-
Prolog
- Логический язык программирования
- Факты и правила как строительные блоки
- Наследование через предикаты
-
Объектно-ориентированное программирование
- Группировка характеристик в контейнеры
- Абстрактные типы данных
- Формальная стратегия создания объектов
-
Синтаксис и семантика
- Синтаксис описывает грамматические конструкции
- Семантика описывает значения конструкций
- Форма Бэкуса-Наура для описания синтаксиса
-
Разработка программного обеспечения и компьютерное программирование
- Разработка программного обеспечения включает методы создания программ
- Системный аналитик собирает информацию и готовит план
- Цели в области эффективности: качество, точность, формат, скорость
- Целевые показатели затрат: затраты на разработку
-
Уникальность и стоимость
- Многоразовая система может быть дорогой, но предпочтительнее ограниченной системы.
- Аппаратные и операционные затраты.
- Процесс разработки систем снижает стоимость исправления ошибок.
-
Модель водопада
- Модель водопада включает фазы исследования, анализа, проектирования, реализации и обслуживания.
- Возможны изменения после развертывания системы.
-
Роль программиста
- Программист пишет или модифицирует исходный код для реализации плана.
- Для крупных систем требуется команда программистов.
- Программирование может быть в малом или большом масштабе.
-
Модули программ
- Модульное программирование улучшает программы, разделяя обязанности и снижая старение.
- Модуль — это последовательность операторов, ограниченная блоком и имеющая имя.
- Модули имеют функцию, контекст и логику.
-
Уровни связности и связности
- Уровни связности: случайная, логическая, временная, процедурная, коммуникационная, информационная, функциональная.
- Уровни связности: контент, общий, контроль, штамп, данные.
-
Анализ потока данных
- Анализ потока данных используется для достижения функциональной связности и связности данных.
- Диаграмма потока данных показывает модули и их связи.
-
Функциональные категории
- Программы делятся на прикладное и системное ПО.
- Системное ПО включает операционную систему, которая управляет аппаратурой и ПО.
-
Прикладное ПО
- Прикладное ПО раскрывает потенциал компьютерной системы.
- Примеры: ERP, CRM, SCM.
- Прикладное ПО может быть разработано внутри компании или приобретено.
- Преимущества и недостатки каждого подхода.
-
Операционная система
- Операционная система поддерживает базовые функции компьютера.
- В 1950-х программист был также оператором.
-
История операционных систем
- В 1960-х годах программисты автоматизировали работу операторов, создав операционные системы.
- Операционная система может относиться к ядру, которое управляет процессами, памятью и устройствами, или к полному пакету программного обеспечения.
-
Функции ядра
- Ядро управляет ресурсами компьютера, выполняя планирование процессов и управление памятью.
- Ядро создает и управляет процессами, обеспечивая непрерывный доступ к ресурсам.
- Ядро управляет виртуальной памятью, переводя виртуальные адреса в физические.
- Ядро управляет файловой системой, создавая, изменяя и удаляя файлы.
- Ядро управляет устройствами, стандартизируя интерфейс и обеспечивая доступ к устройствам.
- Ядро управляет сетью, передавая и получая пакеты.
-
Современные операционные системы
- Современные операционные системы обычно пишутся на языках высокого уровня, таких как C, Objective-C и Swift.
- Операционные системы выполняют утилиты для администрирования и выполнения программного обеспечения.
- Утилиты включают программы для проверки состояния оборудования, оптимизации размещения файлов и мониторинга производительности.
-
Микрокод
- Микрокод — это низкоуровневый интерпретатор, управляющий потоком данных в компьютерах.
- Микрокод позволяет программистам легче реализовывать цифровые логические функции.
- Микрокод хранится в контрольном магазине процессора и управляет данными через микропроцессор.
- Микрокод выполняет арифметические операции через арифметико-логический блок.
- Микрокод управляет памятью, перемещая данные между процессором и контроллером памяти.
- Микрокод также управляет периферийными устройствами через шины.