Все есть выражение - PullRequest
       3

Все есть выражение

5 голосов
/ 07 сентября 2011

Я заметил, что многие языки, такие как Ruby и CofeeScript (хорошо, транскомпилятор), поддерживают все, что является выражением.

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

Было бы полезно, если бы в публикациях были четкие примеры, в которых сравнивались бы преимущества того, чтобы все было выражением, а не ну.

Примеры в CoffeeScript против Javascript были бы хорошими, но не обязательными.

Концепция определенно крутая, но я все еще немного неуверен, насколько революционной на самом деле является идея (очевидно, что революционностьнесколько мнение).

Спасибо!

Ответы [ 2 ]

4 голосов
/ 07 сентября 2011

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

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

В некоторых современных языках приняты концепции функционального программирования (например,C #, Python , Ruby).

Некоторые научные выводы о преимуществах функциональных практик:

Интересные статьи:

Что касается комментария о проблемах производительности, возможные издержки, связанные с выбором парадигмы, вероятно, незначительны.Даже в C большинство операторов оценивают как выражение , однако сравнение между скомпилированным языком (C) и интерпретируемым языком (CoffeeScript) довольно бесполезно.

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

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

0 голосов
/ 07 сентября 2011

Под «все есть выражение» я предполагаю, что вы имеете в виду то, что описано в http://jashkenas.github.com/coffee-script/

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...