Средства автоматизированного проектирования и моделирования

· CAD-systems (computer-aided design, автоматизированное проектирование)

· CAM-systems (computer-aided manufacturing, автоматизированное производство)

· CAE-systems (computer-aided engineering, автоматизированное конструирование)

Графическое ПО

· Графические редакторы. // Corel Draw, Adobe Photoshop…

Это обширный класс программ, предназначенных для создания и (или) обработки графических изображений. В данном классе различают следующие категории: растровые редакторы, векторные редакторы и программные средства для создания и обработки трехмерной графики (3D-редакторы).

· OCR (Optical Character Recognition, оптическое распознавание символов) //Fine Reader

· Настольные издательские системы(desktop publishing). Назначение программ этого класса состоит в автоматизации процесса верстки полиграфических изданий. Этот класс программного обеспечения занимает промежуточное положение между текстовыми процессорами и системами автоматизированного проектирования.

6. Научно-исследовательское ПО / Математические пакеты// MathCad, Mathematica, Maple…

Обучающее, игровое ПО

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

Инструментальное ПО

Инструментальное ПО – часть прикладного уровня ПО, предназначенное для создания других видов ПО.

Состав инструментального ПО

1. Трансляторы и компиляторы(translators and compilers)–выполняют преобразование исходного текста в текст, понятный компьютеру. Компиляторы, в отличие от трансляторов, не просто «переводят» исходный код на язык машинных команд, но еще и предварительно «разбирают» текст, лишь после этого создают исполняемый код.

2. Отладчики и трассировщики(debuggers and profilers) – позволяют отследить выполнение программы в пошаговом режиме (debuggers), а также отследить использование ресурсов для оценки оптимальности их использования (profilers)

3. IDE-systems(Integrated Development Environment, интегрированная среда разработки) // Borland Delphi, Borland C++ Builder, Visual C++…

4. RAD-systems(Rapid Application Development, быстрая разработка приложений) // Borland Delphi, Borland C++ Builder

5. CASE-systems(computer-aided software engineering, автоматизированное проектирование и создание программ) – средства автоматизации процесса разработки // Rational Rose…

4. Алгоритмы. Обзор алгоритмических языков

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

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

Алгоритм имеет 5 отличительных особенностей:

1. Конечность (финитивность) - любой алгоритм должен приводить к цели за конечное число шагов (e.g. исключаются бесконечные циклы);

2. Определенность – каждый шаг алгоритма должен быть точно и недвусмысленно определен;

3. Алгоритм имеет некоторое количество входных данных;

4. Алгоритм обязательно имеет от 1 до нескольких выходных данных;

5. Эффективность – все входящие в алгоритм операции можно выполнить точно и за конечный отрезок времени;

Существует 4 основных способа представления алгоритмов:

1. Словесный (вербальный) – является универсальным, но громоздок и неконкретен

2. С помощью блок-схем:

Рис.1 Основные графические представления команд

Приведем пример описания алгоритма при помощи блок-схемы (задача – решить квадратное уравнение):

Рис.2 Пример блок-схемы

К одному из основных недостатков такого метода представления алгоритмов относится громоздкость записи.

3. Запись алгоритма на псевдокоде (существенно уменьшает объем записи):

программа РЕШЕНИЕ

переменные a, b, c, , , D: вещественные числа

начало

ввод a,b,c

если a = 0 тогда СТОП

D := b*b-4*a*c

если D < 0 тогда СТОП

:=

:=

вывод ,

СТОП

К числу недостатков метода следует отнести отсутствие стандартных команд псевдокода (в отличие от метода блок-схем, где действуют нормы ГОСТа)

4. Программирование алгоритмов при помощи алгоритмических языков (обладает достоинствами блок-схем и псевдокодов, по большей части лишен их недостатков)

Языки программирования: история, топология

Языки программирования – искусственные языки, отличающиеся ограниченным числом «слов», значение которых понятно транслятору/ компилятору и строгими правилами записи команд (операторов).

Совокупность подобных требований образует синтаксис языка, а смысл каждой конкретной команды и других конструкций языка – его семантику.

