Developpez.com

Le Club des Développeurs et IT Pro

Quelles expériences en programmation recommanderiez-vous ?

Partagez votre avis sur celles qui vous ont le plus passionné

Le 2014-01-20 14:43:15, par Stéphane le calme, Chroniqueur Actualités
Le nouvel an. L'occasion pour certains de prendre un second départ, pour d'autres de faire un rapide tour d'horizon sur les évènements qui les ont marqués au courant de l'année qui s'est achevée. Et si nous essayions quelque chose de plus innovant ? Par exemple de partager les expériences les plus intéressantes en programmation que nous ayons eu. Donnons une autre dimension à notre jeu et faisons fi des limites temporelles et ne nous attardons pas sur une année en particulier.

Pour vous donner le la, prenons en considération la liste ci-dessous :

  1. Erlang pour son paradigme concurrent : Erlang est devenu populaire dans la communauté des développeurs parce qu'il propose des structures efficaces pour minimiser la difficulté d'exécuter des threads simultanés. Les serveurs web, qui jonglent avec de nombreux utilisateurs en même temps, sont plus susceptibles de se comporter correctement s'ils sont écrits en Erlang, parce que le langage a été conçu pour aider les développeurs à prendre de bonnes décisions en limitant la façon dont leur programme est écrit. Erlang offre un ensemble de rails de sécurité dans sa conception pour éviter que les threads ne s'emmêlent. Le langage simplifie la création d'un cluster entreprise pour la gestion de nombreux utilisateurs ;
  2. la pile Web Node.js : de nombreux services de l'entreprise sont jugés sur la rapidité avec laquelle ils fournissent des données. Certains outils de pointe sont conçus pour leur vitesse. C'est l'une des caractéristiques qui a contribué à la popularité de Node.js. Associé à une base de données NoSQL, sa vitesse est décuplée. La paire rend possible la construction d'infrastructures web rapides sur de petites plateformes. Le problème avec node.js n'émane pas de sa performance mais du poids mis sur les épaules des développeurs. Les développeurs intelligents se doivent d'être prudents car l'ensemble du paquet va dans un processus. Si un utilisateur effectue une manipulation qui génère un bug dans votre code, l'ensemble du serveur Web pourrait planter. De bons programmeurs et des tests intensifs pourraient toutefois éviter cela ;
  3. les applications mobiles et web avec HTML5 : il existe des dizaines de nouveaux projets HTML5 qui gèrent de nombreux détails de base de la création d'un site Web ou d'une application de téléphonie mobile. Le code organise le contenu dans les pages et propose un mécanisme de transition dirigé par menus. Parmi les plus populaires on trouve jQuery Mobile, Sencha Touch et Titanium. Il faut noter qu'un certain nombre d'autres outils font également leur apparition. Parmi les CMS les plus populaires, nombreux sont ceux qui, comme WordPress ou Drupal, arborent des thèmes qui s'adaptent à l'environnement mobile et utilisent souvent une partie du même code. Il devient plus simple d'écrire du code ; les développeurs n'ont plus à se soucier des anciens hardware ou des anciennes versions d'un système d'exploitation donné. Les problèmes avec les frameworks HTML5 surviendront avec l'utilisation d'un navigateur ancien ou non conforme aux normes ;
  4. l'analyse des données avec R : les modèles statistiques à l'intérieur de grands logiciels d'analyse de données, par exemple, peuvent indiquer des modèles complexes qui profiteront de toute la puissance qu'un cluster d'ordinateurs modernes puisse offrir. Travailler avec la pointe des logiciels de statistiques signifie que vous pouvez faire une analyse plus approfondie et trouver des signaux où l'ancien code a juste vu un bruit. Partout où il y a des données, il y a une chance de trouver des idées significatives. Le langage R, distribué à travers un projet open source, est consacré à entretenir le noyau de ces logiciels. De nombreux développeurs commencent avec des IDE plus complets, comme R studio, qui regroupent des éditeurs et des fenêtres de sortie avec le moteur d'exécution ;
  5. exploiter la vitesse de NoSQL : à moins que cela ne soit un impératif, les programmeurs n'apprécieront probablement pas de commencer un projet de zéro. Raison pour laquelle de nouveaux outils offrant un certain nombre de fonctionnalités sont mis à leur disposition. De nombreuses bases de données NoSQL glissent sans effort dans le Cloud. La capacité à réagir à la vitesse de l'éclair et à grande échelle est une fonctionnalité à expérimenter. Cassandra, MongoDB, CouchDB et Riak peuvent être cités parmi les plus populaires de la vaste collection de projets NoSQL ;
  6. trouver des connexions à l'aide de graphes de bases de données : à l'instar de Neo4j, les graphes de bases de données sont une approche quelque peu déformée du concept des bases de données traditionnel. Ils permettent plus de flexibilité que la base de données classique puisqu'en plus des chiffres et des lettres qui peuvent être enregistrés dans les colonnes, vous avez la possibilité de créer des pointeurs entre les lignes qui formeront des réseaux. Si vous y stockez par exemple un réseau social, la base de données est prête à enregistrer qui est ami avec qui. Bien sûr après quelques manipulations il est possible de reproduire la même chose sur une base de données régulière. La puissance de la base de données graphique se fera ressentir lors de l'exécution des requêtes ;
  7. simplifier des structures avec Go : le langage mis au point par Google a une syntaxe qui semblera très familière aux développeurs C et Java, bien que relativement plus simple. Le code est compilé en utilisant des types définis mais peut être modifié lors de l'exécution. Il y a également un mécanisme très léger pour l'organisation des méthodes concurrentes, de sorte que vous pouvez écrire du code qui pourrait fonctionner en parallèle. Simplifier la structure facilite le travail d'équipe puisqu'il y a moins de temps passé à essayer de comprendre et plus de temps passé à la réalisation.


