Программирование алгоритмические языки операционные системы какое поколение
Перейти к содержимому

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

  • автор:

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

Начало 1950-х годов — язык первых компьютеров. Первый язык ассемблера, созданный по принципу «одна инструкция — одна строка».

Основная отличительная особенность: ориентирование на конкретный компьютер.

Второе поколение

Конец 1950-х — начало 1960-х г.г. Разработан символьный ассемблер, в котором появилось понятие переменной. Это первая полноценная язык.

Основная отличительная особенность: ориентирование на абстрактный компьютер с такой же системой команд.

Третье поколение

1960-е г.г. — Языки программирования высокого уровня. Их характеристики:

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

Простота языка позволяет писать небольшие программы и людям, которые не являются профессиональными программистами. Основная отличительная особенность языка третьего поколения: ориентирование на алгоритм (алгоритмические языки). Примеры: Си, Паскаль, Джава, Бейсик, и многие другие. Всего в мире существует около 200 популярных языков программирования третьего уровня. Четвертое поколение Начало 1970-х г.г. до сегодняшнего времени. Создаются языки, предназначенные для реализации крупных проектов. Проблемно-ориентированные языки, оперирующие конкретными понятиями узкой области. Как правило, в такие языки встраивают мощные операторы, позволяющие одной строкой описывать функции, для описания которых языках младших поколений потребовалось бы сотни или даже тысячи строк исходного кода. Часто относят: SQL, SGML ( HTML, XML ), Prolog, и многие другие узкоспециализированных декларативных языков. Правда ряд языков, которые относят к четвертому поколению, не являются языками программирования как таковыми. Например SQL является языком запросов к базам данных, HTML является языком разметки гипертекста, а не полноценными языками программирования, скорее они выступают своеобразными специализированными дополнениями к языкам программирования. Тоже самое касается XML. Основная отличительная особенность языка четвертого поколения: приближение к человеческой речи (декларативные языки). Некоторые языки имеют черты одновременно и третьего и четвертого поколений. Пятое поколение Пятого поколения языков программирования пока несуществует. Производители пропроиетарних программных продуктов часто пытаются приписать своим продуктам какие маркетинговые особенности, и порой указывают что их продукт — это «язык пятого поколения». В действительности, все эти продукты — это просто среды для ускоренного создания продуктов (Rapid Application Development — RAD), и используют языки третьего и четвертого поколений. Речь пятого поколения вытеснит ли существенно потеснит языка третьего (напр. Java) и четвертого поколения (например SQL) за счет значительно увеличенной производительности труда программиста — в 10-1000 раз. По прогнозам, 5GL будет оперировать мета-мета-данными. Сейчас существует единственный язык, который работает с мета-мета-данными, — это язык команд менеджеров пакетов или менеджеров зависимостей, таких как apt, yum, smart, maven, cpan и другие. Они оперируют над метаданными о метаданных о данных в пакетах. Использование apt-get, yum и smart действительно чрезвычайно повысило производительность системных администраторов — примерно в 1000-и дело. Использование менеджеров зависимостей, таких как maven, cpan, rakudo, pim, easy_install, действительно значительно повысило производительность программистов, примерно в 10-ть раз. К сожалению, эти языки являются языками командной строки и не являются языками программирования. 38. Система программирования — это система для разработки новых программ на конкретном языке программирования. Составные систем программирования: • компилятор или интерпретатор; • интегрированная среда разработки; • средства создания и редактирования текстов программ; • обширные библиотеки стандартных программ и функций; • отладочные программы, т.е. программы, помогающие находить и устранять ошибки в программе; • «дружественная» к пользователю диалоговая среда; • многооконный режим работы; • мощные графические библиотеки; утилиты для работы с библиотеками • встроенный ассемблер; • встроенная справочная служба; • другие специфические особенности. Turbo Basic, Quick Basic, Turbo Pascal, Turbo C, системы программирования, ориентированные на создание Windows-приложений: • пакет Borland Delphi (Дельфи) — предоставляющий качественные и очень удобные средства визуальной разработки. • пакет Microsoft Visual Basic — удобный и популярный инструмент для создания Windows-программ с использованием визуальных средств. Содержит инструментарий для создания диаграмм и презентаций. • пакет Borland C++ — одно из самых распространённых средств для разработки DOS и Windows приложений. Транслятор — это программа-переводчик, преобразует программу, написанную на одном из языков высокого уровня, в программу, состоящую из машинных команд. Трансляторы реализуются в виде компиляторов или интерпретаторов. С точки зрения выполнения работы компилятор и интерпретатор существенно различаются. Компилятор — читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется. Интерпретатор — переводит и выполняет программу строка за строкой. Откомпилированные программы работают быстрее, но интерпретируемые проще исправлять и изменять. Каждый конкретный язык ориентирован либо на компиляцию, либо на интерпретацию — в зависимости от того, для каких целей он создавался. 39. Компьютерные сети передачи данных являются результатом информационной революции и в будущем смогут образовать основное средство коммуникации. Всемирная тенденция к объединению компьютеров в сети обусловлена рядом важных причин, таких, как ускорение передачи информационных сообщений, возможность быстрого обмена информацией между пользователями, получение и передача сообщений (факсов, E-mail писем, электронных конференций и т.д.) не отходя от рабочего места, возможность мгновенного получения любой информации из любой точки земного шара, а также обмен информацией между компьютерами разных фирм производителей, работающих под разным программным обеспечением. Под линией связи обычно понимают совокупность технических устройств, и физической среды, обеспечивающих передачу сигналов от передатчика к приемнику. В реальной жизни примерами линий связи могут служить участки кабеля и усилители, обеспечивающие передачу сигналов между коммутаторами телефонной сети. На основе линий связи строятся каналы связи. Каналом связи обычно называют систему технических устройств и линий связи, обеспечивающую передачу информации между абонентами. Соотношение между понятиями «канал» и «линия» описывается следующим образом: канал связи может включать в себя несколько разнородных линий связи, а одна линия связи может использоваться несколькими каналами Главной целью объединения компьютеров в сеть является предоставление пользователям возможности доступа к различным информационным ресурсам (например, документам, программам, базам данных и т.д.), распределенным по этим компьютерам и их совместного использования. Важной характеристикой любой компьютерной сети является широта территории, которую она охватывает. Широта охвата определятся взаимной удаленностью компьютеров, составляющих сеть и, следовательно, влияет на технологические решения, выбираемые при построении сети. Классически выделяют два типа сетей: локальные сети и глобальные сети. К локальным сетям (Local Area Network, LAN) обычно относят сети, компьютеры которых сосредоточены на относительно небольших территориях (как правило, в радиусе до 1-2 км). Классическим примером локальных сетей является сеть одного предприятия, расположенного в одном или нескольких стоящих рядом зданиях. Небольшой размер локальных сетей позволяет использовать для их построения достаточно дорогие и высококачественные технологии, что обеспечивает высокую скорость обмена информацией между компьютерами. Глобальные сети (Wide Area Network, WAN) – это сети, предназначенные для объединения отдельных компьютеров и локальных сетей, расположенных на значительном удалении (сотни и тысячи километров) друг от друга. Поскольку организация специализированных высококачественных каналов связи большой протяженности является достаточно дорогой, то в глобальных сетях нередко используются уже существующие и изначально не предназначенные для построения компьютерных сетей линии (например, телефонные или телеграфные). В связи с этим скорость передачи данных в таких сетях существенно ниже, чем в локальных. Не так давно к двум указанным типам сетей добавился еще один – так называемые городские сети (Metropolitan Area Network, MAN). Такие сети предназначены для обеспечения взаимодействия компьютеров и/или локальных сетей, рассредоточенных на территории крупного города (как правило, в радиусе до 100 км), а также для подключения локальных сетей к глобальным. Для построения таких сетей используются достаточно качественные цифровые линии связи, позволяющие осуществлять взаимодействие на относительно высоких по сравнению с глобальными сетями скоростях. Независимо от того, какую территорию покрывает сеть, какие технологические решения лежат в основе ее организации, существуют общие принципы сетевого взаимодействия, которым должно подчиняться функционирование сети. Именно выработка таких общих принципов способствовала в свое время появлению Интернет (Internet) как объединенной сети (иногда даже используется термин «гиперсеть»), собравшей в своем составе локальные, городские и глобальные сети всей планеты. 40. Все компьютерные сети делятся на три большие категории, на каждую из которых есть соответствующие ограничения в монтаже и содержании таких сетей.

  • LAN (Local Area Network) — локальная вычислительная сеть, самый распространенный тип вычислительных сетей, встречается в жилых домах, в конторах, в игротеках в офисах мелких и крупных компаний и т. д.. Отличается от всех последующих простотой создания и администрирования, то есть мелкому офису при небольшом торговом центре не обязательно нанимать на работу системного администратора чтобы он следил за локальной сеткой и в случае неисправности начинал ее исправлять, это лишнее. Тем более что если куплено хорошее оборудование, то сеть будет работать устойчиво. Существует так же одна небольшая подгруппа LAN — HAN (Home Area Network), домашняя вычислительная сеть. Так изредка называют домашние компьютерные сети. Данный термин применим к сетям, созданным между домашними компьютерами. LAN по определению больше походит как обобщающий термин: компьютерные сети офисов и домов. Принципиально между LAN и HAN нет совершенно никакой разницы.
  • MAN (Metropolitan Area Network) — это городская вычислительная сеть. Состоит из провайдеров — поставщиков сети и обычных пользователей — клиентов, которые используют какую-либо линию связи для соединения с остальными членами сети. Такие сети, на данный момент, у нас встречаются довольно редко. Зарубежом создание таких сетей уже давно и плодотворно практикуется.
  • WAN (Wide Area Network) — это глобальная (мировая, региональная) вычислительная сеть, соединяющая провайдеров из разных городов мира в одну единую вычислительную сеть, или все LAN и MAN соединены в единое целое. Иными словами, WAN — это по сути тот же Интернет, но о нем немного позже.