Цели языка программирования:

1. Язык программирования как инструмент проектирования

2. Язык программирования как средство человеческого восприятия

3. Язык программирования как средство управления компьютером

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

· Языки «низкого уровня» (императивные языки) – ориентированны на конкретный тип процессора, их операторы близки к машинному коду и ориентированны на конкретные команды процессора. // язык ассемблера

· Языки «высокого уровня» (декларативные языки) – языки, описывающие ключевые абстракции предметной области. // Pascal, C++,…

Поколения языков программирования

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

I. /1954-1958 гг./ - языки ассемблера, простейшие языки высокого уровня

· принцип «одна строка – одна инструкция»

· впервые появились простейшие операции (+,-, := и т.д.)

· большинство из языков первого поколения «мертвы», но некоторые используются в специфических программных системах и для специфических задач (например, язык FORTRAN)

II. /1959-1961 гг./ - разработаны под конкретные задачи

· FORTRAN II – появляются подпрограммы, раздельная компиляция

· Algol – 60 – типы данных, блочная структура, составной опрератор

· COBOL – язык работы с данными (операции с файлами и т.д.)

· LISP – возможность работы со списками, появление указателей

III. /1962-1970 гг./ - «смешение языков» - появление универсальных языков высокого уровня.

· независимость от конкретного компьютера

· возможность использования мощных синтаксических конструкций

· понятная большинству пользователей структура

· применимость к задачам любой сложности и любой предметной области

· появление первой версии языка Pascal (на основе ALGOL-68), языка С

· появление языка Simula – прародителя всех современных объектно-ориентированных языков (появляется понятие классов и объектов, абстрактных данных)

IV. /1970-80-е гг. / - «потерянное поколение» - появляется огромное количество языков-потомков Simula, большинство из которых «мертвы»

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

· Object Pascal, C++ - результат «смешения» соответствующих языков и Simula, в результате чего в эти языки вошло понятие объектного программирования

V. /1990-е гг./ - системы автоматического создания прикладных программ

· автоматическое формирование результирующего текста на универсальных языках программирования

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

Топология языков /основные элементы программирования и их взаимодействие/

I – нач. II:

· наличие одной общей (глобальной) области данных, к которой обращаются подпрограммы

· отсутствие контроля за типами данных (ошибка типов возникает лишь в момент выполнения)

II – нач. III:

· появляется механизм передачи аргументов

III:

· появляются модули (некоторая группа подпрограмм)

· появление локальных данных модуля (недоступны другим модулям)

· обращение подпрограмм как к данным модуля, так и к области глобальных данных

IV /Объектно-ориентированные языки/:

· появление модулей, состоящих из логически связанных классов и объектов, полей и методов

· отсутствие глобальной области данных

Приложение: обзор языков программирования высокого уровня

FORTRAN (Фортран). Это первый компилируемый язык, созданный Джимом Бэкусом в 50-е годы. Программисты, разрабатывавшие программы исключительно на ассемблере, выражали серьезное сомнение в возможности появления высокопроизводительного языка высокого уровня, поэтому основным критерием при разработке компиляторов Фортрана являлась эффективность исполняемого кода. Хотя в Фортране впервые был реализован ряд важнейших понятий программирования, удобство создания программ было принесено в жертву возможности получения эффективного машинного кода. Однако для этого языка было создано огромное количество библиотек, начиная от статистических комплексов и кончая пакетами управления спутниками, поэтому Фортран продолжает активно использоваться во многих организациях, а сейчас ведутся работы над очередным стандартом Фортрана F2k, который появится в 2000 году. Имеется стандартная версия Фортрана HPF (High Performance Fortran) для параллельных суперкомпьютеров с множеством процессоров.

COBOL (Кобол). Это компилируемый язык для применения в экономической области и решения бизнес-задач, разработанный в начале 60-х годов. Он отличается большой «многословностью» — его операторы иногда выглядят как обычные английские фразы. В Коболе были реализованы очень мощные средства работы с большими объемами данных, хранящимися на различных внешних носителях. На этом языке создано очень много приложений, которые активно эксплуатируются и сегодня. Достаточно сказать, что наибольшую зарплату в США получают программисты на Коболе.

