Серьезные практические результаты в области логического программирования появились только в 70-е годы после того, как была подготовлена достаточная теоретическая база и достигнут значительный прогресс в развитии вычислительной техники. К этому времени после целой череды экспериментальных языков группой Алана Колмероэ в Марселе была создана (еще неэффективная) реализация языка, заменившего последовательные вычисления машины фон Неймана на логический вывод. Новый язык, названный Прологом (Программирование логическое), предназначался для анализа текстов, написанных на естественном языке, т.е. для решения задач, обычно относимых к области искусственного интеллекта. Приблизительно в те же годы были разработаны и теоретические основы нового направления в программировании. Основные результаты в этой области принадлежат Алану Робинсону и Роберту Ковальскому. Первая реализация Пролога, выполненная кстати на Фортране, заинтересовала специалистов, но не получила широкого распространения по причине низкой эффективности. Мешал распространению Пролога и накопившийся к этому времени у специалистов (в основном американских) общий скепсис по отношению к идее логического программирования, поскольку все реализации предшественников Пролога были также неэффективны.
Настоящая революция в этой области произошла в конце 70-х, когда Дэвид Уоррен из Эдинбургского университета создал первый компилятор для языка Пролог. Этот компилятор работал настолько эффективно, что скепсис специалистов немедленно сменился всеобщим энтузиазмом. С тех пор и до настоящего времени направление логического программирования успешно развивается и поддерживается как профессионалами, так и просто любителями программирования.
Проектирование и разработка программ, реализующих модели сложных процессов и явлений достаточно сложны и трудоемки. Одним из подходов, обеспечивающих структурирование математической модели и упрощение ее программирования, является объектный подход, в котором реальный процесс или система представляются совокупностью объектов, взаимодействующих друг с другом.
Принцип объектно-ориентированного программирования (ООП) основан на формализации описания объектов. Под объектом понимается совокупность свойств (параметров) определенных сущностей и методов их обработки (программных средств). Объект содержит инструкции (программный код), определяющие действия, которые может выполнять объект и обрабатываемые данные. Состояние объекта определяется перечнем всех возможных (обычно статических) свойств и текущими значениями (обычно динамическими) каждого из этих свойств. Свойства объекта характеризуются значениями его параметров.
Основные идеи объектно-ориентированного подхода опираются на следующие положения:
1.программа представляет собой модель некоторого реального процесса, части реального мира.
2.модель реального мира или его части может быть описана как совокупность взаимодействующих между собой объектов.
3. Объект описывается набором параметров, значения которых определяют состояние объекта, и набором операций (действий), которые может выполнять объект.
4. Взаимодействие между объектами осуществляется посылкой специальных сообщений от одного объекта к другому. Сообщение, полученное объектом, может потребовать выполнения определенных действий, например, изменения состояния объекта.
5. Объекты, описанные одним и тем же набором параметров и способные выполнять один и тот же набор действий представляют собой класс однотипных объектов.
Три основных достоинства ООП: упрощение проектирования; ускорение разработки за счет многократного использования готовых модулей; легкость модификации.
Общим предком практически всех используемых сегодня объектных и объектно-ориентированных языков является Simula, созданный в 1960 году Далем, Мюрхогом и Ныгардом. Существенно, что Simula, предназначенная для описания систем и моделирования, ввела дисциплину написания программ, отражающую словарь предметной области.
Практически все объектно-ориентированные языки программирования являются развивающимися языками, их стандарты регулярно уточняются и расширяются. Следствием этого развития являются неизбежные различия во входных языках компиляторов различных систем программирования. Наиболее распространенными в настоящее время являются системы программирования Microsoft C++ , Microsoft Visual C++ и системы программирования фирмы Borland International.
21. Компьютеры. Поколения ЭВМ
Слово компьютер английское. Computer - вычислитель, синоним в русском языке - электронная вычислительная машина (ЭВМ).
Представление о поколениях компьютеров можно получить из таблицы [7]
Поколения компьютеров
1 поколение, после 1946 года
Особенности: Применение вакуумно-ламповой технологии, использование систем памяти на ртутных линиях задержки, магнитных барабанах, электронно-лучевых трубках (трубках Вильямса).
Для ввода-вывода данных использовались перфоленты и перфокарты, магнитные ленты и печатающие устройства.
Была реализована концепция хранимой программы. Быстродействие (операций в секунду)- 10-20 тыс. Программное обеспечение- Машинные языки. Примеры: ENIAC (США)
МЭСМ (СССР)
2 поколение, после 1955 года
Особенности: Замена электронных ламп как основных компонентов компьютера на транзисторы. Компьютеры стали более надежными, быстродействие их повысилось, потребление энергии уменьшилось. С появлением памяти на магнитных сердечниках цикл ее работы уменьшился до десятков микросекунд.
Главный принцип структуры - централизация.
Появились высокопроизводительные устройства для работы с магнитными лентами, устройства памяти на магнитных дисках. Быстродействие (операций в секунду)- 100-500 тыс. Примеры: IBM 701 (США)
БЭСМ-6, БЭСМ-4, Минск-22, Минск-32 (СССР)
3 поколение, после 1964 года
Особенности: Компьютеры проектировались на основе интегральных схем малой степени интеграции (МИС - 10-100 компонентов на кристалл) и средней степени интеграции (СИС - 100-1000 компонентов на кристалл).
Появилась идея, которая и была реализована, проектирования семейства компьютеров с одной и той же архитектурой, в основу которой положено главным образом программное обеспечение.
В конце 60-х появились мини-компьютеры. В 1971 году появился первый микропроцессор. Быстродействие (операций в секунду)- порядка 1 млн. Программное обеспечение: операционные системы (управление памятью, устройствами ввода-вывода и другими ресурсами), режим разделения времени Примеры: IBM 360 (США), ЕС 1030, 1060 (СССР).
4 поколение, после 1975 года
Особенности: Использование при создании компьютеров больших интегральных схем (БИС - 1000-100000 компонентов на кристалл) и сверхбольших интегральных схем (СБИС - 100000-10000000 компонентов на кристалл). Началом данного поколения считают 1975 год - фирма Amdahl Corp. выпустила шесть компьютеров AMDAHL 470 V/6, в которых были применены БИС в качестве элементной базы.
Стали использоваться быстродействующие системы памяти на интегральных схемах - МОП ЗУПВ емкостью в несколько мегабайт. В случае выключения машины данные, содержащиеся в МОП ЗУПВ, сохраняются путем автоматического переноса на диск. При включении машины запуск системы осуществляется при помощи хранимой в ПЗУ (постоянное запоминающее устройство) программы самозагрузки, обеспечивающей выгрузку операционной системы и резидентного программного обеспечения в МОП ЗУПВ.
В середине 70-х появились первые персональные компьютеры. . Быстродействие (операций в секунду)- десятки и сотни млн. Программное обеспечение: Базы и банки данных. Примеры: Суперкомпьютеры (многопроцессорная архитектура и использование принципа параллелизма), ПЭВМ.
5 поколение, после 1982 года
Особенности: Главный упор при создании компьютеров сделан на их «интеллектуальность», внимание акцентируется не столько на элементной базе, сколько на переходе от архитектуры, ориентированной на обработку данных, к архитектуре, ориентированной на обработку знаний.
Обработка знаний - использование и обработка компьютером знаний, которыми владеет человек для решения проблем и принятия решений.
22. компьютеры. Программное обеспечение
Программное обеспечение персонального компьютера - совокупность программных средств, обеспечивающих функционирование компьютера.
Все программное обеспечение по сфере использования принято подразделять на три большие группы: системное программное обеспечение, пакеты прикладных программ и инструментарий технологии программирование, т.е. программное обеспечение сферы производства программ.
Системное программное обеспечение (SystemSoftware) - совокупность программ и программных комплексов для обеспечения работы компьютера и сетей ЭВМ, оно направлено на создание операционной среды функционирования других программ; на обеспечение надежной работы компьютера и вычислительной сети; на проведение диагностики и профилактики аппаратуры компьютера и вычислительных сетей; на выполнение вспомогательных технологических процессов (копирование, архивирование, восстановление файлов и т.д.).
Пакеты прикладных программ (applicationprogrampackage) - комплекс взаимосвязанных программ для решения задач определённого класса конкретной предметной области. Это самый многочисленный класс программных продуктов. Непосредственную их эксплуатацию осуществляют, как правило, конечные пользователи - потребители информации, деятельность которых во многих случаях далека от компьютерной области. Наиболее часто используемыми прикладными программами считаются редакторы (текстовые, графические, музыкальные) и электронные таблицы.