Что такое язык программирования?

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

«Формальная знаковая система, предназначенная для записи компьютерных программ. ЯП определяет набор лексических, синтаксических, семантических правил, задающих вид программы и действия, которые выполнит исполнитель (компьютер) под её управлением.»

«формальная знаковая система…» - определение для курса «Теория компиляторов»;

Лексика – часто умещается в одну страницу,

Синтаксис. Полная КС-грамматика для C++ занимает несколько печатных листов. Для программиста синтаксис – лишь малая часть языка.

Семантика:

i. Ключевая часть языка. «Смысл программы» == «Результат выполнения»; ii. Определяющая часть. Языки с разным синтаксисом, но одинаковой семантикой, по сути, не отличаются; iii. Наиболее изменяемая часть. Наследование. Move-семантика.

Язык – выразительные средства, которые использует программист.

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

a. Системное программирование, коммерческие приложения, искусственный интеллект, научные расчёты, скрипты, специализированные языки.

Критерии оценки ПО

a. Все хотят Быстро && Недорого && Качественно, b. Разные требования к срокам, стоимость ошибки, стоимость эксплуатации; c. Многие качества определяются не столько языком, сколько инфраструктурой: технологии, библиотеки, фреймворки, методология разработки.

Критерии оценки ЯП:

a. Читабельность: i. Читаем чаще, чем пишем; ii. Поиск ошибки; iii. Переиспользование кода; iv. Концепция Write-Only-Language. Языки J, APL. b. Скорость разработки определяют фреймворки и библиотеки; c. Надёжность определяется методологиями: i. Перепутать AND и OR можно в любом ЯП; ii. Unit-тесты; iii. Автотесты; iv. Code Review; v. Парное программирование. d. Стоимость: i. Стоимость инженеров (разработчиков и QA), ii. Обучение, iii. Стоимость среды разработки и коммуникации команды, iv. Стоимость выполнения, v. Стоимость ошибки. vi. Априори просуммировать и сравнить, не имея опыта подобной работы, невозможно.

Сравнения языков программирования – holywar

a. Лучший язык – тот, на котором ты напишешь быстрее и без ошибок; b. Скорость работы приложения вторична и может быть повышена за счёт конкретных оптимизаций.

Парадигма программирования:

a. Свод принципов и концепций, определяющих образ мыслей программиста, пишущего программу на данном языке. b. Не путать с парадигмами проектирования. Их всего 2: структурное и ООП.

c. Надпарадигмы: Императивное vs Декларативное. d. Императивные Парадигмы: i. Процедурное; • Структурное ii. Объектно-Ориентированное; • Прототипное наследование, • Аспекты, • Компоненты, • Агенты. e. Декларативные парадигмы i. Декларативное; ii. Функциональное программирование; iii. Логическое программирование • DSL для конкретного инструмента?

results matching ""

    No results matching ""