Файл: Международные и отечественные стандарты языков программирования, сходство и отличия стандартов.pdf
Добавлен: 04.04.2023
Просмотров: 296
Скачиваний: 2
ВВЕДЕНИЕ
Компьютеры так же хороши, как и программы, которые на них запускаются. Языки программирования используются программистами для написания специальных наборов инструкций для чтения микропроцессором компьютера для выполнения конкретной задачи. Это формальные знаковые системы, определяющие набор правил (лексических, синтаксических и семантических), а также задающие вид программы и те действия, которые будут выполнены компьютером.
Со времен изобретения аналитической машины Чарльза Бэббиджа в 1837 году компьютерам всегда требовались инструкции для выполнения задач, представленные в форме языков программирования. За 150 лет с момента появления алгоритма Ады Лавлейс в этих языках одно остается неизменным: они постоянно развиваются. Постоянно вводятся новые и улучшенные функции, и в результате получается ошеломляющее количество языков, которые служат различным специфическим целям.
Родственные конструкции различных языков программирования могут быть различимы преимущественно благодаря их разному «внешнему виду», то есть набору ключевых слов и порядку следования компонентов (синтаксису). Небольшие различия в конструкциях обычно не имеют существенного значения (в качестве примера можно упомянуть возможность задания модификатора счетчика цикла, отличного от единицы). Таким образом, конструкции современных языков программирования имеют общую семантику, но различный синтаксис и разные ключевые слова (лексику). Тем не менее, при различном внешнем виде программ различные языки программирования предоставляют программисту одинаковые возможности. Сравнивая между собой конструкции современных языков и выделяя их общую составляющую, на семантическом уровне можно описать некий «универсальный» язык программирования.
Синтаксис и семантика любого языка программирования определяются набором спецификаций. Широко распространенные языки программирования имеют определенные стандарты (как правило, международные). Публикация спецификаций и обновление уже существующих стандартов языка являются зоной ответственности некоторого комитета – специальной организации, в рамках которой продолжаются разработка и модернизация соответствующего языка программирования. Комитеты также решают вопросы о поддержке или расширении уже существующих и новых конструкций языка. Как правило, в язык добавляются новые возможности, а редко используемые зачастую не исключаются, что приводит к синтаксическому расширению того или иного языка. То, насколько такое расширение является оправданным, – предмет последних исследований. Таким образом, изучение международных и отечественных стандартов языков программирования является актуальной задачей.
Цель данной курсовой работы – получить представление о классификации языков программирования и их стандартизации. Для достижения цели в курсовой работе были поставлены следующие задачи:
- получить представление о классификации основных языков программирования;
- рассмотреть развитие языков программирования и выделить ключевые стандарты этих языков;
- выполнить реализацию приложения с использованием одного из современных стандартизированных языков;
Предметом курсовой работы являются стандарты языков программирования.
1. Классификация первых языков программирования
Языки программирования для компьютеров разрабатываются с целью прежде всего помочь большому количеству людей использовать компьютеры без необходимости детального изучения их внутренней структуры. Языки соответствуют типу приложений, которые должны быть запрограммированы с использованием языка.
Идеальным языком был бы тот, который точно выражает спецификацию решаемой проблемы и преобразует ее в серию инструкций для компьютера a.1.]. Невозможно достичь этого идеала, поскольку четкая спецификация проблемы часто недоступна, а разработка алгоритма исходя из спецификаций требует предметных знаний и опыта. На практике подробный алгоритм решения проблемы является отправной точкой и выражается в виде программы на языке программирования. Существует большое количество языков, более тысячи, каждый из которых обслуживает разные классы приложений.
Почти все современные языки программирования разработаны так, чтобы быть независимыми от машины. Другими словами, структура языка программирования не будет зависеть от внутренней структуры определенного компьютера; нужно уметь исполнять программу, написанную на языке программирования, на любом компьютере, независимо от того, кто его изобрел или какой моделью он является. Такие языки известны как машинно-независимые языки программирования высокого уровня a.1.].
Первым шагом в эволюции языков программирования была разработка того, что известно как язык ассемблера. На языке ассемблера мнемоника используется для представления операций, которые должны выполняться компьютером, и строки символов для представления адресов в памяти компьютера, где будут храниться операнды. Таким образом, язык соответствует структуре процессора конкретного компьютера и, таким образом, зависит от машины. Переводчик, называемый ассемблером, переводит программу, написанную на языке ассемблера, в набор машинных инструкций, которые могут быть выполнены компьютером. Современные программы написаны на ассемблере только в приложениях, которые чувствительны к затратам или критичны по времени, поскольку эффективность машинного кода имеет первостепенное значение в этих типах приложений. Чувствительное к затратам приложение – это приложение, в котором используются микропроцессоры для улучшения функциональности потребительских товаров, таких как стиральные машины или музыкальные системы. В этих случаях программа хранится в постоянной памяти, а ее размер невелик. Таким образом, оптимизация кода важна. Критически важным для применения является использование микропроцессоров в системах управления самолетом, где требуется работа системы в режиме реального времени. Здесь снова количество выполняемых машинных инструкций должно быть минимизировано.
Во время эволюции компьютеров, примерно до 1955 года, компьютеры были медленными и имели небольшую память. Таким образом, эффективность программирования была очень важна, и язык ассемблера был доминирующим. Благодаря совершенствованию технологий компьютеры были спроектированы с большей емкостью памяти, более высокой скоростью и повышенной надежностью. Был предусмотрен огромный потенциал компьютерных приложений в различных областях. Было очевидно, что этот потенциал может быть реализован только в том случае, если неопытный пользователь сможет эффективно использовать компьютер для решения проблем. Таким образом, стало ясно, что пользователь должен заниматься прежде всего разработкой соответствующих алгоритмов для решения проблем, а не внутренней логической структурой компьютера. Следовательно, хорошая нотация для выражения алгоритмов стала существенным требованием. Чтобы алгоритмы выполнялись компьютерами, нотация для их выражения должна быть простой, краткой, точной и однозначной. Обозначения также должны соответствовать типу алгоритма. Например, языки программирования для решения научных и инженерных задач должны поддерживать арифметику с использованием широкомасштабных, высокоточных действительных и комплексных чисел и должны иметь функции для выражения операций с массивами и матрицами. С другой стороны, алгоритмы для обработки бизнес-данных должны иметь операции, выполняемые с огромными объемами организованных данных, известных как файлы. В этом случае нотация должна облегчать описание файлов, форматирование и печать сложных отчетов. Такие нотации для выражения алгоритмов известны как высокоуровневые, машинно-независимые языки программирования. Языки программирования высокого уровня далее классифицируются как процедурные и непроцедурные [a.2.]. Языки, которые выражают пошаговые алгоритмы, написанные для решения проблемы, известны как процедурные языки, в то время как те, которые выражают спецификации программы, которая должна быть решена, известны как непроцедурные.
В начале 1970-х гг. Никлаус Вирт предложил язык Pascal, который сразу завоевал широкое признание. Язык получил свое название в честь французского математика, физика, литератора и философа Блеза Паскаля. Pascal разрабатывался с учетом недостатков, имеющихся в ALGOL-W, над которым также работал Вирт. Изначально он проектировался для однопроходного компилятора, наряду с которым существовал и интерпретатор P-кода. В 1983 г. вышел первый стандарт языка IEEE, а затем появился и стандарт ISO (стандарт Организации международных стандартов ISO 7185:1990).
В то же время команда во главе с Жаном Ичбиа из CII Honeywell Bull по контракту с Министерством обороны США с 1977 по 1983 год работала над созданием структурированного языка высокого уровня, получившего название Ada в честь Ады Лавлейс. Это был первый случай в истории, когда создание языка началось не с разработки конкретного транслятора, а с определения требований и выработки спецификаций. За основу был взят язык Pascal; промышленный компилятор языка Ada был разработан в начале 1980-х гг.
2. Международная и отечественная стандартизация языков
Спецификация языка программирования всегда отражена в его реализации. Для того, чтобы компиляция одной и той же программы с использованием различных компиляторов могла всегда давать одинаковый результат, разрабатываются стандарты языков программирования [a.4.]. На сегодняшний день существует ряд организаций, непосредственно занимающихся вопросами стандартизации. Это Американский национальный институт стандартов ANSI (American National Standards Institute), Институт инженеров по электротехнике и электронике IEEE (Institute of Electrical and Electronic Engineers), Организация международных стандартов ISO (International Standards Organization). В ISO вопросами стандартизации языков программирования занимается комитет JTC 1/SC 22.
ANSI C – это общее название для стандарта языка программирования C, и, хотя документ, из которого происходит это имя, уже давно заменен новым, это имя все еще иногда используется с текущим стандартом. Происхождение этого стандартного названия (которое, очевидно, происходит от Американского национального института стандартов), а также названия ISO C (также явно взятого из аббревиатуры Международной организации по стандартизации), связаны с документами, появившимися в результате добровольного консенсуса. Язык программирования C предшествует любой официальной стандартизации на десятилетие. C был разработан в Bell Laboratories в 1972 году Деннисом Ритчи, и многие из принципов и идей, которые он включил в язык, были взяты из более раннего языка программирования B, а также его предков B, BCPL и CPL. В 1983 году ANSI поручил комитету X3J11 стандартизировать язык Си. Эта задача находилась в ведении Аккредитованного комитета по стандартам X3 (ASC X3), и в результате стандарт ANSI X3.159-1989: язык программирования C был ратифицирован 14 декабря 1989 года и опубликован весной 1990 года. ASC X3 в настоящее время является Международным комитетом по стандартам информационных технологий (INCITS), аккредитованной ANSI организацией по разработке стандартов, занимающейся информационными и коммуникационными технологиями.
Стандарт, указанный в документе ANSI X3.159-1989, стал известен как ANSI C [a.3.], но вскоре он был заменен, поскольку был принят в качестве международного стандарта ISO / IEC 9899: 1990 под руководством ISO / IEC. JTC 1. В то время как это название произошло от ISO C, национальный стандарт и международный стандарт также различаются как C89 и C90 соответственно. За годы, прошедшие с момента установления международного стандарта ISO / IEC 9899, было выпущено несколько обновлений и появилось несколько корректировок. Четвертое издание стандарта ISO / IEC 9899: 2018 – Информационные технологии. Языки программирования. C определяет текущий стандарт языка программирования C. Язык C, определенный в стандарте 2011 года, получил неофициальное название C11. Хотя ни это название, ни ANSI C и ISO C никогда явно не упоминаются в стандартном документе, их случайное использование отражает важность кропотливой работы, проделанной сообществом стандартов за последние тридцать лет по объединению этого языка программирования.
В середине XX века параллельно с алгоритмическими языками развивались языки, предназначаемые для обработки деловой информации, а также языки искусственного интеллекта. К первым относится язык COBOL (COmmon Business Oriented Language – рус. «Общий язык деловой ориентации»), а ко вторым — языки LISP (LISt Processing – рус. «Обработка списков») и PROLOG (PROgramming in LOGic – рус. «Программирование в логике»).
Язык COBOL, ориентированный на обработку экономической информации, был разработан рабочей группой программистов, созданной под эгидой исполнительного комитета по языкам систем обработки данных Кодасил (CODASYL – Conference on Data System Languages). COBOL был первым языком программирования, в котором средства описания данных соответствовали его процедурным возможностям. Впервые в нем был введен тип данных "запись", который являлся основной структурой данных. Рекурсивное описание данных – еще одна примечательная особенность КОБОЛа. Кроме того, программы на этом языке принято разбивать на части, называемые разделами, причем каждая программа состоит из четырех разделов: идентификации, оборудования (среды), данных и процедур. Измененный американский стандарт КОБОЛа был принят в 1974 г. с соответствующим названием – КОБОЛ-74. В СССР первые компиляторы с подмножества языка КОБОЛ реализованы в 1968 г. на ЭВМ "Днепр-21" и "Минск-32", а в 1977 г. был принят отечественный стандарт на язык программирования КОБОЛ (ГОСТ 22558-77).
Язык LISP, разработанный в 1960-х гг. под руководством Дж. Маккарти, был первым функциональным языком обработки списков, который нашел широкое применение в теории игр. Язык PROLOG ориентирован на решение задач на основе исчисления предикатов. Этот язык был разработан Аланом Кулмероэ и Филиппом Русселом в 1970 г., а первая реализация, использующая компилятор ALGOL-W, выполнена в 1972 г. Язык PROLOG развивался, и в настоящее время существует несколько его реализаций. Наиболее используемой реализацией принято считать разработку Эдинбургского университета. Первым стандартом ISO языка PROLOG был стандарт ISO/IEC 13211-1:1995 (Programming languages — Prolog — Part 1: General core), затем последовал стандарт ISO/IEC 13211-2:2000 (Programming languages — Prolog — Part 2: Modules), в настоящее время разрабатывается стандарт ISO/ IEC DTR 13211-3 (Programming languages — Prolog — Part 3: Definite clause grammar rules).