Главная страница
Навигация по странице:

  • Исследование влияния проблемно-ориентированного развития.

  • Информатика. Развитие проблемного и системного программирования. Развитие системного программирования


    Скачать 21.55 Kb.
    НазваниеРазвитие системного программирования
    АнкорИнформатика
    Дата09.01.2023
    Размер21.55 Kb.
    Формат файлаdocx
    Имя файлаРазвитие проблемного и системного программирования.docx
    ТипДокументы
    #878809

    Развитие системного программирования

    Системное программирование — создание системного программного обеспечения; системный программист — разработчик системного программного обеспечения.

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

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

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

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

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

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

      • Программы могут работать в средах с ограниченными ресурсами

      • Программы могут быть эффективными с небольшими затратами времени выполнения, возможно, с небольшой библиотекой времени выполнения или вообще без нее

      • Программы могут использовать прямое и "сырое" управление доступом к памяти и потоком управления

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

    • Часто системные программы не могут быть запущены в отладчике — компьютерная программа, используемая для тестирования программ. Иногда для решения этой проблемы можно использовать запуск программы в моделируемой среде.

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

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

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

    Изначально системные программисты неизменно писали на языке ассемблера. Эксперименты с аппаратной поддержкой языков высокого уровня в конце 1960-х годов привели к появлению таких языков, как PL/S, BLISS, BCPL и расширенный АЛГОЛ для больших систем Burroughs. Forth также имеет приложения в качестве системного языка. В 1970-х годах C получил широкое распространение, чему способствовал рост Unix. Совсем недавно подмножество C ++, называемое Embedded C ++, получило некоторое применение, например, оно используется в драйверах набора ввода-вывода macOS.

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

    Основные функции (простейшие операционные системы):

    • Загрузка приложений в оперативную память и их выполнение.

    • Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода).

    • Управление оперативной памятью (распределение между процессами, виртуальная память).

    • Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск, компакт-диск и т. д.), организованным в той или иной файловой системе.

    • Пользовательский интерфейс.

    • Сетевые операции, поддержка стека протоколов.

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

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

    Утилиты (англ. utility или tool) — программы, предназначенные для решения узкого круга вспомогательных задач. Иногда утилиты относят к классу сервисного программного обеспечения.

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

    Типы утилит:

    • Дисковые утилиты:

      • Дефрагментаторы;

      • Проверка диска — поиск неправильно записанных либо повреждённых различным путём файлов и участков диска и их последующее удаление для эффективного использования дискового пространства.

      • Очистка диска — удаление временных файлов, ненужных файлов, чистка «корзины».

      • Разметка диска — деление диска на логические диски, которые могут иметь различные файловые системы и восприниматься операционной системой как несколько различных дисков.

      • Резервное копирование — создание резервных копий целых дисков и отдельных файлов, а также восстановление из этих копий.

      • Сжатие дисков — сжатие информации на дисках для увеличения вместимости жёстких дисков.

    • Утилиты работы с реестром

    • Утилиты мониторинга оборудования

    • Тесты оборудования

    Проблемное программирование (проблемно-ориентированная разработка) — это формирующаяся парадигма вычислительной техники, в которой проблемы (в отличие от требований) являются основным предметом пристального внимания разработчиков программного обеспечения. Таким образом, проблемно-ориентированная разработка связана с:

    • Исследованием структуры организационных проблем, решаемых программной инженерией;

    • Предоставлением формализмов для моделирования и представления проблем;

    • Предоставлением рекомендаций и рамок для анализа и декомпозиции проблем;

    • Определением методов формального обоснования решений (например, путем сопоставления компонентов проблемы с компонентами решения);

    • Поддержка повторного использования знаний при анализе проблем (например, с помощью шаблонов проблем).

    Конкретные подходы:

    • Проблемно-ориентированная разработка программного обеспечения обеспечивает формальное определение проблем и структуру для сопоставления проблем с решениями с помощью формальных, логических аргументов;

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

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

    Исследование влияния проблемно-ориентированного развития.

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

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


    написать администратору сайта