Algol (Алгол). Компилируемый язык, созданный в 1960 году. Он был призван заменить Фортран, но из-за более сложной структуры не получил широкого распространения. В 1968 году была создана версия Алгол 68, по своим возможностям и сегодня опережающая многие языки программирования, однако из-за отсутствия достаточно эффективных компьютеров для нее не удалось своевременно создать хорошие компиляторы.

Pascal (Паскаль). Язык Паскаль, созданный в конце 70-х годов основоположником множества идей современного программирования Никлаусом Виртом, во многом напоминает Алгол, но в нем ужесточен ряд требований к структуре программы и имеются возможности, позволяющие успешно применять его при создании крупных проектов.

Basic (Бейсик). Для этого языка имеются и компиляторы, и интерпретаторы, а по популярности он занимает первое место в мире. Он создавался в 60-х годах в качестве учебного языка и очень прост в изучении.

С (Си). Данный язык был создан в лаборатории Bell и первоначально не рассматривался как массовый. Он планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы и в то же время не зависеть от конкретного типа процессора.

Си во многом похож на Паскаль и имеет дополнительные средства для прямой работы с памятью (указатели). На этом языке в 70-е годы написано множество прикладных и системных программ и ряд известных операционных систем (Unix).

C++ (Си++). Си++ — это объектно-ориентированное расширение языка Си, созданное Бьярном Страуструпом в 1980 году. Множество новых мощных возможностей, позволивших резко повысить производительность программистов, наложилось на унаследованную от языка Си определенную низкоуровневость, в результате чего создание сложных и надежных программ потребовало от разработчиков высокого уровня профессиональной подготовки.

Java (Джава, Ява). Этот язык был создан компанией Sun в начале 90-х годов на основе Си++. Он призван упростить разработку приложений на основе Си++ путем исключения из него всех низкоуровневых возможностей. Но главная особенность этого языка — компиляция не в машинный код, а в платформно-независимый байт-код (каждая команда занимает один байт). Этот байт-код может выполняться с помощью интерпретатора — виртуальной Java-машины JVM(Java Virtual Machine), версии которой созданы сегодня для любых платформ. Благодаря наличию множества Java-машин программы на Java можно переносить не только на уровне исходных текстов, но и на уровне двоичного байт-кода, поэтому по популярности язык Java сегодня занимает второе место в мире после Бейсика.

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

С# (Си Шарп). В конце 90-х годов в компании Microsoft под руководством Андерса Хейльсберга был разработан язык С#. В нем воплотились лучшие идеи Си и Си++, а также достоинства Java. Правда, С#, как и другие технологии Microsoft, ориентирован на платформу Windows. Однако формально он не отличается от прочих универсальных языков, а корпорация даже планирует его стандартизацию. Язык С# предназначен для быстрой разработки .NET-приложений, и его реализация в системе Microsoft Visual Studio .NET содержит множество особенностей, привязывающих С# к внутренней архитектуре Windows и платформы .NET.

Языки программирования для Интернета

С активным развитием глобальной сети было создано немало реализаций популярных языков программирования, адаптированных специально для Интернета Все они отличаются характерными особенностями: языки являются интерпретируемыми, интерпретаторы для них распространяются бесплатно, а сами программы — в исходных текстах. Такие языки называют скрипт-языками.

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

VRML. В 1994 году был создан язык VRML для организации виртуальных трехмерных интерфейсов в Интернете. Он позволяет описывать в текстовом виде различные трехмерные сцены, освещение и тени, текстуры (покрытия объектов), создавать свои миры, путешествовать по ним, «облетать» со всех сторон, вращать в любых направлениях, масштабировать, регулировать освещенность и т. д.

