Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Аверянов Основы современной информатики 2007

.pdf
Скачиваний:
72
Добавлен:
16.08.2013
Размер:
7.31 Mб
Скачать

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

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

3.Сетевые контроллеры (адаптеры) выполняют функции аппаратуры канала данных (АКД): обеспечение интерфейсных функций, буферизацию, формирование пакетов, параллельно-последова- тельные преобразования, кодирование/декодирование, доступ к кабелю и т.п.

4.В средства объединения сетей входят:

повторители (Repeater) – используются для физического соединения различных сегментов кабеля локальной сети с целью увеличения общей длины сети;

концентраторы (Hub) – применяются для объединения отдельных сегментов сетей в единую разделяемую среду;

коммутаторы (Switch) – могут применяться вместо концентратора для повышения производительности сетей (например, в Ethernet), переключая сообщение на нужный сегмент;

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

маршрутизаторы (Router) – служат для определения оптимального маршрута сообщений между различными узлами сети и сетевыми сегментами;

шлюзы (Gateways) – обеспечивают работу сетей с различными протоколами верхнего уровня.

Возможны устройства, совмещающие несколько функций, на-

пример гибридные маршрутизаторы (brouter) – гибрид моста и обычного маршрутизатора.

Тип ЛВС определяется, главным образом, методами доступа (или протоколами нижнего уровня). На среднем уровне выбор протокола зависит в основном от применяемой операционной системы. Так, в сетях, работающих с ОС UNIX, используется рассмотренный ранее TCP/IP. В популярной, сравнительно недавно, сетевой ОС

161

Novell Net Ware применяются протоколы IPX/SPX, a в NETBIOS,

как правило, – сетевые операционные системы фирмы Microsoft.

IPX (Internetwork Packet Exchange) – протокол межсетевой пе-

редачи пакетов, соответствует транспортному уровню OSI.

SPX (Sequenced Packet Exchange) – протокол последовательного обмена пакетами, соответствует сетевому и сеансовому уровню OSI.

NETBIOS (Network Basic Input/Output System) – протокол сетевой базовой системы ввода-вывода, разработанный фирмой IBM, выпол-

няет функции сетевого, транспортного и сеансового уровня OSI.

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

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

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

КОНТРОЛЬНЫЕ ВОПРОСЫ

1.Назовите четыре типа информации, передаваемой по сетям. Почему за последнее время выросла популярность оптического волокна?

2.Укажите основные принципы, достоинства и недостатки централизованной и распределенной обработки данных.

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

4.Укажите основные методы повышения пропускной способности каналов передачи данных. В чем разница между мультиплексированием и сжатием (компрессией) информации?

5.Что такое протокол в мире коммуникаций? Какова разница между протоколом и интерфейсом? Каковы причины многоуровневого подхода к сетевым протоколам? Укажите различия между протоколами ТСР/IP и эталонной моделью.

162

6.Укажите разницу между аналоговыми и цифровыми данными, сигналами и каналами. Какие типы данных можно передавать по аналоговым и цифровым каналам?

7.Укажите среды, используемые для передачи данных. В чем преимущества и недостатки разновидности сред, используемых глобальными и локальными сетями передачи данных?

8.Назовите методы доступа в локальных и глобальных сетях передачи данных, их достоинства и недостатки. Какова структура канала связи?

163

ГЛАВА 5. ЛИНГВИСТИЧЕСКИЕ СРЕДСТВА КОМПЬЮТЕРОВ

5.1.Основные тенденции

вразвитии языков программирования

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

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

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

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

необходимость повышения эффективности труда программистов, уменьшение уровня абстрагирования – приближение методов программирования к приложениям;

развитие приложений – внедрение компьютеров в самые различные сферы человеческой деятельности;

значительное увеличение ресурсов компьютеров и их производительности;

нарастающее увеличение сложности и размерности задач, решаемых на компьютерах.

164

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

В1945 г. немецкий математик Конрад Цузе изобрел систему записи, которую назвал «Планкалкюль» (что означает программное исчисление), но язык не был реализован, тем не менее, многие развитые в нем идеи нашли отражение в современных языках. История развития традиционных языков высокого уровня, т.е. языков, ориентированных не на коды компьютеров, а на алгоритм решения задачи, представлена на рис. 5.1.

В1949 г. Дж. Мочли, одним из создателей первого универсального компьютера ЭНИАК, был разработан Short code – Ассемблер, реализованный на этой машине.

Несомненно, наибольшее влияние на все последующие языки программирования оказал Фортран (FORTRAN – FOR(mula) TRANS(lator)), разработанный Дж. Бэкусом и его коллегами из фирмы IBM в 1954 – 57 гг. и реализованный на компьютере IBM 704. В те годы язык был встречен скептически, однако разработка эффективного транслятора для самых популярных (по тем временам) в мире компьютеров позволило языку завоевать всеобщее признание у программистов, занимающихся научными расчетами. Приблизительно в то же самое время Грейс Мюррей Хоппер – офицер ВМФ США (из фирмы UNIVAC) разработала более простой язык коммерческих задач Флоу-Матик – прообраз Кобола. Очень важное место среди языков занимает Алгол (ALGO(rythmic)L(anguage)), первая версия которого была разработана в Европе международным комитетом на основе идей, заложенных в Фортране и Планкалкюле. Алгол хотя и не приобрел такой популярности, как Фортран, но оказал очень большое влияние на дальнейшее развитие языков. В начале 60-х годов появился Лисп и была разработана нотация APL.

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

Частичный успех языка РL/1, разработанного фирмой IBM, показал, что всеобъемлющий язык должен быть труден в изучении и

165

1954

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Проект Фортран

 

 

 

 

 

1955

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1956

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FLOW-MATC

 

 

 

 

 

1957

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Фортан

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1958

 

 

 

 

 

 

 

Алгол-58

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1959

 

JOVIAL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кодасил

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

APL

 

1960

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Алгол-60

 

Лисп

 

 

 

 

 

 

 

 

Кобол

 

 

 

 

 

 

 

1661

 

Корал

 

 

 

 

Пересмотренный Алгол-60

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1962

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CPL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1963

 

 

SIMULA I

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SNOBOL

1964

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Корал -64

 

 

 

 

 

Фортран IV

 

 

 

 

 

 

 

 

 

1965

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BASTIC

 

 

 

 

 

 

 

 

 

 

 

 

1966

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Корал-66

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кобол -66

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1967

 

 

SIMULA 67

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PL/1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1668

 

 

 

 

 

Алгол-68

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1969

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BCPL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Паскаль

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1970

 

 

 

 

 

RTL/1

 

 

 

 

 

 

 

 

 

B

 

 

 

 

 

 

 

 

 

1971

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RTL/2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1972

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Си

 

 

 

 

 

 

 

 

 

1973

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Форт

 

 

1974

 

 

 

 

 

 

 

 

 

 

 

 

 

Scheme

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1975

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1976

 

 

 

 

 

 

MODULA 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1977

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Фортран-77

 

 

 

 

 

 

 

 

 

 

PLZ

 

 

 

PL/M

 

 

 

MPL

 

 

 

 

 

1978

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1979

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ада

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1980

Smalltalk 80

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1981

1985г. TURBO PASCAL

 

 

 

 

C++

 

 

 

 

 

 

 

 

 

1982

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

JAVA

Perl

 

 

 

 

 

1983

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ICON

1984

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1985

 

 

 

 

 

 

 

 

 

 

COMMON

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1986

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1987

 

 

 

 

 

 

 

 

 

 

 

 

 

ANSIC

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1988

 

 

 

 

 

 

Oberon

 

 

 

 

 

 

 

 

 

 

 

Quick BASIC

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1989

 

 

MODULA-3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Фортран 90

1990

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Visual BASIC

1991

Eiffel

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1992

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1993

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1994

Аdа 95

 

 

 

 

 

 

 

 

 

 

 

JAVA

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 5.1. История развития языков программирования

166

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

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

