Tu as l'air de considérer "Nazi du typage" comme un défaut. Permets moi de te contredire. Dans la plupart des cas, un typage fort apporte beaucoup plus d'avantages que d'inconvénients.
Le premier avantage d'un bon système de type est la sûreté. Un système de type sûr rejette les programmes absurdes et sémantiquement invalides dont l'évaluation échouairait. Donc, même si on ne peut pas garrantir que le programme termine bien et qu'il fasse ce qu'on veut qu'il fasse (c'est le problème de l'arrêt, indécidable de toute manière), on peut au moins essayer de garratir que le code va s'éxécuter. Ce n'est clairement pas le cas de C, ni de python. En C, les programmes invalides qui segfault compilent souvent trés bien. Je ne dis pas qu'Ocaml ne segfault jamais, mais il faut aller s'amuser avec des fonctions un peu avancés et pousser le systéme de type dans ses retranchements pour y arriver.
Un autre avantage du typage statique fort, c'est qu'il permet de compiler un code plus efficace. En effet, si on ne connait pas le type des expressions pour une opération polymorphe, on est obligé de savoir traiter tout les cas, même si ce n'est pas forcément nécessaire. Exemple, l'expression + polymorphe qui sait prendre en compte plusieurs types. En Ocaml, les opérateurs ne sont pas polymorphes, ce qui évite d'avoir implictement des comportements auquel le développeur n'a pas pensé, comme ajouter un float et un int.
Le typage augmente aussi la lisibilité du code. Dans un bon code ocaml, en lisant le nom d'une fonction et sa signature, on a souvent une bonne idée de ce qu'elle fait.
Maintenant, les inconvénients. Souvent, les gens qui aiment le typage dynamique prennent comme argument qu'il est ennuyeux de déclarer le type des variables/fonctions en permanence. Ocaml n'a pas vraiment se problème, encore une fois grace à son système de type. Le compilateur utilise un algorithme d'inférence des types, qui permet, à partir d'une expression, d'en déduire sont type de manière déterministe. Dans la majorité des cas, (à moins d'utiliser des choses comme les foncteurs, ou les paramètres optionnels), on n'ajoute pas d'annotation de type. C'est le compilateur qui se charge de le faire pour nous, et qui, en prime, vérifie que le code est cohérent. Comme précisé dans la dépêche, Ocaml n'est pas plus verbeux que python.
Pour finir, je pense qu'il faut considérer le typage comme une énorme aide au développeur plutôt que comme une contrainte.
[^] # Re: A mi chemin ?
Posté par Enjolras . En réponse à la dépêche OCaml 4.00.0 est sorti. Évalué à 7.
Tu as l'air de considérer "Nazi du typage" comme un défaut. Permets moi de te contredire. Dans la plupart des cas, un typage fort apporte beaucoup plus d'avantages que d'inconvénients.
Le premier avantage d'un bon système de type est la sûreté. Un système de type sûr rejette les programmes absurdes et sémantiquement invalides dont l'évaluation échouairait. Donc, même si on ne peut pas garrantir que le programme termine bien et qu'il fasse ce qu'on veut qu'il fasse (c'est le problème de l'arrêt, indécidable de toute manière), on peut au moins essayer de garratir que le code va s'éxécuter. Ce n'est clairement pas le cas de C, ni de python. En C, les programmes invalides qui segfault compilent souvent trés bien. Je ne dis pas qu'Ocaml ne segfault jamais, mais il faut aller s'amuser avec des fonctions un peu avancés et pousser le systéme de type dans ses retranchements pour y arriver.
Un autre avantage du typage statique fort, c'est qu'il permet de compiler un code plus efficace. En effet, si on ne connait pas le type des expressions pour une opération polymorphe, on est obligé de savoir traiter tout les cas, même si ce n'est pas forcément nécessaire. Exemple, l'expression + polymorphe qui sait prendre en compte plusieurs types. En Ocaml, les opérateurs ne sont pas polymorphes, ce qui évite d'avoir implictement des comportements auquel le développeur n'a pas pensé, comme ajouter un float et un int.
Le typage augmente aussi la lisibilité du code. Dans un bon code ocaml, en lisant le nom d'une fonction et sa signature, on a souvent une bonne idée de ce qu'elle fait.
Maintenant, les inconvénients. Souvent, les gens qui aiment le typage dynamique prennent comme argument qu'il est ennuyeux de déclarer le type des variables/fonctions en permanence. Ocaml n'a pas vraiment se problème, encore une fois grace à son système de type. Le compilateur utilise un algorithme d'inférence des types, qui permet, à partir d'une expression, d'en déduire sont type de manière déterministe. Dans la majorité des cas, (à moins d'utiliser des choses comme les foncteurs, ou les paramètres optionnels), on n'ajoute pas d'annotation de type. C'est le compilateur qui se charge de le faire pour nous, et qui, en prime, vérifie que le code est cohérent. Comme précisé dans la dépêche, Ocaml n'est pas plus verbeux que python.
Pour finir, je pense qu'il faut considérer le typage comme une énorme aide au développeur plutôt que comme une contrainte.