{"id":1003,"date":"2011-10-13T10:18:35","date_gmt":"2011-10-13T09:18:35","guid":{"rendered":"http:\/\/www.alpesjug.fr\/?p=1003"},"modified":"2011-10-17T11:22:31","modified_gmt":"2011-10-17T10:22:31","slug":"compte-rendu-de-la-soiree-scala-avec-bruce-eckel","status":"publish","type":"post","link":"https:\/\/www.alpesjug.fr\/?p=1003","title":{"rendered":"Compte rendu de la soir\u00e9e Scala avec Bruce Eckel"},"content":{"rendered":"<p>Hier soir Bruce Eckel nous a pr\u00e9sent\u00e9 sa vision du langage Scala.<br \/>\nIl constate que Scala est g\u00e9n\u00e9ralement mal enseign\u00e9. Il co-\u00e9crit donc un livre pour d\u00e9butant : <strong>\u00ab\u00a0Scala comme premier langage de programmation\u00a0\u00bb<\/strong>.<\/p>\n<p>Scala a la r\u00e9putation d&rsquo;\u00eatre un langage compliqu\u00e9 et difficile. C&rsquo;\u00e9tait donc int\u00e9ressant de voir l&rsquo;approche diff\u00e9rente, surtout venant d&rsquo;un p\u00e9dagogue de renom.<br \/>\nAu d\u00e9but, Bruce trouvait Scala trop compliqu\u00e9 lui aussi. Mais il est arriv\u00e9 \u00e0 la conclusion que les \u00ab\u00a0early adopters\u00a0\u00bb voulaient faire la preuve de leur intelligence en \u00e9crivant du code profitant de toutes les libert\u00e9s syntaxiques du langage et tirant profit au maximum de sa puissance. Ce sont ces exemples d\u00e9licats \u00e0 relire et \u00e0 comprendre qui ont donn\u00e9 une image fauss\u00e9e du langage.<\/p>\n<p>Il nous a ensuite expliqu\u00e9 pourquoi il pense que Scala est en fait <strong>beaucoup plus simple<\/strong> que Java ou C++ pour un d\u00e9butant :<\/p>\n<ul id=\"internal-source-marker_0.21764790325036154\">\n<li>\u00ab\u00a0Hello world\u00a0\u00bb plus simple:on peut commencer \u00e0 coder sans la notion de classe, d&rsquo;import, &#8230;<\/li>\n<li>Possibilit\u00e9 de tester des bouts de code directement dans le REPL Scala (pas de compilation, feedback imm\u00e9diat)<\/li>\n<li>Possibilit\u00e9 d&rsquo;\u00e9crire des scripts  (bouts de code sans d\u00e9finir de classe)<\/li>\n<li>Pas besoin de d\u00e9clarer tous les types (inf\u00e9rence de type)<\/li>\n<li>Les g\u00e9n\u00e9riques sont plus simples \u00e0 appr\u00e9hender qu\u2019en Java<\/li>\n<\/ul>\n<p>Et surtout la syntaxe est plus l\u00e9g\u00e8re qu&rsquo;en Java\/C++ et simplifie grandement les choses en \u00e9liminant tout le code de c\u00e9r\u00e9monie.<br \/>\nIl a ensuite attaqu\u00e9 un cours tr\u00e8s didactique, en commen\u00e7ant par les d\u00e9clarations de variables et fonctions, montrant notamment la <strong>r\u00e9gularit\u00e9 <\/strong>dans la d\u00e9claration de type \u00ab\u00a0: NomDuType\u00a0\u00bb dans les deux cas.<br \/>\nEnsuite il pr\u00e9sente les <em>Case Class<\/em> avant les classes. En effet, elles sont plus simple et bien pratique. Il introduit au passage le <strong>pattern matching<\/strong> diantrement puissant. Le focus est d\u00e9finitivement sur les aspects haut niveau, on ne s&rsquo;encombre pas de savoir comment ca marche sous le capot.<\/p>\n<p>Puis il parle des <em>parameterized class<\/em> et \u00e9voque la variance \/ contra-variance. Ces concepts int\u00e9resseront les cr\u00e9ateurs de librairies. Mais l&rsquo;utilisateur b\u00e9n\u00e9ficiera de leur puissance, sans subir leur complexit\u00e9.<\/p>\n<p>Le type \u00ab\u00a0Any\u00a0\u00bb permet de souligner la <strong>r\u00e9gularit\u00e9 <\/strong>des types dans Scala. Il n&rsquo;y a pas de cas particulier \u00e0 g\u00e9rer.<\/p>\n<p>Les slides tr\u00e8s clairs montraient comment on peut faire \u00e9voluer le code pour profiter des raccourcis syntaxiques. Si au d\u00e9part Bruce refusait de montrer ce code il en parle finalement car il sait bien que t\u00f4t ou tard un d\u00e9veloppeur se retrouvera face \u00e0 un code ainsi \u00e9crit.<br \/>\nOn s&rsquo;attarde donc sur les probl\u00e8mes de style, la tentation du <em>\u00ab\u00a0one-liner\u00a0\u00bb<\/em>, et l&rsquo;aspect fonctionnel avec <em>\u00ab\u00a0yield\u00a0\u00bb<\/em>. Ce qui au passage m&rsquo;aura enfin permis de comprendre cette syntaxe.<br \/>\nTout au long de la pr\u00e9sentation, Bruce a bien insist\u00e9 sur la n\u00e9cessit\u00e9 de d\u00e9finir des r\u00e8gles quant \u00e0 la syntaxe afin d&rsquo;avoir un code coh\u00e9rent et lisible. Ces r\u00e8gles doivent \u00eatre valid\u00e9es lors de code review, la meilleure mani\u00e8re d&rsquo;\u00e9viter du code de mauvaise qualit\u00e9.<\/p>\n<p>Pour finir il \u00e9voque les acteurs et le parall\u00e9lisme. L\u00e0 encore, le focus est sur la facilit\u00e9 d&rsquo;\u00e9criture, pas sur l&rsquo;impl\u00e9mentation qui sous-tend ces concepts.<br \/>\nCette approche insistant sur les avantages de Scala sans chercher \u00e0 mettre en avant toute sa puissance et ses fonctionnalit\u00e9s avanc\u00e9es donne envie de s&rsquo;y mettre.<br \/>\nApr\u00e8s ce survol rapide, les questions s&rsquo;orientent sur le choix des langages: pourquoi Scala ?<br \/>\nLa r\u00e9ponse tient en un mot: <strong>productivit\u00e9<\/strong>.<\/p>\n<p><a href=\"http:\/\/tinyurl.com\/scalafirst\" title=\"Scala, as a first programming language\">Pour visionner les slides<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hier soir Bruce Eckel nous a pr\u00e9sent\u00e9 sa vision du langage Scala. Il constate que Scala est g\u00e9n\u00e9ralement mal enseign\u00e9. Il co-\u00e9crit donc un livre pour d\u00e9butant : \u00ab\u00a0Scala comme premier langage de programmation\u00a0\u00bb.&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[20,11],"class_list":["post-1003","post","type-post","status-publish","format-standard","hentry","category-compte-rendu","tag-scala","tag-soiree"],"_links":{"self":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/1003","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1003"}],"version-history":[{"count":23,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/1003\/revisions"}],"predecessor-version":[{"id":1028,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/1003\/revisions\/1028"}],"wp:attachment":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1003"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1003"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1003"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}