Действительно ли Java является ортогональным?

Я задаюсь вопросом, является ли Java ортогональным или нет, и если да, то, которые являются его функциями, которые делают его ортогональным. Как можно определить, является ли язык ортогональным или нет? Например, я нашел на некотором веб-сайте, что C++ не является ортогональным, но никакие объяснения, почему нет. Что другие языки являются ортогональными? Помогите мне, потому что нет почти никакой информации в Интернете об этой теме.

Спасибо

11
задан bakkal 18 July 2010 в 07:28
поделиться

3 ответа

Искусство программирования UNIX, Глава 4. Модульность, ортогональность, стр. 89:

Ортогональность

Ортогональность - одна из самых важные свойства, которые могут помочь делают компактными даже сложные конструкции. В чисто ортогональная конструкция, операции не имеют побочных эффектов; каждое действие (будь то вызов API, макрос вызов или языковая операция ) меняет только одно без влияя на других. Есть один и только один способ изменить каждое свойство какой бы системы вы ни были контроль.

Прагматика языка программирования, Глава 6, стр. 228:

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

О Лиспе, 5.2. Ортогональность:

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


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

В Java вам нужно будет оценить, например, есть ли комбинация ключевых слов / конструкций, которые могут влиять друг на друга при одновременном использовании с идентификатором. Например, при применении public и static к методу они не мешают друг другу, поэтому эти два являются ортогональными (никаких побочных эффектов, кроме того, для чего предназначено ключевое слово)

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

25
ответ дан 3 December 2019 в 02:29
поделиться

Использование термина "ортогональный язык программирования" необычно. Обычно в информатике вы действительно говорите о ортогональных наборах инструкций . Однако, если мы хотим распространить значение на грамматику языка:

"... значение [язык] имеет относительно небольшое количество базовых конструкций и набор правил для объединения этих конструкций. Каждая конструкция имеет ассоциированный с ним тип, и нет никаких ограничений на эти типы .... " см. АЛГОЛ

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

Говоря более формально, ортогональный язык имел бы только ОДИН способ выполнить данную операцию. Неортогональные языки могут иметь несколько способов достичь того же эффекта.

Простейший пример:

for loop; vs. while loop;

for и while не ортогональны.

3
ответ дан 3 December 2019 в 02:29
поделиться

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

2
ответ дан 3 December 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: