Выразительная сила определяется Википедией как:
Давайте перечитаем эту страницу. Прежде всего следует отметить, что он говорит «язык», а не «язык программирования», и большинство его примеров не являются языками программирования, например, первый приведенный пример - это сравнение OWL2 EL и OWL2 RL, которые являются онтологией языки.
Можно применить эту концепцию к языкам программирования, но также к языкам соответствия шаблонам, языкам разметки, языкам запросов, языковым таблицам визуальных стилей, регулярным выражениям (и всем регулярным языкам, на которые они ссылаются) и так далее. Можно даже сослаться на выразительную силу естественных языков, таких как английский, что часто делается очень неформально, но с большей серьезностью при рассмотрении проблем, связанных с обработкой естественного языка.
Относятся ли «идеи» к вещам (операциям, структурам, алгоритмам и т. Д.?), Которые мы можем передать машине? Или это относится к «человеческим» понятиям, которые можно уловить и передать с помощью языка другим людям?
Это относится к тому, что можно выразить на этом языке, рассматривая его как нечто само по себе.
Например, (я буду использовать javascript повсеместно для моих примеров, потому что ваш вопрос указывает, что это один из языков, которые вы знаете), рассмотрим выражение javascript:
var x = 3 + 4;
Это означает, что вычисляется сумма значений 3 и 4 и значение, связанное с меткой x
в заданной области пространства имен.
Если мы уничтожим все компьютеры в мире и напишем этот код на листке бумаги, то останется, что в javascript он все еще имеет то же значение; мы не смогли бы запустить такой код ни на чем, но абстрактное определение языка - это то, о чем мы могли бы поговорить.
Это может показаться педантичным, но на самом деле очень важно, что языки - это вещи, которые можно рассуждать абстрактно, без учета реальных компьютеров. С одной стороны, люди, рассуждающие о теоретических положениях компьютерных языков, которые еще не были реализованы на практике, являются одной из вещей, которая привела нас туда, где мы находимся сегодня; компьютеры нуждаются в информатике, но информатика не нуждается в компьютерах, просто идея вычислений.
Конечно, мы используем компьютеры в реальном мире, и в наши дни многие люди используют их на практике, а не несколько специалистов, обсуждающих их в теории. Страница, на которую вы ссылаетесь, говорит:
Термин «выразительная сила» может использоваться в широком смысле. Это может означать меру идей, выражаемых на этом языке:
Первый смысл доминирует в областях математики и логики, которые имеют дело с формальным описанием языков и их значения, таких как теория формального языка, математическая логика и алгебра процессов.
В неформальных дискуссиях термин часто относится ко второму смыслу или обоим. Это часто бывает при обсуждении языков программирования. Были предприняты усилия, чтобы формализовать эти неформальные использования термина
Из этих двух использований этого термина первое практическое воздействие относится исключительно к тому, что может быть передано на компьютер.
Второй относится больше к человеческому пониманию как в чтении, так и в письме, хотя степень, в которой он это делает, сильно различается в зависимости от использования, поскольку они неформальны и как таковые не определены строго.
Например, если бы мы взяли язык, подобный JavaScript, и наложили странное ограничение на имена переменных, например, переменная должна представлять собой 8-значное число, которому предшествует подчеркивание, совпадение /^_[0-9]{8}$/
, потеряли бы мы выразительную силу?
По формальному определению мы не утратили выразительной силы: мы ограничены 100 000 000 переменных, но если бы нам действительно было нужно, мы могли бы обойти это, создав объекты для хранения большего количества переменных во вновь созданном пространстве имен. Таким образом, любая программа, написанная сегодня на javascript, может быть переписана в этой новой форме, поэтому они одинаково выразительны.
По неофициальному определению, мы потеряли часть, но насколько многое зависит от того, насколько неформальным мы являемся, что будет меняться, потому что опять же вы не можете сказать, что является «правилом» использования информации. Можно сказать, что мы потеряли крошечную сумму, потому что программы с более чем 100 000 000 переменных в одном и том же пространстве имен должны быть переписаны, а не просто заменены. Еще более неформальное использование снова будет относиться к умственному влиянию таких неуклюжих переменных имен на человека в целом.
Стоит также отметить, что люди неформально рассматривают вещи, которые не являются строго частью языка вообще. Рассмотрим изменения в Javascript от его создания до сегодняшнего дня.
По наиболее формальному определению, выразительность практически не изменилась; В конце концов, для начала это был полный Тьюринг.
По более неформальному определению, оно стало значительно более выразительным в некоторых вещах, таких как манипулирование массивами, обработка исключений и (возможно, больше всего) в включении регулярных выражений. Они не делают ничего, что не могло быть сделано в javascript раньше, хотя они часто могут делать что-то в несколько строк и время выполнения в секунду, что потребовало бы килобайт кода для записи в javascript1.0 и долгое время для запуска.
По гораздо более неформальному определению, опять же, по сравнению с первым использованием javascript в браузерах (возможность изменять значения входных данных формы, в document.write
то время как страница сначала анализируется и перемещается на новое место или возвращается назад или вперед в истории, но довольно больше ничего) к тому, что сегодня (в состоянии изменить практически все на странице, в том числе на основе данных от серверных вызовов), абсолютно необъятно, хотя большая часть этого относится не к javascript, а к объектным моделям и API, сделанным доступны, а не язык (например, vbscript в IE извлекли выгоду из этих изменений в равной степени).
На мой взгляд, последнее использование настолько неформально, что не совсем правильно, но это проблема неформальных определений.
По формальному определению, это действительно не стало более выразительным вообще.