Python ou JavaScript

Bonjour
Je dois reimplementer des algos, précédemment écrits en PHP5, dans un autre langage de mon choix. Et j’hésite entre JavaScript (NodeJs + v8) et python.
Pour situer il est question de linguistique, etimologie, et des map/reduce, non blocking IO, prog et sql async.
Les 2 (+ libs oss) m’ont l’air capables des mêmes prouesses.
Python est sans doute plus utilisé dans les milieux universitaires et recherche.
Vaut il mieux que je choisisse le langage en fonction de ce qui convient le mieux au projet ou en fonction de celui avec lequel je suis le plus à l’aise (en l’occurrence JS) ?

Merci

1 « J'aime »

Salut,

C’est plus un problème stratégique qu’autre chose à mon avis.
Quel est le contexte du projet ?
Si tu es dans un environnement où tu as pas mal de devs, tu as sûrement plus de monde qui sauront faire du javascript.
Par contre, si tu es dans un environnement plus administrateurs, tu auras peut être plus facilement accès à des gens qui connaissent python.
Dans tous les cas, ça dépend vraiment du cadre dans lequel tu fais le projet.

Cheers

2 « J'aime »

Pour le moment je suis seul dev, avec une casquette CTO. A l’avenir il y a aura plus probablement des devs, mais pas dadmin à proprement parler puisque l’Infra est en Cloud.

Un autre critère pour aider ce choix :
Confort du langage VS choix des librairies dans le domaine métier

Salut,

Pour situer il est question de linguistique, etimologie, et des map/reduce, non blocking IO, prog et sql async.

Quand je lis ça, je vois l’avantage à Node.js.
Au passage Python n’est pas async par défaut mais il y a des libs qui le permettent.

Les 2 (+ libs oss) m’ont l’air capables des mêmes prouesses.

Non les 2 écosystèmes sont très différents, je te conseille de tester une journée avec l’un et une journée avec l’autre si tu peux te le permettre.

Niveau performance, Node.js l’emporte haut la main.

Python est sans doute plus utilisé dans les milieux universitaires et recherche.

Ce n’est pas une raison pertinente, les process et habitudes changent doucement dans les milieux universitaires et de la recherche.

Vaut il mieux que je choisisse le langage en fonction de ce qui convient le mieux au projet ou en fonction de celui avec lequel je suis le plus à l’aise (en l’occurrence JS) ?

Les 2 mon capitaine ! Un langage que tu n’aimes pas va te pourrir tes journées. Il faut trouver le juste milieux : confort, productivité, performance, maintenabilité (à mettre dans l’ordre suivant tes priorités).

Pense aussi au recrutement de devs supplémentaire.

Ayant une grosse préférence pour Node.js, mon avis est à prendre avec des pincettes.
Sinon tu as regardé du coté de GO ? GO peut répondre à tes critères aussi.

1 « J'aime »

Niveau performance, Node.js l’emporte haut la main.

Cette affirmation est à mon avis erronée. Node.js n’est pas toujours une flèche, des retours d’expériences que j’ai eu sur des thématiques comme la décompression ou le parsing de gros CSV, Python à l’avantage. Je ne parlerai même pas de la qualité des libs Node.js qui laisse souvent à désirer.

Même sur l’aspect async, de grosses boites ont préférées au final passer de Node.js vers Go.

Au bilan, le plus gros avantage de node.js est de pouvoir uniformiser son stack technique en ayant un seul langage pour le développement front, backend et mobile (react native).

Pour le moment je suis seul dev, avec une casquette CTO. A l’avenir il y a aura plus probablement des devs, mais pas dadmin à proprement parler puisque l’Infra est en Cloud.

Le métier de sysadmin a évolué, on parle de nos jours de culture devops mais cela ne veut pas dire que ces besoins n’existent plus dans un environnement “cloud”.

Infrastructure as code, provisionning, sécurité, optimisation d’architecture/plateforme, … tout cela n’est pas occulté par le cloud.

On est même de plus en plus impliqués dans les développements pour apporter une expertise spécifique aux applications fonctionnant sur le cloud.

1 « J'aime »

[quote=“Nicolab, post:5, topic:2155”]
Pour situer il est question de linguistique, etimologie, et des map/reduce, non blocking IO, prog et sql async.[/quote]
Je pense que l’écosystème Python est parfait pour ça.
Il y a beaucoup de scientifiques qui font du Python, dont ceux du LHC.
Ils savent prendre des données (massives), les nettoyer, les analyser, ressortir des stats/graphes.

Les spécialités représentées sont souvent physique, chimie, biologie, traitement du langage.
Tu trouveras certainement, non seulement les bonnes libs, mais les experts et même parfois des datasets nettoyés, des jeux de test, des discussions sur les problèmes inhérents au secteur.

Bref, en ciblant sur Python tu apprendras (ou compareras, ou renforceras) un peu de ton métier en prime. Avec de la chance tu pourras même trouver des algos prêts à l’emploi ou de futurs collaborateurs. En quittant Python tu retrouveras sûrement des map/reduce et tu pourras sûrement reprendre des datasets, mais il y a quand même des avantages absolument pas techniques que tu “perds” en comparaison.

Et je dis ça en étant un fervent Rubyiste ! (le frère ennemi de Python)

@abelar_s Je ne suis pas l’auteur de ta citation :)

Sans compter les nombreux benchmarks publiés sur le Web où l’on voit clairement l’avantage sur Node pour les perf, j’ai remarqué un avantage significatif pour Node (en moyenne 3 fois plus rapide) par rapport à Python. Y compris pour du parsing mais il y a surement des exceptions suivant l’implémentation.

Go est statiquement typé, compilé, meilleure perf que Node, plus simple à déployer et force à structurer son code. A mon avis c’est davantage pour ces raisons…

On a eu le cas de figure dans mon entreprise où une équipe s’est amusée à coder un ETL en Node et je peux te dire que même en testant plusieurs libs, les performances n’étaient pas aussi bonnes qu’en Python. Je parle là strictement du parsing et pas de la gestion de requêtes concurrentes.

Après bien entendu, il faut voir les besoins exactes ici, si ça se trouve il n’a pas besoin d’avoir le temps de réponse le plus rapide possible ou il a besoin de gérer un fort trafic (concurrence).

Là je ne peux qu’être de ton avis, Go n’offre que des avantages à Node.js et c’est bien pour cela que je n’ai jamais pris le temps de me former à Node.js. Pour mon métier d’ingénieur système, j’ai préféré tabler sur le trio Python, Ruby et Go.

Tout à fait.

C’est très catégorique :)
Le bon outil pour la bonne tâche. L’écosystème, la productivité et la simplicité je les place dans Node. Le reste dans Go.
Le but étant d’être bien avec sa stack, c’est le principal. Pour l’instant je suis très bien sur le backend avec Node, Go et BASH.

Merci pour tous ces échanges !
NodeJs est plus naturellement asynchrone et je connais mieux que Python.
L’architecture de l’application sera en micro services pour que les prochains algo puisse être codé aussi bien en Node ou autre.

D’ailleurs avez vous des bonnes ressources à partager à propos d’implémentation de microservices ? Je vois bien en théorie mais jamais pratiqué. La comme ça je le vois comme une constellation de web services indépendants, mais dans les faits ça me semble réducteur.

1 « J'aime »
Human Coders - Le centre de formation recommandé par les développeur·se·s pour les développeur·se·s