Langage développement

a marqué ce sujet comme résolu.

Réseau / api rest / machine learning / jeux vidéo : C’est vaste. Il y a des technos + adaptées que d’autres pour chaque domaine. Tu devrais te poser la question des technos pour chaque projet individuellement. Mais si c’est juste pour toucher un peu ta bille à tous ces domaines en apprenant un minimum de techno, le plus polyvalent est sûrement Python comme les autres l’ont dit. Pour les api rest et le machine learning c’est peut-être le meilleur (ou en tous cas le plus en vogue). Pour le réseau ça le fait, pour les jeux vidéo c’est déjà moins adapté mais ça peut passer. Y’a par ex la librairie Pygame. Pour chaque domaine je dirais que les technos privilégiées sont le C pour réseau (mais là encore réseau c’est vaste), Python/Golang/PHP pour les api, Python pour le machine learning, et des moteurs clé en main pour les jeux vidéo, type Unreal Engine.

Vous prendriez Scala, Elixir ou Haskell : Joker. Je connais très peu ces langages et je pense que c’est le cas pour pas mal de monde. Ils sont peut-être pas mauvais dans les domaines que tu as cités, mais tu n’es pas parti sur des langages qui viennent en premier à l’esprit des gens, tu risques de trouver peu de libs / doc / communauté. Pour moi c’est un peu des langages de niche, puissants pour les quelques trucs dont c’est leur spécialité, mais peu utilisés en dehors. Y’a peut-être un peu d’a priori dans ce que je viens de dire, à checker, mais par ex pour les jeux en Haskell ça risque d’être pas évident. Je crois avoir déjà vu un binding d’OpenGL pour ce langage, mais il est probablement pas ultra up to date et t’as peut-être trois pelés dans le monde qui jouent avec dont un qui le maintient à mi temps… :D

:/ Tu connais ces languages ? Ton stage dure combien de temps ? Ce sont des langages complexes qui nécessite une certaine maîtrise.

Je ne connais que Hasell des trois, mais j’ai fait un peu de Erlang donc je suppose que Elixir doit être à peut près pareil. Ce n’est pas simple ! Le scala tout le monde en parle, apparement, c’est un très bon language, on me l’a même vendu comme simple …

+0 -0

Si tu es forcé de choisir entre les trois, t’as deux options :

  • partir sur le moins exotique, qui est selon moi Scala
  • au contraire en profiter pour faire l’expérience de quelque chose de radicalement différent

Ce qui m’étonne c’est que des boîtes proposent des postes avec ces technos pour faire des APIs ou des jeux vidéo. C’est un peu surprenant.

Y’a peut-être un peu d’a priori dans ce que je viens de dire

Oui un peu, beaucoup ;)

peu de libs / doc / communauté

Pour Scala et Elixir tu n’auras certainement pas ce soucis. Pour Haskell je ne me prononce pas mais permets-moi d’en douter.

Pour moi dans la demande, y’a vraiment que "jeu vidéo" qui coince, déjà parce que c’est quand même très vaste, ensuite c’est presque ça que je qualifierais de "niche" (pas les langages).

Ensuite "programmation réseau" : est-ce-que tu pourrais détailler ce que tu entends vraiment par là. J’ai entendu pas mal de gens qui, par "programmation réseau" sous-entendaient "système distribué" hors là Elixir (et le couple Scala / Akka) deviennent beaucoup beaucoup plus intéressants. Qu’est-ce-que tu souhaites apprendre concrètement à travers la "programmation réseau" ?

Si effectivement y’a l’idée de "système distribué" et que le machine learning traîne pas loin (genre dans le même sujet de stage, par exemple), alors dans les choix imposés je choisirais Scala (pour Spark/SparkML en fait), mais là encore, y’a beaucoup de choses à apprendre au sujet de Spark, en plus de Scala…

Ensuite, oui il y a une lib pour manipuler Tensorflow en Scala, comme dans énormément de langages. Mais tu passeras beaucoup beaucoup plus de temps à apprendre les concepts de Tensorflow qu’un langage en lui-même et comme souvent dans ce genre d’APIs polyglottes, les APIs dans les différents langages finissent par se ressembler.

Python/Golang/PHP pour les api

Bof :\

Scala est vraiment pas mal du tout pour faire du REST asynchrone "industriel", notamment via Akka-Http. Le couple Elixir - Phoenix est sans doute beaucoup beaucoup plus facile d’accès.

Conseiller Go dans ce contexte j’ai vraiment du mal, t’as un truc précis en tête ?

et NB : j’ai vu des libs extrêmement élégantes pour faire du REST en Haskell, sans pourtant ne rien connaître au langage (ou presque).

Après, TensorX, au-delà du langage tu devrais vraiment choisir en fonction du sujet de stage en lui-même, la boîte, l’accompagnement qu’on te promet, le ressenti que tu en as. Pendant un stage tu vas te familiariser avec une techno, c’est vrai, mais c’est aussi quelque chose que tu pourra(i)s faire sur ton temps libre, dans un projet perso ou avec des camarades de promo, ou en contribuant à des projets Open Source.

A toi de voir si tu veux vraiment inscrire ton stage directement dans LE cursus que tu voudras suivre par la suite mais à ta place, je choisirais le stage en fonction de l’environnement qu’on te propose (le sujet de stage, l’encadrement, la société, etc.) plutôt que via le langage.

