Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Консп лек Информатика профиль ФиК.doc
Скачиваний:
72
Добавлен:
24.11.2019
Размер:
3.65 Mб
Скачать
    1. Языки программирования.

      1. Общая характеристика и обзор языков и систем программирования.

Языки программирования – формальные искусственные языки. Как и естественные языки, они имеют алфавит, словарный запас, грамматику и синтаксис, а также семантику.

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

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

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

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

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

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

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

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

Язык программирования С (Си) первоначально был разработан для реализации опе­рационной системы UNIX в начале 70-х годов. В. последующем приобрел высокую популярность среди системных и прикладных программистов. В настоящее время этот язык реализован на большинстве ЭВМ. Данный язык был создан в лаборатории Bell и первоначально не рассматривался как массовый. Он планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы, и в то же время не зависеть от конкретного вида процессора

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

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

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

Вasic(Бэйсик) (Beginners All-purpose Symbolic Instruction Code) — многоцелевой язык символических инструкций для начинающих) представляет собой простой язык програм­мирования, разработанный в 1964 году для использования новичками. Он был разработан как простейший язык для непосредственного общения человека с вычислительной машиной. Поэтому первоначально работа велась в интерактивном режиме с использованием интерпретаторов. В настоящее время для этого языка имеются также и компиляторы.

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

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

Pascal (Паскаль) является одним из наиболее популярных среди прикладных программистов процедурным языком программирования, особенно для ПЭВМ. Разработанный в 1970 году швейцарским специалистом в области вычислительной техники профессором Н. Виртом, язык назван в честь французского математика и по замыслу автора предназначался для обучения программированию. Однако язык получился на­столько удачным, что стал одним из основных инструментов прикладных и систем­ных программистов при решении задач вычислительного и информационно-логичес­кого характера. В 1979 году был подготовлен проект описания языка — Британский стандарт языка программирования Pascal BS6192, который стал также и международным стандартом ISO 7185.

В языке Pascal реализован ряд концепний, рассматриваемых как основа «дисциплинированного» программирования и заимствованных впоследствии разработчика­ми многих языков. Одним из существенных признаков языка Pascal является последовательная и достаточно полная реализация концепции структурного программиро­вания. Причем это осуществляется не только путем упорядочивания связей между фрагментами программы по управлению, но и за счет структуризации данных. Кроме того, в языке реализована концепция определения новых типов данных на основе уже имеющихся. Этот язык, в отличие от языка С, является строго типизированным. Pascal характеризуется: высоким уровнем; широкими возможностями; стройностью, простотой и краткостью; строгостью, способствующей написанию эф4)ективных и надежных программ; высокой эффективностью реализации на ЭВМ.

Pascal реализован на ЭВМ различных типов, но наиболее распространен и развит для ПЭВМ. В настоящее время широко используются такие версии этого языка для ПЭВМ, как Borland Pascal и Turbo Pascal.

Язык C++ был разработан в начале 80-х годов Б. Страуструпом, сотрудником лабора­тории Bell корпорации AT&T. Им была создана компактная компилирующая система, в которой за основу был взят язык С, дополненный элементами языков BCPL, Simula-67 и Algol-68. К июлю 1983 года появился язык С с классами, а чуть позднее — C++. К 1990 году была выпущена третья версия языка C++, принятая комитетом ANSI в качестве исходного материала для его стандартизации.

В 1990 году сотрудник корпорации Sun Д. Гослинг на основе расширения C++ раз­работал объектно-ориентированный язык Oak, основным достоинством которого былообеспечение сетевого взаимодействия различных по типу устройств. Новая интегрируемая в Internet версия языка, получила название Java. Первый броузер, который поддерживал язык Java, разработан программистом корпорации Sun П. Нафтоном и получил название HotJava. С января 1995 года Java получает распространение в Internet.

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

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

С точки зрения возможностей собственно объектно-ориентированных средств язык Java обладает рядом преимуществ перед языком C++. Так, язык Java демонстрирует более гибкую и мощную систему инкапсуляции информации. Механизм наследова­ния, реализованный в Java, обязывает к более строгому подходу к программирова­нию, что улучшает надежность и понимаемость кода. Язык же C++ обладает сложной, неадекватной и трудной для понимания системой наследования. Возможности динамического связывания объектов одинаково хорошо представлены в обоих языках, однако, синтаксическая избыточность C++ заставляет и здесь отдать предпочтение язы­ку Java.

В силу своей конструктивности идеи объектно-ориентированного программирования используются во многих универсальных процедурных языках. Так, например, в состав интегрированной системы программирования на языке PASCAL (корпорации Borland International) версии 5.5 входит специальная библиотека объектно-ориентированного программирования Turbo Vision.

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

Ранние, 1940-е гг

Императивные (процедурные), 1950-е гг

Декларативные, 1960-е гг

Функциональные, 1960-е гг

Логические, 1970-е гг

Объектно-ориентированные, 1970-е гг

Языки параллельных вычислений, 1980-е гг

Языки сценариев, 1990-е гг

Преимущества

- высокая вычислительная эффективность.

-более высокий уровень абстракции;

-меньшая машинная зависимость;

-более широкая совместимость;

-содержательная значимость текстов программ;

-унификация программного кода;

-повышение производительности программистов.

- простота верификации и тестирования программ;

- строгость математической формализации;

- высокая степень абстракции.

- автоматическое управление памятью ПК («сборка мусора»);

- простота повторного использования фрагментов кода;

- расширенная поддержка функций с параметрическими аргументами (параметрический полиморфизм);

- абстрагирование от машинного представления данных;

- прозрачность реализации самоприменяемых (рекурсивных) функций;

- удобство символьной обработки данных (списки, деревья).

- высокий уровень абстракции;

- удобство программирования логики поведения;

- удобство применения для экспертных систем;

- механизм откатов (backtrack).

- интуитивная близость к произвольной предметной области;

- моделирование сколь угодно сложных предметных

областей;

- событийная ориентированность;

- высокий уровень абстракции;

- повторное использование описаний;

- параметризация методов обработки объектов.

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

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

- интуитивная ясность;

- близость к предметной области;

- высокая степень абстракции;

- высокая переносимость;

- возможность повторного использования кода;

- совместимость с инструментальными средствами автоматизированного проектирования (CASE) и быстрой разработки (RAD) прикладного программного обеспечения.

Недостатки

- существенная зависимость от среды вычислений.

- большие трудозатраты на обучение;

-меньшая эффективность программного кода.

- сложность эффективной реализации;

- необходимость фундаментальных математических знаний

- нелинейная структура программы;

- относительно низкая эффективность.

- ограниченный круг задач;

- нелинейная структура;

- недостаточно эффективная реализация.

- сложность тестирования и верификации программ

высокая себестоимость разработки относительно

небольших программ (сотни строк кода);

- узкий спектр применения.

- сложность тестирования и верификации программ;

- множественные побочные эффекты.

Примеры

машинные коды, ассемблеры.

Fortran, ALGOL, PL/1, APL, BPL, COBOL, Pascal, C, Basic.

LISP, Common Lisp, Scheme), SML, Haskell, Prolog

LISP, SML, CaML, Haskell, Miranda, Hope.

Prolog, Mercury.

C++, Visual Basic, C#, Eiffel, Oberon.

Ada, Modula-2, Oz.

VBScript, PowerScript, LotusScript, JavaScript, Tcl.