Affichage des articles dont le libellé est langage. Afficher tous les articles
Affichage des articles dont le libellé est langage. Afficher tous les articles

vendredi 8 juin 2012

Index TIOBE :Java perd sa place de langage numéro 1 après 10 ans

L'index TIOBE est un baromètre des popularités des langages de programmation. Le classement  du mois de mai marquait un évènement : après 10 ans de règne sans partage, Java a cédé sa place au bon vieux langage 'C'.
Une page qui se tourne.


dimanche 30 janvier 2011

Quel est le langage le plus adapté pour du script


Le site scriptometer qui compare les capacités de scripting des langages, classe en numero 1: sh et en 2 eme ruby ! (3 eme Perl , 5eme Python , 28 eme Java ...)

Ici en java un exemple de programme qui ne fait rien :
public class smallest { public static void main(String[] args) { } }

La même chose en ruby :'NEANT'

Lire les arguments de la ligne de commande :
En java
public class argv {
public static void main(String[] args) {
if (args.length > 0) System.out.println(args[0]);
}
}

En ruby
puts ARGV[0]
En python
import sys; print sys.argv[1]

lundi 30 août 2010

#Ruby , #Erlang , #Haskell et les autres

J'ai profité de mes vacances pour lire l'ouvrage suivant:



Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages. (Lien vers l'editeur ici).

Les langages présentés sont :

IO : (lien ici) io est un langage orienté objet inspiré par smaltalk. Son originalité réside dans l'utilisation comme dans javascript d'objets basés sur les prototypes plutôt que sur des classes.
Un objet io (ou javascript) est un simple tableau associatif. Une clé du tableau peut contenir une donnée , une fonction ou une référence vers une fonction d'un prototype. L'instanciation d'un objet se fait par clonage et non pas à partir d'un modèle (template) comme dans le cas des langages basés sur les classes.

Ruby (le top du top)

Prolog.

Scala : (lien ici ) scala est un langage développé par les ingénieurs de twitter basé sur la JVM. Il permet d'utiliser les librairies Java. L'intérêt de scala est de fournir une ouverture vers les langages fonctionnels avec en plus la possibilité de mettre en place des traitements parallèles (concurrents)

Erlang. (lien ici) c'est le langage qui à mon sens permet de débuter avec les langages fonctionnels.


Clojure. (lien ici ) Ce langage est une implémentation de Lisp destinée à utiliser une JVM. Il se présente comme une évolution possible de java.

Haskell. (lien ici) Haskell est le langage fonctionnel par excellence, qui est le fruit d'un travail collectif d'un groupe de chercheurs et non pas une construction d'une personne isolée. Un bon livre de référence est

La lecture de ce livre est difficile, aussi il est possible de lire cet ouvrage collectivement sur le forum suivant: (lien ici )
Une version gratuite et commentée du livre est disponible ici.




Pour chacun de ces langages, l'auteur propose des points à approfondir sur une semaine. Et il interroge les concepteurs de ces langages sur leurs motivations et les perspectives d'évolutions. C'est un très bon livre.

Pour ceux qui sont passionnés de langage et qui veulent se lancer dans l'écriture d'un nouveau langage : le livre à avoir est :(lien ici)
Create Your Own Programming Language de Marc-André Cournoyer

A system to achieve every programmer’s dream.
Learn how to create a simple programming language in a few days with this easy step-by-step guide.

vendredi 13 novembre 2009

Go: Un nouveau langage par Google

Google communique sur son nouveau langage maison : GO.
Avant même le lancement du projet, le sujet a déclenché une polémique sur web en raison de son appellation déjà utilisée par une autre équipe:
Voir le fil de discussion ici:



Go est un langage compilé comme le C ou le C++. Il est aussi orienté traitement concurrent (dans le sens de parallélisation des traitements) comme Erlang. Ainsi les processus dialoguent entre eux par des 'Channels' ex:
chan1 <- "exemple"

Ici la chaine "exemple" est envoyée à un autre processus branché en entrée du canal "chan1"

On utilise le mot réservé 'go' pour lancer un processus , avec souvent comme paramètre le canal à brancher en entrée et en sortie :
ex:
go ma_fonction(ch_in, ch_out,un_paramètre)
Ici ma_fonction pourra lire des données à partir de ch_in et écrire des données en sortie sur ch_out

i := <-ch_in; // Receive value of new variable 'i' from 'ch_in'. ch_out <- i // Send 'i'

Les nostalgiques du Pascal retrouveront le signe ':=' qui ici permet la déclaration et le chargement d'une variable: c'est l'initialisation.

Le blog du langage go (golang) propose une illustration des processus concurrents basée sur la recherche des nombres premiers par le Crible d'Ératosthène


C'est un excellent exercice à faire en Erlgan, sur lequel je vais passer plusieurs soirées.




Le langage est fortement typé, avec des types basiques permettant de construire des structures.
Il est possible de manipuler des types originaux comme les 'channel' (type chan) et les slices : tranches de tableau. A noter qu'il n'existe que les boucles 'for' , pas de 'while' ou de 'do'.

Je suis un peu déçu de l'ensemble. Maintenant que je connais mieux les langages fonctionnels, je persiste à croire qu'il faut éviter de partager des ressources si on désire vraiment paralléliser les processus. Pour cela comme dans les langages fonctionnel il ne faut pas d'effet de bord.
Le caractère immuable des variable en Haskell ou en Erlang est très déconcertant mais c'est solution la plus simple.

Pour terminer, je suis très étonné de google sorte un nouveau langage alors que le gourou du Python est son employé. Et que dire de cette remarque relevée sur le site de Google: depuis 10 ans aucun langage ne s'est distingué.. Merci Guido.“No major systems language has emerged in over a decade, but over that time the computing landscape has changed tremendously. "

samedi 29 novembre 2008

Fresque des langages

Sur ce site (oui ici) , l'auteur propose une vaste fresque des langages informatiques (50 sur 2500) . Un rectangle de sélection permet de voir les détails de la fresque.

Voici un extrait :

Le FORTRAN reste un peu le doyen des langages (1954)