Il faut bien voir aussi que les ressources consacré à l'optimisation de la JVM sont énormes par rapport à ceux de bien d'autres langages à VM ou compilateur.
Je serai curieux de voir les perfs de Ruby si une dizaine d'ingénieurs avaient pour tâches d'accélérer les performances :-)
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Scala a un modèle très intéressant, complètement objet, tout en tentant de réutiliser les résultats théoriques sur la sureté de type.
Utilisant de l'objet, Scala est un peu plus à l'aise pour compiler sur de la JVM.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Les fondamentaux de la JVM n'ont pas évolué depuis 11 ans et posent toujours les même problèmes. .NET a rectifié le tir, très bien, mais il n'en reste pas moins que le design n'ayant pas été fait pour ça, cela pose des problèmes à beaucoup de langages.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Sans compter le design douteux de la JVM. Tous les spécialistes de la compilation (objet ou fonctionnel) avec qui j'ai pu en discuter (objet) ou lire des comptes rendus (fonctionnel) pointent le fait que générer du code pour la JVM est une vrai galère, surtout à cause de l’absence de véritable types numériques.
So, when the source language isn't quite what the VM designers had in
mind, the "natural mapping" doesn't work and one has to revert to
encodings of data structures. For instance, integers and floats may
have to be boxed (wrapped inside an object) most of the time.
Source-level objects may have to be mapped to VM objects that manage
themselves their own vtable of methods, bypassing that of the VM.
Source-level classes map to even more complicated encodings.
Cela ne veut pas dire que c'est infaisable, mais que c'est beaucoup plus difficile que de générer de l'assembleur processeur.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Pourquoi tant de mépris envers les développeurs web?
Juste une constatation. Après, j'ai grande admiration pour ceusse qui maîtrise les CSS, et autre HTML5. J'ai jamais rien compris à CSS, malgré mes tentatives et HTML5 c'est guerre mieux. Donc disons que je suis assez consterné de voir le genre de code en ce concerne le traitement des données. Le niveau en culture générale est faible, c'est aussi une constatation "statistique".
Et puis c'est la foire à la propagande pro ocaml, c'est plus qu'un langage ça devient un mode de pensé.
C'est complètement vrai, et c'est encore mieux quand ça devient un mode de pensé, tu programme du code avec très peu de bug.
Mais j'en suis encore très loin, tant le monde du fonctionnel Haskell/OCaml/Scala est vaste et te pousse à l'humilité quand tu te rends compte que ton code est nul et mal pensé.
As tu déjà écrit des choses réel avec ocaml? (par exemple un truc qui prend en compte plusieurs cpu)
Oui, en ce moment même d'ailleurs (le temps de switcher de vim à firefox), une GED de 10 000 lignes en OCaml.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Si c'est si pourri, pourquoi un tel effet de masse ?
Pourquoi les autres n'ont pas percé ?
J'ai longuement étudié cette question afin de pondre quelques dizaines de page sur la question, et il apparaît, qu'en général, ce sont les technos les plus moyennes qui réussissent. VHS vs Betacam, Frame, Tex lost vs Word/HTML, etc…
Tu t'attendais à quoi pour une fonction qui agit sur des éléments du langage lui-même, à savoir les variables ? En C++, del, c'est une fonction peut-être ?
Vu que le design de C++ est à peu près aussi consternant que celui de PHP (avec du niveau en plus, tout de même), … à mieux (cf plus loin)
Donc empty($var) fonctionne mais empty($var || $var2) provoque un parse error !!
Et ce serait censé donner quoi à part une erreur au juste ?
Ça serait censer parser le code, parcourir gentillement l'AST et te cracher une belle erreur, en te disant que non là c'est pas possible, car sémantiquement ça veut rien dire.
Mais mettre ça dans la grammaire, tu me diras ce que tu veux, moi je trouve ça crade.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Ce qui est marrant dans cet exemple, c'est que ce n'est pas le compilateur qui détecte l'erreur de type, mais c'est le fait que le compilateur exécute le code liés aux templates qui va le faire déboucher sur une erreur d'exécution lors de la phase de compilation.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Autant C++ à force de sédimentation permet de l'exprimer (voir plus bas), autant la sémantique de Java est absolument pas faite pour ça. D'où ce genre de hack.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Au debut c'est sur, j'ai mis un petit moment a m'y habituer, comprendre comment faire quoi. Mais perso j'ai tendance a voir cette nouvelle UI comme un mode qui cible specifiquement l'utilisation en tablette. Je ne m'attends pas a voir Photoshop ou SAP sortir en mode Metro par exemple.
Oui voilà, c'est très bien en tablet, mais à la souris, c'est juste l'horreur
Euh non certainement pas. Deja il est plus rapide que 7 sur le meme materiel, ensuite il supporte le meme matos, et il est tout aussi stable.
Ça, falloir attendre de voir…
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Le problème, c'est que comme le relevai Carmack qui est pas soupçonnable d'être un Microsoftfag a priori DirectX est très loin devant la concurrence.
Mac OS X, tu dois quasi écrire une version différente pour chaque version, et Linux va avoir du mal à suivre parce que les industriels veulent pas faire de drivers.
Cela dit avec l'ABI qui change tout les quatre matin (alors que celle de windows change une fois tous les … 2,3,4 ans ?), je comprend qu'ils soient pas motivés.
Oui je sais, il devraient faire du libre. Mais c'est une question de stratégie industrielle qu'ils n'ont pas envie d'envisager.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Un copain Microsoft fan m'a montré Windows 8 sur une VM.
En gros c'est simple, ils ont repris exactement la même interface que celle du téléphone (qui est pas stupide sur un téléphone touch il faut le reconnaitre).
Le problème, c'est qu'une interface conçu pour le touch à la souris, c'est l'horreur !!
Toutes les apps sont en plein écran (pourquoi pas), donc le glisser-déposer, t'oubli. Impossible de retrouver le bureau, etc..
Bref c'est très déstabilisant, et je suis pas sûr que ça soit adapté : trop révolutionnaire.
Et il est pas dans le genre Windows 7 (rapide, stable), mais plutôt Vista.
Donc je crois que ça va être une belle catastrophe, et ils vont devoir revoir leur copie en cours de route. Même en interne, ça doute, c'est dire..
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Est-ce qu'un fork du compilateur accompagné de quelques bibliothèques n'aurait pas suffit ?
Je complèterai la réponse de Xavier en précisant que C et surtout C++ a un système de type qui relève plus de la passoire que de l'architecture (bien qu'il y ait un effort en C++ si on se restreint aux dernières moutures).
Si l'affirmation de la news
le compilateur vérifiera que tous les chemins d'exécutions retourne bien un type.
est exacte, cela signifie que le compilateur effectue une analyse de flot. Bref une analyse de type un peu précise.
C ou C++ par design (arithmétique des pointeurs et trop grande complexité pour C++) ne permettent absolument pas cela !
Et cela te vire 50% des bugs au moins.
De plus, l'immutabilité par défaut est une très bonne idée, bien que ce soit stupide d'utiliser ça dans des boucles. Mais bon, je suppose qu'ils ont des lambda et du map/fold/filter.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Le problème de l'homoiconicité est qu'elle créé un trou de sécurité : on peut exécuter du code à travers elle et c'est excessivement dangereux.
Dans l'application que je développe, la sécurité est absolument cruciale.
J'essaye, by design, de ne laisser aucune porte ouverte possible.
Un exemple d'homoiconocité qui a été vidé de sa substance est le format JSON. À la base, on pouvait planquer du code dans le JSON, à cause de son homoiconocité intrinsèque. JSON.parse garantie que le JSON ne contient que des données.
Bref, l'homoiconocité c'est beau dans un laboratoire, mais pas dans la vraie vie.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Il faut aussi savoir que Nitendo avait un droit de regard sur les jeux vendu pour sa console, et qu'ils étaient très dur quand à la qualité de ces jeux.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Bof...
Posté par Ontologia (site web personnel) . En réponse au journal PHP, A Fractal Of Bad Design. Évalué à -1.
Il faut bien voir aussi que les ressources consacré à l'optimisation de la JVM sont énormes par rapport à ceux de bien d'autres langages à VM ou compilateur.
Je serai curieux de voir les perfs de Ruby si une dizaine d'ingénieurs avaient pour tâches d'accélérer les performances :-)
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Bof...
Posté par Ontologia (site web personnel) . En réponse au journal PHP, A Fractal Of Bad Design. Évalué à 1.
Scala a un modèle très intéressant, complètement objet, tout en tentant de réutiliser les résultats théoriques sur la sureté de type.
Utilisant de l'objet, Scala est un peu plus à l'aise pour compiler sur de la JVM.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Bof...
Posté par Ontologia (site web personnel) . En réponse au journal PHP, A Fractal Of Bad Design. Évalué à 1.
C'est petit comme bashage.
Les fondamentaux de la JVM n'ont pas évolué depuis 11 ans et posent toujours les même problèmes. .NET a rectifié le tir, très bien, mais il n'en reste pas moins que le design n'ayant pas été fait pour ça, cela pose des problèmes à beaucoup de langages.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Bof...
Posté par Ontologia (site web personnel) . En réponse au journal PHP, A Fractal Of Bad Design. Évalué à 1.
Sans compter le design douteux de la JVM. Tous les spécialistes de la compilation (objet ou fonctionnel) avec qui j'ai pu en discuter (objet) ou lire des comptes rendus (fonctionnel) pointent le fait que générer du code pour la JVM est une vrai galère, surtout à cause de l’absence de véritable types numériques.
Xavier Leroy explique très bien pourquoi c'est très galère de compiler pour une JVM ou du .NET
Cela ne veut pas dire que c'est infaisable, mais que c'est beaucoup plus difficile que de générer de l'assembleur processeur.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Old
Posté par Ontologia (site web personnel) . En réponse au journal PHP, A Fractal Of Bad Design. Évalué à 1.
Et j'oubliai de préciser que ça scale merveilleusement bien (merci OcamlNet) sur une archi multi-cpu.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Old
Posté par Ontologia (site web personnel) . En réponse au journal PHP, A Fractal Of Bad Design. Évalué à 1.
C'est complètement vrai, et c'est encore mieux quand ça devient un mode de pensé, tu programme du code avec très peu de bug.
Mais j'en suis encore très loin, tant le monde du fonctionnel Haskell/OCaml/Scala est vaste et te pousse à l'humilité quand tu te rends compte que ton code est nul et mal pensé.
Oui, en ce moment même d'ailleurs (le temps de switcher de vim à firefox), une GED de 10 000 lignes en OCaml.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Old
Posté par Ontologia (site web personnel) . En réponse au journal PHP, A Fractal Of Bad Design. Évalué à 1.
J'ai longuement étudié cette question afin de pondre quelques dizaines de page sur la question, et il apparaît, qu'en général, ce sont les technos les plus moyennes qui réussissent. VHS vs Betacam, Frame, Tex lost vs Word/HTML, etc…
Tu trouveras une tentative d'explication là : http://www.dreamsongs.com/Files/AcceptanceModels.pdf
En gros un langage doit être avant tout simple.
J'en ai explicité le modèle ici : https://linuxfr.org/nodes/86566/comments/1246354
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Réponses
Posté par Ontologia (site web personnel) . En réponse au journal PHP, A Fractal Of Bad Design. Évalué à -1.
Vu que le design de C++ est à peu près aussi consternant que celui de PHP (avec du niveau en plus, tout de même), … à mieux (cf plus loin)
Ça serait censer parser le code, parcourir gentillement l'AST et te cracher une belle erreur, en te disant que non là c'est pas possible, car sémantiquement ça veut rien dire.
Mais mettre ça dans la grammaire, tu me diras ce que tu veux, moi je trouve ça crade.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Questions
Posté par Ontologia (site web personnel) . En réponse au journal Linux from scratch face à udev. Évalué à 3.
Typique de LinuxFr : avis bien argumenté, bien structuré, avec un raisonnement en apparence solide (car ce fut surement le cas à une époque).
A contrario, j'ai vu nombre d'idées intéressantes se faire jeter car mal présentées.
Toujours le même principe : il faut mâcher le boulot du lecteur, la difficulté de comprendre le message est déjà bien suffisante à ses yeux…
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: C'est triste
Posté par Ontologia (site web personnel) . En réponse au journal Au diable le karma. Évalué à 3.
Je viens de découvrir que c'était lui. Il m'avait énormément marqué dans la ligne verte, plus que Tom Hanks en fait.
Un grand monsieur.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Un peu faible
Posté par Ontologia (site web personnel) . En réponse au journal Les types fantômes. Évalué à 2.
Au temps pour moi :-)
N'étant pas dans les petits papiers de Leroy et Garrigues, ça signifie quoi '_a ? Qu c'est "plus" polymorphique ?
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Un peu faible
Posté par Ontologia (site web personnel) . En réponse au journal Les types fantômes. Évalué à 2.
C'est très bizarre ! Voici mon transcript :
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Un peu faible
Posté par Ontologia (site web personnel) . En réponse au journal Les types fantômes. Évalué à 2. Dernière modification le 03 septembre 2012 à 12:07.
J'ai essayé
Et les deux versions se comportent exactement de la même façon, ne restreignent rien
Je suppose que c'est normal ?
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Un peu faible
Posté par Ontologia (site web personnel) . En réponse au journal Les types fantômes. Évalué à 2.
Très intéressant !
Questions :
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: En C++...
Posté par Ontologia (site web personnel) . En réponse au journal Les types fantômes. Évalué à 2.
Ce qui est marrant dans cet exemple, c'est que ce n'est pas le compilateur qui détecte l'erreur de type, mais c'est le fait que le compilateur exécute le code liés aux templates qui va le faire déboucher sur une erreur d'exécution lors de la phase de compilation.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Comme Hibernate ne savait pas que c'était impossible, ils l'ont fait.
Posté par Ontologia (site web personnel) . En réponse au journal Les types fantômes. Évalué à 0.
Autant C++ à force de sédimentation permet de l'exprimer (voir plus bas), autant la sémantique de Java est absolument pas faite pour ça. D'où ce genre de hack.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: types de données algébriques généralisés ?
Posté par Ontologia (site web personnel) . En réponse à la dépêche OCaml 4.00.0 est sorti. Évalué à 2.
Disons que l'explication fournie par le manuel ne m'a toujours pas permis de comprendre les GADT..
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Explications ?
Posté par Ontologia (site web personnel) . En réponse au journal Valve prend Linux au sérieux. Évalué à 2.
Oui voilà, c'est très bien en tablet, mais à la souris, c'est juste l'horreur
Ça, falloir attendre de voir…
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Explications ?
Posté par Ontologia (site web personnel) . En réponse au journal Valve prend Linux au sérieux. Évalué à 3.
Oui mais c'est galère de passer de l'un à l'autre. Après je sais, je n'y ai passé que 5 minutes…
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Pilotes.
Posté par Ontologia (site web personnel) . En réponse au journal Valve prend Linux au sérieux. Évalué à 5.
Le problème, c'est que comme le relevai Carmack qui est pas soupçonnable d'être un Microsoftfag a priori DirectX est très loin devant la concurrence.
Mac OS X, tu dois quasi écrire une version différente pour chaque version, et Linux va avoir du mal à suivre parce que les industriels veulent pas faire de drivers.
Cela dit avec l'ABI qui change tout les quatre matin (alors que celle de windows change une fois tous les … 2,3,4 ans ?), je comprend qu'ils soient pas motivés.
Oui je sais, il devraient faire du libre. Mais c'est une question de stratégie industrielle qu'ils n'ont pas envie d'envisager.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Explications ?
Posté par Ontologia (site web personnel) . En réponse au journal Valve prend Linux au sérieux. Évalué à 8.
Un copain Microsoft fan m'a montré Windows 8 sur une VM.
En gros c'est simple, ils ont repris exactement la même interface que celle du téléphone (qui est pas stupide sur un téléphone touch il faut le reconnaitre).
Le problème, c'est qu'une interface conçu pour le touch à la souris, c'est l'horreur !!
Toutes les apps sont en plein écran (pourquoi pas), donc le glisser-déposer, t'oubli. Impossible de retrouver le bureau, etc..
Bref c'est très déstabilisant, et je suis pas sûr que ça soit adapté : trop révolutionnaire.
Et il est pas dans le genre Windows 7 (rapide, stable), mais plutôt Vista.
Donc je crois que ça va être une belle catastrophe, et ils vont devoir revoir leur copie en cours de route. Même en interne, ça doute, c'est dire..
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # map
Posté par Ontologia (site web personnel) . En réponse à la dépêche Sortie de Rust en version 0.3. Évalué à 3.
Ils ont ;-)
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: avantage ?
Posté par Ontologia (site web personnel) . En réponse à la dépêche Sortie de Rust en version 0.3. Évalué à 4.
Je complèterai la réponse de Xavier en précisant que C et surtout C++ a un système de type qui relève plus de la passoire que de l'architecture (bien qu'il y ait un effort en C++ si on se restreint aux dernières moutures).
Si l'affirmation de la news
est exacte, cela signifie que le compilateur effectue une analyse de flot. Bref une analyse de type un peu précise.
C ou C++ par design (arithmétique des pointeurs et trop grande complexité pour C++) ne permettent absolument pas cela !
Et cela te vire 50% des bugs au moins.
De plus, l'immutabilité par défaut est une très bonne idée, bien que ce soit stupide d'utiliser ça dans des boucles. Mais bon, je suppose qu'ils ont des lambda et du map/fold/filter.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Hormis que
Posté par Ontologia (site web personnel) . En réponse au journal Une structure de données générique ?. Évalué à 2.
Le problème de l'homoiconicité est qu'elle créé un trou de sécurité : on peut exécuter du code à travers elle et c'est excessivement dangereux.
Dans l'application que je développe, la sécurité est absolument cruciale.
J'essaye, by design, de ne laisser aucune porte ouverte possible.
Un exemple d'homoiconocité qui a été vidé de sa substance est le format JSON. À la base, on pouvait planquer du code dans le JSON, à cause de son homoiconocité intrinsèque.
JSON.parse garantie que le JSON ne contient que des données.
Bref, l'homoiconocité c'est beau dans un laboratoire, mais pas dans la vraie vie.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Une histoire de poule et d’œuf !
Posté par Ontologia (site web personnel) . En réponse au journal Ouya: la console libre ?. Évalué à 6.
Il faut aussi savoir que Nitendo avait un droit de regard sur les jeux vendu pour sa console, et qu'ils étaient très dur quand à la qualité de ces jeux.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker