Il me semble que les langages de programmation destinés à être utilisés en science et en ingénierie sont toujours étranges par rapport aux langages à usage général. Quelques exemples du haut de ma tête:
- Dans Matlab, chaque fonction doit être placée dans un fichier séparé
- Dans R, <- est l'opérateur d'assignation, par opposition à = dans presque toutes les autres langues
- Matlab, R, Julia et autres sont tous 1-indexés
- Matlab utilise% pour les commentaires, et non le standard # ou //
Bien sûr, ces langues ont toutes plusieurs caractéristiques de conception qui en fait les rendre plus faciles à utiliser pour des applications scientifiques, telles que la notation de la matrice plus naturelle. Pourtant, ils font tous inexplicablement tous ces choix bizarres qui ne facilitent rien et auraient facilement pu être évités si les concepteurs de langues avaient simplement choisi de faire ce que font 99% des autres langues. Est-ce la raison pour laquelle le fournisseur est bloqué? Un manque de contact avec la communauté plus large de développement de logiciels? Autre chose?
J'ai lu ce fil et je n'ai pas trouvé les explications satisfaisantes. Ce n'est pas parce que R a été conçu comme un langage scientifique qu'il doit ignorer complètement les conventions et utiliser <- au lieu de =.
la source
Réponses:
Et même si nous jugeons uniquement en fonction des normes informatiques ... Désolé, de quelles normes parlez-vous? Avez-vous essayé d'écrire un prog en APL ou SNOBOL? Ces deux langues sont, à mon humble avis, les plus puissants dans les domaines appropriés (comptage et chaînes). Mais la syntaxe est quelque chose de TRÈS étrange (et efficace) La lecture d'une ligne de code APL peut prendre des jours. D'un autre côté, une telle ligne est un morceau sérieux de SW. Vous retourneriez à Mathlab avec des larmes de soulagement.
Quant à "=", beaucoup de gens ont du mal à s'habituer que ce n'est pas l'égalité, mais l'affectation. BTW, en Pascal c'est l'égalité et l'affectation est ": =".
Et vous pensez vraiment que == pour l'égalité est plus naturel? Au contraire, mélanger = et == est l'erreur la PLUS courante en programmation C, cela arrive très souvent même dans les IDE contemporains, avec leur contrôle automatique.
À propos de l'indexation à partir de 1 - c'est le seul naturel. Quand vous étiez enfant, vous aviez appris des poèmes et des chansons, où vous comptiez: un, deux, trois ... Et non 0,1,2 ... En mathématiques à l'école, nous avons étudié que le comptage commence à 1 et que 0 n'appartient pas aux nombres naturels / comptés. Ce n'est qu'avec la définition des fonctions que viennent les indices non naturels. Après tout, le 0 a été inventé plusieurs milliers d'années après que notre ancêtre a levé un doigt.
0-start était plus simple à réaliser et s'est immédiatement mis à la pratique informatique après l'apparition de C. Mais dans Fortran, la première langue, l'indexation 1 est utilisée. La même chose avec d'autres langues de l'époque pré-industrielle.
Et oui, j'avais lu l'article de Dyjkstra sur la naturalité du comptage basé sur 0. Et totalement en désaccord avec son argumentation. C'est naturel pour les musiciens. Et même 0 passionnés qui créent les compilateurs C et Java, comptent les lignes du code À PARTIR DE 1!
la source
L'indexation à partir de 1 n'est pas étrange, elle est tout à fait normale et attendue, sauf pour les programmeurs , car ils ont été conditionnés à s'attendre à un comptage basé sur 0 par C (qui a été conditionné à partir des propriétés de l'architecture du processeur).
Les commentaires sont dénotés de très nombreuses manières différentes dans différentes langues; il n'y a pas de méthode standard, chaque langue choisit un symbole ou un digraphe qui n'est pas déjà pris.
L'affectation est également un concept étrange et incompréhensible, sauf pour les programmeurs ; la plupart des gens se moquent de savoir si c'est
=
ou:=
ou<-
, ils ont du mal à comprendre le sens (et pour eux, il est en fait préférable de ne pas l'utiliser=
, car cela souligne que l'affectation n'est pas l'égalité - l'obstacle le plus courant pour les non-programmeurs à comprendre le code).En bref, les langages de programmation destinés à des personnes autres que des programmeurs professionnels sont différents parce que les personnes qui les utilisent le souhaitent le plus de cette façon.
la source
Il y a trois problèmes:
Passons maintenant à vos points spécifiques:
Je ne connais pas Matlab, je ne peux donc pas commenter les exigences d'organisation des fichiers. Notez que Java souhaite que vous utilisiez un fichier par classe publique.
Dans R,
=
peut également être utilisé comme opérateur d'affectation. Notez qu'il a besoin de plusieurs opérateurs d'affectation<-
et<<-
de gérer son concept de portée (<<-
attribue à un symbole dans une portée extérieure au lieu de créer un nouveau symbole à l'intérieur d'une fonction). Les flèches peuvent être utilisées dans l'autre sens aussi, potentiellement rendre le code plus propre de:complex_calculation() -> x
.L'indexation basée sur 1 est la norme en mathématiques, ce avec quoi les utilisateurs de Matlab et de R sont plus à l'aise que C. Julia suit Matlab afin d'avoir une meilleure courbe d'apprentissage.
%
pour les commentaires est également utilisé dans TeX / LaTeX. Il#
s'agit uniquement d'une convention des langages de script Unix et de leurs descendants.Vous ignorez également que les «vrais» langages de programmation ont de nombreuses parties étranges. Pourquoi Scheme n'utilise-t-il pas
=
? Au lieu:Pourquoi C utilise-t-il
*
pour le déréférencement, alors qu'évidemment un curseur^x
est plus courant dans d'autres traditions?la source
Je suppose que cela dépend de votre exposition à d'autres langues. Du haut de ma tête:
la source
<!-- ... -->
. Le signe de pourcentage est utilisé pour le codage d'URL:http://example.com/()
devienthttp://example.com/%28%29
.