Стандарты языков программирования
Развитие языков программирования
Парадигмы программирования
Синтаксис языка описывает систему правил написания различных языковых конструкций, а семантика языка программирования определяет смысл этих конструкций. Синтаксис языка программирования может быть описан с помощью НБФ-нотаций.
Семантика языка взаимосвязана с используемой вычислительной моделью . В настоящее время языки программирования в зависимости от применяемой вычислительной модели делятся на четыре основные группы:
- Процедурные языки, которые представляют собой последовательность выполняемых операторов . Если рассматривать состояние ПК как состояние ячеек памяти, то процедурный язык – это последовательность операторов, изменяющих значение одной или нескольких ячеек. К процедурным языкам относятся FORTRAN, C, Ada, Pascal, Smalltalk и некоторые другие. Процедурные языки иногда также называются императивными языками. Код программы на процедурном языке может быть записан следующим образом:
Код программы на языке системы правил может быть записан следующим образом:
В настоящий момент наибольшее распространение получили языки, основанные на объектно-ориентированной модели. Они, реализуя процедурную модель построения языка, поддерживают аппликативность конструкций, позволяя представлять блок-схему выполнения структурированной программы как некоторый набор аппликативных функций.
Стандартизация языков программирования
Концепция языка программирования неотрывно связана с его реализацией. Для того чтобы компиляция одной и той же программы различными компиляторами всегда давала одинаковый результат, разрабатываются стандарты языков программирования. Существует ряд организаций, целенаправленно занимающихся вопросами стандартизации. Это Американский национальный институт стандартов 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.
В процессе развития языка некоторые его конструкции и функции устаревают. Однако с целью обратной совместимости новые версии должны поддерживать и все устаревающие возможности. Это ведет к «разбуханию» компиляторов. В последнее время в реализациях введено понятие не рекомендуемой и устаревшей возможности. В первом случае следующий стандарт еще будет поддерживать не рекомендуемую возможность, но может перевести ее в категорию устаревшей. Во втором случае стандарт может исключить поддержку возможности, объявленной ранее как устаревшая. Введение не рекомендуемых и устаревших возможностей предоставляет разработчикам временной интервал , в течение которого они могут модифицировать код в соответствии с новыми требованиями стандарта.
Среда проектирования
С развитием языков программирования совершенствовались и средства разработки программ – от режима командной строки до интегрированной среды проектирования. Такая среда предоставляет удобный графический интерфейс разработки и большой спектр сервисов, включающих управление версиями хранимых данных, утилиты просмотра и управления информацией, библиотеки классов, мастера создания шаблонов приложений и т.п.
Компилятор языка программирования выступает как составная часть среды проектирования. Сама программа наряду с конструкциями, предусмотренными стандартом, как правило, использует библиотечные функции и классы, предоставляемые средой проектирования. Так, интегрированная среда разработки VisualStudio. NET содержит библиотеку классов MFC (Microsoft Foundation Classes), значительно упрощающую процесс разработки приложений, использующих оконный интерфейс .
Интегрированная среда проектирования VisualStudio. NET позволяет создавать и компилировать приложения на языках C++, C#, Visual Basic и VisualJ. Для разработки приложений на языке С++ предназначается также среда CBuilder.
Для проектирования приложений на языке Object Pascal используется интегрированная среда проектирования Delphi.
Наиболее удобной средой разработки программ на языке Java является интегрированная среда проектирования JBuilder.
Стандарты языков программирования
ГОСТ 28397-89
(ИСО 2382-15-85)
Термины и определения
Programming languages. Terms and definitions
МСК 01.040.35
35.060
ОКСТУ 4001
Дата введения 1991-01-01
1. РАЗРАБОТАН И ВНЕСЕН Министерством радиопромышленности СССР
2. УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Государственного комитета СССР по управлению качеством продукции и стандартам от 21.12.89 N 3961
3. Стандарт соответствует международному стандарту ИСО 2382-15-88
4. ВВЕДЕН ВПЕРВЫЕ
5. ССЫЛОЧНЫЕ НОРМАТИВНО-ТЕХНИЧЕСКИЕ ДОКУМЕНТЫ
Обозначение НТД, на который дана ссылка
Настоящий стандарт устанавливает термины и определения в области традиционных языков программирования процедурного типа.
Термины, установленные настоящим стандартом, обязательны для применения в документации и литературе всех видов, входящих в сферу работ по стандартизации или использующих результаты этих работ.
Настоящий стандарт должен применяться совместно с ГОСТ 15971 и ГОСТ 20886.
1. Стандартизованные термины с определениями приведены в табл.1.
ОСНОВНЫЕ ПОНЯТИЯ
1 Язык программирования
Язык, предназначенный для представления программ.
Примечание — К традиционным языкам программирования процедурного типа относят, как правило, языки для представления программ в виде последовательности предписания
Языковая конструкция, по соглашению представляющая элементарную синтаксическую единицу
4. Ключевое слово (в языках программирования)
Идентификатор, смысл которого зафиксирован правилами языка программирования и который используется для распознавания предложений в программе
5. Зарезервированное слово
Ключевое слово, использование которого запрещено в иных целях, кроме указанной
Лексема, которая непосредственно представляет некоторое значение
8. Составное предложение
Предложение, состоящее из последовательности предложений
9. Программный блок
Синтаксически определенное составное предложение, образующее область действия объявленных в нем объектов
10. Программный модуль
Языковая конструкция, используемая для включения в текст программы пояснений, не влияющих на ее выполнение
13. Описание среды
Языковая конструкция, используемая для описания свойств объектов, которые не являются частью программы, но существенны для ее выполнения
14. Объявление объекта
Языковая конструкция для создания языкового объекта
Соглашение о характеристике языкового объекта или выполняемом действии при отсутствии их явного описания
16. Неявное объявление
Объявление объекта, принимаемое по умолчанию
17. Предопределенный атрибут
Характеристика языкового объекта, введенная описанием языка программирования
18. Область действия объявления
Scope of a declaration
Часть текста программы, на который распространяется действие некоторого объявления объекта
19. Локальный объект
Языковый объект, объявленный в программном блоке и недоступный вне его
20. Глобальный объект
Языковый объект, доступный в программном блоке, но объявленный вне его в том же программном модуле
21. Внешний объект
Языковый объект, объявленный в некотором программном модуле и доступный вне его
22. Статическое свойство объекта
Свойство объекта, определяемое до выполнения программы
23. Динамическое свойство объекта
Свойство объекта, определяемое или доопределяемое в период выполнения программы
24. Ссылка (в языках программирования)
Объект при его использовании в качестве имени
СТРУКТУРА ДАННЫХ
25. Переменная (в языках программирования)
Языковый объект, который может принимать различные значения
26. Константа (в языках программирования)
Языковый объект, обладающий фиксированным значением, определяемым при создании этого объекта
27. Агрегат данных
Структурированная совокупность элементов данных
28. Формальный параметр
Идентификатор, который объявляется совместно со входом в процедуру и служит для связи с соответствующим фактическим параметром
29. Фактический параметр
Языковый объект, который появляется в вызове процедуры и связывается с соответствующим формальным параметром процедуры для использования при ее выполнении
ХАРАКТЕРИСТИКИ И СРЕДСТВА, ОТНОСЯЩИЕСЯ К ДАННЫМ
Множество значений вместе с множеством допустимых над ними операций
31. Закрытый тип данных
Тип данных с открытой спецификацией, но закрытой реализацией
32. Спецификация формата данных
Языковая конструкция, определяющая представление данных
33. Спецификация шаблона данных
Языковая конструкция, описывающая представление данных посредством образца, имеющего вид символьного литерала
34. Индексация (в языках программирования)
Механизм для доступа к компоненте массива данных посредством ссылки на массив и посредством одного или более выражений, значения которых определяют позицию компоненты массива
35. Косвенная ссылка
Ссылка, значением которой является ссылка
Механизм придания значения переменной в языке программирования
Присваивание начальных значений переменным программы
38. Автоматическое распределение памяти
Automatic storage allocation
Выделение памяти при входе в программный блок для локальных переменных и ее освобождение при выходе из этого блока
39. Агрегат подразумеваемого размера
Формальный параметр типа агрегат, диапазон изменения индексов которого определяется соответствующим фактическим параметром
40. Агрегат регулируемого размера
Формальный параметр типа агрегат с переменным диапазоном изменения индексов
ЭЛЕМЕНТЫ ОБРАБОТКИ
Языковая конструкция, определяющая некоторое значение в соответствии со значениями одного или более операндов
42. Процедура (в языках программирования)
Параметризуемый именованный программный блок, конкретное выполнение которого определяется вызовом процедуры
Процедура в языке программирования, при выполнении которой вырабатывается значение, связываемое с именем процедуры
44. Асинхронная процедура
Процедура в языке программирования, выполняемая логически параллельно с другими частями программы
45. Критическая секция
Часть асинхронной процедуры, которая не может выполняться параллельно с определенной частью той же или другой асинхронной процедуры
46. Метка (в языках программирования)
Языковая конструкция, употребляемая для именования предложения в программе
ХАРАКТЕРИСТИКИ И СРЕДСТВА, ОТНОСЯЩИЕСЯ К ЭЛЕМЕНТАМ ОБРАБОТКИ
47. Логический объект
Объект, рассматриваемый в аспекте определения алгоритмом или программой безотносительно к реализации с помощью технических средств
48. Физический объект
Объект, рассматриваемый в аспекте взаимодействия логического объекта с техническими средствами
49. Последовательность выполнения в программе
Порядок выполнения предложений или частей предложений программы
50. Безусловное предложение
Предложение, определяющее единственно возможную последовательность выполнения в программе
51. Условный оператор
Языковая конструкция, определяющая более одной последовательности выполнения в программе
52. Оператор цикла
Языковая конструкция, определяющая итерацию некоторой последовательности выполнения в программе
53. Вызов процедуры
Ссылка на процедуру с целью ее выполнения
54. Вход процедуры
Entry (of a procedure)
Языковая конструкция, с которой может быть начата некоторая последовательность выполнения процедуры
55. Передача параметров
Механизм установления соответствия между формальными и фактическими параметрами
56. Возврат из процедуры
Return (from a procedure)
Языковая конструкция, которая используется для завершения какой-либо последовательности выполнения процедуры
57. Побочный эффект
Изменение значений параметров или глобальных переменных при выполнении процедуры-функции
58. Оператор ветвления
Языковая конструкция, определяющая возможность выбора между различными последовательностями выполнения в программе
59. Исключительная ситуация
Совокупность определенных условий, возникновение которых приводит к нарушению предусмотренной последовательности выполнения в программе
60. Старшинство операций
Отношение между операциями, определяющее умалчиваемый порядок выполнения операций в выражениях
61. Преобразование типов
Преобразование значений некоторого типа данных к значениям другого типа
62. Активизация процедуры
Приведение процедуры в состояние готовности к выполнению при ее вызове
2. Для каждого понятия установлен один стандартизованный термин. Применение терминов — синонимов стандартизованного термина не допускается.
В ряде терминов в круглые скобки помещены слова, набранные светлым шрифтом, не являющиеся составной частью термина, а служащие лишь для уточнения области применения.
2.1. Для отдельных стандартизованных терминов в табл.1 приведены в качестве справочных краткие формы, которые разрешается применять в случаях, исключающих возможность их различного толкования.
2.2. Приведенные определения можно при необходимости изменять, вводя в них производные признаки, раскрывая значения используемых в них терминов, указывая объекты, входящие в объем определяемого понятия. Изменения не должны нарушать объем и содержание понятий, определенных в настоящем стандарте.
2.3. В табл.1 в качестве справочных приведены эквиваленты стандартизованных терминов на английском языке.
3. Алфавитные указатели содержащихся в стандарте терминов на русском и английском языках приведены в табл.2-3.
4. Стандартизованные термины набраны полужирным шрифтом, их краткая форма — светлым.
Обзор основных языков программирования
Обзор основных языков программирования
Как компьютер нас понимает
Чтобы заставить компьютерную программу сделать определённое действие, мы выбираем в её настройках необходимую опцию, ждём, пока программа выполнит обработку информации и наслаждаемся результатом. Но мало кто из нас задумывался, а почему нажатие определённой кнопки заставляет работать программы? Как она понимает, чего мы хотим? Всё дело в том, что любая программа – это сложный набор команд, которые задаются с использованием специальных «переводчиков» или компиляторов.
Их цель – преобразовать наши команды в понятный для компьютера язык. Принцип их работы заключается в том, что они задают некое число заранее определённых электрических разрядов, серия которых несёт за собой последствие в виде решения поставленной задачи. В обиходе эти компиляторы называют языками программирования, то есть языками, понятными и для программистов, и для компьютеров.
Развиваться именно как компьютерные программы эти языки начали в середине 60-х – начале 70х, когда были созданы первые настоящие компьютеры, способные исполнять несколько различных функций. Со временем количество компиляторов увеличивалось по мере того, как расширялись направления работы компьютеров. Например, некоторые из них использовались исключительно для создания операционных систем, другие – только для написания программного обеспечения разнообразных направлений.
Процесс написания элементарного калькулятора – уже достаточно сложная процедура, требующая определённых знаний и навыков. Мы не будем рассматривать конкретные примеры создания программ. Вместо этого сравним самые популярные из ныне существующих языков программирования, которые используют профессионалы. Их десять:
- C++ (1983)
- Python (1990)
- Visual Basic (1991)
- PHP (1994)
- Delphi (1995)
- Java (1995)
- JavaScript (1995)
- Ruby (1995)
- ActionScript (1998)
- Nemerle (2006)
Кратко рассмотрим их плюсы и минусы.
Обзор самых популярных программирования
1) С++
Это один из первых, и невероятно популярный до сих пор язык, которым просто обязан владеть каждый программист. Не обязательно начинать изучение программирования именно с него, но со временем С++ всё равно станет одним из наиболее используемых компиляторов. С момента своего создания этот язык прошёл несколько стандартизаций и обновлений, благодаря чему остаётся актуальным и в наше время. Основным его плюсом является полная универсальность – на С++ можно писать всё. Именно благодаря этому его так часто используют профессионалы. Также можно отметить сравнительную простоту компилятора – если вы уже овладели С, Python или Java, то работать с С++ для вас не составит труда.
Однако критиков у языка также достаточно. Основные их аргументы – это неудобный синтаксис и то, что иногда результатом работы с С++ является слишком длинный программный код, что влечёт за собой некоторые неудобства в дальнейшей работе с программой.
Правда, вторая проблема была частично решена в 1998 году, когда были введены дополнительные шаблоны компилятора. В целом, что бы ни говорили критики, а С++ вот уже почти 30 лет остаётся одним из наиболее популярных языков программирования в мире.
Python видео урок
2) Python
Питон – достаточно популярный в наше время язык, суть которого сводится к тому, чтобы как можно проще было создавать сложные программы. Созданный на основе более ранних языков, он впитал в себя все их наработки и является более совершенным. К тому же он постоянно обновляется, последняя версия была выпущена в начале 2012 года. Основные плюсы компилятора – минимализм, многофункциональность и простота. Но в свою очередь, за минимализм приходится платить низким быстродействием, а за минимализм – наличием множества ошибок в системном коде, некоторые из которых присутствуют и в самых последних версиях. Как бы то ни было, но и Python нашёл своих поклонников. Ознакомиться с языком можно здесь.
Visual Basic видео урок
3) Visual Basic
Этот продукт от Майкрософт знают все программисты, ведь большинство именно на нём познавало азы работы с компиляторами. Он прост, многофункционален и идеально подходит для быстрого создания прототипов программ. Кроме широких возможностей по созданию программного кода, также с его помощью можно конструировать пользовательский интерфейс программы. Именно ВБ чаще всего используют профессионалы из Майкрософт для создания своих программ. Недостатки у компилятор также есть. К ним относятся отсутствие указателей, низкоуровневый доступ к памяти компьютера. Также программа отличается невысокой скоростью работы и возможностью использования только на Windows и Mac OS X. Более подробно ознакомиться с Visual Basic можно на сайте https://ru.wikipedia.org/wiki/Visual_Basic
4) PHP
Это язык программирования, который чаще всего применяют специалисты для создания веб-страниц. В настоящее время его принимают и поддерживают большинство хостинг-провайдеров. Благодаря возможности применения на любой ОС, скорости выполнения, функциональности и простоте его используют практически все разработчики сайтов. Также с помощью PHP можно создавать графический интерфейс пользователя. Создатели языка заложили в него несколько пасхальных яиц. Например, если ввести в строку любой_сценарий.php?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 то на экране появится фотография (то, что на ней изображено, зависит от версии).
Из недостатков языка важно вспомнить то, что если вы написали код на более ранней версии, то на новой он, скорее всего, не откроется. Также в нём просто не предусмотрена возможность создания многопоточных программ. Узнать больше информации о языке можно на сайте www.php.net
Delphi видео урок
5) Delphi
Delphi – многофункциональный язык, созданный на основе Object Pascal. Данный язык является ещё одним из самых популярных языков из-за наличия огромного количества компиляторов и диалектов. Каждый программист использует именно тот диалект, который подходит для его основного направления в работе. В целом, Delphi – императивный, объектно-ориентированный язык. Чаще всего на этом языке создаются разнообразные программы. Так, именно с помощью Delphi создали Light Alloy, AIMP, The KMPlayer, Total Commander, QIP, графический интерфейс Skype и многое другое. Именно наличие множества диалектов является одновременно и достоинством, и недостатком языка, так как программу, написанную на одном из них, другой компилятор, скорее всего, не откроет. Сайт https://ru.wikipedia.org/wiki/Delphi позволит более подробно ознакомиться с этим языком.
Java видео урок
6) Java
Это ещё один известный язык, способный работать на любой платформе. Более того, сейчас большинство операционных систем просто обязаны включать его в свой состав, так как работа некоторых приложений без этого компилятора будет недостаточно результативной. Однако есть у языка и подводные камни. Так, программы, написанные на Java, имеют репутацию слишком медлительных и требующих больших объёмов оперативной памяти. Java имеет несколько модификаций (не диалектов, а именно разных видов), которые созданы для различных целей. Каждый из них имеет свои уникальные библиотеки данных и структуру, позволяющую более продуктивно работать над определённым направлением программирования. Больше информации на сайте http://www.oracle.com/technetwork/java/
JavaScript видео урок
7) JavaScript
JavaScript – необходимый атрибут большинства современных браузеров. Чаще всего цель этого языка – придать веб-страницам больше интерактивности. На его создание повлияли множество более ранних языков программирования, на основе которых он соединил многофункциональность и простоту. По крайней мере для опытных программистов. Область применения JavaScript необычайно широка – это и веб-приложения, и браузеры, и прикладное ПО, и офисные и серверные приложения. Широкую популярность также обеспечивают ему специальные библиотеки, позволяющие достичь высокого уровня абстракции. Из минусов JavaScript стоит отметить очень низкий уровень безопасности его приложений, а также массу ошибок в песочнице, браузере, плагинах и расширениях, с которыми хотя бы однажды сталкивался каждый. Но в то же время, совсем отказаться от этого языка пока что нельзя, ведь без него откажут в работе большинство интернет-браузеров. Более подробно на javascript.ru
Ruby видео урок
8) Ruby
Это кроссплатформенный и невероятно многофункциональный язык, полностью предназначенный для объектно-ориентированных программ. Синтаксис языка простой и лаконичный, без множества ненужных кодов. Также язык содержит в себе сборщик ненужного мусора, поддерживает блоки команд и замыкания с полной привязкой к переменным. У Руби довольно обширное количество разнообразных библиотек, каждая из которых применяется в определённых случаях, в зависимости от необходимости. Также особенностью этого скриптового языка является то, что программы, написанные на нём, могут в дальнейшем использовать его для расширения своих возможностей. На данный момент уже выпущено несколько версий языка, каждая из которых принесла что-то новое в принцип его работы. Кроме того, этот язык один из самых экономных по отношению к ресурсам компьютера, за что его так любят обычные программисты. Самая последняя из них – 1.9.3-p194, релиз которой состоялся 20 апреля 2012 года. На официальном сайте вы можете более подробно ознакомиться с достоинствами и недостатками этого языка www.ruby-lang.org
ActionScript видео урок
9) ActionScript
Этот язык также менее популярен среди обывателей из-за того, что с его помощью можно писать в основном объектно-ориентированные программы, даже чаще всего не программы, а Flash – приложения. Синтаксис и функциональность компилятора стандартны для подобного рода языков и заключаются в работе, запрограммированной лишь на указанный вид приложений. Плюсом этого языка является его многофункциональность по отношению к Flash. Как ни странно, но это же одновременно и его минус, так на нём больше нельзя написать практически ничего. Узнать больше о этом компиляторе можно на сайте actionscript.org
Nemerle видео урок
10) Nemerle
Это высокоуровневый гибридный язык, который сочетает в себе возможности как функционального, так и объектно-ориентированного программирования. Созданный всего несколько лет назад, он впитал в себя соответствующие наработки всех предыдущих поколений языков программирования, и, одновременно с этим, привнёс в создание программ кое-что новое – возможность метапрограммирования. Суть этого метода в создании программ, которые во время своей работы генерируют другие программы. То есть, можно сказать, что он сам создаёт языки программирования? И да, и нет. Он создаёт возможные сценарии для дальнейшего генерирования исполняемых файлов. В целом, Nemerle просто-напросто объединил в себе все самые лучшие и необходимые функции более ранних языков. В общем, вышло так, что наиболее новый язык имеет меньше всего недостатков. Больше информации на http://nemerle.org/About/.
Языков программирования в наше время великое множество. Мы рассмотрели лишь самые популярные из них. Каждый имеет свои недостатки и преимущества из-за того, что они ориентированы на различные сферы программной деятельности. Один отлично работает с браузерами, но совершенно не подходит для написания Flash, другой – совсем наоборот. Каждый программист начинает с самых простых из них и в конце обучения выбирает или тот, который больше всего подходит ему из-за направления его деятельности, и становится специалистом в этой области, или же продолжает понемногу использовать каждый из них.
Большинство из специалистов рекомендуют начинать обучение с Visual Basic, потом переходить на С++, а дальше выбирать наиболее интересный и удобный, на ваш взгляд, язык. Кроме того, не стоит забывать о том, что у большинства языков программирования есть ещё и свои диалекты, которые иногда сильно различаются между собой.
Стандарты языков программирования
Сегодня говорим о том, что такое язык программирования.
Языки программирования (ЯП) похожи на языки человеческого общения, но устроены проще. Выучить язык программирования можно за несколько месяцев. Опытные программисты могут изучить новый язык за несколько недель. В мире уже более 8000 языков программирования. Нет такого консенсуса, как «лучший язык». Хотя есть языки, которые дают фундаментальные знания, С++ например. И есть отслеживание популярности языков, в частности, TIOBE Index.
Ядро из двух десятков наиболее популярных языков состоит из: Java, C, Python, C++, Visual Basic .NET, JavaScript, C#, PHP, SQL, Objective-C, Assembly language, MATLAB, Perl, Delphi/Object Pascal, R, Ruby, Visual Basic, Go, Groovy, Swift. Есть еще 2-3 десятка довольно широко используемых языков, таких как Scala, Lua, Fortran, COBOL, Lisp, Prolog, Rust, Kotlin, Eglang, Haskell и др. Со временем разработчик знает и сочетает несколько языков для разных задач и платформ.
У языков программирования есть авторы, правила, спецификации, стандарт конкретного языка и разные реализации / воплощения стандарта. Реализации языка влияют на то, как разработчики пользуются им.
Языки программирования – по сути, инструмент сторителлинга. У вас есть идея, «сюжет», и на языке программирования вы пишете структурированное «произведение», которое компьютер сможет считать, интерпретировать и выполнить. То есть «оживить» исходный код в виде программы, сайта, приложения и т. д., где доступен ряд действий. (Если образно, то напоминает придумывание сюжета, работу над архитектурой истории, написание добротного сценария без ляпов, овладение специальными инструментами для съемки, сам съемочный процесс, монтаж и демонстрацию кино, причем интерактивного.)
На языках программирования пишут любые компьютерные программы. Языки программирования манипулируют структурами данных и управляют вычислениями, которые происходят в компьютере, пока работает программа.
Язык программирования – это набор правил, которые определяют, как написанная компьютерная программа выглядит и что компьютер может сделать под ее управлением. Программа представляет собой код, написанный по правилам конкретного языка программирования. Код, из которого состоит программа, называют «исходный код».
Язык программирования – это средство общения человека и компьютера. При этом код на языке программирования пишется так, чтобы он был понятен человеку. Один из критериев хорошего кода – программист читает его и понимает, что это, для чего нужно и как будет работать.
Сегодня код, написанный на популярных языках программирования, для удобства выглядит как текст, состоящий из строк на английском языке. Для того чтобы исходный код смог прочитать и выполнить компьютер, он «переводится». Об этом Almamat Blog расскажет в другом выпуске IT-ликбеза.
В спецификациях языка прописаны его синтаксис и семантика. Каждый язык программирования имеет свой словарь/алфавит. Цепочки и последовательности символов образуют предложения, построенные по правилам языка программирования, – это грамматика. Синтаксическая структура языка служит для определения смысла написанного кода.
Семантика языка программирования – это начальное смысловое значение слов и конструкций языка. Семантика – это смысл кода, его назначение, то, что должно получиться в результате запуска написанного кода.
Синтаксис языка программирования – это порядок слов, форма записи; правила построения сообщений, комбинирования символов и слов. Синтаксис ЯП проще, чем синтаксис человеческих языков общения.
Итак, в программировании слова с каким-то начальным смыслом комбинируются по правилам, чтобы придать действиям смысл.
1.6. СТАНДАРТЫ И ПРОГРАММИРОВАНИЕ
1.6. СТАНДАРТЫ И ПРОГРАММИРОВАНИЕ
Стандарты давно используются в технике и программировании. Создание сложной системы немыслимо без стандартов. Они нужны для борьбы с хаосом и неразберихой, но вместе с этим стандарт не должен быть слишком «узким» и мешать техническому прогрессу.
Государственные стандарты отслеживают тенденции развития программирования и дают обязательные рекомендации по их соблюдению. Помимо государственных стандартов (ГОСТ) действуют отраслевые стандарты (ОСТ), стандарты предприятий (СТП).
Группа стандартов ГОСТ «Единая система программной документации» (ЕСПД) претерпела мало изменений с момента ее создания, пережила несколько поколений ЭВМ и революционных изменений технологий разработки программ. При этом она до настоящего времени никогда не затрудняла новаций.
Помимо вышеизложенных стандартов де-юре имеются стандарты де-факто. Ряд стандартов устанавливается де-факто ведущими фирмами-разработчиками программ и вычислительной техники. Стандарты де-факто появляются на основе идей какой-то широко известной разработки. Выгодно делать продукты в стиле разработки какой-то фирмы, так как пользователи уже имеют навыки работы с меню в стиле «Lotus», электронными таблицами, текстовыми редакторами. Обычно стандартом де-факто определяются используемые операционные системы, трансляторы с языков программирования, организация файлов и средний уровень качества, достигаемый по окончании тестирования программ. Конкретному разработчику выгодно следовать таким стандартам.
В области программирования общепризнанной ведущей организацией по разработке стандартов является институт ANSI (Американский национальный институт стандартов). Данный институт является лидером по установке стандартов языков программирования, кодовых таблиц клавиш и символов, выводимых на экран, и еще многих других. Необходимо также отметить стандарты ISO.
К сожалению, самое благородное дело стандартизации — достижение всеобщей унификации и взаимозаменяемости — может также стать тормозом развития. Вводя новый стандарт, надо учитывать последствия ввода, особенно если стандарт является опережающим и опережает практику развития или если стандарт является слишком «узким» и тормозит эволюцию прогресса. Во всем мире руководствуются следующим отношением к стандартам: или полностью им следуй, или делай свой собственный стандарт. Стандарты дают дополнительные ограничения.
Программист должен уметь не только использовать готовые стандарты, но и разрабатывать новые. Так, например, правила однотипного оформления исходного текста программы определяются стандартом проекта, который может быть изменен при начале разработки нового проекта. Однако в течение выполнения одного проекта оформление всех частей программы должно быть однотипным. Поэтому зачастую перед началом нового проекта конкретным программистам следует разрабатывать свои стандарты, которые не нарушают ГОСТ, ОСТ и СТП и действуют в пределах конкретного проекта.