JeuWeb - Crée ton jeu par navigateur
Après le Ruby le Scala ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Après le Ruby le Scala ? (/showthread.php?tid=4982)



Après le Ruby le Scala ? - srm - 16-07-2010

Souvenez vous, c'était il y a longtemps, mais à l'époque je vous ai parlé de Ruby.

Depuis bien de l'eau à coulé sous les ponts et plusieurs s'y essayent et le trouve bien agréable.

Je vais vous présenter ici un autre langage le Scala.
Mais contrairement au titre racoleur de ce topic "Après le Ruby le Scala", le Scala selon ma propre opinion n'a pas du tout pour objectif de remplacer le Ruby, ce titre est juste là pour mettre en avant un langage qui peut-être très très intéressant pour tout ce qui est plus côté back-end.

Donc, le Scala est un dérivé de Java, c'est un langage fortement orienté scripting (PHP, Ruby, Python) mais à typage fort (Java, C++, etc).

Le Scala est 100% compatible avec le Java, vous pouvez importer des classes Java et les exécutables produits marchent avec la JVM de Java.

Bon alors, super le Scala mais ça servirait à quoi ?
Et bien tout ce qui est gros traitement pour vos jeux et plutôt orienté serveurs, par exemple certains veulent faire un serveur multi thread pour gérer du temps réel sur le jeu. Ça peut-être un système de queue, ça peut-être en gros ce que vous voulez, mais plus ce qui est côté serveur.

Note : Petite précision, si vous voulez vous pouvez utiliser le Scala pour le web, mais ça implique les mêmes "problématiques" que lorsque vous le faites en Java.

Et pourquoi pas faire du Java du coup ?
Et bien car il n'a pas une notion du scripting, le Scala est bien plus plaisant à utiliser et rapide à utiliser. C'est pour moi presque le monde parfait, j'ai toujours voulut un langage du type script avec typage fort. Certaines syntaxes du langages sont un peu déroutantes, mais c'est un peu comme tout, le Ruby en a aussi, on s'y fait.

Le site : http://www.scala-lang.org

Quelques exemples de code :
Code PHP :
<?php 
object HelloWorld
{
def main(args: Array[String]) {
println("Hello, world!")
}
}

Un petit exemple à moi tout bidon :
Code PHP :
<?php 
package guessNumber

import scala
.util._

object Main
{

/**
* @param args the command line arguments
*/
def main(args: Array[String]): Unit = {
var
number = new Random().nextInt(100)
var
inputNumber = -1
var trying = 0

// println("Secret number : " + number)

println("Welcome to guess number !")
println("Try to guess the number between 1 and 100")
println()

print(
"Number: ")

while (
inputNumber != number) {
inputNumber = scala.Console.readInt()

if (
inputNumber > number) {
print(
"Too high, try again : ")
}
if (
inputNumber < number) {
print(
"Too low, try again : ")
}

trying += 1
}

println("Wooow great you found it with " + trying + " try")
}

}
[/
php
]

Je l'ai fait super à l'arrache, c'est juste pour le principe Smile

Voilà, vous en pensez quoi ? Sympa non ?
Ah pour petite info, le système de queue de Twitter était en Ruby, il a été récrit en Scala et ils prévoient de refaire l'essentiel du back-end en Scala Smile

Si Twitter l'utilise, ça donne une bonne idée de la puissance et de la robustesse de ce langage Wink
Et cerise sur le gâteau, on doit Scala à des Suisses : École Polytechnique Fédérale de Lausanne (et Allemand lol)

Autre chose, je reviens sur ce que j'ai dit concernant la partie web, vu qu'il existe maintenant le super framework Play! pour ça.


RE: Après le Ruby le Scala ? - srm - 16-07-2010

Plus haut je vous ai dit que le Scala était pleinement compatible avec le Java, ce qui signifie donc que vous bénéficiez de tout ce qui existe sous Java en tant que librairie.

Et l'utilisation est infantine, voici un mini exemple que j'ai fait :
Code PHP :
<?php 
public class Test {

public
Test() {

}

public
void quack() {
System.out.println("Quack");
}

}

La classe Test est une mini class en Java que j'utilise très simplement en Scala :
Code PHP :
<?php 
object Main
{

def main(args: Array[String]): Unit = {
var
test = new Test()
test.quack()
}

}



RE: Après le Ruby le Scala ? - srm - 22-07-2010

Ne vous forcez pas pour répondre Wink


RE: Après le Ruby le Scala ? - Sloop - 22-07-2010

Mais c'est ce qu'on fait Big Grin


RE: Après le Ruby le Scala ? - srm - 27-12-2012

Et voilà que Scala 2.10 arrive.
Avec une fonctionnalités très sympathique, classique pour des langages scriptés mais beaucoup moins pour des langages typés.
Je vous laisse découvrir ça ici : http://weblogs.java.net/blog/cayhorstmann/archive/2012/12/13/dynamic-types-scala-210

En résumé pour ceux qui ont la flemme de lire ça ajoute l'équivalent des __set __get __call de PHP au Scala Smile

Et ça permet donc de coder une librairie qui permet d'écrire du XML comme ça :

val searchLinks = List(
"Google" -> "http://www.google.com",
"Ask.com" -> "http://www.ask.com",
"Yahoo!" -> "http://www.yahoo.com",
"Alta Vista" -> "http://www.altavista.com")

val xml = new XmlBuilder
xml html {
xml head {
xml title "Search Links"
}
xml body {
xml p ("Search Links:", "style" -> "color: red")
xml ul ({
for ((name, link) <- searchLinks)
xml li {
xml a (name, "href" -> link)
}
}, "id" -> "searchList")
}
}

println(xml.getXml)



RE: Après le Ruby le Scala ? - srm - 31-12-2012

Une autre fonctionnalité sympa de la 2.10 c'est l'ajout de "require" pour mettre des conditions sur des valeurs, exemple :

class Age private (val v: Short) {
def isInfant = v < 2
def isToddler = v >= 2 && v <= 4
def isSenior = v >= 50
}

object Age {
def apply(v: Short): Age = {
require(v >= 0 && v < 200, "Must be between 0 and 200")
new Age(v)
}
}


object Require extends App {
try {
val ageObject = Age(230)
} catch {
case e: Exception => println(e.getMessage())
}
}



RE: Après le Ruby le Scala ? - niahoo - 01-01-2013

Pourquoi tu as besoin d'un objet, n'y a t'il pas la possibilité de définir la condition dans la définition de la classe ? J'ai du mal à voir l'intérer de l'Object en plus de la Class, car là il ne s'agît pas de singleton il me semble.


RE: Après le Ruby le Scala ? - srm - 01-01-2013

Comme ça tu ne construis pas l'objet si les paramètres de constructions sont invalides Smile