Взгляните на денотационную семантику и операционную семантику :
денотационная семантика - это подход к формализации значений языков программирования путем построения математических объектов (называемых обозначениями), которые описывают значения выражений из языков.
Операционная семантика для языка программирования описывает, как действительная программа интерпретируется как последовательности вычислительных шагов. Эти последовательности и являются смыслом программы. В контексте функциональных программ последний шаг в завершающей последовательности возвращает значение программы. (Как правило, для одной программы может быть много возвращаемых значений, потому что программа может быть недетерминированной, и даже для детерминированной программы может быть много последовательностей вычислений, поскольку семантика может не указывать точно, какая последовательность операций достигает этого значения.)
Как общее правило , чем динамичнее и абстрактнее синтаксис, семантика или реализация, тем сложнее язык (не для использования, как вы заявили).
Следовательно, Java - более сложный язык, чем C, потому что:
I На этом основании можно было бы утверждать, что Python проще, чем Java, потому что это объектная модель, хотя и сложная, но проста с точки зрения сведения к более простой форме. Легкость, с которой данный синтаксис может быть преобразован в более простую форму с точки зрения времени и вычислений, также может быть углом.
С другой стороны, такой язык, как lisp , некоторые утверждают, что сложно использовать , но очень просто. То же самое касается таких вещей, как Haskell.
Вы можете измерить сложность одним из следующих способов, но не полными:
Есть тонны способов . Вы можете измерить вычислительную сложность процесса компиляции для данного синтаксиса.
Не все эти примеры верны. Некоторые объектные модели очень сложные, но очень быстрые, потому что в них используется быстрый фундамент. Примером может служить «Я».
Лучшее средство измерения языка, которое я видел, - это вероятность того, что случайная строка будет действительной программой. Perl - это язык, который занимает высокое место в этой шкале, а Ada - довольно низко.
Что означает эта метрика - это совсем другой вопрос.
Я думаю, если вы посмотрите в области подтверждения правильности, вы найдете более подробный анализ семантической сложности. Такие системы, как CSP (и, в меньшей степени, Lambda Calculus), спроектированы так, чтобы их можно было обрабатывать с помощью анализа. Чем ближе язык к выражению лежащей в основе формальной системы, тем он проще с семантической точки зрения.
Контрпримером может быть что-то вроде языка программирования C. Это'
В версиях Maven до 2.1 нет средств для настройки клиента на тайм-аут, но вы можете настроить его на более редкую проверку обновлений, если вы установите политику обновления. Это частично решает проблему.
Например:
<repository>
<id>myrepo</id>
<url>http://maven.mycompany.com/m2</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
Допустимые значения:
Еще одно соображение - это программное обеспечение, которое вы используете для размещения вашего внутреннего репозитория. С помощью диспетчера репозитория, такого как Nexus , вы можете управлять всеми подключениями к внешним удаленным репозиториям через диспетчер и настраивать тайм-аут для этих удаленных подключений.
Еще одна вещь, на которую вы могли бы обратить внимание для тех языков, в которых они есть, - это относительные размеры их документов стандартов. Некоторые утверждают, что не все стандартные документы написаны на одном уровне.
Мне не ясно, что сложность - это даже хорошо определенный термин в применении к языку программирования.
Если под «объективным» вы подразумеваете «количественный», вы могли бы задать такие вопросы, как
Насколько велика однозначная грамматика?
Насколько велика рабочая грамматика yacc?
Поскольку почти ни в одном языке нет грамматики формальная семантика, количественные исследования провести сложно. Но вы можете спросить
За исключением любопытства, мне не ясно, стоит ли задавать этот вопрос - трудно представить полезные ответы.
Насколько сложен этот язык в использовании, в некоторой степени субъективно.
С другой стороны, на вопросы о том, насколько сложна семантика языка, можно ответить, но только по сравнению с другими языками. Однако они не обязательно полезны. Например, я бы дал Smalltalk семантическую сложность 1, а C ++ - 9. Однако я готов поспорить на все, что браузер, в котором вы это читаете, написан на C ++, а не на Smalltalk.
Если существует такая объективная мера, она, вероятно, почти бесполезна для оценки полезности или стоимости использования данного языка для данной цели. Это помогло бы вам исключить пробелы или ерунду, но это можно сделать так же легко, не тратя ресурсы на такую объективную оценку - субъективно наблюдая за исходным кодом и понимая, что вы никогда не захотите серьезно с ним работать.
У большинства языков будет много плюсов и минусов, которые вам нужно будет сопоставить с целью, которую вы пытаетесь достичь, и условиями, которые необходимо выполнить.