- tleb,
Bonjour à tous !
Le titre de ce sujet est plutôt étrange, car on sait tous que le language parfait n'existe pas, mais j'aimerais bien m'approcher de ce qui me plaît le plus (logique). C'est pour cela que je viens vers vous, pour savoir si vous pourriez m'aider.
Je fais principalement des serveurs HTTP, du web scraping ou des interfaces CLI et je n'ai jamais touché au fonctionnel. Avec Python, j'utilise de moins en moins les classes alors que j'en mettais partout en PHP. Je les trouve de moins en moins utile, autant avoir des fonctions et des structures de données. Je connais quelques languages (Python, PHP, JS+Node) et j'ai les notions de bases en C, Ruby et Go sauf que dans ces languages, aucun ne me convient pleinement. Donc voilà ma liste au père noël (si seulement il savait écrire un compilateur et créer une communauté…) :
Je veux :
- un language plutôt haut niveau (pas besoin de l'être autant que Python, mais pas trop bas non plus, je trouve Go limite). Je suis du même avis que le monsieur de ma signature : "A programming language is low level when its programs require attention to the irrelevant.".
- une syntaxe claire et sans bavure, pas des
$
ou des->
partout. J'apprécie bien les bloques de Go :
1 2 3 4 5 | func sum(x []int) int {} if cond {} for key, value := range b {} for {} for i := 0; i < 10; i++ {} |
- Pas de duck-typing.
1 2 3 4 5 6 7 8 | def foo(x): try: return 12.0 + x except TypeError: return 12.0 assert foo('') == 12.0 assert foo(True) == 13.0 |
Déjà avoir un bloque try/except, c'est pas joli, mais en plus il faut vérifier que x n'est pas un booléen ! Ce cas m'a cassé les pieds pendant un moment récemment, parce que je ne comprenais pas ce qu'il se passait. Une passe dans ptpython plus tard et j'avais compris que 12.0 + True == 13.0
, sans erreur.
Je ne sais pas comment cela s'appelle, mais j'ai vraiment aimé Go qui bloque à la compilation si un type d'une fonction n'est pas bonne. C'est le seul language que je connais qui fasse ça (même si je sais que c'est assez commun).
C'est tout ! Trois critères, que je n'ai pas trouvé réuni dans un seul language. Vous avez des idées ?
Je suis le seul à n'avoir pas trouvé un language qu'il lui convient ?
Je prends toute responsabilité si la discussion part en mon language c'est le meilleur, ma question incite à ce genre de réponse.