XML. В августе 1996 года WWW-консорциум, ответственный за стандарты на Интернет-технологии, приступил к подготовке универсального языка разметки структуры документов, базировавшегося на достаточно давно созданной в IBM технологии SGML. Новый язык получил название XML. Сегодня он служит основой множества системных, сетевых и прикладных приложений, позволяя представлять в прозрачном для пользователей и программ текстовом виде различные аспекты внутренней структуры иерархически организованных документов. В недалеком будущем он может стать заменой HTML.

Прочие языки программирования

PL/I (ПЛ/1). В середине 60-х годов компания IBM решила взять все лучшее из языков Фортран, Кобол и Алгол. В результате в 1964 году на свет появился новый компилируемый язык программирования, который получил название Programming Language One. В этом языке было реализовано множество уникальных решений, полезность которых удается оценить только спустя 33 года, в эпоху крупных программных систем. По своим возможностям ПЛ/1 значительно мощнее многих других языков (Си, Паскаля). Например, в ПЛ/1 присутствует уникальная возможность указания точности вычислений — ее нет даже у Си++ и Явы. Этот язык и сегодня продолжает поддерживаться компанией IBM.

Smalltalk (Смолток). Работа над этим языком началась в 1970 году в исследовательской лаборатории корпорации XEROX, а закончились спустя 10 лет, воплотившись в окончательном варианте интерпретатора SMALLTALK-80. Данный язык оригинален тем, что его синтаксис очень компактен и базируется исключительно на понятии объекта. В этом языке отсутствуют операторы или данные. Все, что входит в Смолток, является объектами, а сами объекты общаются друг с другом исключительно с помощью сообщений (например, появление выражения 1+1 вызывает посылку объекту I сообщения «+», то есть «прибавить», с параметром 1, который считается не числом-константой, а тоже объектом). Больше никаких управляющих структур, за исключением «оператора» ветвления (на самом деле функции, принадлежащей стандартному объекту), в языке нет, хотя их можно очень просто смоделировать. Сегодня версия Visual Age for Smalltalk активно развивается компанией IBM.

LISP (Лисп). Интерпретируемый язык программирования, созданный в 1960 году Джоном Маккарти. Ориентирован на структуру данных в форме списка и позволяет организовывать эффективную обработку больших объемов текстовой информации.

Prolog (Пролог). Создан в начале 70-х годов Аланом Колмероэ. Программа на этом языке, в основу которого положена математическая модель теории исчисления предикатов, строится из последовательности фактов и правил, а затем формулируется утверждение, которое Пролог будет пытаться доказать с помощью введенных правил. Человек только описывает структуру задачи, а внутренний «мотор» Пролога сам ищет решение с помощью методов поиска и сопоставления.

Ada (Ада). Назван по имени леди Огасты Ады Байрон, дочери английского поэта Байрона и его отдаленной родственницы Анабеллы Милбэнк. В 1980 году сотни экспертов Министерства обороны США отобрали из 17 вариантов именно этот язык, разработанный небольшой группой под руководством Жана Ишбиа. Он удовлетворил на то время все требования Пентагона, а к сегодняшнему дню в его развитие вложены десятки миллиардов долларов. Структура самого языка похожа на Паскаль. В нем имеются средства строгого разграничения доступа к различным уровням спецификаций, доведена до предела мощность управляющих конструкций.

Forth (Форт). Результат попытки Чарльза Мура в 70-х годах создать язык, обладающий мощными средствами программирования, который можно эффективно реализованным на компьютерах с небольшими объемами памяти, а компилятор мог бы выдавать очень быстрый и компактный код, то есть служил заменой ассемблеру. Однако сложности восприятия программного текста, записанного в непривычной форме, сильно затрудняли поиск ошибок, и с появлением Си язык Форт оказался забытым.

5. История развития средств вычислительной техники

Вычислительная система, компьютер

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

Компьютер — это электронной прибор, предназначенный для автоматизации создания, хранения, обработки и транспортировки данных.

Принцип действия компьютера

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

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

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

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

Механические первоисточники

Первое в мире автоматическое устройство для выполнения операции сложения было создано на базе механических часов. В 1623 году его разработал Вильгельм Шикард, профессор кафедры восточных языков в университете Тюбингена (Германия). В наши дни рабочая модель устройства была воспроизведена по чертежам и подтвердила свою работоспособность. Сам изобретатель в письмах называл машину «суммирующими часами».

В 1642 году французский механик Блез Паскаль (1623-1662) разработал более компактное суммирующее устройство, которое стало первым в мире механическим калькулятором, выпускавшимся серийно (главным образом для нужд парижских ростовщиков и менял). В 1673 году немецкий математик и философ Г. В. Лейбниц(1646-1717) создал механический калькулятор, который мог выполнять операции умножения и деления путем многократного повторения операций сложения и вычитания.

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

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

Этот шаг был сделан выдающимся английским математиком и изобретателем Чарльзом Бэббиджем (1792-1871) в его Аналитической машине, которая, к сожалению, так и не была до конца построена изобретателем при жизни, но была воспроизведена в наши дни по его чертежам, так что сегодня мы вправе говорить об Аналитической машине, как о реально существующем устройстве. Особенностью Аналитической машины стало то, что здесь впервые был реализован принцип разделения информации на команды и данные. Аналитическая машина содержала два крупных узла — «склад» и «мельницу». Данные вводились в механическую память «склада» путем установки блоков шестерен, а потом обрабатывались в «мельнице» с использованием команд, которые вводились с перфорированных карт (как в ткацком станке Жаккарда)

Идея Чарльза Бэббиджа о раздельном рассмотрении команд и данных оказалась необычайно плодотворной. В XX в. она была развита в принципах Джона фон Неймана (1941 г.), и сегодня в вычислительной технике принцип раздельного рассмотрения программ и данных имеет очень важное значение. Он учитывается и при разработке архитектур современных компьютеров, и при разработке компьютерных программ.

Математические первоисточники

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

Двоичная система Лейбница. В механических устройствах зубчатые колеса могут иметь достаточно много фиксированных и, главное, различимых между собой положений. Количество таких положений, по крайней мере, равно числу зубьев шестерни. В электрических и электронных устройствах речь идет не о регистрации положений элементов конструкции, а о регистрации состояний элементов устройства. Таких устойчивых и различимых состояний всего два: включен — выключен; открыт — закрыт; заряжен — разряжен и т. п. Поэтому традиционная десятичная система, использованная в механических калькуляторах, неудобна для электронных вычислительных устройств.

Возможность представления любых чисел (да и не только чисел) двоичными цифрами впервые была предложена Готфридом Вильгельмом Лейбницем в 1666 году. Он пришел к двоичной системе счисления, занимаясь исследованиями философской концепции единства и борьбы противоположностей. Попытка представить мироздание в виде непрерывного взаимодействия двух начал («черного» и «белого», мужского и женского, добра и зла) и применить к его изучению методы «чистой» математики подтолкнули Лейбница к изучению свойств двоичного представления данных с помощью нулей и единиц. Надо сказать, что Лейбницу уже тогда приходила в голову мысль о возможности использования двоичной системы в вычислительном устройстве, но, поскольку для механических устройств в этом не было никакой необходимости, он не стал использовать в своем калькуляторе (1673 году) принципы двоичной системы.

Математическая логика Джорджа Буля. Говоря о творчестве Джорджа Буля, исследователи истории вычислительной техники непременно подчеркивают, что этот выдающийся английский ученый первой половины XIX века был самоучкой. Возможно, именно благодаря отсутствию «классического» (в понимании того времени) образования Джордж Буль внес в логику как в науку революционные изменения.

Занимаясь исследованием законов мышления, он применил в логике систему формальных обозначений и правил, близкую к математической. Впоследствии эту систему назвали логической алгеброй или булевой алгеброй. Правила этой системы применимы к самым разнообразным объектам и их группам (множествам, по терминологии автора). Основное назначение системы, по замыслу Дж. Буля, состояло в том, чтобы кодировать логические высказывания и сводить структуры логических умозаключений к простым выражениям, близким по форме к математическим формулам. Результатом формального расчета логического выражения является одно из двух логических значений: истина или ложь.

