Файл: Понятие и структура языка программирования.pdf

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

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

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

Добавлен: 05.04.2023

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

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

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

В середине 80-х годов фирма Microsoft разработала QuickBASIC. Это был уже компилятор, а не интерпретатор. Вообще языков Basic несколько сотен. После появления Windows и визуальных средств разработки программ был создан Visual Basic.

FORTRAN. Это старейший язык программирования. В начале 50-х годов он был разработан исследовательской группой под руководством Джона Бэкуса. Его название происходит от 2 слов: FORMULA TRANSLATION.

Первая версия системы FORTRAN для компьютера IBM была выпущена в начале 1957 г. Характерной чертой языка была специфическая форма записи программ. Текст программы записывался строками фиксированной длины по 80 знаков, что соответствует размеру перфокарты.

Очень важную роль играют в языке метки. Язык постепенно избавлялся от недостатков. Так появился FORTRAN IV, затем в 1977 г. – FORTRAN 77, в 1991 г. – очередной стандарт FORTRAN 91.

ADA. По сложности этот язык сравнивают с С++. Назван в честь леди Ады Августы Лавлейс (дочери Байрона), работавшей вместе с Чарльзом Бэббиджем и разрабатывавшей программы для его «аналитической машины». Она по праву считается первым в мире программистом.

Разработан язык в 1979 г. группой под руководством Жана Ишбиа в рамках конкурса, объявленного Министерством Обороны США, поскольку разработки в этом ведомстве велись до этого на многих языках и ни один из них не удовлетворял всем задачам.

ADA – универсальный высокоуровневый язык программирования. Он – модульный и даже объектный, но не объектно-ориентированный. Как и все языки, он развивался. Мода на объектно-ориентированное программирование привела к созданию принципиально новой его версии ADA95.

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

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

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

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


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

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

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

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

Таким образом, различные языки предоставляют программисту одинаковые возможности (при различном внешнем виде программ). Сравнивая между собой конструкции современных языков программирования и выделив их общую составляющую, можно описать (не создать, а именно описать уже существующий de facto!) «универсальный» язык программирования (правда, только на семантическом уровне). Существующая ныне система стандартизации языков программирования не способствует выполнению этой задачи. Главная проблема состоит в том, что при описании стандарта семантическая составляющая не отделена от синтаксиса и лексики. Кроме того, при модернизации стандартов комитеты ISO/ANSI предпочитают скорее добавлять в язык новые возможности, чем исключать редко используемые, что приводит к неоправданному синтаксическому расширению языков.


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

Создание входного языка для многоязыкового компилятора можно произвести двумя различными способами:

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

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

Стремительное развитие компьютерной индустрии не может не поставить перед создателями «средств производства» программ (компиляторов) новые задачи. Компиляторы должны стать более «адекватными» эпохе визуального программирования и Интернета.

Последнее время высока популярность WWWпрограммирования. Языки WWW-программирования обладают рядом свойств, которые позволяют использовать их на платформе, специализированной для работы в качестве сервера. Чаще всего это интерпретаторы (такие, как Perl, PHP), позволяющие использовать их на стороне сервера, или языки, поддерживаемые клиентом (браузеры) – HTML, XML, Java, JavaScript, или специальные модули (plug-in), расширяющие клиента – Flash. Унификация языков программирования и создание общепринятой семантической базы – необходимые условия продолжения прогресса в этой области программного обеспечения, и, в конечном итоге, всей компьютерной индустрии [5].

Критерии выбора языка и среды программирования

При выборе языка программирования нужно учитывать множество факторов. Например, если при разработке динамической Web-страницы вы в качестве наилучшего варианта выберите JavaServer Pages (JSP)/сервлеты, другие могут предпочесть PHP или аналогичный язык сценариев. Не существует какого-то одного языка, который является наилучшим выбором. Можно отдать предпочтение определенным факторам, таким как производительность и безопасность корпоративных приложений, по сравнению с другими факторами, такими как количество строк кода. Любое решение сопряжено с какими-то компромиссами.


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

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

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

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

  • Целевая платформа.
  • Гибкость языка.
  • Время исполнения проекта.
  • Производительность.
  • Поддержка и сообщество [8].

Целевая платформа

Самым важным фактором является платформа, на которой программа будет работать. Рассмотрим для примера Java™ и C. Если программа написана на C и должна работать на машинах с Windows® и Linux®, потребуются компиляторы для платформ и два разных исполняемых файла. В случае с Java сгенерированного байт-кода будет достаточно для выполнения программы на любом компьютере, на котором установлена виртуальная Java-машина.

Аналогичный аргумент применим и для Web-сайтов. Они должны выглядеть и работать одинаково во всех браузерах. Использование тегов CSS3 и HTML5 без проверки совместимости с браузерами приведет к разному отображению и поведению сайта в разных браузерах.

Гибкость

Гибкость языка определяется тем, насколько легко можно добавлять к существующей программе новые функциональные возможности. Это может быть добавление нового набора функций или использование существующей библиотеки для добавления новой функциональности. Рассмотрите следующие вопросы, связанные с гибкостью:

  • Можно ли использовать новую функциональность без подключения новой библиотеки?
  • Если нет, доступна ли эта функциональность в библиотеке языка?
  • Если эта функциональность не встроена в язык и не доступна в библиотеке, какие усилия нужно приложить для ее создания с нуля?

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

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

Время исполнения проекта

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

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

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

Производительность

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

Рассмотрим два варианта Web-приложения, написанных на Java и на Python. На основании данных тестированияможно прийти к заключению, что в одинаковой среде приложение, написанное на Java, должно работать быстрее, чем приложение, написанное на Python. А как насчет самой среды? Если средой является одноядерная x86 Ubuntu Intel Q6600, это справедливо, поскольку вычислительная мощность ограничена. А если взять Web-приложение, работающее в облачной среде на Google App Engine? Такое приложение может использовать практически неограниченную процессорную мощность, и обе программы возвратят результаты почти за одно и то же время. Теперь основным фактором выбора будет количество строк кода и удобство обслуживания.

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

Поддержка и сообщество

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