Source : infoword

Et vous ?

Quelles expériences de programmation recommanderiez-vous ?
  Discussion forum
27 commentaires
  • Traroth2
    Membre émérite
    Les trucs à tenter pour enrichir votre expérience pour 2014 :

    • Vert.x, un framework assez similaire à Node.js, mais écrit en Java. On peut écrire des applications en Java, mais aussi en Javascript, Python, Ruby, et CoffeeScript. Scala, Clojure, Ceylon et PHP, c'est pour bientôt. En fait, le framework est tellement polyglotte qu'on peut facilement mélanger différents langages dans une même application. Et il y a de nombreux autres avantages, en matière de montée en charge, par exemple
    • Javascript... Ca peut paraitre idiot, je sais. J'ai détesté ce langage pendant des années, comme beaucoup de gens. Essentiellement pour deux raisons : je le connaissais très mal, et il a énormément évolué depuis 10 ans. C'est aujourd'hui un langage d'une puissance et d'une richesse insoupçonnées.
    • Ca va, les conseils de lecture ? Bon, je vais faire comme si... Si vous vous intéressez à Javascript, lisez "Secrets of the Javascript Ninja", de John Resig, le créateur de JQuery, QUnit et Processing.js. Il part du constat que Javascript est un des langages les plus mal connus, et il fait un tour exhaustif de toutes les finesses qu'on peut y trouver. Et c'est super.
    • La gamme "seven in seven" chez Pragmatic Bookshelf. "Seven languages in seven weeks" et "Seven databases in seven weeks". Il y en a 2 autres qui sont disponibles en early access, que je ne connais pas, "Seven web frameworks in seven weeks" et "Seven concurrency models in seven weeks". Alors attention, c'est du lourd. Pas de présentation générale des technologies, pas de baratin, on entre directement dans le vif du sujet. C'est ardu et mieux vaut s'accrocher. Mais on en sort en ayant vraiment appris quelque chose. D'autant que les technologies étudiées ne sont pas ou pas encore trop mainstream (7 langages en 7 semaines avec Java, Javascript, PHP, C, C#, Objective C et C++, ça serait un peu... banal. C'est pourquoi l'auteur a privilégié des langages émergents pour ne pas dire décalés, avec un choix riche de paradigmes différents : Ruby, Io, Clojure, Scala, Prolog, Haskell, Erlang)
  • zaventem
    Membre expérimenté
    En -9-
    Arrêtez de courir continuellement derrière la dernière nouveauté et approfondir des bases solides dans des technologies éprouvées même si elles ne font pas le buzz.
  • DonQuiche
    Expert confirmé
    Envoyé par SylvainPV
    En -9-
    Lâcher son langage/framework favori depuis dix ans et essayer une nouvelle techno qui fait le buzz le temps d'un week-end. On adoptera ou on mettra tout à la poubelle derrière, mais au moins cela permet de sortir de son champ d'expérience et de sa zone de confiance pour découvrir de nouveaux modèles de conception et paradigmes.
    Justement je ne vois pas beaucoup de nouveauté : les technos d'aujourd'hui ressemblent fortement à celles d'hier et ce n'est pas un énième framework qui va me faire vibrer. Sans parler du fait que cette valse de technos jetables se déroule avant tout côté JS où trop souvent on reproduit péniblement ce qui a été fait ailleurs il y a dix ans, et notamment sur le desktop.

    Les vraies innovations qui me viennent en tête c'est la vague NoSQL, les travaux de Duffy sur des sémantiques concurrentes, F# et sa mise en oeuvre du système Hindley-Miller, Ceylon, les calculs dans le nuage, le calcul hétérogène, asm.js et NaCl, Midori, le big data, la robotique, etc.

    Mais un énième framework de plus ? Pfffffffffff ! La barbe !
  • Luckyluke34
    Membre émérite
    Envoyé par Stéphane le calme
    Quelles expériences en programmation recommanderiez-vous ?
    Celle-ci va sans doute faire grincer certaines dents

    Balayer devant sa porte. Donner une deuxième chance à une application legacy pourrie (on en a tous) en essayant juste d'améliorer le code et les pratiques : tests, builds, livraisons... au lieu de vouloir tout redévelopper dans le dernier langage/framework comme si ça allait tout résoudre. Nouvelle techno n'est pas magiquement synonyme de meilleure qualité/maintenabilité, surtout si on répète les mêmes erreurs qu'avec la techno précédente.

    Et au final, c'est plus gratifiant qu'il n'y parait
  • Philippe Bastiani
    Membre éprouvé
    En -8- s'initier à la programmation fonctionnelle. Non pas comme un substitut à la programmation impérative mais comme un complément à celle-ci !
  • LSMetag
    Expert confirmé
    Je rejoins assez Traroth2 :

    Javascript ou Dart seraient d'excellentes expériences pour beaucoup de développeurs.

    Le fait est que Javascript est très mal maîtrisé par l'essentiel des développeurs. Acquérir une certaine maîtrise de cette techno pourrait ouvrir pas mal de portes, tant au niveau qualité/diversité des projets que des emplois. Car question web, c'est incontournable (aussi important que HTML) et ça commence à fleurir niveau développement serveur (avec node.js par ex). Javascript est un langage qui ne cesse de s'étoffer (j'attends quand même la version 2.0 qui risque de changer bien des choses). L'utilisation de Frameworks comme AngularJS ou Polymer devient ensuite intéressante pour structurer le code JS, sans pour autant le "simplifier". Une fois les (innombrables) subtilités comprises, je pense que le développement et le débuggage ne seront plus aussi "prise de tête".

    Pour les accrocs de la POO, je conseille Dart en alternative. Ce n'est pas un Framework, donc on en apprend tout autant. On garde des concepts similaires au Javascript mais adaptés à la POO style Java/C#. C'est un langage compilé, ce qui peut aider les gens qui peinent à débugger Javascript à l'exécution. Avec la VM Dart les performances sont très élevées (reste à voir où et comment elle sera supportée dans les navigateurs Web), le Javascript généré est de très bonne qualité (contrairement aux divers Frameworks JS, la perte de performances par rapport au natif peut être totalement inexistante voire se transformer en gain selon les circonstances), et enfin, c'est également prévu pour être utilisé côté serveur, façon Node.JS. Angular et Polymer ont été portés pour Dart ce qui permet le même type de structuration.
    L'inconvénient, c'est que la techno est très jeune, que vous allez sûrement essuyer quelques plâtres et que ça va être à vous de l'imposer aux entreprises. Mais heureusement, l'équipe et la communautés sont très réactives et les mises à jour du SDK et de l'IDE sont très fréquentes.

    Les entreprises sont assez accrocs à des frameworks de "productivité" style JQuery et JQueryUI. Mais ne faites pas l'erreur de vous focaliser sur ces frameworks et de laisser de côté le langage. Vous aurez alors beaucoup de difficultés quand il faudra sortir du cadre d'utilisation prévu par ces Frameworks, résoudre des bugs, ou développer des solutions spécifiques où les performances et la réactivité seront primordiales.

    _________________________________________________________________
    En deuxième expérience, des bases de données NOSQL (MongoDB, RavenDB, BrightStarDB,...) peuvent être intéressantes quand le nombre de tables et de relations entre elles sont réduits, mais que le volume de données est très important. Les performances et la scalabilité deviennent alors supérieures à du relationnel.
  • souviron34
    Expert éminent sénior
    Envoyé par Luckyluke34
    Celle-ci va sans doute faire grincer certaines dents
    ...
    Et au final, c'est plus gratifiant qu'il n'y parait


    Sur le reste, je reste coi, je n'ai pas la moindre idée de ce qui est mentionné dans le post initial

    Donc ce ne serait certainement pas ce genre d'expériences que je recommanderais...

    Et ce sont d'ailleurs des trucs assez stupides, puisque liées à des langages...

    Les expériences que j'aurais tendance à privlégier aux fins de recommandations sont des expériences où soit on ne sait pas faire,, et il faut aller demander de l'aide, soit la solution miracle ne marche pas, et il faut trover pourquoi,, soit il faut mélanger beaucoup de choses, et en particulier des vieux codes avec des neufs...

    Mais surtout ce serait des expériences dans des projets divers et variés, et des environnements divers et variés : petites ou grosses équipes, peits projets et gros projets, projets industriels ou projets "inhouse", etc..
  • SylvainPV
    Rédacteur/Modérateur
    En -9-
    Lâcher son langage/framework favori depuis dix ans et essayer une nouvelle techno qui fait le buzz le temps d'un week-end. On adoptera ou on mettra tout à la poubelle derrière, mais au moins cela permet de sortir de son champ d'expérience et de sa zone de confiance pour découvrir de nouveaux modèles de conception et paradigmes. Pour obtenir une techno éprouvée, il faut lui laisser une chance de faire ses preuves.
  • SylvainPV
    Rédacteur/Modérateur
    Si Node.js est à éviter question performance, pourquoi cet article ?
    http://www.developpez.com/actu/65013...-l-entreprise/

    J'imagine qu'on peut toujours mieux faire en performance, mais de là à déconseiller très fortement...
  • xelab
    Membre expérimenté
    Envoyé par atha2
    Je déconseille très fortement (ou alors après s'être sérieusement informé). De ce que j'ai compris, Node.js est basé (architecturalement parlant) sur EventMachine, une API Ruby. Node en soit n'apporte pas grand chose (à part une meilleur visibilité de ce type d’architecture) mais aujourd'hui, EventMachine est obsolète (d'un point de vue performance, montée en charge...). Et si en Ruby, on peut remplacer EventMachine (il y a une couche d'abstraction intermédiaire entre le code de l'application et EventMachine), en Node.js, c'est tout simplement impossible !
    D'où tu sors ce "NodeJs basé sur EventMachine"? NodeJS n'a absolument pas besoin de Ruby pour tourner, et si j'en crois les benchmark, question performances mieux vaut faire tourner une appli écrite avec NodeJS qu'avec un framework comme Ruby On Rails ou Sinatra.