Значение логической алгебры долгое время игнорировалось, поскольку ее приемы и методы не содержали практической пользы для науки и техники того времени. Однако, когда появилась принципиальная возможность создания средств вычислительной техники на электронной базе, операции, введенные Булем, оказались весьма полезны. Они изначально ориентированы на работу только с двумя сущностями: истина и ложь. Нетрудно понять, как они пригодились для работы с двоичным кодом, который в современных компьютерах тоже представляется всего двумя сигналами: ноль и единица.

Не вся система Джорджа Буля (как и не все предложенные им логические операции) были использованы при создании электронных вычислительных машин, но четыре основные операции: И (пересечение), ИЛИ (объединение), НЕ (обращение) и ИСКЛЮЧАЮЩЕЕ ИЛИ — лежат в основе работы всех видов процессоров современных компьютеров.

Методы классификации компьютеров

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

Классификация по назначению

Классификация по назначению — один из наиболее ранних методов классификации. Он связан с тем, как компьютер применяется. По этому принципу различают большие ЭВМ (электронно-вычислительные машины), мини-ЭВМ, микро-ЭВМ и персональные компьютеры, которые, в свою очередь, подразделяют на массовые, деловые, портативные, развлекательные и рабочие станции.

Большие ЭВМ. Это самые мощные компьютеры. Их применяют для обслуживания очень крупных организаций и даже целых отраслей народного хозяйства. За рубежом компьютеры этого класса называют мэйнфреймами (mainframe). В России за ними закрепился термин большие ЭВМ. Штат обслуживания большой ЭВМ достигает многих десятков человек. На базе таких суперкомпьютеров создают вычислительные центры, включающие в себя несколько отделов или групп.

Рис. 2. Структура современного вычислительного центра на базе большой ЭВМ

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

Группа системного программирования занимается разработкой, отладкой и внедрением программного обеспечения, необходимого для функционирования самой вычислительной системы. Работников этой группы называют системными программистами. Они должны хорошо знать техническое устройство всех компонентов ЭВМ, поскольку их программы предназначены в первую очередь для управления физическими устройствами. Системные программы обеспечивают взаимодействие программ более высокого уровня с оборудованием, то есть группа системного программирования обеспечивает программно-аппаратный интерфейс вычислительной системы.

Группа прикладного программирования занимается созданием программ для выполнения конкретных операций с данными. Работников этой группы называют прикладными программистами. В отличие от системных программистов им не надо знать техническое устройство компонентов ЭВМ, поскольку их программы работают не с устройствами, а с программами, подготовленными системными программистами. С другой стороны, с их программами работают пользователи, то есть конкретные исполнители работ. Поэтому можно говорить о том, что группа прикладного программирования обеспечивает пользовательский интерфейс вычислительной системы.

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

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

Группа информационного обеспечения обеспечивает технической информацией все прочие подразделения вычислительного центра по их заказу. Эта же группа создает и хранит архивы ранее разработанных программ и накопленных данных. Такие архивы называют библиотеками программ или банками данных.

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

Большие ЭВМ отличаются высокой стоимостью оборудования и обслуживания, поэтому работа таких суперкомпьютеров организована по непрерывному циклу. Наиболее трудоемкие и продолжительные вычисления планируют на ночные часы, когда количество обслуживающего персонала минимально. В дневное время ЭВМ исполняет менее трудоемкие, но более многочисленные задачи. При этом для повышения эффективности компьютер работает одновременно с несколькими задачами и, соответственно, с несколькими пользователями. Он поочередно переключается с одной задачи на другую и делает это настолько быстро и часто, что у каждого пользователя создается впечатление, будто компьютер работает только с ним. Такое распределение ресурсов вычислительной системы носит название принципа разделения времени.

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

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

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

