18 points par xguru 2023-05-23 | 8 commentaires | Partager sur WhatsApp
  • En commençant à utiliser Rust, l’auteur a adopté dans sa manière de coder en Python quelques concepts issus de Rust
  • Utiliser autant que possible les type hints
  • Des dataclasses plutôt que des tuples/dictionnaires
  • Types de données algébriques (ADT)
  • Motif newtype
  • Encoder les invariants à l’aide des types
  • Boîtes englobantes fortement typées

8 commentaires

 
iolothebard 2023-05-23

Dans ce cas, à quoi bon utiliser Python…
(feat. dans ce cas, à quoi bon utiliser Node.js)

 
kherootz 2023-05-23

On dirait qu’il n’y a guère que les types ; est-ce vraiment comparable à Rust ?

 
jangsc0000 2023-05-23

Si l’on compte écrire du Python comme du Rust, ne vaudrait-il pas mieux utiliser Rust tout simplement ?..

 
cosine20 2023-05-24

Peut-on utiliser Tensorflow et PyTorch avec Rust ? Même si c’est possible, rien ne dit que l’on pourra aussi utiliser toutes les bibliothèques qui s’y accrochent. C’est une façon de penser beaucoup trop unidimensionnelle.

 
daejin 2023-05-23

Je pense qu’utiliser les bonnes caractéristiques (ou concepts) d’un langage et utiliser directement ce langage sont deux choses différentes selon le contexte. Même si l’on utilise très efficacement certaines spécificités des langages fonctionnels comme Lisp ou Haskell en JavaScript, cela ne veut pas dire qu’on puisse utiliser Lisp là où l’on utilise JavaScript.

 
winterjung 2023-05-23

Selon les cas, il faut choisir au cas par cas, mais ce sont globalement des approches que j’aurais tendance à recommander.

 
bus710 2023-05-23

Je ne connais pas très bien Python...
Si on fait comme ça, est-ce qu’il n’y aura pas beaucoup d’overhead ?

 
lordang 2023-05-23

Dans l’ensemble, le texte insiste beaucoup sur l’utilisation des type hints, mais cela ne se fait pas à l’exécution, donc ça n’a rien à voir avec les performances. Pour les vérifications de type comme isinstance, c’est probablement un peu plus coûteux que de ne rien faire du tout, mais il me semble que c’est mis en cache en interne. Dans une boucle énorme, il peut quand même y avoir une différence.