Локальная вычислительная сеть (ЛВС) — небольшая группа компьютеров, связанных друг с другом и расположенных обычно в пределах одно­го здания или организации. Региональная сеть — сеть, соединяющая мно­жество локальных сетей в рамках одного района, города или региона. Глобальная сеть — сеть, объединяющая компью­теры разных городов, регионов и государств. Объединение глобальных, региональных и локальных вычислительных сетей позволяет создавать многоуровневые иерархии, которые предоставляют мощные средства для обработки огромных массивов данных и доступ к практически неограниченным информационным ресурсам. Локальные вычислительные сети (ЛВС) могут входить в качестве компонентов в состав региональной сети; региональные сети — объединяться в составе глобальной сети; наконец, глобальные сети могут образовывать еще более крупные структуры. Самым большим объединением компьютерных сетей в масштабах планеты Земля на сегодня является «сеть сетей» — Интернет. Интересным примером связи локальных и глобальных сетей является виртуальная частная сеть (VirtualPrivateNetwork,VPN). Так называется сеть организации, получающаяся в результате объединения двух или нескольких территориально разделенных ЛВС с помощью общедоступных каналов глобальных сетей, например, через Интернет. По типу среды передачи сети делятся на проводные и беспроводные. По скорости передачи информации сети можно разделить на низко-, средне- и высокоскоростные. Распределения ролей между компьютерами сети бывают одноранговые и клиент-серверные. Сервер — специально выделенный высокопро­изводительный компьютер, оснащенный соответ­ствующим программным обеспечением, централи­зованно управляющий работой сети и/или предо­ставляющий другим компьютерам сети свои ресурсы (файлы данных, накопители, принтер и т. д.). Клиентский компьютер (клиент, рабочая стан­ция) — компьютер рядового пользователя сети, по­лучающий доступ к ресурсам сервера (серверов). 41.Модель взаимодействия открытых систем. В начале 80-х годов ряд международных организаций по стандартизации — ISO, ITU-T и некоторые другие — разработали модель, которая сыграла значительную роль в развитии сетей. Эта модель называется моделью взаимодействия открытых систем (Open System Interconnection, OSI) или моделью OSI. Модель OSI определяет различные уровни взаимодействия систем, дает им стандартные имена и указывает, какие функции должен выполнять каждый уровень. Модель OSI была разработана на основании большого опыта, полученного при создании компьютерных сетей, в основном глобальных, в 70-е годы. Полное описание этой модели занимает более 1000 страниц текста. В модели OSI (рис. 1.25) средства взаимодействия делятся на семь уровней: прикладной, представительный, сеансовый, транспортный, сетевой, канальный и физический. Каждый уровень имеет дело с одним определенным аспектом взаимодействия сетевых устройств. Рис. 1.25. Модель взаимодействия открытых систем ISO/OSI Модель OSI описывает только системные средства взаимодействия, реализуемые операционной системой, системными утилитами, системными аппаратными средствами. Модель не включает средства взаимодействия приложений конечных пользователей. Свои собственные протоколы взаимодействия приложения реализуют, обращаясь к системным средствам. Поэтому необходимо различать уровень взаимодействия приложений и прикладной уровень. 42.Стеки Важнейшим направлением стандартизации в области вычислительных сетей является стандартизация коммуникационных протоколов. В настоящее время в сетях используется большое количество стеков коммуникационных протоколов. Наиболее популярными являются стеки: TCP/IP, IPX/SPX, NetBIOS/SMB, DECnet, SNA и OSI. Все эти стеки, кроме SNA на нижних уровнях — физическом и канальном, — используют одни и те же хорошо стандартизованные протоколы Ethernet, Token Ring, FDDI и некоторые другие, которые позволяют использовать во всех сетях одну и ту же аппаратуру. Зато на верхних уровнях все стеки работают по своим собственным протоколам. Эти протоколы часто не соответствуют рекомендуемому моделью OSI разбиению на уровни. В частности, функции сеансового и представительного уровня, как правило, объединены с прикладным уровнем. Такое несоответствие связано с тем, что модель OSI появилась как результат обобщения уже существующих и реально используемых стеков, а не наоборот. Компьютерные сети, как правило, состоят из различного оборудования разных производителей, и без принятия всеми производителями общепринятых правил построения ПК и сетевого оборудования, обеспечить нормальное функционирование сетей было бы невозможно. То есть для обеспечения нормального взаимодействия этого оборудования в сетях необходим единый унифицированный стандарт, который определял бы алгоритм передачи информации в сетях. В современных вычислительных сетях роль такого стандарта выполняют сетевые протоколы. В связи с тем, что описать единым протоколом взаимодействия между устройствами в сети не представляется возможным, то необходимо разделить процесс сетевого взаимодействия на ряд концептуальных уровней (модулей) и определить функции для каждого модуля и порядок их взаимодействия, применив метод декомпозиции. Используется многоуровневый подход метода декомпозиции, в соответствии с которым множество модулей решающих частные задачи упорядочивают по уровням образующим иерархию, процесс сетевого взаимодействия можем представить в виде иерархически организованного множества модулей.

Персональный компьютер и ПО для него

Можно выделить 5 основных поколений ЭВМ. Но деление компьютерной техники на поколения — весьма условная.

I поколение ЭВМ: ЭВМ, сконструированные в 1946-1955 гг.
1. Элементная база: электронно-вакуумные лампы.
2. Соединение элементов: навесной монтаж проводами.
3. Габариты: ЭВМ выполнена в виде громадных шкафов.

Эти компьютеры были огромными, неудобными и слишком дорогими машинами, которые могли приобрести крупные корпорации и правительства.

Лампы потребляли большое количество электроэнергии и выделяли много тепла.
4. Быстродействие: 10−20 тыс. операций в секунду.
5. Эксплуатация: сложная из-за частого выхода из строя электронно-вакуумных ламп.

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

7. Оперативная память: до 2 Кбайт.
8. Данные вводились и выводились с помощью перфокарт, перфолент.

II поколение ЭВМ: ЭВМ, сконструированные в 1955-1965 гг.
1. Элементная база: полупроводниковые элементы (транзисторы, диоды).
2. Соединение элементов: печатные платы и навесной монтаж.

3. Габариты: ЭВМ выполнена в виде однотипных стоек, чуть выше человеческого роста, но для размещения требовался специальный машинный зал.

4. Быстродействие: 100−500 тыс. операций в секунду.

5. Эксплуатация: вычислительные центры со специальным штатом обслуживающего персонала, появилась новая специальность — оператор ЭВМ.

6. Программирование: на алгоритмических языках, появление первых операционных систем.
7. Оперативная память: 2−32 Кбайт.
8. Введён принцип разделения времени — совмещение во времени работы разных устройств.
9. Недостаток: несовместимость программного обеспечения.

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

III поколение ЭВМ: ЭВМ, сконструированные в 1965-1975 гг.
1. Элементная база: интегральные схемы.
2. Соединение элементов: печатные платы.
3. Габариты: ЭВМ выполнена в виде однотипных стоек.
4. Быстродействие: 1−10 млн. операций в секунду.

5. Эксплуатация: вычислительные центры, дисплейные классы, новая специальность — системный программист.

6. Программирование: алгоритмические языки, операционные системы.
7. Оперативная память: 64 Кбайт.

IV поколение ЭВМ: ЭВМ, сконструированные начиная с 1975 г. по начало 90-х годов
1. Элементная база: большие интегральные схемы (БИС).
2. Соединение элементов: печатные платы.
3. Габариты: компактные ЭВМ, ноутбуки.
4. Быстродействие: 10−100 млн. операций в секунду.
5. Эксплуатация: многопроцессорные и многомашинные комплексы, любые пользователи ЭВМ.
6. Программирование: базы и банки данных.
7. Оперативная память: 2−5 Мбайт.
8. Телекоммуникационная обработка данных, объединение в компьютерные сети.

V поколение ЭВМ: разработки с 90-х годов ХХ века

Элементной базой являются сверхбольшие интегральные схемы (СБИС) с использованием оптоэлектронных принципов (лазеры, голография).

Автор: Анонимный на 02:39

5 комментариев:

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

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

Артём, здравствуйте! После прочтения статьи моя копилка пополнилась знаниями о поколениях ЭВМ, которые существовали в разные периоды. Спасибо вам за ваши старания! Ответить Удалить

ВСЕ ПРОЧИТАЙТЕ НАСТОЯЩЕЕ ОТЗЫВ О том, КАК Я ПОЛУЧИЛ СВОЙ КРЕДИТ ОТ КОМПАНИИ LEGIT И ДОВЕРЕННОЙ КРЕДИТНОЙ СРЕДИ Меня зовут Kjerstin Lis, я искал кредит для погашения своих долгов, все, кого я встречал, мошенничали и брали свои деньги, пока я наконец не встретил мистера Бенджамина Брейл Ли Он смог дать мне кредит в размере 450 000 рублей. Он также помог другим моим коллегам. Я говорю как самый счастливый человек во всем мире сегодня, и я сказал себе, что любой кредитор, который спасает мою семью от нашей бедной ситуации, я скажу имя всему миру, и я так счастлив сказать, что моя семья вернулся навсегда, потому что я нуждался в кредите, чтобы начать свою жизнь заново, потому что я одинокая мама с 3 детьми, и весь мир, казалось, висел на мне, пока я не имел в виду, что БОГ послал ссудодателя, который изменил мою жизнь и член моей семьи, БОЖИЙ кредитор, мистер Бенджамин, он был Спасителем БОГом, посланным для спасения моей семьи, и сначала я подумал, что это будет невозможно, пока я не получу кредит, я пригласил его к себе в семью -все вечеринка, от которой он не отказался, и я посоветую всем, кто действительно нуждается в кредите, связаться с г-ном Бенджамином Брейлом Ли по электронной почте (lfdsloans@outlook.com), потому что он самый понимающий и добрый кредитор. когда-либо встречал с заботливым сердцем. Он не знает, что я делаю это, распространяя свою добрую волю ко мне, но я чувствую, что должен поделиться этим со всеми вами, чтобы освободить себя от мошенников, пожалуйста, остерегайтесь подделок и свяжитесь с правильной кредитной компанией. com или whatsapp + 1-989-394-3740. , Ответить Удалить

«Я достаточно хваляю г-на Бенджамина за его помощь в получении ссуды на покупку нашего нового дома для нашей семьи. У Бенджамина было огромное количество информации, и он помог мне и моей семье понять, почему жилищный заем был лучшим вариантом в нашей конкретной ситуации. После переговоров с Бенджамином и нашим финансовым консультантом все согласились, что жилищный кредит был идеальным решением. Если вы также ищете какой-либо кредит, вы можете связаться с г-ном Бенджамином по электронной почте / Whatsappemail: 247officedept@gmail.com Whatsapp: + 1-989- 394-3740 Ответить Удалить

Пятое поколение — языки программирования или прикладные системы?

Пятое поколение — языки программирования или прикладные системы?

Языки программирования (ЯП) по своим возможностям и времени создания принято делить на несколько поколений (Generation Language, GL). К сегодняшнему дню насчитывается пять поколений ЯП. Каждое из последующих поколений языков по своей функциональной мощности качественно отличается от предыдущего.

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

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

Расцвет второго поколения языков программирования (2GL) пришелся на конец 50-х — начало 60-х годов. Был создан символический ассемблер, позволявший писать программы без привязки к конкретным адресам памяти. В него было введено понятие переменной, и он по сути стал первым настоящим (хоть и машинно-ориентированным) языком программирования со своим компилятором. Скорость разработки и эффективность функционирования программ резко возросли. Ассемблеры активно применяются в настоящее время, как правило, для создания программ, максимально использующих возможности аппаратуры — различных драйверов, модулей состыковки с нестандартным оборудованием и т. д. В некоторых областях, например в машинной графике, на ассемблере пишутся библиотеки, эффективно реализующие стандартные алгоритмы обработки изображений. Кроме того, среди программистов просто есть немало людей, предпочитающих использовать ассемблер в своей работе. Как правило, это специалисты, хорошо разбирающиеся в электронике.

Появление третьего поколения ЯП (3GL) принято относить к 60-м годам. В это время родились языки, которые называют универсальными языками высокого уровня, с их помощью можно решать задачи из любых областей. Это общеизвестные Фортран, Кобол, Алгол и др. Такие качества новых языков, как относительная простота, независимость от конкретного компьютера и возможность использования мощных синтаксических конструкций, позволили резко повысить производительность труда программистов. Кроме того, понятная большинству пользователей процедурная идеология этих языков привлекла к написанию небольших программ (как правило, расчетного или учетного характера) значительное количество специалистов из некомпьютерных областей.

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

С начала 70-х годов по настоящее время продолжается период языков четвертого поколения (4GL). После первых восторгов по поводу безграничных способностей ЭВМ стали более ясны возможности существующих языков программирования. Несмотря на рождение новых технологий (ООП, визуальное программирование, CASE-методологии, системный анализ), процесс создания больших программных комплексов оказался очень трудоемкой задачей, так как для реализации крупных проектов требовался более глобальный подход, чем тот, который предлагали имевшиеся средства разработки. Языки 4GL частично снимали эту проблему. Целью их создания было стремление увеличить скорость разработки проектов, снизить число ошибок и повысить общую надежность работы больших программных комплексов, получить возможность быстро и легко вносить изменения в готовые проекты, активно внедрять технологии визуальной разработки и т. д. Все языки четвертого поколения интегрированы в мощные пользовательские оболочки и обладают простым и удобным интерфейсом. Они чаще всего используются для проектирования баз данных и работы с ними (встроенные языки СУБД), что объясняется возможностью формализации всех понятий, используемых при построении реляционных баз данных. Языки 4GL активно применяются в различных специализированных областях, где высоких результатов можно добиться, используя не универсальные, а проблемно-ориентированные языки, оперирующие конкретными понятиями узкой предметной области. Как правило, в эти языки встраиваются мощные примитивы, позволяющие в одном операторе описать такую функциональность, для реализации которой на языках младших поколений потребовались бы тысячи строк кода.

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

Рождение языков пятого поколения относится к середине 90-х годов. Довольно неожиданно вокруг самого названия 5GL разгорелись жаркие споры. Возникло несколько программистских «школ», представители каждой из которых имеют свое мнение о том, какие средства разработки считать языками пятого поколения, а какие — нет. Например, представители «английского» направления рассматривают средства разработки пятого поколения в более широком аспекте, чем это принято делать в отношении обычных языков программирования. Они считают, что к системам 5GL можно отнести не только новые мощные языки, но и системы создания программ, ориентированные на непрограммиста. Подобные системы отличаются стремлением предоставить конечному пользователю-неспециалисту богатые возможности создания прикладных программ с помощью визуальных средств разработки без знания программирования. Главная идея, которая закладывается в эти системы 5GL, — возможность компьютерного интерактивного или полностью автоматического преобразования инструкций, вводимых в компьютер, наиболее удобными человеку методами в максимально наглядном виде, в текст на универсальных языках программирования, описывающий готовую программу. Наличие подобного промежуточного этапа (получение не готового исполняемого модуля, а только исходных текстов, требующих дальнейшей обработки) объясняется низкой эффективностью автоматически генерируемого кода приложений, созданных с использованием подобных систем пятого поколения, что связано с внутренней сложностью последних и стремлением разрабатывать независимые от платформы продукты. Исходные тексты обычно генерируются на языках более низкого уровня, как правило, третьего поколения. Благодаря автоматическому процессу получения текстов программы результирующий код оказывается хоть и неэффективным, но высоконадежным и не содержащим ошибок. Правда, при этом возникает проблема совместимости с имеющимися на рынке компиляторами. После генерации кода созданного приложения необходимо перевести его в машинное представление. Для этого требуется тесная интеграция с имеющимися коммерческими компиляторами, легкая настройка, ориентированная на пользователя-непрограммиста и соответствие получаемого кода требованиям конкретных средств разработки. В большинстве случаев из-за острой конкурентной борьбы решить проблему совместимости в целом не удается, поэтому системы разработки 5GL ориентируются обычно на определенные версии компиляторов.

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

В большинстве подобных систем используются усовершенствованные технологии, воплощенные в средствах более низкого уровня. Например, возможность «мышиного» создания программ без ручного набора текстов, с использованием средства визуального проектирования ПО, взята из современных систем разработки 4GL. Другое перспективное направление, заимствованное из 4GL, — методы программной инженерии. Различные формальные нотации, поддерживаемые CASE-системами, позволяют с помощью мышки быстро создавать заготовки программ, SQL-«скрипты», описывающие структуру баз данных. Поскольку ряд современных языков 5GL создан на основе успешно реализованных продуктов 4GL, граница между этими поколениями сильно размыта. Системы разработки пятого поколения только появляются на свет, и нередко аббревиатура 5GL используется больше для рекламы.

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

Однако значительно большая часть специалистов считает, что языки пятого поколения являются именно языками программирования, требующими от разработчика соответствующей квалификации и умения составлять программы вручную. Сторонники этого мнения под языками 5GL понимают специализированные языки, оперирующие не абстрактными переменными, а понятиями своей предметной области, например бухгалтерскими счетами или ферзями и пешками. Это, как правило, узкоспециализированные языки, предоставляющие программисту мощные высокоуровневые возможности обработки информации из конкретной области знаний. К языкам пятого поколения относят также интегрированные с базами знаний и экспертными системами программные комплексы с собственными языками программирования. Типичный пример — созданная в Австралии самообучающаяся нейронная сеть LISA со встроенным языком описания фактов, сущностей и взаимосвязей, на торговой марке которой красуется «лейбл» 5GL.

Несмотря на внешнюю противоположность языков 5GL (прикладные пакеты или языки программирования), их определяет то, что они предоставляют программисту средства разработки, использующие наиболее естественные для человеческого мышления понятия. При этом неважно, как подобные возможности будут реализованы — в виде усовершенствованных средств визуального проектирования или в виде новых мощных языков программирования, оперирующих привычными терминами. Наиболее актуальными для систем 5GL станут достижения в таких областях, как логическое программирование (Пролог-подобные языки и машины вывода), объектно-ориентированное программирование, исследовательское программирование (когда проект слишком сложен и неясен, а средства разработки позволяют быстро создать шаблон программы и включать в него работающие кусочки с постепенным приближением к конечному результату), использование для создания программ естественных языков, технологии управления базами знаний, методы обработки и анализа текстовой информации (энциклопедии, Web-страницы, документы) с возможностью смыслового поиска и т. д. Для создания достаточно сложных приложений планируется использовать различные экспертные системы и базы знаний со встроенными языками логического программирования, позволяющие автоматизировать многие рутинные процессы и помочь пользователю найти правильный путь решения тех или иных задач.

