Информатика. Развитие проблемного и системного программирования. Развитие системного программирования
Скачать 21.55 Kb.
|
Развитие системного программирования Системное программирование — создание системного программного обеспечения; системный программист — разработчик системного программного обеспечения. В отличие от прикладного программного обеспечения, системное не решает конкретные практические задачи, а лишь обеспечивает работу других программ, предоставляя им сервисные функции, абстрагирующие детали аппаратной и микропрограммной реализации вычислительной системы, управляет аппаратными ресурсами вычислительной системы. Отнесение того или иного программного обеспечения к системному условно и зависит от соглашений, используемых в конкретном контексте. Как правило, к системному программному обеспечению относятся операционные системы, утилиты, системы программирования, системы управления базами данных, широкий класс связующего программного обеспечения. Системное программирование требует высокой степени осведомленности об аппаратном обеспечении. Его цель — добиться эффективного использования имеющихся ресурсов, либо потому, что само программное обеспечение имеет решающее значение для производительности, либо потому, что даже небольшие улучшения эффективности напрямую приводят к значительной экономии времени или денег. Системное программирование характеризуется следующими признаками: Программист может делать предположения об аппаратном обеспечении и других свойствах системы, на которой выполняется программа, и часто использует эти свойства, например, используя алгоритм, который эффективен при использовании с конкретным оборудованием. Обычно используется низкоуровневый язык программирования или диалект языка программирования, чтобы: Программы могут работать в средах с ограниченными ресурсами Программы могут быть эффективными с небольшими затратами времени выполнения, возможно, с небольшой библиотекой времени выполнения или вообще без нее Программы могут использовать прямое и "сырое" управление доступом к памяти и потоком управления Программист может писать части программы непосредственно на языке ассемблера Часто системные программы не могут быть запущены в отладчике — компьютерная программа, используемая для тестирования программ. Иногда для решения этой проблемы можно использовать запуск программы в моделируемой среде. Системное программирование настолько отличается от прикладного программирования, что программисты, как правило, специализируются только на одном из. В системном программировании часто доступны ограниченные возможности программирования. Автоматическая сборка мусора используется нечасто, и отладка иногда затруднительна. Библиотека времени выполнения, если она вообще доступна, обычно гораздо менее мощная и выполняет меньше проверок на ошибки. Из-за этих ограничений часто используются мониторинг и ведение журнала; операционные системы могут иметь чрезвычайно сложные подсистемы ведения журнала. Реализация определенных частей в операционных системах и сетях требует системного программирования, например, реализации подкачки (виртуальной памяти) или драйвера устройства для операционной системы. Изначально системные программисты неизменно писали на языке ассемблера. Эксперименты с аппаратной поддержкой языков высокого уровня в конце 1960-х годов привели к появлению таких языков, как PL/S, BLISS, BCPL и расширенный АЛГОЛ для больших систем Burroughs. Forth также имеет приложения в качестве системного языка. В 1970-х годах C получил широкое распространение, чему способствовал рост Unix. Совсем недавно подмножество C ++, называемое Embedded C ++, получило некоторое применение, например, оно используется в драйверах набора ввода-вывода macOS. Операционная система — комплекс системных программ, расширяющий возможности вычислительной системы, а также обеспечивающий управление её ресурсами, загрузку и выполнение прикладных программ, взаимодействие с пользователями. В большинстве вычислительных систем операционные системы являются основной, наиболее важной (а иногда единственной) частью системного программного обеспечения. Основные функции (простейшие операционные системы): Загрузка приложений в оперативную память и их выполнение. Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода). Управление оперативной памятью (распределение между процессами, виртуальная память). Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск, компакт-диск и т. д.), организованным в той или иной файловой системе. Пользовательский интерфейс. Сетевые операции, поддержка стека протоколов. Предшественником операционных систем следует считать служебные программы (загрузчики и мониторы), а также библиотеки часто используемых подпрограмм, начавшие разрабатываться с появлением универсальных компьютеров 1-го поколения (конец 1940-х годов). Служебные программы минимизировали физические манипуляции оператора с оборудованием, а библиотеки позволяли избежать многократного программирования одних и тех же действий (осуществления операций ввода-вывода, вычисления математических функций и т. п.). В 1950—1960-х годах сформировались и были реализованы основные идеи, определяющие функциональные возможности операционных систем: пакетный режим, разделение времени и многозадачность, разделение полномочий, реальный масштаб времени, файловые структуры файловые системы. Утилиты (англ. utility или tool) — программы, предназначенные для решения узкого круга вспомогательных задач. Иногда утилиты относят к классу сервисного программного обеспечения. Утилиты используются для мониторинга показателей датчиков и производительности оборудования (например, мониторинга температур процессора или видеоадаптера), управления параметрами оборудования (ограничение максимальной скорости вращения CD-привода; изменение скорости вращения вентиляторов), контроля показателей (проверка ссылочной целостности; правильности записи данных), расширения возможностей (форматирование или переразметка диска с сохранением данных, удаление без возможности восстановления). Типы утилит: Дисковые утилиты: Дефрагментаторы; Проверка диска — поиск неправильно записанных либо повреждённых различным путём файлов и участков диска и их последующее удаление для эффективного использования дискового пространства. Очистка диска — удаление временных файлов, ненужных файлов, чистка «корзины». Разметка диска — деление диска на логические диски, которые могут иметь различные файловые системы и восприниматься операционной системой как несколько различных дисков. Резервное копирование — создание резервных копий целых дисков и отдельных файлов, а также восстановление из этих копий. Сжатие дисков — сжатие информации на дисках для увеличения вместимости жёстких дисков. Утилиты работы с реестром Утилиты мониторинга оборудования Тесты оборудования Проблемное программирование (проблемно-ориентированная разработка) — это формирующаяся парадигма вычислительной техники, в которой проблемы (в отличие от требований) являются основным предметом пристального внимания разработчиков программного обеспечения. Таким образом, проблемно-ориентированная разработка связана с: Исследованием структуры организационных проблем, решаемых программной инженерией; Предоставлением формализмов для моделирования и представления проблем; Предоставлением рекомендаций и рамок для анализа и декомпозиции проблем; Определением методов формального обоснования решений (например, путем сопоставления компонентов проблемы с компонентами решения); Поддержка повторного использования знаний при анализе проблем (например, с помощью шаблонов проблем). Конкретные подходы: Проблемно-ориентированная разработка программного обеспечения обеспечивает формальное определение проблем и структуру для сопоставления проблем с решениями с помощью формальных, логических аргументов; Проблемные фреймы обеспечивают основу для определения эмпирических моделей проблем разработки программного обеспечения, которые основаны на физическом мире. Подход с использованием фреймов проблем также предоставляет набор элементарных шаблонов проблем; Теория предметной области выдвигает гипотезу о наборе когнитивных «глубинных структур», соответствующих компонентам знаний предметной области, и использует их для обеспечения основы для моделирования проблем с программным обеспечением. Исследование влияния проблемно-ориентированного развития. Инженерия знаний — это область компьютерных наук, которая предлагает значительный объем работ по методам решения проблем. Методы решения проблем — это шаблоны рассуждений, которые применяются для решения конкретных проблем. Поэтому работа над абстракциями проблем в рамках разработки знаний может стать основой для исследований в области разработки программного обеспечения. Когнитивная наука, которую можно определить как изучение природы интеллекта, предлагает основу для изучения когнитивных структур, которые эксперты предметной области разрабатывают для решения проблем, а также для лучшего понимания человеческих подходов к решению проблем. Теория предметной области является одним из примеров влияния когнитивной науки на исследования проблемно-ориентированного развития. |