JeuWeb - Crée ton jeu par navigateur
Si vous devez apprendre juste un langage de programmation - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Général (https://jeuweb.org/forumdisplay.php?fid=36)
+--- Forum : Blabla (https://jeuweb.org/forumdisplay.php?fid=42)
+--- Sujet : Si vous devez apprendre juste un langage de programmation (/showthread.php?tid=5095)

Pages : 1 2 3


RE: Si vous devez apprendre juste un langage de programmation - niahoo - 25-08-2010

Scala est vraiment sympa, par contre je trouve Lfit assez imbuvable...

Autant scala donne envie de mettre les mains dans le cambouis pour tester les différentes features origniales, autant Lift je n'ai pas dépassé la lecture du 'getting started' où même l'utilisation de templates donne l'impression d'un code très fouillis.

(Bon, étant très peu expérimenté en java, télécharger 30 fichiers pour une simple démo de chat m'a un peu dérouté .. )


RE: Si vous devez apprendre juste un langage de programmation - Sephi-Chan - 25-08-2010

C'est vrai que les templates de Lift sont illisibles. Peut-être est-ce l'indentation ou la coloration syntaxique qui fait ça.


Sephi-Chan


RE: Si vous devez apprendre juste un langage de programmation - srm - 25-08-2010

Un exemple de template :
Code PHP :
<?php 
<lift:surround with="default" at="content">
<
div class="column span-24">
<
h3>Your accounts</h3>
<
div id="entryform">
<
table>
<
tr>
<
th>Account Name</th>
<
th>Description</th>
<
th>Actions</th>
</
tr>
<
lift:Accounts.manage>
<
account:entry>
<
tr>
<
td><acct:name /></td>
<
td><acct:description /></td>
<
td><acct:actions /></td>
</
tr>
</
account:entry>
</
lift:Accounts.manage>
</
table>
</
div>
<
br />

<
h3><a href="/editAcct">Do you need to add an Account?</a></h3>
</
div>

</
lift:surround>

Un autre :
Code PHP :
<?php 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:lift="http://liftweb.net/">
<
head>
<
meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<
meta name="description" content="" />
<
meta name="keywords" content="" />

<
title>PocketChange: where did my money go?</title>
<
lift:CSS.blueprint />
<
lift:CSS.fancyType />
<
script id="jquery" src="/classpath/jquery.js" type="text/javascript"></script>
<
script id="json" src="/classpath/json.js" type="text/javascript"></script>
<
link href="/style/pca.css" type="text/css" rel="stylesheet" media="screen, projection" />

</
head>
<
body>
<
div class="container">
<
div id="status-message"><strong>Note:</strong> PocketChange is totally awesome. I dare you to try it. And then give us money.</div>

<
div class="column span-24">
<
div id="title"><a href="/"><img src="/images/pca-logo.png" /></a>
</
div>
</
div>

<
div class="column span-24" id="menu">
<!--<
lift:Menu.builder li:class="menuitem" />
li:class="menuitem"
li_item:class="selectedMenu"
li_item:onclick="javascript:alert('Already selected!');"
-->
<
lift:Menu.builder
li
:class="menuitem"
li_item:id="selectedMenu"

/>
</
div>

<
div class="column span-24">
<
lift:snippet type="msgs">
<
lift:error_msg>Error! The details are:</lift:error_msg>
<
lift:error_class>errorBox</lift:error_class>
<
lift:warning_msg>Whoops, I had a problem:</lift:warning_msg>
<
lift:warning_class>warningBox</lift:warning_class>
<
lift:notice_msg></lift:notice_msg>
<
lift:notice_class>noticeBox</lift:notice_class>
</
lift:snippet>
<
br />
</
div>

<
div class="column span-24">
<
lift:bind name="content" />
</
div>

<
hr />

<
div class="column span-24 last" style="text-align: center">
Copyright © 2009, 2010 - Marius Danciu, Derek Chen-Becker and Tyler Weir
</div>

<
script>
$(
document).ready(function() {
$(
".noticeBox").click(function(){$(this).fadeOut("slow");});
$(
".errorBox").click(function(){$(this).fadeOut("slow");});
$(
".warningBox").click(function(){$(this).fadeOut("slow");});
});
</
script>

</
div>
</
body>
</
html>

Vous trouvez ça si illisible que ça ? :/


RE: Si vous devez apprendre juste un langage de programmation - Sephi-Chan - 25-08-2010

(25-08-2010, 08:57 AM)oxman a écrit : Un exemple de template :
Code PHP :
<?php 
<lift:surround with="default" at="content">
<
div class="column span-24">
<
h3>Your accounts</h3>
<
div id="entryform">
<
table>
<
tr>
<
th>Account Name</th>
<
th>Description</th>
<
th>Actions</th>
</
tr>
<
lift:Accounts.manage>
<
account:entry>
<
tr>
<
td><acct:name /></td>
<
td><acct:description /></td>
<
td><acct:actions /></td>
</
tr>
</
account:entry>
</
lift:Accounts.manage>
</
table>
</
div>
<
br />

<
h3><a href="/editAcct">Do you need to add an Account?</a></h3>
</
div>

</
lift:surround>

Un autre :
Code PHP :
<?php 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:lift="http://liftweb.net/">
<
head>
<
meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<
meta name="description" content="" />
<
meta name="keywords" content="" />

<
title>PocketChange: where did my money go?</title>
<
lift:CSS.blueprint />
<
lift:CSS.fancyType />
<
script id="jquery" src="/classpath/jquery.js" type="text/javascript"></script>
<
script id="json" src="/classpath/json.js" type="text/javascript"></script>
<
link href="/style/pca.css" type="text/css" rel="stylesheet" media="screen, projection" />

</
head>
<
body>
<
div class="container">
<
div id="status-message"><strong>Note:</strong> PocketChange is totally awesome. I dare you to try it. And then give us money.</div>

<
div class="column span-24">
<
div id="title"><a href="/"><img src="/images/pca-logo.png" /></a>
</
div>
</
div>

<
div class="column span-24" id="menu">
<!--<
lift:Menu.builder li:class="menuitem" />
li:class="menuitem"
li_item:class="selectedMenu"
li_item:onclick="javascript:alert('Already selected!');"
-->
<
lift:Menu.builder
li
:class="menuitem"
li_item:id="selectedMenu"

/>
</
div>

<
div class="column span-24">
<
lift:snippet type="msgs">
<
lift:error_msg>Error! The details are:</lift:error_msg>
<
lift:error_class>errorBox</lift:error_class>
<
lift:warning_msg>Whoops, I had a problem:</lift:warning_msg>
<
lift:warning_class>warningBox</lift:warning_class>
<
lift:notice_msg></lift:notice_msg>
<
lift:notice_class>noticeBox</lift:notice_class>
</
lift:snippet>
<
br />
</
div>

<
div class="column span-24">
<
lift:bind name="content" />
</
div>

<
hr />

<
div class="column span-24 last" style="text-align: center">
Copyright © 2009, 2010 - Marius Danciu, Derek Chen-Becker and Tyler Weir
</div>

<
script>
$(
document).ready(function() {
$(
".noticeBox").click(function(){$(this).fadeOut("slow");});
$(
".errorBox").click(function(){$(this).fadeOut("slow");});
$(
".warningBox").click(function(){$(this).fadeOut("slow");});
});
</
script>

</
div>
</
body>
</
html>

Vous trouvez ça si illisible que ça ? :/

C'est plutôt que ce n'est pas du tout parlant. Ça ressemble trop à du JEE (ce n'est pas un compliment).

Par exemple en lisant le bloc suivant, on ne sait pas trop à quoi s'attendre, on a aucune notion de parcours. Où est défini le namespace acct, par exemple. Qu'est-ce que Accounts.manage ?


<lift:Accounts.manage>
<account:entry>
<tr>
<td><acct:name /></td>
<td><acct:description /></td>
<td><acct:actions /></td>
</tr>
</account:entry>
</lift:Accounts.manage>

Que rend le Menu.builder ? À quoi sert la partie commentée ?
Que rend le snippet "msgs" ?



Sephi-Chan


RE: Si vous devez apprendre juste un langage de programmation - srm - 25-08-2010

A chaque fois il s'agit de Classe.methode Smile

Le snippet msgs c'est en fait un helper qui va donc afficher le message qui va bien warning, error, notice selon le problème rencontré Smile

Je n'aime pas non plus trop Lift de par son côté trop "web application", donc trop JEE.
Là je suis en train de regarder http://www.playframework.org/ qui a un module Scala pour pouvoir coder en Scala en l'utilisant Smile


RE: Si vous devez apprendre juste un langage de programmation - Sephi-Chan - 25-08-2010

Ah ouais j'avais déjà regardé cette vidéo, je m'étais amusé de cet anglais très français (ou autre). Play ne m'avait pas convaincu : du Java donc beaucoup de code à écrire, et des fonctionnalités assez peu évoluées : par exemple, le système de rendering de Rails est très puissant grâce à sa gestion des formats de rendu, avec des vues nommées que show.fbml.haml, show.html.haml, show.js.haml, about.fr.html.haml, about.en.html.haml, etc. Convention over configuration est vraiment un principe génial. Smile

Par contre, pourquoi est-ce que tu souhaites faire le front-end du site avec Scala ? Est-ce par curiosité ou penses-tu que l'intérêt est réel ? Si tu ne le faisais pas en Scala, avec quel langage/outil le ferais-tu ?


Sephi-Chan


RE: Si vous devez apprendre juste un langage de programmation - srm - 25-08-2010

Par curiosité pour le moment et pour aussi tout de même l'intérêt de la puissance et de la souplesse de ce langage qui est tout de même assez impressionnante.

Si je ne le faisais pas en Scala, en PHP sans doute.
Concernant les rendu et sans doute des tonnes d'autres choses, je ne cherche ni un Symfony ni un Rails, sinon j'utiliserais Rails, je n'aime pas les framework trop englobant, je préfère ceux comme Zend Framework Smile


RE: Si vous devez apprendre juste un langage de programmation - Gwym - 09-10-2010

(20-08-2010, 11:29 AM)Gwym a écrit : il faudrait encore chercher un hebergeur scala", mais en fait d'après ce que j'ai vu, ça tourne sur n'importe quel serveur d'appli JEE, ce qui est à mon sens un bon point pour le choix de ce langage.

La différence entre la théorie et la pratique : j'ai suivi pas a pas l'exemple donné ici, mon "Hello World from Scala" fonctionne très bien en local avec le App SDK, mais une fois deployé sur App Engine j'ai une servlet error :pleure2:


RE: Si vous devez apprendre juste un langage de programmation - srm - 09-10-2010

Télécharger Play!
http://download.playframework.org/releases/play-1.1RC1.zip

Installer le module Scala
$ play install scala

Installer le module Gae
$ play install gae

Créer son application
$ play new test-gae --with scala,gae

Modifier la méthode index du fichier "test-gae/app/controllers.scala"
def index = "Voui ça marche Wink"

On compile l'application pour Gae
$ play war test-gae -o test-gae.war

On l'upload sur Gae :
$ appcfg.sh update test-gae.war

Et on vérifie que ça marche :
http://oxman-test-scala-play.appspot.com/

Et fantastique : CA MARCHE
Smile

Je ne pense pas que l'on puisse faire plus simple.


Note : dans cet exemple il n'a pas été détaillé la configuration de Play! au niveau de la variable PATH (qui permet d'utiliser la commande play n'importe ou)
Note 2 : dans cet exemple il est supposé que vous ayez déjà GoogleAppEngine d'installé
(afin de pouvoir utiliser la commande appcfg.sh)
Note 3 : je n'avais jamais fait d'application sur gae, j'ai "appris" en 2mn pour cet exemple


RE: Si vous devez apprendre juste un langage de programmation - Gwym - 09-10-2010

Fantastique, merci Smile
Ca marche et ça m'a permis de voir mon erreur... Confusediffle::$
J'avais oublié de mettre le scala-library.jar dans mon war pom pom pom