Персональные компьютеры (ПК). Эта категория компьютеров получила особо бурное развитие в течение последних двадцати лет. Из названия видно, что такой компьютер предназначен для обслуживания одного рабочего места. Как правило, с персональным компьютером работает один человек. Несмотря на свои небольшие размеры и относительно невысокую стоимость, современные персональные компьютеры обладают немалой производительностью. Многие современные персональные модели превосходят большие ЭВМ 70-х годов, мини-ЭВМ 80-х годов и микро-ЭВМ первой половины 90-х годов. Персональный компьютер (Personal Computer, PC) вполне способен удовлетворить большинство потребностей малых предприятий и отдельных лиц.

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

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

С 1999 по 2002 год в области персональных компьютеров действовали международные сертификационные стандарты — спецификации РС99-РС2002. Они регламентировали принципы классификации персональных компьютеров и оговаривали минимальные и рекомендуемые требования к каждой из категорий. Стандарты устанавливали следующие категории персональных компьютеров:

• Consumer PC (массовый ПК);

• Office PC (деловой ПК);

• Mobile PC (портативный ПК);

• Workstation PC (рабочая станция);

• Entertainmemt PC (развлекательный ПК).

Другие виды классификации компьютеров

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

Специализированные компьютеры предназначены для решения конкретного круга задач. К таким компьютерам относятся, например, бортовые компьютеры автомобилей, судов, самолетов, космических аппаратов. Бортовые компьютеры управляют средствами ориентации и навигации, осуществляют контроль состояния бортовых систем, выполняют некоторые функции автоматического управления и связи, а также большинство функций по оптимизации параметров работы систем объекта (например, оптимизацию расхода топлива в зависимости от конкретных условий движения объекта). Специализированные мини-ЭВМ, ориентированные на работу с графикой, называют графическими станциями. Их используют при подготовке кино и видеофильмов, а также рекламной продукции. Специализированные компьютеры, объединяющие компьютеры предприятия в одну сеть, называют файловыми серверами. Компьютеры, обеспечивающие передачу информации между различными участниками всемирной компьютерной сети, называют сетевыми серверами.

Классификация по типоразмерам. Персональные компьютеры можно классифицировать по типоразмерам. Так, различают настольные (desktop), портативные (notebook) и карманные (palmtop) модели.

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

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

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

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

Аппаратная совместимость. По аппаратной совместимости различают так называемые аппаратные платформы. В области персональных компьютеров сегодня наиболее широко распространены две аппаратные платформы — IBM PC и Apple Macintosh. Кроме них существуют и другие платформы, распространенность которых ограничивается отдельными регионами или отдельными отраслями. Принадлежность компьютеров к одной аппаратной платформе повышает совместимость между ними, а принадлежность к разным платформам — понижает.

Кроме аппаратной совместимости существуют и другие виды совместимости: совместимость на уровне операционной системы, программная совместимость, совместимость на уровне данных.

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

Поколения ЭВМ (краткий список)

Поколение Годы Быстродействие, оп./сек. Основные элементы структуры Количество выпущенных ЭВМ (год)
I 1953-54 электронные лампы ок. 5 тыс. (1960)
II 1958-60 транзисторы ок. 30 тыс. (1965)
III 1965-66 интегральные схемы (ИС) ок. 300 тыс. (1975)
IV 1976-79 большие ИС ( элементов) ок. 1,2 млн. (1980)
V 1990-92 сверхбольшие ИС ( транзисторов) более 150 млн. (1990)

Краткий перечень фактов, касающихся истории ЭВМ:

1945 г. – появление первой ЭВМ (ENIAC)

1945 г. – изобретение транзистора

сер. 1940-х гг. – Дж. фон Нейман формулирует принципы организации ЭВМ (типичная архитектура ЭВМ)

1949 г. – построена первая ЭВМ, основанная на принципах фон Неймана (EDSAC)

1951 г. – появление первой советской ЭВМ (проект Лебедева)

1958 г. – произведена первая интегральная микросхема

1971 г. – фирма Intel впервые собрала процессор на одном полупроводниковом кристалле

1976 г. – появление первого персонального компьютера (Apple 1 PC)

1981 г. - появление персонального компьютера IBM PC

Архитектура ЭВМ

Наши рекомендации