вование языка Лисп (LISP – L(ist) I(nformation) S(ymbol) P(rocessing)), а также Визикальк и Мультиплан, получившие распространение на персональных компьютерах.

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

Другая тенденция в развитии языков программирования – рост интереса к системам записи, называемым объектно-ориентирован-

167

ными языками, например Симула 67 (SIMULA – SIMU(lation) LA(nguage)). Кроме этого, появление многопроцессорных систем привело к необходимости разработки языков параллельных вычислений. Примером таких языков могут служить Оккам, Компед (Computer Parallel) и др. Развитие языков тесно связано с развитием технических средств, с появлением новых информационных технологий, совершенствованием программных интерфейсов. Это относится к средствам программирования графических программных оболочек, программирования сетевых приложений, совершенствованию лингвистических возможностей операционных систем и т.п.

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

ганизацией ASNI – American Standard National Institute) проходит примерно 10 лет, поэтому программисты предпочитают старые языки, несмотря на постоянную критику со стороны энтузиастовразработчиков новых языков. Это связано с тем большим заделом программного обеспечения, который существует у традиционных языков, а также новыми их версиями, в которых продолжается дальнейшее совершенствование с учетом критических замечаний (не всегда объективных). Поэтому характерной тенденцией последнего времени в развитии традиционных языков высокого уровня является не столько создание новых языков, сколько включение новых функциональных возможностей в традиционные языки – использование элементов машинной графики, объектная ориентация, создание графических программных интерфейсов средства распараллеливания и т.п. Проблемы параллельного программирования, использования виртуальной памяти в значительной степени решаются не только на уровне прикладного программирования, но также средствами системных программ (операционных систем, трансляторов и т.п.).

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

168

обеспечения информатики. К таким языкам можно отнести: ALGOL (международный комитет), Симула 67 (Кристен Нигаард,

Оле Йохан Дал), Small Talk (Ален Кэй), Modula, Pascal (Object Pascal), Oberton (Никлаус Вирт).

Вцелом, сравнение языков очень сложная задача, поскольку существует 2570 различных возможностей или свойств для сравнения, к которым добавляются 12 характеристик трансляторов. Следовательно, не существует самого лучшего языка программирования, так же как не существует самого лучшего естественного языка. Выбор языка определяется целями применения и индивидуальностью программиста. Как сказал король Карл V [17]: «Я разговариваю по-испански с богом, по-итальянски с женщинами, пофранцузски с мужчинами и по-немецки со своей лошадью».

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

5.2. Классификация и краткая характеристика современных языков программирования

Все языки программирования можно сгруппировать по некоторым признакам в ряд подгрупп (с определенной степенью условности). На рис. 5.2 представлен один из вариантов такого разбиения.

Из рисунка видно, что на сегодняшний день языки можно разделить на две большие подгруппы: машинно-ориентированные и машинно-независимые. К первым относят языки, ориентированные на систему команд конкретного типа ЭВМ, и, естественно, программы, написанные на этих языках, не могут выполняться на машинах с иной системой команд. Их основу составляют машинные языки. Программирование в кодах машины, при котором каждая команда представляется цепочкой из нулей и единиц, а на программиста возлагается задача расположения своей программы в адресах компьютера — сложный утомительный процесс. Программа, загруженная в память, выполняется без всякой предварительной обработки, так как вся работа по переводу алгоритма в программу, готовую к исполнению (исполнимую программу), осуществляется «вручную» человеком.

169

 

ЯЗЫКИ

 

ПРОГРАММИРОВАНИЯ

 

Машинно-ориентированные

Машинно-независимые

Машинные

 

Процедурные

 

Непроцедурные

 

 

Символического кодирования

правление заданиями

 

 

Проблемно-ориентированные

Макросы

Табличные

 

 

Научные задачи

Ассемблеры

 

Экономические

 

СУБД

 

задачи

 

 

Высокого уровня

 

 

 

 

Обработка списков

 

Другие

 

 

 

Графика

 

Объектно-

Другие

 

ориентированные

 

Рис. 5.2. Классификация

 

Универсальные

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

 

 

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

170