Файл: Международные и отечественные стандарты языков программирования. Сходство и отличия стандартов (Классы языков программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 01.04.2023

Просмотров: 133

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Язык С++ является во многом надмножеством С. Принципиальные новые возможности С++ в себя включают:[9]

– объявления выражений;

– преобразования типов;

– операторы для динамической памяти;

– ссылки;

– применение расширенного понятия константности;

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

– функции-члены;

– разного рода виртуальные функции;

– конструкторы и абстрактные классы;

– переопределения операторов и шаблоны и многое другое.

Язык С++ во многих случаях относится строже к проверке типов. В С++ появились новые комментарии в виде «//».

Некоторые особенности С++ были позднее перенесены в С, к примеру, ключевые слова inline и const, объявления в циклах и другие.[12]

В более поздних реализациях ЯП С также представлены возможности, которых теперь нет в С++, к примеру макросы и улучшенная работа с массивами.

Достоинства языка С++:

Масштабируемость;

– Возможность работы с памятью на низком уровне;

– C++ имеет препроцессор, унаследованный ч C.

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

2.2. Описание ЯП Java

Язык программирования Java создавался в рамках проекта фирмы Sun Microsystems при разработке компьютерных аппаратно-программных комплексов нового поколения.

Первая версия Java была официально опубликована еще в 1995 году. С того момента язык Java стал "де-факто" стандартом, вытеснив за 10 лет языки C++ и C из многих направлений программирования.

Также в 1995 году C++ был абсолютным лидером, но к 2006 г. число программирующих Java стало превышать число программистов C и C++.

Число устройств, которые запрограммированы с помощью Java, уже превысило полтора миллиарда. [2]

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

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

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


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

Их можно скопировать в надобное место памяти ПК и передать управление непосредственно первой команде программы.

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

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

Имеются 2 основных типа трансляции:[8]

– компиляция;

– интерпретация.

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

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

Программы, написанные на Java, представляют собой набор классов и сохраняются в специальных текстовых файлах, которые имеют расширение java.

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

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

Для того чтобы выполнять байт-код на каком-то компьютере, его нужно конвертировать в инструкции для процессора. Именно это выполняет Java-машина. [4]

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

В ныенешнее время используется сложная схема, которая называется JIT-компиляцией – компиляция "на лету".

Если какая-то инструкция (или же набор инструкций) процессора Javа выполняется в первый раз, то происходит компиляция байт-кода с хранением скомпилированного куска кода в буфере.

2.3. Описание ЯП C#

Несмотря на то, что C# – самодостаточный ЯП, у него есть особая взаимосвязь с средой выполнения под названием .NET Framework.


Практическое наличие такой взаимосвязи можно обяснить двумя причинами: [10]

– C# первоначально предназначался как создатель кода, что должен выполняться в.NET Framework.

– используемые в C# модули и библиотеки определены в .NET Framework.

Стоит отметить, что на практике это значит, что C# с .NET Framework связаны тесно друг с другом, но теоретически C# можно отделять от среды программирования.

В связи с данным фактом очень важно иметь самое общее представление о работе в среде .NET и ее значении непосредственно для С#.

NET Framework – служит средой для поддержки выполнения и разработки сильно распределенных приложений.

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

Среда .NET Framework определяет 2 очень важны компонента. Первым из них есть общеязыковая среда выполнения CLR. [7]

Это система, которая выполняет программы. Среди прочих преимуществ CLR, как составной части среды .NET Framework использует многоязыковое программирование, обеспечивает безопасное выполнение и переносимость программ.

Вторым компонентом .NET Framework является так называемая библиотека классов.

Она предоставляет программе доступ непосредственно к среде выполнения. Если требуется выполнить операции ввода-вывода, к примеру, вывести что-то на экран, то используется для этой цели библиотека классов .NET. [11]

Если программа ограничивается методами, определяемыми в библиотеке .NET, то программа может выполняться практически везде, где поддерживается .NET. А так как в ЯП C# библиотека классов используется автоматически, то все программы на С# оказываются заведомо переносимыми во все среды .NET Framework.

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

3.ОБЗОР СТАНДАРТОВ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

3.1.Международные стандарты языков программирования

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


Это Американский национальный институт стандартов ANSI (American National Standards Institute), Институт инженеров по электротехнике и электронике IEEE (Institute of Electrical and Electronic Engineers), Организация международных стандартов ISO (International Organization for Standardization).

Как правило, при создании языка выпускается частный стандарт, определяемый разработчиками языка. Если язык получает широкое распространение, то со временем появляются различные версии компиляторов, которые не точно следуют частному стандарту.

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

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

Так, язык FORTRAN первоначально был стандартизирован в 1966 году. В результате был издан стандарт FORTRAN 66. Далее этот стандарт несколько раз пересматривался (в 1977 году был выпущен FORTRAN 77, затем появился и FORTRAN 90).

Язык Java, ставший в последнее время весьма распространенным, постепенно был значительно расширен и модифицирован: новая спецификация получила название Java 2.

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

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

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

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

По мере того, как язык С постепенно развивался сообщество пользователей этого языка осознало, что нуждается в современном и строгом стандарте. В ответ на эти потребности Американский институт национальных стандартов (American National Standards Institute (ANSI)) в 1983 г. организовал комитет (X3J11) для разработки нового стандарта, который был принят в 1989 г. Этот стандарт (ANSI C) содержит определение как языка, так и стандартной библиотеки С. Затем международная организация по стандартизации (ISO) в 1990 г. приняла свой стандарт (ISO C), который по сути не отличается от стандарта ANSI C.


В 1994 г. возобновилась деятельность по разработке нового стандарта, в результате чего появился стандарт C99, который соответствует языку С++. Объединенный комитет ANSI/ISO развил исходные принципы предыдущего стандарта, являющийся основным на сегодняшний день.

Язык SQL предназначен для доступа к информации и управления реляционной базой данных. Управление различными реляционными базами данных осуществляют программы, называемые СУБД - системы управления базами данных (DBMS - Database Management System). Сама реляционная база данных представляет собой хранилище определенным образом организованной информации и СУБД. Однако на практике термин СУБД часто заменяют термином БД (база данных). Для того чтобы c различными базами данных, такими как Oracle, Microsoft SQL Server, Informix, DB2, Access, MySQL - можно было общаться на одном языке, был разработан язык SQL.

Начиная с 1986 года комитеты ISO (International Organization for Standardization) и ANSI (American National Standards Institute) приступили к созданию ряда стандартов языка SQL, которые впоследствии были приняты и получили следующие названия: SQL86, SQL89, SQL92 и SQL99.

Стандарт SQL86 зафиксировал минимальный стандартный синтаксис языка SQL.

Стандарт SQL89 был принят в 1989 году. Он вводил набор операторов языка SQL, которые должны были реализовывать все СУБД, заявляющие поддержку стандарта SQL89. На практике каждая реальная коммерческая СУБД предоставляет значительно более широкий набор возможностей, чем предусмотрено стандартом.

Так, несмотря на то, что большинство СУБД на момент принятия стандарта уже поддерживали встроенный и динамический SQL, в стандарте SQL89 правила встраивания языка SQL в процедурный язык программирования (такой как язык С) и правила использования динамического SQL прописаны не были.

До последнего времени большинство СУБД поддерживали стандарт SQL92.

В стандарте SQL92 было определено три уровня соответствия:

  • основной (Entry);
  • средний (Intermediate);
  • полный (Full).

При этом, для того чтобы объявить СУБД поддерживающей стандарт SQL92, большинство производителей реализовывали только основной уровень соответствия.

Новый стандарт SQL99, при разработке именовавшийся как SQL3, стандартизировал объектные расширения языка SQL и некоторые процедурные расширения языка SQL. К моменту принятия этого стандарта большинство коммерческих СУБД, таких как Oracle, уже де-факто ввели использование объектных типов и наследования.

В стандарте SQL99 определено обязательное функциональное ядро (Core) и набор уровней расширенного соответствия. Функциональное ядро SQL99 включает в себя основной уровень соответствия SQL92. Уровни расширенного соответствия не являются обязательными для реализации в СУБД, претендующей на поддержку стандарта SQL99. СУБД может не поддерживать ни одного уровня расширенного соответствия или поддерживать любые из них.