Je me demande si Java est orthogonal ou non, et si oui, qui sont ses caractéristiques qui le rendent orthogonal. Comment pouvez-vous déterminer si une langue est orthogonale ou non? Par exemple, j'ai trouvé sur certains sites Web que c ++ n'est pas orthogonal, mais aucune explication, pourquoi pas. Quelles autres langues sont orthogonales? S'il vous plaît aidez-moi, car il n'y a presque aucune information sur Internet sur ce sujet. P>
merci p>
5 Réponses :
L'orthogonalité est une caractéristique de votre conception indépendante de la langue. Bien sûr, une langue vous permet de concevoir une conception orthogonale pour votre système, mais vous ne devriez pas vous concentrer sur une langue spécifique pour que la conception de votre système soit aussi orthogonale que possible. P>
Bien que rares, les gens appliquent également le terme aux langues de programmation.
orthogonalité est l'un des plus
propriétés importantes qui peuvent aider
faire des conceptions encore complexes compactes. Dans
une conception purement orthogonale, des opérations
ne pas avoir d'effets secondaires; chaque action
(Que ce soit un appel API, une macro
Invocation ou une opération de langue Pragmatics linguistiques de programmation, chapitre 6, page 228: strong> p>
Une langue orthogonale est une langue dans laquelle
Vous pouvez exprimer beaucoup en combinant un
petit nombre d'opérateurs dans beaucoup de
différentes manières. P>
blockQuote>
Je pense qu'un langage de programmation orthogonal serait celui où chacune de ses caractéristiques Dans Java, vous devez évaluer par exemple s'il ya une combinaison de mots-clés / constructions qui pourraient s'affronter mutuellement lorsqu'ils sont utilisés simultanément sur un identifiant. Par exemple, lors de l'application de Vous devez faire cela à toutes ses fonctionnalités pour prouver l'orthogonalité. C'est une façon d'y aller. Je ne pense pas qu'il existe une coupe transparente est em> ou n'est pas em> orthogonal dans cette affaire non plus. P>
publique code> et
statique code> à une méthode, ils n'interfèrent pas les uns avec les autres, de sorte que ces deux sont orthogonaux (aucun effet secondaire à part ce que le mot clé est destiné à faire ) p>
Oui, je comprends l'orthogonalité en général, mais je ne peux pas donner une explication pourquoi C ++ est considéré comme à ne pas utiliser l'orthogonalité et comment pouvez-vous l'analyser. Je veux dire .. Je ne peux pas dire ça .. "Ouais .. Java est gentil de orthogonal parce que le public et le statique vont ensemble sans aucun problème". J'essaie de trouver quelque chose de plus général dans ces langues et je ne peux rien penser et il n'y a aucune information sur Internet non plus.
J'ai fourni que comme exemple, vous ne pouvez pas simplement choisir deux fonctionnalités, vous devez le faire à toutes ses fonctionnalités pour prouver l'orthogonalité. C'est une façon d'y aller. J'ai trouvé deux papiers sur Portal.acm.org, un sur la programmation générale des langues d'orthogonalité et une sur l'orthogonalité C ++. Je ne pense pas qu'il existe une coupe claire est i> ou n'est pas i> orthogonal dans cette affaire non plus.
Utiliser le terme langage de programmation orthogonal est inhabituel. En règle générale, en informatique, vous parlez vraiment de orthogonal instructions-ensembles . Cependant, si nous devons étendre le sens à la grammaire d'une langue:
"... [interprétation] a un nombre relativement petit de constructions de base et un ensemble de règles pour combiner ces constructions. Chaque Construire a un type associé à celui-ci et il n'y a pas de restrictions sur ces types .... " em> Voir Algol P> Ensuite, nous pouvons supposer que sinon toutes les instructions de la langue peuvent travailler sur tous les types de données produira une non-orthogonalité. Cela ne signifie toutefois pas que l'inverse est vrai, c'est-à-dire si toutes les instructions de langue fonctionnent sur tous les types de données, cela ne signifie pas nécessairement que la langue est orthogonale. P> plus formellement, une langue orthogonale aurait exactement un moyen de faire une opération donnée. Les langues non orthogonales auraient plus d'une façon d'atteindre le même effet. P> Exemple le plus simple: p> pour et pendant le non-orthogonal. < / p> p>
Ensuite, de nombreux programmeurs ignorent la différence sémantique entre et tandis que les boucles. Il s'agit d'un problème qui n'est pas directement lié à l'orthogonalité de la langue elle-même, mais dans une émission sous-jacente beaucoup plus grande, qui démontre un certain manque de compréhension des concepts abstraits de base.
Je dirais que tout en est "Super" à (en terminologie de l'OOP) ou "contient" pour (en termes d'ensembles) en ce que tout pour la boucle peut être exprimé de temps, mais pas tout pendant que des boucles peuvent être exprimées comme pour boucles. Comment cette incidence de l'orthogonalité? Je lis sur Wikipedia et, il semble que, comme il y a deux façons de faire pour les boucles ... Je ne sais pas.
En fait, cela est considéré comme une simplicité lorsque vous parlez d'évaluation linguistique
orthogonalité n'est pas vraiment une caractéristique linguistique en tant que telle, même si certaines langues ont des caractéristiques qui favorisent l'orthogonalité (telles que les annotations, l'AOP intégré, ..). En ce qui concerne l'orthogonalité à Java: J'ai écrit une petite étude de cas à ce sujet à l'aide de log4J à titre d'exemple: " orthogonalité par exemple " - Vous pourriez trouver cela utile. p>
manque d'orthogonalité en C: p>
void code> li>
- Les paramètres sont passés par la valeur mais la matrice est transmise par référence li>
ul>
Un langage de programmation est considéré orthogonal em> si: p>
-
Il existe un ensemble relativement petit de constructions primitives pouvant combiner à un nombre relativement petit de façons de créer des structures de données et de contrôle p> li>
-
Chaque structure possible est légale p> li>
ol>
Par exemple, une langue avec 4 types de données primitifs (int, flotteur, double, char) et deux
Les opérateurs de type (tableau et pointeur) peuvent créer un nombre relativement important de structures de données. P>
L'avantage de l'orthogonalité est donc de rendre la langue simple et régulière car il y a moins d'exceptions. P>
S'il vous plaît donner une explication directe ou un lien vers votre définition envisagée de orthogonal.
Orthogonalité est rarement (si jamais) un booléen ("est x orthogonal?") Mais une question de degré (généralement comparatif) ("x est plus orthogonal que Y.")
Mais les langues de programmation peuvent-elles également être linéaires?
Cette question devrait-elle être marquée des devoirs?
Hein, et ici, je pensais que Orrhogonal était un terme initié qui signifiait que le jeton était comme tirer des dents.