Google souhaite-t-il pousser JavaScript vers la sortie avec Dart ? Son nouveau langage de programmation Web

Le 14/09/2011, par Idelways, Coordinateur publications
Mise à jour du 14 septembre 2011

Le langage de programmation Dart sur lequel Google met les dernières retouches avant sa présentation en octobre devrait succéder au langage JavaScript, afin de pallier aux « défauts fondamentaux » qui ne peuvent être corrigés en faisant simplement évoluer le langage.

Des défauts qui ralentissent le développement d'applications Web complexes, devenu « beaucoup trop difficile » et un véritable « labyrinthe déroutant ».

Ce serait en tout cas les ambitions de Google à en croire le contenu fouillé d'un email supposé provenir du chercheur émérite Mark S. Miller et adressé à de nombreux collègues de Google.
Un mail qui remonte au 16 novembre 2010 et dont le texte intégral peut être retrouvé sur Github.

L'auteur de l'email évoque deux stratégies pour pousser JavaScript vers la sortie et le suppléer par le langage « Dash » (qui aurait changé de nom pour devenir Dart). Un langage « destiné à maintenir la nature dynamique de JavaScript, mais avec un meilleur profil de performance et qui se prête mieux au “tooling” sur les grands projets ».

La voie Dash ou Dart, « très risquée, mais d’une grande valeur ajoutée », implique, toujours d'après l'email, que le langage doit être open source et soutenu afin qu’il soit adopté par les autres éditeurs de navigateurs.

Le langage — dans la vision de Mark S Miller — ne devrait pas (du moins en un premier temps) faire plus que ce que JavaScript permet de réaliser au niveau du navigateur, puisqu'il propose qu'un compilateur de code Dash vers JavaScript soit mis à la disposition des développeurs pour cibler les navigateurs qui ne le prennent pas en charge nativement.

Google pourrait donc tenter d'accélérer l'adoption (non native) de son langage en prenant à sa charge la création des plug-ins pour les autres navigateurs. Il n'est en effet pas à sa première intervention comme en témoigne l'épisode « Chrome Frame », pour Internet Explorer.

Dash pourrait donc être utilisée à la façon du langage open source CoffeeScript qui compile en JavaScript, avec le but ultime « de remplacer JavaScript comme une lingua franca pour le développement sur la plateforme Web ouverte »

Entre-temps, Google maintiendra une stratégie que Miller appelle « Harmony », en continuant de travailler conjointement avec le TC39 (le corps de standardisation d'EcmaScript) pour faire évoluer JavaScript.

Mais toute cette initiative, destinée à faciliter le développement Web ouvert et améliorer ses performances, serait surtout motivée par la peur des écosystèmes d'Apple et d’autres plateformes fermées vers lesquels « dérive le cyclone d'innovation ».

« L'émergence de plateforme alternative impérieuse, comme iOS signifie que la plateforme Web doit se montrer compétitive, non seulement sur le fond, mais aussi sur sa portée », estime Mark S Miller, avant de poursuivre : « JavaScript tel qu'il est aujourd'hui n’est pas une solution viable à long terme et quelque chose doit changer ».

Source : L'email sur Github

Et vous ?

Trouvez-vous, comme le supposé Mark S. Miller, qu'il est réellement beaucoup trop difficile à coder des applications Web complexes en JavaScript ?
Êtes-vous prêt à développer en Dart ? Sous quelles conditions ?

Sur le même sujet
Les rubriques (actu, forums, tutos) de Développez
Retrouvez le dossier complet de la rédaction


Poster une réponse Retrouver la discussion sur le forum

Avatar de cuicui78 cuicui78
Membre habitué
le 14/09/2011

Citation:





Envoyé par thorium90
Voir le message

60 lignes de code en C
45 lignes de code en C++
3 lignes de code en Python



C'est pas un peu exagéré ça ?

Qu'est ce qui permet de faire 3 lignes en python ?
Ne serait ce pas un Framework ?

Faut bien dissocier les langages seuls et les langages livrés avec framework
Avatar de bioinfornatics bioinfornatics
Membre éclairé
le 14/09/2011
C'est surement exagéré. Puis j'ai pas vu ou est l'exemple par rapport à ce nombre de ligne! j'ai pas tout compris!
Avatar de Cyrano Cyrano
Membre du Club
le 14/09/2011

Citation:





Envoyé par Traroth2
Voir le message

Sérieusement, si Google a fait ce nouveau langage, c'est qu'ils doivent avoir de nouvelles idées à proposer...



Je serais assez enclin à penser la même chose. Le grand truc actuellement, c'est le SaaS et Google n'est pas en reste à ce chapitre avec entre autres choses les Google Docs. Mais ce sont des application qui font appel à du JavaScript et les projets d'évolution des applications chez Google doivent commencer à titiller les limites du JavaScript. Donc l'idée d'un nouveau langage, outre des performances meilleures, présentera à n'en pas douter des possibilités inenvisageables en JavaScript.

So, wait and see. Ça ne fera peut-être pas une révolution du jour au lendemain, mais si c'est réellement valable comme ça peut parfois l'être lorsque Google sort une nouveauté, ça peut rapidement enterrer JavaScript... ou pas.

Mais il se posera quand même un problème. S'il semble prévu d'avoir des plugins pour convertir du Dart en JavaScript, en sera-t-il de même pour faire l'inverse ? permettant de maintenir dans la durée du code existant, dispensant les DSI de faire ré-écrire leurs développements complètement en Dart ?
Avatar de Robin56 Robin56
Modérateur
le 14/09/2011

Citation:





Envoyé par cuicui78
Voir le message

C'est pas un peu exagéré ça ?



La personne en question a bien prévenue de ne pas forcément prendre à la lettre l'exemple :

Citation:





Envoyé par thorium90


(simple exemple hein ne prenant pas toutes les spécifications des langages a la lettre)



L'important, c'est la notion qu'il a voulu mettre en évidence.
Avatar de bioinfornatics bioinfornatics
Membre éclairé
le 15/09/2011

Citation:





Envoyé par Robin56
Voir le message

La personne en question a bien prévenue de ne pas forcément prendre à la lettre l'exemple :

L'important, c'est la notion qu'il a voulu mettre en évidence.



je veux bien, toute fois une notion a des limtes floue. Alors ici est indiqué un nombre précis de ligne.
Avatar de TNT89 TNT89
Membre éclairé
le 15/09/2011

Citation:





Envoyé par Traroth2
Voir le message

Vous trouvez qu'il y a trop de langages ? Moi, je trouve qu'il y a trop de livres, je n'arrive pas à les lire tous. On ne pourrait pas demander aux auteurs d'arrêter d'écrire ?



Je suis tout à fait de l'avis contraire... Pourquoi avoir 1000 langages avec chacun leur tâches alors qu'on peut avoir les mêmes fonctions avec des Outils, des APIS, des Frameworks?
Avatar de Traroth2 Traroth2
Membre Expert
le 15/09/2011
Si le but de Dart est la disparition de l'infâme Javascript, Google a toute ma reconnaissance !
Avatar de Robin56 Robin56
Modérateur
le 15/09/2011

Citation:





Envoyé par Traroth2
Voir le message

Si le but de Dart est la disparition de l'infâme Javascript, Google a toute ma reconnaissance !



Ouep .. quoiqu'on sait pas la gueule de Dart
Avatar de madfu madfu
Membre confirmé
le 15/09/2011

Citation:




Si le but de Dart est la disparition de l'infâme Javascript, Google a toute ma reconnaissance !


+1000
Avatar de Bluedeep Bluedeep
Expert Confirmé Sénior
le 15/09/2011

Citation:





Envoyé par thorium90
Voir le message

Je parle de la productivité a pouvoir livré un produit fini.
Prenons l'exemple de devoir capturer le contenu Html d'une page.

60 lignes de code en C
45 lignes de code en C++
3 lignes de code en Python



Peux tu, après ces fortes paroles, nous fournir les exemples qui démontrent cette affirmation ? (bon, en C#, je dirais qu'il faut, à vue de nez, une dizaine de ligne pour cette tâche).
Avatar de pyros pyros
Membre chevronné
le 15/09/2011

Citation:





Envoyé par TNT89
Voir le message

Je suis tout à fait de l'avis contraire... Pourquoi avoir 1000 langages avec chacun leur tâches alors qu'on peut avoir les mêmes fonctions avec des Outils, des APIS, des Frameworks?



Chaque langage a ses particularités (performance, portabilité, robustesse, facilité, ...), particularités qui ne viennent pas des API disponibles, mais bien du langage en lui-même.

Le C/C++ est performant, léger, assez facile à prendre an main mais peu robuste (très facile de faire tout crasher). Le lisp est extrêmement puissant, mais une véritable horreur à développer. L'ADDA et le COBOL sont très fiable, le javascript très facile mais pas du tout adapté pour les gros projets et absolument pas fiable, etc...

Après, il y a beaucoup de langage qui sont là pour tester de nouvelles voies (F# ou Dart ), beaucoup de langage spécifiques à certaines machines (tous les langage type assembleur, TIbasic, ...) et finalement beaucoup de langage inutiles (brainFuck, piet, ...).

Mais si on n'avait jamais essayé de nouveaux langage, on en serait encore à faire des trous dans le carton.
Avatar de Le Vendangeur Masqué Le Vendangeur Masqué

le 15/09/2011

Citation:





Envoyé par Bluedeep
Voir le message

Peux tu, après ces fortes paroles, nous fournir les exemples qui démontrent cette affirmation ? (bon, en C#, je dirais qu'il faut, à vue de nez, une dizaine de ligne pour cette tâche).


Ou en Objective C / Cocoa:
Code :
12
NSURL *url = [NSURL URLWithString:@"http://www.developpez.net/"];
NSString *file = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

2 lignes (et encore j'aurais pu faire tenir ça sur une sans la variable url mais j'aime faire clair).

Qui dit mieux ?

D'où le fait qu'un langage c'est une chose mais que sans derrière de bons frameworks on avance pas bien vite...

Quand à Google quand je lis ça:

Citation:




L'émergence de plateforme alternative impérieuse, comme iOS signifie que la plateforme Web doit se montrer compétitive, non seulement sur le fond, mais aussi sur sa portée


Je me dis surtout que l'idée n'est pas que d'améliorer le quotidien du développeur Web mais surtout d'aider Google a conserver sa mainmise sur l'internet, voir même à l'accentuer. Ils commencent à se rendre qu'Android au niveau applicatif n'arrive pas à prendre le dessus, alors ils essayent une autre stratégie...

Donc ça se fera sans moi en tant que développeur, et probablement sans Apple, ni MS. Je me demande même si chez Mozilla on va accepter ça (quoique s'ils veulent continuer d'être maintenus en vie par Google et sa subvention, ils ont peut-être plus trop le choix).

Quand au plugins, le HTML 5 est censé nous en débarrasser, et là Google promeut le Flash propriétaire (jusqu'à l'inclure de force dans Chrome), son plugin webm, et maintenant son futur plugin Dart.
Ils sont pas à une contradiction près...
Avatar de mekal mekal
Membre chevronné
le 15/09/2011
et en javascript

document.innerHTML
Avatar de Bluedeep Bluedeep
Expert Confirmé Sénior
le 15/09/2011

Citation:





Envoyé par Le Vendangeur Masqué
Voir le message

Ou en Objective C / Cocoa:


Code :



1
2
NSURL *url = [NSURL URLWithString:@"http://www.developpez.net/"];
NSString *file = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

2 lignes (et encore j'aurais pu faire tenir ça sur une sans la variable url mais j'aime faire clair).

Qui dit mieux ?



En C#, approche minimaliste, avec écriture dans un fichier :


Code :



File.WriteAllText("capture.htm", new StreamReader(HttpWebRequest.Create("http://www.developpez.net").GetResponse().GetResponseStream()).ReadToEnd());

Avatar de Le Vendangeur Masqué Le Vendangeur Masqué

le 15/09/2011

Citation:





Envoyé par mekal
Voir le message

et en javascript

document.innerHTML



Oui c'est même encore plus simple car le js est dans la page elle-même. Mais récupérer une page externe est un peu plus long.
Avatar de Traroth2 Traroth2
Membre Expert
le 15/09/2011

Citation:





Envoyé par Robin56
Voir le message

Ouep .. quoiqu'on sait pas la gueule de Dart



C'est pas faux...
Avatar de psykokarl psykokarl
Membre habitué
le 15/09/2011

Citation:





Envoyé par pyros
Voir le message

Le C/C++ est performant, léger, assez facile à prendre an main mais peu robuste (très facile de faire tout crasher). Le lisp est extrêmement puissant, mais une véritable horreur à développer. L'ADDA et le COBOL sont très fiable, le javascript très facile mais pas du tout adapté pour les gros projets et absolument pas fiable, etc...



Juste pour dire que le qualificatif "robuste" s'applique difficilement à une langage. Robuste se comprend par résistant au aléas (erreur humaine ou des valeurs en entrée). La robustesse qualifie le code et non le langage.
Bien en contraire j'attends d'un interpréteur ou d'un compilateur qu'il me pète à la figure dès que je fais quelque chose qui ne va pas.
Les qualités intrinsèque d'un langage selon moi sont
- la souplesse (façon d'écrire la même chose)
- la puissance (ce que je peux faire avec. Comprendre faire de la prog bas niveau si besoin)
- la lisibilité. (comprendre facilement et rapidement de quoi il retourne)
- la cohérence. (un système de nomenclature efficace qui me permet presque de deviner en grande partie la syntaxe et les mots clefs attendu)
- qu'il soit complet. (N'importe quel langage de prog digne de ce nom l'est)

La fiabilité et la performance relève de la qualité l’interpréteur/compilateur. L'efficacité vient de la qualité et et du volume des bibliothèques et des framework fourni. Bien sur cette liste n'est pas exhaustive.

L'inutilité d'un langage est quelque chose de très subjectif. Je trouve le C# inutile mais c'est parce que je l'utilise pas professionnellement ou à un niveau amateur. Pourtant c'est un des langages qui remplit le mieux les critères que j'attends d'un bon langage...


Citation:





Envoyé par Le Vendangeur Masqué


Quand au plugins, le HTML 5 est censé nous en débarrasser, et là Google promeut le Flash propriétaire (jusqu'à l'inclure de force dans Chrome), son plugin webm, et maintenant son futur plugin Dart.
Ils sont pas à une contradiction près...



Google est avant tout pragmatique. Bannir le flash par pur idéologie n'est pas leur manière de faire. En revanche maitre à la disposition un outil qui convertit le code flash en code html5 y ressemble d'avantage...
Avatar de Code62 Code62
Membre émérite
le 15/09/2011
<hs>
en php, 1 ligne pour récupérer le contenu html d'une page externe:

Code :



file_get_contents('http://www.developpez.net/forums/d1129384-2/club-professionnels-informatique/actualites/dart-google-prepare-nouveau-langage-programmation-structuree-web/');



</hs>


Citation:




Je me dis surtout que l'idée n'est pas que d'améliorer le quotidien du développeur Web mais surtout d'aider Google a conserver sa mainmise sur l'internet (...)
Donc ça se fera sans moi en tant que développeur, et probablement sans Apple, ni MS. Je me demande même si chez Mozilla on va accepter ça


le meilleur moyen d'éviter que Google ait la mainmise sur ce langage (a priori libre) n'est-il pas justement de le rendre aussi "répandu" que possible ?

perso j'aurais aussi préféré que ce soit fait par "quelqu'un d'autre que Google", mais en même temps, savoir que derrière ce langage "comme javascript en mieux", plus adapté au web de maintenant, il y aura les gars qui ont bossé sur des produits comme Google Wave, Google Docs, ou G+, je trouve ça assez... excitant ^^
Avatar de pyros pyros
Membre chevronné
le 15/09/2011

Citation:




Juste pour dire que le qualificatif "robuste" s'applique difficilement à une langage


Oui, oui, je voulait dire par robuste la facilité de créer des programmes robuste avec tel langage, et non la robustesse de la grammaire ou des compilateurs/interpréteurs.

Le javascript est tellement permissif qu'il est quasiment impossible de faire un programme non-buggé avec. Au contraire, Je ne connais pas trop l'ADA mais de ce que j'en sais, il est tellement fliqué que si le programme marche, il y a de forte chance pour qu'il marche bien. C'est d'ailleur pour ça qu'il a été créé à la base.

Les langages typé et/ou compilés permettent déjà de vérifier qu'il n'y ai pas d'erreur statique (syntaxe ou type incompatible), chose déjà moins systématique pour les langages interprété (je doute que beaucoup de développeurs JS utilisent des outils d'analyse de code )

Pour ce qui est de la performance, elle vient bien sûr de l'interpréteur/compilateur, mais un langage haut niveau ne pourra jamais être aussi performant qu'un langage bas niveaux (en considérant des programmeurs expérimenté bien sûr, on observerait sûrement le résultat inverse avec des programmeur débutant), car il aura toujours plus de couche à traverser avant d’exécuter réellement l'action demandé. Dans l'absolue, l'assembleur reste, et restera le langage le plus performant (même si je me vois mal récupérer récupérer le contenu html d'une page en asm).

Pour ce qui est de l'inutilité d'un langage, il y a certains langage dont je ne vois objectivement aucune utilisé, à par pour le fun
Avatar de DonQuiche DonQuiche
Membre Expert
le 15/09/2011

Citation:




Un langage « destiné à maintenir la nature dynamique de JavaScript, mais avec un meilleur profil de performance et qui se prête mieux au “tooling” sur les grands projets ».


Arrrrrrgh ! Nein ! Pas de typage dynamique, pitié ! Cela me donne toujours l'impression de perdre des heures pour rien à cause de stupides erreurs de frappes. Et pas d'intellisense pour les gros projets/frameworks...
C'est très bien pour du prototypage ou de petits projets mais, au-delà de ça, personnellement...


Citation:




Personnelement ma préférence va au C, on peut tout faire en C, du web (avec des CGI), des applications lourdes, des accès system (port USB, parallèle, ect... que l'on peut aussi accéder en java par exemple mais en créant des JNI avec une partie en... C).


Le C est malheureusement très marqué par son âge et les ajouts successifs ont créé des syntaxes plus ou moins heureuses. Il n'est pas non plus un flèche en termes de productivité, un point essentiel aujourd'hui, d'autres langages font beaucoup mieux. Ça ne l'empêche pas de demeurer un très bon choix pour certains projets (pilotage matériel, temps réel, etc) mais il est très loin d'être un bon candidat pour la majorité des applications.
Avatar de rt15 rt15
Membre confirmé
le 15/09/2011
Tout juste 60 lignes en C (Pour windows uniquement).
Bon, la gestion des erreurs laisse à désirer, je devrais passer par GetLastError/FormatMessage.

Attention les yeux pour certains, j'ai mis des goto . Mais c'est tellement plus joli comme ça...


Code C :



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <windows.h>
#include <wininet.h>
#include <stdio.h>
 
int __cdecl main(int argc, char* argv[])
{
  HINTERNET hInternet;
  HINTERNET hInternetFile;
  FILE *lpFile;
  char lpBuffer[2048];
  DWORD nRead;
  int nResult;
 
  nResult = 1;
 
  lpFile = fopen("google.html", "w");
  if (! lpFile)
  {
    printf("fopen failed\n");
    goto the_end;
  }
 
  hInternet = InternetOpen("C program", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
  if (! hInternet)
  {
    printf("InternetOpen failed\n");
    goto close_file;
  }
 
  hInternetFile = InternetOpenUrl(hInternet, "http://www.google.com/", NULL, 0, 0, 0);
  if (! hInternetFile)
  {
    printf("InternetOpenUrl failed\n");
    goto close_internet;
  }
 
  while (1)
  {
    if (! InternetReadFile(hInternetFile, lpBuffer, sizeof(lpBuffer), &nRead))
    {
      printf("InternetReadFile failed\n");
      goto close_internet_file;
    }
    if (! nRead)
      break;
    lpBuffer[nRead] = 0;
    fputs(lpBuffer, lpFile);
  }
 
  nResult = 0;
 
close_internet_file:
  InternetCloseHandle(hInternetFile);
close_internet:
  InternetCloseHandle(hInternet);
close_file:
  fclose(lpFile);
the_end:
  return nResult;
}

Avatar de GanYoshi GanYoshi
Membre Expert
le 15/09/2011
Qui a envie d'investir dans une technologie naissante de Google ?

Quand on voit le non-respect de la compatibilité ascendante de Google (cf android)
Quand on voit l'échec de leur précédente tentative d'imposer un langage (Go)
Quand on voit la monétisation frénétique de toutes leurs technologies (App Engine)
Quand on voit le nombre de projet Google qui ferme au bout de deux ans.
Quand on voit que ce langage n'est même pas encore sorti, et quand on connaît le temps qu'il faut pour éventuellement voir apparaitre un nombre satisfaisant de librairie tierces.

Quand on voit l'offre disponible et déjà développée : PlayFramework, SpringMVC, grails etc
Avatar de Mako 5013 Mako 5013
Membre Expert
le 15/09/2011

Citation:





Envoyé par GanYoshi
Voir le message

Quand on voit la monétisation frénétique de toutes leurs technologies (App Engine)



Je sens une pointe de mauvaise foi...

Le modèle économique adopté par Google fait qu'une très grande majorité de leur produit sont disponibles gratuitement pour tous. On peut leur reprocher beaucoup de choses, mais la "monétisation frénétique de toutes leurs technologies", cela me semble quelque peu exagéré.

Mako.
Avatar de GanYoshi GanYoshi
Membre Expert
le 15/09/2011

Citation:





Envoyé par Mako 5013
Voir le message

Je sens une pointe de mauvaise foi...

Le modèle économique adopté par Google fait qu'une très grande majorité de leur produit sont disponibles gratuitement pour tous. On peut leur reprocher beaucoup de choses, mais la "monétisation frénétique de toutes leurs technologies", cela me semble quelque peu exagéré.

Mako.



C'est discutable en effet, mais chacune des raisons que j'ai annoncé se suffi à elle-même,et la remise en cause de l'une d'elle n'entraine donc pas la remise en cause des autres.
Avatar de cuicui78 cuicui78
Membre habitué
le 15/09/2011

Citation:





Envoyé par Le Vendangeur Masqué
Voir le message

Ou en Objective C / Cocoa:


Code :



1
2
NSURL *url = [NSURL URLWithString:@"http://www.developpez.net/"];
NSString *file = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

2 lignes (et encore j'aurais pu faire tenir ça sur une sans la variable url mais j'aime faire clair).

Qui dit mieux ?



C'est donc bien ce que je disais, tu fait appel a un framework.

J'aimerais que tu code la même mais uniquement avec le langage et la on va rire.
Pour pouvoir comparer avec le c ou l c++ j'aimerais que tu compte les ligne de pur langage contenu dans les fonction du framework que tu utilise.

Je suis sur qu'on doit pouvoir trouver une lib qui permet d’écrire 2 ligne avec le c++ aussi
Avatar de Bluedeep Bluedeep
Expert Confirmé Sénior
le 15/09/2011

Citation:





Envoyé par cuicui78
Voir le message

C'est donc bien ce que je disais, tu fait appel a un framework.i



Ce genre d'argument serait recevable si quelqu'un était capable de définir précisément la frontière qui sépare une librairie de RT d'un Framework.

Dans le cas contraire, ton argument est nul et non avenu, car même en C, la plupart des développeurs utilisent la standard RT lib.
Avatar de psykokarl psykokarl
Membre habitué
le 16/09/2011

Citation:





Envoyé par Bluedeep
Voir le message

Ce genre d'argument serait recevable si quelqu'un était capable de définir précisément la frontière qui sépare une librairie de RT d'un Framework.

Dans le cas contraire, ton argument est nul et non avenu, car même en C, la plupart des développeurs utilisent la standard RT lib.



La différence vient du type d'organisation entre les composants logiciels.
Il est question dans ce thread d'un nouveau langage et non d'une nouvelle lib ou d'un nouveau framework pour un langage existant. L'argument est donc recevable.

Moyennant une légère modification de l'exemple de rt15 puis la création d'une libraire avec la nouvelle fonction crée, je peux faire le même boulot en une ligne.
Si il faut comparer la puissance des framework/lib associés à chaque langage, je préfère laisser ça à ceux qui en ont une connaissance encyclopédique avec bench par OS à la clef...
Avatar de Freem Freem
Membre Expert
le 16/09/2011
Au sujet du troll aux langages:
Les langages C et C++ ont une quantité impressionnantes de librairies existantes.

Si elles ne sont pas intégrées au langage lui-même, c'est pour une raison simple:
Ce sont des langages sujets à des normes, pas des conventions qui deviennent normes de fait, mais bien des normes reconnues par des organismes internationaux.
De plus, leur objectif n'a jamais été de faire le café par défaut, parce qu'une telle fonction, si elle peut être utile, ne l'est pas à tous les utilisateurs du langage, elle est trop précise.
Contrairement aux fonctions/classes qui font partie de la librairie standard du langage.
--> simplicité & légèreté (pas besoin d'apprendre maintes fonctions pour prétendre utiliser la bête, pas de dépendances inutiles non plus)

Un autre point qui est extrêmement important dans ces DEUX langages, car il faut arrêter de dire que ce sont les mêmes, c'est qu'un code aux normes peut compiler sur n'importe quelle machine qui aie un compilateur aux normes. Et un tel compilateur peut exister sur n'importe quelle machine, car ces normes ne définissent pas l'implémentation.
--> portabilité & efficacité (selon les compilos, bien sûr)

Moi je parle français. Quand j'ai besoin d'une phrase toute faite, je vais chercher dans un livre qui en recense. Je n'ai pas besoin de l'avoir intégrée dans ma langue, qui es déjà suffisamment riche comme ça.
Tous les langages font la même chose, avec plus ou moins de bonheur.
Le C et le C++ ne font pas exception à la règle.
--> extensibilité (encore que savoir le français ne veut pas dire que j'en connaisse toutes les subtilités)

La productivité viens du langage?
Je suis d'accord, mais pas à cause du nombre de lignes de code, qui dépend uniquement de la bibliothèque utilisée pour écrire le programme.
Un programme qui utilise l'API win32 dans le langage de votre choix sera bien plus long, moins efficace et moins portable, qu'un truc écrit en C++ avec les bibliothèques Qt ou WxWidgets. Et il sera aussi probablement plus performant sous windows, même si c'est un langage non compilé.

Je pense qu'elle viens de la quantité de paradigmes utilisables dans le langage, ainsi que de la rapidité d'apprentissage de celui-ci.
Un expert en C++ est probablement plus productif qu'un expert d'un langage qui gère moins de paradigmes. (rappel: C++ => programmation procédurale, la POO et la programmation générique. Certaines libs permettent d'utiliser la prog par contrat, mais je ne sais même pas ce que c'est :S )
Par exemple, si on ne peux pas écrire de template en php (je sais pas si on peut, hein, si ça se trouve il y a un équivalent, c'est un EXEMPLE), je ne vois pas comment un type qui exploite ce langage a fond peut être plus productif que quelqu'un qui maîtrise a fond le C++. Idem, les classes ne sont pas adaptées à tout: elles engendrent un surcoût mémoire et processeur.

La différence, c'est que pour maîtriser C++ il faut beaucoup plus de temps.
C'est pour ça qu'on le dit moins productif, pas pour son manque de fonctions/framework.

Un autre point souvent reproché au C++ c'est l'obligation de la gestion de la mémoire.
C'est le cas en C, mais pas en C++, justement grâce à ces fameux templates, l'introduction des références, les vector<T>, etc.

Chaque langage a ses spécificités, c'est sûr.
Et le 1er effet de ces spécificités, c'est le temps qu'il faut avant d'être productif avec le langage.

J'en ai vraiment marre d'entendre les gens dire "Je programme en .NET" par exemple, mais c'est vraiment représentatif de ce qui a été dit:
L'important, c'est de moins en moins le langage, pour ceux qui ne le maîtrisent pas à fond (et ne le veulent pas) mais le framework, qui est, lui, fait par des gens qui le maîtrisent.

PS: je suis pas un expert du C++, mais j'en voit les possibilités quand j'utilise la STL, écrite dans ce langage. Combien de langages peuvent se vanter d'être écrits en eux-même?

Bon, fin du troll sur ce sujet.

L'intérêt, ici, ce n'est pas la guégerre des langages, mais la naissance d'un nouveau.

Je m'y mettrais bien, personnellement. Google n'est pas fiable? Faut arrêter de déconner, je pense que nombreux sont ceux qui utilisent son moteur et son navigateur au quotidien ici, sans parler des mails.
Et idem les entreprises.

Et puis, ils veulent en faire un langage open source, alors on s'en fiche que google risque de le lâcher, tant qu'une communauté se crée derrière.
Et sur ce point, qui mieux que google peut la faire partir? ([joke]Bon, ok, y'a bien Linus Torvald qui a un gros pouvoir de ce côté mais il à d'autres fenêtres à fouetter [/joke])
Les communautés autour d'un produit ont déjà réussi des tours de force extraordinaires, comme racheter un logiciel propriétaire (inkscape par exemple).
D'autres langages open sources sont aujourd'hui des grands de ce monde:
Perl, Python, C, C++, JAVA, ... Pourquoi pas Dart, puisque tant de gens semblent dénigrer le Javascript?
Avatar de Priato Priato
Membre actif
le 16/09/2011

Citation:





Envoyé par psykokarl
Voir le message

Juste pour dire que le qualificatif "robuste" s'applique difficilement à une langage. Robuste se comprend par résistant au aléas (erreur humaine ou des valeurs en entrée). La robustesse qualifie le code et non le langage.
Bien en contraire j'attends d'un interpréteur ou d'un compilateur qu'il me pète à la figure dès que je fais quelque chose qui ne va pas.
Les qualités intrinsèque d'un langage selon moi sont
- la souplesse (façon d'écrire la même chose)
- la puissance (ce que je peux faire avec. Comprendre faire de la prog bas niveau si besoin)
- la lisibilité. (comprendre facilement et rapidement de quoi il retourne)
- la cohérence. (un système de nomenclature efficace qui me permet presque de deviner en grande partie la syntaxe et les mots clefs attendu)
- qu'il soit complet. (N'importe quel langage de prog digne de ce nom l'est)



Je te conseille grandement le langage Ada(si tu ne le pratiques pas encore...)

En C/C++ : On est parti du principe qu'un développeur sait ce qu'il fait et c'est à lui d'être robuste.
En Ada: On est parti du principe que le développeur est humain et donc qu'il fait beaucoup d'erreur. C'est le compilateur qui est robuste. Quand tu compiles... ça marche!
J'aime bien les 2 philosophies et entre ces 2 concepts mon coeur balance

Je n'ai pas vraiment pratiqué de développement javascript, mais si celui-ci possède des défauts gênants pour certains projets, je comprends que l'on cherche à créer un nouveau langage prenant en compte ces défauts. Du coup mes questions seraient: N'a t on pas déjà crée un autre langage résolvant ces problématiques javascript? Si c'est le cas, pourquoi n' a-t-il pas été démocratisé? Faut il qu'un géant l'impose?

Perso, je vois mal une startup créer un langage, le rendre populaire et qu'il soit adopté par tout le monde...
Avatar de Loceka Loceka
Membre Expert
le 16/09/2011

Citation:





Envoyé par Priato
Voir le message

N'a t on pas déjà crée un autre langage résolvant ces problématiques javascript? Si c'est le cas, pourquoi n' a-t-il pas été démocratisé? Faut il qu'un géant l'impose?



Quand on voit déjà la galère que c'est pour que tous les navigateurs interprètent correctement le HTML et le CSS, vouloir imposer un remplaçant à javascript en claquant des doigts c'est un doux rêve...
Avatar de Robin56 Robin56
Modérateur
le 16/09/2011

Citation:





Envoyé par Loceka
Voir le message

Quand on voit déjà la galère que c'est pour que tous les navigateurs interprètent correctement le HTML et le CSS, vouloir imposer un remplaçant à javascript en claquant des doigts c'est un doux rêve...



Mais pas de rêve du tout, c'est triste. L'informatique vie grâce aux idées. J'attends d'en voir plus avant de descendre ce nouveau-né.
Avatar de cuicui78 cuicui78
Membre habitué
le 16/09/2011

Citation:





Envoyé par Freem
Voir le message

Combien de langages peuvent se vanter d'être écrits en eux-même?



J'adore.
Avatar de Cyrano Cyrano
Membre du Club
le 17/09/2011
Hé les gars, certaines de vos réponses me consternent.

«Avec tel langage, je fais tel truc en tant de lignes» et un autre juste derrière « Ouais mais moi avec tel autre langage, je le fais en tant de lignes ».
Waow! on est pas là pour faire un concours de celui qui pisse le plus loin, on parle de la création d'un langage de programmation dont on ne sait actuellement strictement rien si ce n'est vaguement le domaine d'application à savoir le web, ce qui couvre quand même un domaine assez vaste si on fait même seulement abstraction des possibilités entre langage client et langage serveur.

Au lieu de dire ce qui est vraiment super dans notre langage de prédilection delamorkitu, si on se posait plutôt la question des limites qu'il serait intéressant de voir exploser par un nouveau langage qui serait tout aussi agréable/simple/facile/rapide/etc à apprendre et mettre en oeuvre ? Parce que la question va forcément se poser un jour ou l'autre : « tel site a sorti une fonctionnalité et je bosse dessus depuis tant de jours, pas moyen de la reproduire parce que mon langage ne permet pas tel truc ! » Si le nouveau langage nous affranchit de cette limite, est-ce qu'il ne serait pas commercialement opportun de s'y intéresser au lieu de se regarder en chiens de faïence à comparer nos outils respectifs ?
Avatar de TropMDR TropMDR
Membre chevronné
le 17/09/2011

Citation:





Envoyé par Freem
Voir le message

PS: je suis pas un expert du C++, mais j'en voit les possibilités quand j'utilise la STL, écrite dans ce langage. Combien de langages peuvent se vanter d'être écrits en eux-même?



C : gcc
C++: llvm
OCaml
Haskell: ghc
Ada

Je connais en fait assez peu de langages compilés qui ne peuvent pas être bootstrapé
Avatar de TropMDR TropMDR
Membre chevronné
le 17/09/2011

Citation:





Envoyé par Lovmy
Voir le message

Personnelement ma préférence va au C, on peut tout faire en C, du web (avec des CGI), des applications lourdes, des accès system (port USB, parallèle, ect... que l'on peut aussi accéder en java par exemple mais en créant des JNI avec une partie en... C).



On peut aussi et surtout écrire des applications avec un nombre incroyable de failles de sécurité, de fuites mémoires, j'en passe et des meilleurs. Pas ce qu'il y a de plus adapté à l'écriture d'application web.

Alors effectivement, Native Client permet de faire tourner de manière (on espère) sécurisé des applications natives dans un navigateur, mais ce n'est clairement pas encore une technologie mature.

Citation:





Envoyé par Lovmy
Voir le message

C -> Applications et web (CGI)
C++ -> Idem que C en orienté objet
un shell évolué ou eventuellemetn Perl -> Script



Et on fait quoi des gens qui font de la programmation fonctionnelle ? Des gens qui veulent un GC ? Des gens qui veulent écrire des applications un poil plus fiable facilement ? Des applications portables ? Des applications à compiler une fois et exécuter partout ?
Tu critiques le fait qu'il existe trop de langages, mais tu devrais peut être en découvrir un ou deux histoire d'arrêter de penser que l'informatique aurait la moindre chance de se résumer à C et C++...


Citation:





Envoyé par Idelways
Voir le message

Mountain View dispose d'un langage de programmation orienté-système appelé Go, qui est considéré, en dépit de la croissance pénible de sa popularité vacillante, comme une alternative crédible au C++ et à Java.



Go une alternative crédible à quoi que ce soit ???? Ce langage a été conçu par un stagiaire à une pause déjeuner, ce n'est pas possible autrement... C'est un langage qui a 5 à 10 ans de retard sur les langages mainstreams, et près de 20 ans sur la recherche dans le domaine (voir 30 en fait...). Pfiou


Citation:





Envoyé par pyros
Voir le message

Le C/C++ est performant, léger, assez facile à prendre an main



Le C++ "facile à prendre en main" ?? Euh, on parle bien de ce langage avec une norme de 1500 pages, à gestion manuelle de la mémoire, et ou chaque ligne de code peut cacher l'appel à 42 constructeurs, que ce soit les constructeurs normaux, les conversion de type ou les constructeurs de copie (avec en plus l'apparition des nouveaux "constructeurs de déplacement") ? Ouahou, je dois vraiment être neuneu, mais je le mets clairement dans la catégorie des langages les plus ardus à prendre en main.


Citation:





Envoyé par DonQuiche
Voir le message

Arrrrrrgh ! Nein ! Pas de typage dynamique, pitié ! Cela me donne toujours l'impression de perdre des heures pour rien à cause de stupides erreurs de frappes. Et pas d'intellisense pour les gros projets/frameworks...
C'est très bien pour du prototypage ou de petits projets mais, au-delà de ça, personnellement...



ah, un premier début de questionnement sur "mais en fait, c'est quoi le problème avec javascript" :-D
Clairement, s'il ne propose pas au minimum du "typage optionnel", je ne m'emmerderai même pas à regarder Dart. Et si en plus le scope est dynamique et le point virgule facultatif, je fous le feu !
Avatar de Rocket06 Rocket06
Inactif
le 18/09/2011

Citation:





Envoyé par rt15
Voir le message

Faire une concaténation est une opération complexe, alors que les instructions du C ne sont censées faire que des opérations simples.



A noté que les instructions du c++ ne permettent pas non plus de faire une concaténation, l'opérateur += associé aux strings étant lui-même une fonction définie directement dans la classe string (cf. la surcharge des opérateurs).

Avatar de pyros pyros
Membre chevronné
le 19/09/2011

Citation:




Le C++ "facile à prendre en main" ??


Oui. Je ne dit pas que c'est facile d'être un expert en C++ (quelque soit le langage, il est rarement facile de le maitriser complètement), mais à coté du LISP ou d'autres langages exotiques, le C++ reste abordable.
Avatar de Charvalos Charvalos
Membre éclairé
le 19/09/2011

Citation:





Envoyé par pyros
Voir le message

Oui. Je ne dit pas que c'est facile d'être un expert en C++ (quelque soit le langage, il est rarement facile de le maitriser complètement), mais à coté du LISP ou d'autres langages exotiques, le C++ reste abordable.



Comparé le LISP qui est un langage fonctionnel et impératif alors que le C++ est orienté objet, c'est un peu absurde.
 
 
 
 
Partenaires

Hébergement Web