Prends-le comme une phase d’exploration, non déterminante pour le reste de ta carrière. (c’est difficile à imaginer quand on cherche un stage mais je te garantie que les 3/4 des gens que je côtoie quotidiennement ont fait des stages dans des domaines qui n’ont pas grand chose à voir avec ce qu’ils font aujourd’hui, ex. un mec qui développe en Kotlin pour Android en ayant fait un stage C embarqué, etc.).

+0 -0

Javier, ton post est une véritable pub pour Scala. :D J’ai été un peu méchant, c’est un langage utilisé, mais quand même pas au même point que ceux que j’ai cités, loin de là.

Python/Go/PHP sont je crois les plus utilisés pour faire des APIs. Par contre je n’ai pas forcément dit que c’était les meilleurs. J’ai oublié de citer Javascript qui est aussi de plus en plus populaire dans ce domaine. Go est en train de monter, contrairement à ce que tu as l’air de penser. Il est pas mal pour faire des microservices simples, performants et stables. Si tu veux un exemple des exemples de librairies : gin, go-swagger.

Concernant les libs pour faire du REST en Haskell, je ne doute pas de leur existence ou de leur élégance, mais je ne pense pas que si tu postes une question sur SO à propos d’une API en Haskell on te réponde dans l’heure. Tandis que par exemple en Python avec un framework connu comme Flask, ce sera très probablement le cas, et tu n’auras même pas besoin de poster étant donné la base d’infos énorme à disposition.

C’est quelque chose à prendre en compte dans le choix d’une techno. En général dans le cadre d’un projet tu n’es pas perfectionniste, tu veux juste que ça marche, que ça soit stable, que ça tienne la charge, et que ce soit facile à maintenir. Tu choisis plus sereinement une techno éprouvée, activement maintenue et qui a une communauté importante, pour laquelle tu n’auras pas de mal à recruter, qu’une techno dont certains ne tarissent pas d’éloges, peut-être meilleure techniquement, mais qui engage un investissement en temps d’apprentissage, pour un résultat incertain. D’autant que beaucoup de projets sont relativement modestes et tapent rarement les limites de leur techno, et n’ont donc pas besoin de heavy frameworks comme Akka.

Après sur un plan purement technique, c’est bien sûr toujours intéressant d’avoir de la diversité, et les technos les plus populaires ne sont pas forcément les mieux conçues. PHP est un très bon exemple. Peut-être qu’Elixir supplantera les langages d’aujourd’hui dans quelques années ? Qui sait.

Sinon, Haskell a une communauté loin d’être négligeable. En tout cas, je l’ai bien plus cotoyé que celle d’Elixir !

+1 -0

J’ai travaillé en Haskell l’année dernière sur un projet open-source.

Ça répond pas forcément à la question, mais à partir du moment où j’ai fais beaucoup plus de Haskell que de Go par exemple … Et de ma vie je n’ai jamais utilisé d’application Scala personnellement, le fait que ça fonction par VM me rebute un peu.

Bon après moi je réagissais juste à la remarque de Javier sur la présence d’une communauté Haskell.

+0 -0

Bon après moi je réagissais juste à la remarque de Javier sur la présence d’une communauté Haskell.

Mon message n’était sans doute pas clair. Ca voulait dire "Pour Elixir et Scala tu n’auras pas de soucis en termes de communauté. Je ne me prononce pas au sujet d’Haskell parce que je connais très peu, mais je serais extrêmement surpris que tu souffres du manque de doc / communauté".

J’ai du mal m’exprimer au global car :

Javier, ton post est une véritable pub pour Scala. :D

Absolument pas. En tl;dr :

  • Si système distribué + ML => Apache Spark(ML) a de belles APIs en Scala (mais il a des APIs en Java aussi). Et le plus gros sera dans l’apprentissage de l’API et des concepts derrière le framework beaucoup plus que dans l’apprentissage du langage en lui-même.
  • Si APIs REST : Elixir / Phoenix est très séduisant

J’ai pas poussé l’un plutôt que l’autre. J’ai joué avec les deux, j’ai trouvé des avantages aux deux. J’utilise(rai) les deux si tant est qu’ils soient très pertinents pour ce que je souhaite faire.

Pour ton laius sur toutes les autres technos : Go, Python/Flask : ouais ce sont de super combinaisons pour faire de l’API REST, aucun doute là-dessus. Simplement t’as lu la suite du thread ? En gros c’est Scala ou Elixir ou Haskell. Donc… Je veux bien qu’on digresse sur un sujet qui de toute façon n’a pas de sens (quelle techno dans quel contexte PRECIS ?), mais à part noyer l’OP, je vois pas trop l’intérêt.

+0 -0

Ben je répondais juste à ça :

Python/Golang/PHP pour les api

Bof :\

Scala est vraiment pas mal du tout pour faire du REST asynchrone "industriel", notamment via Akka-Http. Le couple Elixir - Phoenix est sans doute beaucoup beaucoup plus facile d’accès.

Conseiller Go dans ce contexte j’ai vraiment du mal, t’as un truc précis en tête ?

Javier

Effectivement maintenant on sait que ce débat est hors-sujet, mais il n’en est pas moins intéressant.

EDIT : Par contre du coup j’ai considéré tes infos sur Scala dans le cadre de ce débat plutôt que comme réponse à l’OP, d’où mon "C’est une bonne pub". My bad. ;)

+0 -0

Tiens, un papier de HN sur un sujet sensiblement proche. Franchement intéressant, ça permet de bien cerner certaines choses qui n’étaient pas évidentes en premier lieu.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte