Язык программирования, ориентированный на выражения

Язык программирования, ориентированный на выражения, — это язык программирования , в котором каждая (или почти каждая) конструкция является выражением и, таким образом, возвращает значение. [1] Типичными исключениями являются определения макросов , команды препроцессора и объявления , которые языки, ориентированные на выражения, часто рассматривают как операторы .

Lisp [2] и ALGOL 68 — это языки, ориентированные на выражения. Pascal не является языком, ориентированным на выражения.

Все языки функционального программирования ориентированы на выражения. [3]

Критика и профилактика

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

Разработчики Ada и Java предотвращают этот тип ошибок, ограничивая управляющие выражения теми, которые оцениваются строго по булевому типу данных . [5] [6]

Разработчики Python реализовали присваивание как оператор, а не выражение, тем самым запретив вложение присваивания в любой другой оператор или выражение. [7] (До версии 3.8 были добавлены «выражения присваивания» с другим синтаксисом. [8] )

В некоторых языках, ориентированных на выражения, выражения, которые просто вызывают побочные эффекты , возвращают типы void .

Примеры

Смотрите также

Ссылки

  1. ^ "Глоссарий - Язык программирования Rust". web.mit.edu . Получено 2022-07-06 .
  2. ^ ab Syme, Don (2020-06-14). «Ранняя история F#». Труды ACM по языкам программирования . 4 (HOPL): 1– 58. doi : 10.1145/3386325 . ISSN  2475-1421.
  3. ^ "Программирование, ориентированное на выражения". Knoldus - Технические соображения . 2018-02-08 . Получено 2023-08-07 .
  4. ^ Соглашения о коде Java "10.4 Присвоение переменных"
  5. ^ Спецификация языка Java, издание Java SE 8 «14.9 Оператор if»
  6. ^ Знакомство с Адой
  7. ^ Справочник языка Python "6.2. Операторы присваивания"
  8. ^ "PEP 572: Выражения присваивания"
  9. ^ "Функции - язык программирования Rust". web.mit.edu . Получено 2022-07-06 .
  10. ^ "COS 326: Функциональное программирование". www.cs.princeton.edu . Получено 2022-07-06 .
Retrieved from "https://en.wikipedia.org/w/index.php?title=Expression-oriented_programming_language&oldid=1233570148"