Из Википедии : В информатике выразительная сила (также называемая выразительностью или выразительностью) языка - это широта идей, которые можно представить и передать на этом языке. Чем выразительнее язык, тем больше разнообразия и количества идей, которые он может использовать для представления.
Итак, я согласен. «Как легко, полно и сочиняемо язык для вас, чтобы выразить свои намерения». : Полагаю, это мера выразительности.
ВОПРОС: Это подробность / лаконичность? Я имею в виду, если один язык может записать что-то более короткое, чем другой, означает ли это выразительность?
Нет. Например, является ли Brainfuck язык выразительным? Я так не думаю. Посмотрите на пример Hello World в Brainfuck:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
Или: hq9plus язык. Код Hello World:
H
ВОПРОС: Это сила языка? Пол Грэм говорит, что один язык более мощный, чем другой язык, в том смысле, что один язык может делать то, что другой язык не может сделать (например, LISP может делать что-то с макросом, что другой язык не может делать). 1030 *
Я не согласен с Полом. Как видно из приведенных выше примеров, язык hq9plus выполняет Hello World
с одной буквой: H
. Принимая во внимание, что большинство других языков будут делать это с гораздо большим количеством букв. Но вы можете создавать составной и легко читаемый код на других языках. Если hq9plus делает Hello World
с H
, значит ли это, что он мощный? Я верю нет.
ВОПРОС: Это просто облегчает жизнь? Регулярное выражение может быть одним из примеров.
Регексы великолепны, но иногда они теряют свою выразительную силу. Иногда это зависит от программиста.
ВОПРОС: Это другой способ решения той же проблемы: что-то вроде SQL для решения проблемы поиска?
Половина Да. SQL является декларативным и очень выразительным языком. Потому что базовые движки и технологии могут развиваться и изменяться без вас, чтобы изменить ваши SQL-запросы. Это делает это очень выразительным. Есть много запросов, которые работали на протяжении десятилетий, и основная технология баз данных изменилась. Но ваши запросы не должны. Я думаю, что это связано с силой его выразительности.
Я также считаю, что функциональные языки очень выразительны. Потому что вы описываете только свое намерение, а не свои hows , и базовые технологии всегда можно изменить и оптимизировать, но это не повредит вашему выразительному коду.
Пример:
// top 10 products with rating higher than 5
return products
.sort(p => p.rating)
.filter(p => p.rating > 5)
.map(p => p.title)
.take(10)
Выше программа выразительна, она передает ваши намерения. И, скорее всего, он не изменится, когда изменятся базовые механизмы.