Пока сложно сказать, насколько успешной окажется тенденция к полной и недостижимой универсальности. На практике с помощью систем 5GL этого направления пока удавалось создать небольшие и логически простые приложения, которые при реализации на языках третьего поколения потребовали бы не более 10 000 исходных строк кода. При попытках разработки сложных программ возникает проблема, типичная для более старых языков, — необходимость отладки, что требует от пользователя высокой квалификации.

Языки 5GL, ориентированные на конкретные области применения, уже в ближайшее время могут завоевать самую широкую популярность. Это относится прежде всего к продуктам, позволяющим создавать приложения для работы с базами данных — области информатики, наиболее успешно поддающейся формализации. Наглядное подтверждение этому — тенденции развития практически всех известных СУБД корпоративного уровня. Вслед за встроенными языками СУБД появляются и другие проблемные ЯП. Кроме того, универсальные языки логического программирования пятого поколения наподобие Пролога, в основе которых лежат мощные математические аппараты, совсем не канули в Лету. Эти языки продолжают более чем успешно развиваться, другое дело, что для их грамотного применения требуется высокая культура программирования (и проектирования) в сравнении с Си++. И используются они для несколько других задач, чем создание коробочных бухгалтерий (хотя для этих целей они также подходят значительно лучше Си или Паскаля). Неудивительно, что в нашей стране мощными зарубежными средствами разработки, реализующими алгоритмы искусственного интеллекта или имеющими в своей основе уникальные математические теории, нередко наиболее активно интересуется ФАПСИ, что явствует хотя бы из открытых семинаров ведущих российских фирмдистрибьюторов соответствующих продуктов. Хочется надеяться, что рано или поздно и коммерческие фирмы поймут выгоду использования хоть и дорогих, но очень мощных по своим возможностям систем создания приложений сверхвысокого уровня.

Так что смерть языкам программирования (и профессии программиста вместе с ними) в ближайшие лет пятьдесят не грозит. А дальше будет видно.

К Сергею Бобровскому можно обратиться по адресу: softart@extranet.ru.

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

Человеку в течение всей своей жизни приходится решать много задач, и всё же часто ему хочется поручить выполнение своих работ кому-нибудь другому, например, машине. ЭВМ — это электронно-вычислительная машина, и её услугами человек пользуется уже не одно десятилетие. Единственное, что необходимо сделать человеку, чтобы заставить ЭВМ трудиться — это составить программу на понятном для этой машины языке. Такие языки называются языками программирования. Они служат для написания программ для ЭВМ.
Работы над созданием языков программирования начались в 50-х годах. Интересы потребителей и характер использования вычислительных машин того времени привели к тому, что созданные языки программирования были тесно связаны с математическими и научными вычислениями, т.е. они были проблемно-ориентированными.
В 1954 году в США был начат проект языка программирования Фортран, а чуть позже в Европе был начат Алгол. Название Фортран — это сокращение слов «ФОРмула — ТРАНслятор», т.е. преобразование в машинный код математических формул. Алгол, хоть и происходит от английских слов Algorithmic Language (алгоритмический язык), также является проблемно-ориентированным и в основном для выполнения вычислений. Велись нескончаемые споры о том, какой из этих двух языков лучше. Основной недостаток Фортрана — это то, что он относительно сложен для многих пользователей. Этот язык значительно усложняет решение простых задач. Поэтому на базе Фортрана был создан более простой язык программирования Бейсик, ставший сейчас очень популярным языком общения человека и ЭВМ.
Язык Бейсик разработан в 1965 г. в Дартмунтском колледже в США Джоном Кетмени. Название Бейсик (BASIC) несёт тройную смысловую нагрузку. Во-первых, BASIC происходит от сокращения английской фразы «Beginner s All- Purpose Symbolic Instruction Code»,т.е. многоцелевой язык символических инструкций для начинающих. Во-вторых, так назывался разговорный язык, который был разработан в прошлом веке специально для туземного населения колоний Великобритании. Наконец, в-третьих, BASIC означает базовый.
Язык Алгол также отличается удобством, элементарностью, а главное — обозримостью вычислительных программ и алгоритмов. Фундаментальные идеи Алгола стали основополагающими для многих языков программирования высокого уровня.
И Фортран, и Алгол являются языками программирования, ориентированными в основном для вычислений. Но компьютеры используются для решения не только вычислительных задач. Для удовлетворения потребностей в решении экономических и коммерческих задач был создан язык Кобол. Он не «математичен», поскольку разрабатывался так, чтобы походить на обычный, хотя и сильно сокращённый английский язык. В СССР была разработана русская версия Кобола.
В 60-х годах фирма IBM, мощная компания по производству ЭВМ, сделала попытку совместить всё лучшее, что имеется в основных языках программирования, в одном языке ПЛ/1. Главным лозунгом явилось: иметь в одном языке средства, необходимые всем категориям программистов, с тем, чтобы отдельному программисту достаточно было ознакомиться лишь с определённым подмножеством языка. Этот лозунг не нашёл широкого признания, особенно среди других производителей ЭВМ, так что продолжают использоваться отдельные языки, тем более что ПЛ/1 сложен для изучения и применения.

