- •1. Понятие системы. Свойства сложных систем. Примеры систем.
- •2. Системный анализ. Определение и этапы.
- •3. Понятие информационное пространство и информационное общество.
- •4. Информатизация. Субъекты информатизации.
- •5. Правовое регулирование создания и использования асоиу
- •6. Понятие об асоиу и автоматизированного комплекса.
- •7. "Принципы создания асоиу".
- •8. "Классификация асоиу".
- •9. Критерии эффективности асоиу.
- •10. Обеспечивающие подсистемы асоиу
- •11. Программное обеспечение асоиу
- •12 "Состав информационного обеспечения и требования к нему".
- •13. Организационное обеспечение асоиу
- •14. Техническое обеспечение асоиу
- •15. Маркетинг асоиу
- •16. " Стадии и этапы создания асоиу.
- •17"Организация работ по разработке асоиу.
- •18. Содержание технического задания на асоиу
- •19 " Проектирование технического обеспечения асоиу ".
- •20 " Проектирование программного обеспечения асоиу ".
- •21 "Особенности человека – оператора как элемента асоиу"
- •22 Оценка технического и экономического эффекта асоиу
- •23 Дерево целей создания асоиу.
- •24 Комплекс стандартов создания асоиу.
- •25 Логические элементы и синтез комбинационных логических схем.
- •27 Принцип микропрограммного управления процессора.
- •28 Основная память эвм. Методы доступа. Способы организации памяти.
- •29 Интерфейс программного обмена данными. Структура системной шины
- •30. Количественная мера информации. Энтропия дискретных и непрерывных сообщений.
- •31. Методы эффективного помехоустойчивого кодирования. Общий принцип использования избыточности
- •32 “ Общие принципы организации и математические модели систем управления техническими системами ”
- •33 “Понятие модели. Виды моделей”
- •34 Основные свойства надежности асоиу
- •35 Основные показатели безотказности, ремонтопригодности и долговечности асоиу.
- •36 Расчет надежности асоиу методом марковских процессов.
- •37 Расчет надежности асоиу λ –методом.
- •38 Имитационное моделирование. Методы построения программных датчиков стандартной (базовой) случайной величины.
- •39 Системы массового обслуживания и их моделирование.
- •40 Системы имитационного моделирования. Язык gpss.
- •41 Оценка точности и достоверности результатов статистического моделирования.
- •42 Определение базы данных.
- •43 Принцип независимости данных и приложений.
- •44 Элементы данных и связи.
- •45 Классификация моделей данных. Реляционная модель хранения данных.
- •46 Первая, вторая и третья нормальные формы.
- •47 Покрытие множества функциональных зависимостей.
- •48 Декомпозиция предметной области.
- •49 Этапы построения схемы базы данных.
- •51 Классификация методов доступа в субд.
- •52 Языки программирования высокого уровня. Сравнительная характеристика
- •53 Статические и динамические структуры данных программы, их особенности.
- •54 Управление программным потоком, операторы.
- •55 Структурное программирование. Нисходящая и восходящая концепции. Модульное программирование
- •56 Объектно-ориентированное программирование. Абстрагирование. Инкапсуляция, наследование, полиморфизм.
- •58 Основные принципы тестирования и верификации программного обеспечения
- •59 Принятие решений в условиях неопределенности. Математическая запись задачи
- •60 Процесс передачи данных. Спектральное представление сигналов
- •61. "Способы повышения надежности передачи данных".
- •62. "Основные компоненты информационных сетей".
- •63. "Эталонная модель взаимодействия открыты систем".
- •64 Технология локальных сетей, или проблема доступа к моноканалу.
- •65. "Основные конфигурации локальных и территориальных компьютерных сетей".
- •66.Протоколы маршрутизации и управления трафиком. Протокол ip и система адресации.
- •67 Мировая информационная среда
- •68 Поисковые системы InterNet
- •69. Многопользовательские и многозадачные операционные системы
- •70. Управление процессами. Состояния и переходы процессов. Синхронизация и взаимоблокировка.
- •71. Управления основной памятью. Страничная и сегментная организации виртуальной памяти.
- •72. Управление вторичной памятью. Файловые системы
- •73 Управление вводом-выводом в современных операционных системах.
- •74 Мультипроцессорные вычислительные системы.
- •75.Операционные системы реального времени
- •76 Методы представления знаний. Рассуждения и задачи.
- •77 Экспертные системы: классификация и структура.
- •78 Компьютерные системы поддержки принятия решений. Технологии olap, DataMining
- •79 Задачи компьютерной графики. Графические библиотеки и их возможности
- •80. Классификация перечня классов угроз для защищаемой информации в системе
- •81 Стандарт шифрования данных гост 28147-89
- •82 Понятие политики безопасности: общие положения, аксиомы защищённых систем, понятия доступа и монитора безопасности.
- •83. Case-средства проектирования программного обеспечения.
- •84. Системы жесткого и мягкого реального времени. Особенности их архитектуры.
52 Языки программирования высокого уровня. Сравнительная характеристика
С появлением машин второго поколения возникла потребность создания языков, целиком ориентированных на особенности задач и не зависящих от конкретной машины. Символом второго поколения ЭВМ стали проблемно-ориентированные языки программирования. Их развитие все в большей степени определялось спецификой задач, а не особенностями машин. Эти языки назвали алгоритмическими языками. Одним из первых и наиболее удачных языков такого рода стал Фортран (Formulae Translation), разработанный фирмой IBM в 1954 г. Язык Фортран не только просуществовал до наших дней, но и достаточно распространен. Среди причин такого долголетия можно отметить простую структуру как самого Фортрана, так и предназначенных для него трансляторов. Фортран был заложен в основу диалогового языка Бейсик (Beginner's All-purpose Symbolic Instruction Code) — широко распространенного ныне в различных модификациях языка. Вскоре после создания Фортрана (1957 г.) появился язык Алгол (Algorithmic Language), созданный на основе широкого международного сотрудничества. В 1960 г. было опубликовано официальное сообщение об алгоритмическом языке, названном Алгол-60. Алгол создавался после разработки и практического применения Фортрана, поэтому характеризуется как введением новых конструкций, так и обобщением понятий, имеющихся в Фортране. Несмотря на то, что и Фортран, и Алгол заслуживали название универсальных языков, ни один них, конечно, не позволял описать все без исключения возникающие задачи. Поэтому примерно в то же время появились алгоритмические языки с проблемной ориентацией (Кобол, Снобол и др.), отвечающие нуждам специфичных направлений науки и техники. Из языков для обработки символьной информации (преобразование формул, аналитическое решение уравнений, анализ и синтез текстов и т.д.) очень популярным является язык Лисп (List Processing), созданный в 1960 г. в Массачусетском технологическом институте. В этом языке вся находящаяся в обработке информация, в том числе и сама программа, организуется в так называемые списки — последовательности элементов. Третье поколение ЭВМ поставило на повестку дня выработку нового подхода к созданию действительно универсального языка. Одной из попыток такого рода являлось создание фирмой IBM алгоритмического языка PL/1 (Programming Language/1 — язык программирования один). Он основывался на языках Фортран и Кобол, ряд изобразительных средств и понятий был почерпнут из Алгола и других языков. В 1971 г. Никлаусом Виртом был предложен алгоритмический язык Паскаль (Pascal). Язык Паскаль является преемником Алгола-60, он имеет конструкции, аналогичные существующим в PL/1 и Алголе-68, однако Паскаль более лаконичен. Язык Паскаль способствовал внедрению современной технологии программирования, основанной на постепенном построении программы, состоящей из небольших четко определенных процедур, т. е. последовательно проводятся в жизнь идеи структурного программирования. Другой существенной особенностью Паскаля является концепция структуры данных как одного из фундаментальных понятий, лежащих, наряду с понятием алгоритма, в основе программирования. На основе языка Паскаль в конце 70-х годов был создан язык Ада, имеющий очень широкую сферу применения, хотя и созданный как официальный язык программирования американских военных. Язык назван так по имени первой женщины-программиста Ады Лавлейс. Это существенно структурированный язык, особенно он подходит для разработки систем реального времени. Однако язык Ада слишком громоздкий, многословный и не предоставляет программисту достаточной свободы. По синтаксической сложности он до сих пор не превзойден ни одним из языков. В отличие от перечисленных языков высокого уровня, предложенный Денисом Ритчи в начале 80-х годов язык программирования Си (название содержит одну латинскую букву С) задумывался языком сравнительно низкого уровня. Но это не значит, что этот язык недостаточно мощный. Алгоритмический язык C достаточно полно отражает возможности современных компьютеров, позволяя писать весьма эффективные программы, не прибегая к языкам ассемблера, главным образом за счет простых, последовательных конструкций потоков управления. Язык приобрел популярность благодаря остроумным решениям, сделавшим запись программы на C весьма компактной. Не накладывая на программиста особых ограничений, он дает возможность для разнообразных трюков, чем тоже многим импонирует. Язык Паскаль в оригинальной авторской версии не содержал средств раздельной компиляции — модулей, разнообразных числовых типов, строк переменной длины и многого из того, что добавлено в известные реализации. Вследствие этого Никлаус Вирт предложил язык Модула-2, который должен был заменить Паскаль, устранив основное его ограничение — отсутствие модульности. Известно, что Модула-2 использовалась и используется в проектах, где важнейшую роль играет надежность. Средства межмодульного контроля Модулы-2 заметно совершеннее аналогичных возможностей Паскаля и C. Компилятор Турбо-Паскаль, разработанный Андерсом Хейльсбергом, был выпущен в продажу фирмой Borland в 1983 г. Эта версия уже содержала расширения языка, хотя и небольшие. В последующих выпусках расширений становилось все больше: встроенная графика, модули, средства объектно-ориентированного программирования (ООП) и т.д. Начиная с версии 7.0, язык стал называться Borland-Паскаль. В качестве мощной объектно-ориентированной версии Паскаля сейчас популярен Объектный Паскаль. Объектный Паскаль по сравнению со стандартным Паскалем содержит очень много синтаксических расширений. В результате из простого и изящного Паскаля получился язык, приближающийся по сложности к языку Ада. Объектно-ориентированный язык C++ предложил Бьярн Страуструп с первоначальным названием «Си с классами». Название отражает тот факт, что C++ является надмножеством языка C. Язык C++, по ряду оценок, сложнее C вдвое. В настоящее время это, без преувеличения, язык номер один в мире для профессиональных программистов, поскольку он перенял преимущества и популярность C и добавил мощные средства написания объектно-ориентированных программ. Его реализации поддерживаются на всех аппаратно-программных платформах, в отличие от Паскаля, который широко распространен лишь на платформе IBM PC. Язык Оберон был разработан Н. Виртом в 1987 г. Он представляет собой существенно упрощенный синтаксически вариант Модулы-2, в который добавлены расширяемые записи — основной механизм ООП. Язык необычайно прост, но при этом сохраняет универсальность и в функциональном отношении не уступает другим языкам. В 1992 г. Н. Виртом были приняты расширения Оберона, предложенные Ханспетером Мёссенбёком. В язык введены аналоги виртуальных методов в других языках. Новая версия получила название Оберон-2. Удивительно, но Оберон-2 оказался проще Оберона, расширением которого является. Самый молодой и самый обсуждаемый ныне объектно-ориентированный язык Java (в английском произношении — Джава, русское еще не устоялось) предложен Джеймсом Гослингом (фирма Sun Microsystems). Основная особенность Java — межплатформенная переносимость приложений, благодаря чему язык широко используется для написания приложений для Internet. Java — очень сложный синтаксически язык. Его официальное описание — 700-страничный документ — насыщен многословными и громоздкими определениями. Несмотря на эту сложность, в Java есть всего две существенные вещи, которых нет, например, в Обероне: встроенная многопоточность и обработка исключений. В целом, к настоящему моменту известно от 2-х до 3-х тысяч языков программирования, из них около 100 объектных и объектно-ориентированных. Критерии выбора языка программирования: Выбор языка должен производиться на основе требований к разрабатываемому продукту с учетом следующих факторов: мощность языка (возможности языка); переносимость языка; сложность языка; уровень существующей инструментальной поддержки языка. Сложность языка не всегда напрямую связана с его мощностью. Линия языков Вирта (Паскаль — Модула — Оберон) характеризуется снижением сложности при росте мощности. Ряд исследователей полагает, что существует пять основных разновидностей стилей программирования и, соответственно, языков программирования:
|
алгоритмы |
|
классы и объекты |
|
цели, часто выраженные в терминах исчисления предикатов |
|
правила «если-то» |
|
инвариантные соотношения. |
В настоящее время наиболее привлекательные для программистов языки базируются на так называемой объектной модели, которая имеет четыре главных элемента: абстрагирование; инкапсуляция; модульность; иерархия. Абстрагирование — выделения абстракций (abstraction), под которыми понимаются существенные характеристики объекта, которые отличают его от всех других объектов и четко определяют его концептуальные границы для наблюдателя. Инкапсуляция (encapsulation) — разделение элементов абстракции, которые образуют ее структуру и поведение. Модульность (modularity) — разделение системы на модули (module), под которыми понимаются единицы кода, служащие блоками физической структуры системы. Иерархия (hierarchy) — подчинение или упорядочение абстракций. Две типичных иерархии в сложной системе — иерархия наследования «общее/частное», присущая, обычно, типам (классам) и иерархия агрегирования «целое/часть», присущая, обычно, элементам (объектам). Иерархия присуща также модулям и другим частям системы. Наиболее явно эти черты присутствую в языках, реализующих концепции объектно-ориентированного программирования. Под последним понимается методология реализации, при которой программа организуется как совокупность сотрудничающих объектов, каждый из которых является экземпляром какого-либо класса, а классы образуют иерархию наследования. При этом классы обычно статичны, а объекты очень динамичны, что поощряется динамическим связыванием и полиморфизмом. Для ООП характерны понятия наследования и полиморфизма. Наследование (inheritance) — отношение между классами, при котором класс использует структуру или поведение другого (одиночное наследование) или других (множественное наследование). Наследование вводит иерархию «общее/частное». Полиморфизм (polymorphism) — положение теории типов, согласно которому имена (например, переменных) могут обозначать объекты разных (но имеющих общего родителя) классов. Следовательно, любой объект (метод), обозначаемым полиморфным именем, может по-своему реагировать на некий общий набор операций (аргументов).
