Программные средства информационных технологий
Программные средства информационных технологий можно разделить на две большие группы: базовые и прикладные.
Базовые программные средства относятся к инструментальной страте информационных технологий и включают в себя:
· операционные системы (ОС);
· языки программирования;
· программные среды;
· системы управления базами данных (СУБД).
Прикладные программные средства предназначены для решения комплекса задач или отдельных задач в различных предметных областях. Подробно они рассмотрены в гл. 6.
ОС предназначены для управления ресурсами ЭВМ и процессами, использующими эти ресурсы. В настоящее время существуют две основные линии развития ОС: Windows и Unix. Генеалогические линии данных ОС развивались следующим образом:
1. СР/М → QDOS → 86-DOS → MS-DOS → Windows;
2. Multics → UNIX →Minix →Linux.
В свою очередь каждый элемент линии имеет свое развитие, например, Windows развивался в такой последовательности: Windows 95, 98, Me, NT, 2000. Соответственно, Linux развивался следующим образом: версии 0.01, 0.96, 0.99, 1.0, 1.2, 2.0, 2.1, 2.1.10. Каждая версия может отличаться добавлением новых функциональных возможностей ( сетевые средства, ориентация на разные процессоры, многопроцессорные конфигурации и др.).
Большинство алгоритмических языков программирования (Си, Паскаль) созданы на рубеже 60-х и 70-х годов (за исключением Java). За прошедший период времени периодически появлялись новые языки программирования, однако на практике они не получили широкого и продолжительного распространения. Другим направлением в эволюции современных языков программирования были попытки создания универсальных языков (Алгол, PL/1, Ада), объединявших в себе достоинства ранее разработанных.
Появление ПК и ОС с графическим интерфейсом (Mac OS, Windows) привело к смешению внимания разработчиков программного обеспечения в сферу визуального или объектно-ориентированного программирования, сетевых протоколов, баз данных. Это привело к тому, что в настоящее время в качестве инструментальной среды используется конкретная среда программирования (Delphi, Access и др.) и знания базового языка программирования не требуется. Поэтому можно считать, что круг используемых языков программирования стабилизировался.
Анализ синтаксиса и семантики языков программирования показывает, что их родственные конструкции различаются главным образом «внешним видом» (набором ключевых слов или порядком следования компонентов). Содержимое практически идентично, за исключением небольших различий, не имеющих существенного значения. Таким образом, конструкции современных языков имеют общее содержание (семантику), различный порядок следования компонент (синтаксис) и разные ключевые слова (лексику). Следовательно, различные языки предоставляют пользователю одинаковые возможности при различном внешнем виде программ.
Стандартизацию языков программирования в настоящее время осуществляют комитеты ISO/ANSI, однако их деятельность направлена в основном на неоправданное синтаксическое расширение языков. Для исключения существующих недостатков предложены способы задания семантического и синтаксического стандартов языков программирования.
Семантическое описание любой конструкции языка (оператора, типа данных, процедуры и т.д.) должно содержать не менее трех обязательных частей:
· список компонент (в Типе Указателя это компоненты Имя Типа и Базовый Тип);
· описание каждой компоненты;
· описание конструкции в целом.
Для синтаксического описания обычно используется формальное описание конструкции, например, в виде БНФ. Синтаксическое описание присутствует в любом языке, начиная с Алгола.
Среди большого числа языков самую заметную роль в развитии программирования сыграли три пары: Алгол-60 и Фортран, Паскаль и Си, Java и Си++. Эти языки не случайно объединены в пары, так как противостояние заложенных в них идей способствовало прогрессивному развитию.
В табл. 8.1 приведены основные сведения о наиболее распространенных языках, а в табл. 8.2 — о языках специального назначения (экспериментальных и промышленных) [39]. Виды (парадигмы) языков по областям применения:
Таблица 8.1
Язык программирования | Год создания | Вид | Фирма | Стандарт |
Фортран (FORTRAN) | А | IBM | ISO 1539:1997 | |
Лисп (USP) | F | MIT | — | |
Алгол-60 (Algol 60) | А | IFIP | — | |
Кобол (COBOL) | А | COLASYL Commitete | ISO 1989:1985 | |
Симулз (Sumula) | В | — | — | |
Бейсик (BASIC) | А | Darmouth College | ISO 10279:1991 | |
ПЛ/1 (PL/I) | А | IBM | 1806160:1979 | |
Алгол-68 (Algol 68) | А | IFIP | — | |
Паскаль (Pascal) | С | ETH | ISO 7185:1990 | |
Форт (FORTH) | А* | Mohasco Industrie | ISO 15145:1997 | |
Си (С) | С* | AT&T Bell Labs | ISO 9899: 1999 | |
Smalltalk | В | Xerox PARC | — | |
Пролог (Prolog) | Е | Univ. of Aix- Marseille | 15013211:1995 | |
Ада (Ada) | Н* | Cil Honewell | ISO 8652: 1995 | |
Си++ | Н* | AT&T Bell Labs | ISO 14882:1998 | |
Java | Н | Sun Labs | — |
* Поддержка системного программирования.
Таблица 8.2
Язык программирования | Год создания | Вия | Фирма | Стандарт |
АПЛ (APL) | I | Harvard Univ | ISO 8485: 1989 | |
Снобол (Shobol) | I | AT&T Bell Labs | — | |
Сетл (SETL) | I | IBM | — | |
Параллельный Паскаль Concurrent Pascal | G | CIT | — | |
CLU | D | MIT | — | |
Schema | F | MIT | — | |
Mesa | D* | Xerox PARC | — | |
Icon | I | AT&T Bell Labs | — | |
Модула-2 (Modula-2) | D* | ETH | ISO 10514:1996 | |
Оккам (Occam) | G* | Inmos | — | |
Cedar | H* | Xerox PARC | — | |
Common Lisp | F | MIT | — | |
Objective С | H* | Productivity Products | — | |
Эйфель (Eiffel) | D* | ISE | — | |
Оберон (Oberon) | D* | ETH | — | |
Модула-3 (Modula-3) | H' | DEC SRC | — | |
Оберон 2 (Oberon-2)) | D* | ETH | — | |
Limbo | D- | Bell Labs (Lucent) | — | |
Component Pascal | D* | Microsystems | — | |
C# | H* | — |
*См. табл. 8.1.
A — процедурное программирование;
В — объектно-ориентированное программирование;
С — структурное программирование;
D — модульное (компонентное программирование);
Е — логическое (реляционное) программирование;
F — функциональное программирование;
G — параллельное программирование;
Н — гибрид (смесь парадигм B+C+D+G);
I — специализированный язык.
Сокращения, встречающиеся в табл. 8.1 и 8.2: MIT — Massachsetts Institute of Technology; PARC — Palo Alto Research Center; ETH — Swiss Federal Institute of Technology; SRC — Systems Research Center; ISE — Interactive Software Engeneering; ISO — International Standard Organisation; CIT — California Institute of Technology.
Важно различать язык программирования и его реализацию. Сам язык — это система записи, набор правил, определяющих синтаксис и семантику программы. Реализация языка — это программа, которая преобразует запись высокого уровня в последовательность машинных команд. Существуют два способа реализации языка: компиляция (рис. 8.1) и интерпретация (рис. 8.2).
Рис. 8.1. Схема компиляции Рис. 8.2. Схема интерпретации
При компиляции специальная рабочая программа (компилятор) осуществляет перевод рабочей программы в эквивалентную на машинном коде и в дальнейшем ее выполнение совместно с данными. В методе интерпретации специальная программа (интерпретатор) устанавливает соответствие между языком и машинными кодами, применяя команды к данным. В принципе любой язык программирования может быть как интерпретируемым, так и компилируемым, но в большинстве случаев есть свой предпочтительный способ реализации. К сожалению, в настоящее время не существует универсального компилятора, который мог бы работать с любым существующим языком. Это объясняется отсутствием единой семантической базы. Хотя современные языки программирования похожи друг на друга, идентичность их далеко не полная. На рис. 8.3 представлены области пересечения и объединения языков программирования. Таким образом, существует общая семантическая зона, в которую входят конструкции, принадлежащие всем языкам программирования (или большинству из них), и область объединения, содержащая конструкции специфические для данного языка. Поэтому создание универсального компилятора возможно двумя путями:
1. Использование общих конструкций (область пересечения), исключение специфических конструкций языков (область объединения). Это приведет к «обеднению» всех языков программирования.
2. Использование всех имеющихся конструкций (область объединения + область пересечения). Такой подход приведет к значительному расширению семантической базы и использованию дополнительных ресурсов.
Рис. 8.3. Области пересечения и объединения языков программирования
Многие годы идет спор о том, что такое программирование — наука, искусство или производственный процесс. Надо признать, что право на существование имеют все три определения. Однако в связи с появлением информационных технологий на первый план выходит промышленный характер программирования, который соответствует традиционным стадиям жизненного цикла программного продукта:
· анализ требований;
· разработка спецификаций;
· проектирование;
· макетирование;
· написание исходного текста;
· отладка;
· документирование;
· тестирование и сопровождение.
Наряду с этим направлением развивается так называемое исследовательское программирование. Например, предложенное Э. Раймондом самоорганизующееся, анархичное программирование, получившее название «базар». Отличительными чертами его являются отсутствие четкого плана, минимальное управление проектом, большое число сторонних территориально удаленных разработчиков, свободный обмен идеями и кодами.
Программные среды реализуют отдельные задачи и операции информационных технологий. К их числу относятся:
1. Текстовые процессоры: Microsoft Word, Лексикон, Lotus Word Perfect, Corel Word Pro, Sun Star Office Writer и др.;
2. Электронные таблицы: Microsoft Excel, Corel Quattro Pro, Lotus 1-2-3, Sun Star Office Calc и др.;
3. Личные информационные системы: Microsoft Outlook, Lotus Organizer, Lotus Notes, Sun Star Office Schedule и др.;
4. Программы презентационной графики: Microsoft Power Point, Lotus Freelance Graphics, Corel Presentations, Sun Star Office Impress и др.;
5. Браузеры: Microsoft Internet Explorer, Netscape Navigator, Opera и др.;
6. Редакторы WEB-страниц: Microsoft Front Page, Netscape Composer, Macromedia Free Hand и др.;
7. Почтовые клиенты: Microsoft Outlook, Microsoft Outlook Express, Netscape Messenger, The Bat и др.;
8. Редакторы растровой графики: Adobe Photoshop, Corel Photo-Paint и др.;
9. Редакторы векторной графики: Corel Draw, Adobe Illustrator и др.;
10. Настольные издательские системы: Adobe Page Maker, Quark Xpress, Corel Ventura, Microsoft Publisher и др.;
11. Средства разработки: Borland Delphi, Microsoft Visual Basic, Borland C++ Builder, Microsoft Visual C++ и др.
Дата добавления: 2015-04-19; просмотров: 1343;