В период выхода на мировой рынок микропроцессоров появился Паскаль — язык программирования, являющийся прямым развитием линии Алгола. Он создан швейцарским математиком Никласом Виртом в 1969 году и назван в честь английского учёного Б.Паскаля. Это очень компактный язык, поэтому его часто используют для обучения приёмам программирования. Он, как и Бейсик, очень популярен среди пользователей персональных компьютеров.
Программы для компьютера в принципе можно записывать сразу в машинных кодах, используя для этого непосредственно последовательность нулей и единиц, как для команд, так для адресов и данных. Однако такая работа очень трудоёмка и легко приводит к ошибкам, поэтому современная практика программирования основана на том, что сначала программа пишется на каком-то языке, более удобном для человека, а затем эта программа транслируется, т.е. переводится в машинный код.
Таким образом, для программирования используется два средства:
1.Язык программирования, используемый человеком или входной язык.
2.Объектный язык, на котором получается программа в машинных кодах, непосредственно загружаемая в память ЭВМ.
Программа на машинном языке оказывается более эффективной, особенно если она разработана высоко квалифицированным программистом и учитывает особенности архитектуры конкретного компьютера. Но общая тенденция развития программирования состоит в том, чтобы писать программу на символическом языке, который представляет собой сокращения машинных команд и условные адреса, а затем транслировать её в машинные коды. Такой язык программирования называется языком Ассемблера. На языке Ассемблера пишут программы в основном системные программисты
В самом языке программирования не заложен способ его реализации. Имеется два основных подхода к реализации языков программирования: компиляция и интерпретация. Компилятор (или транслятор) переводит программу на языке программирования в машинный код (на объектный язык) конкретного компьютера, на котором будет выполняться программа. Ясно, что один и тот же компьютер может «понимать» и Basic, и Pascal, и какой-либо другой язык, всё зависит от того, транслятор какого языка программирования размещён в оперативной памяти ПК. Интерпретатор же является собственно той системой, которая исполняет программу на языке программирования (на входном языке), т.е. каждая инструкция исходной программы переводится и сразу выполняется. Между этими двумя подходами имеется множество промежуточных вариантов: существуют компиляторы, которые компилируют во время ввода программы (т.е. в интерактивном режиме). Существуют интерпретаторы, которые компилируют программу в промежуточный код.
Программы-трансляторы составляются системными программистами и входят в программное обеспечение компьютера. Цепочка событий от составления программы на языке программирования высокого уровня до получения результатов решения задачи представлена на следующей странице.

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

Согласно принципам Дж. фон Неймана, программа во время ее исполнения и обрабатываемые ею данные находятся в оперативной памяти ЭВМ. И то, и другое имеет вид двоичных кодов. Процессор исполняет программу, начиная с первой команды и заканчивая на последней (или на специальной команде «стоп»). Во время исполнения очередной команды процессор переписывает её в свои регистры, исполняет и переходит к следующей команде.
Программисты, работавшие на ЭВМ первого поколения (ламповые машины 50-60-х гг.), писали программы на языке машинных команд. Это довольно сложная работа. Для облегчения программирования созданы языки программирования высокого уровня. Примерами таких языков являются Фортран, Паскаль, Бейсик, Си и др. Составление программ на таких языках много проще, чем на языке машинных команд. Программирование стало доступно большему числу людей.
В 80-е годы активно прорабатывалась идея визуального программирования, основной смысл которой состоит в том, чтобы процесс «сборки» программы осуществлялся на экране дисплея из программных конструкций — картинок. В результате появились среды разработки 4-го поколения (4GL), в которых разрабатываемый программный продукт строится из готовых крупных блоков при помощи мыши. Примерами таких сред являются: Delphi, Visual Age, Visual Java.
Для программиста, составляющего программы на универсальных языках программирования, в том числе перечисленных выше, компьютер является универсальным исполнителем. Иначе говоря, на таких языках можно составить программу решения любой задачи по обработке информации.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *