"Je ne suis pas tout à fait d'accord: ajouter un décodeur x86 dans le CPU et sous utiliser le CPU car le compilateur ne peut voir qu'un petit nombre de registre, ça a aussi des conséquences au niveau de la consommation."
Ce n'est pas faux, mais beaucoup moins vrai depuis le mode 64 bits qui double les registres. De plus, le système superscalaire offre de fait des centaines de registres invisibles.
"Et pour ce qui est de la densité de code moins importante des RISC, tu retardes"
Je ne retardes pas du tout. Thumb était loin de l'efficacité des x86, très loin même. Il n'offrait même pas toutes les possibilités du jeu 32 bits (ce qui imposait d'utiliser plusieurs instructions 16 bit ou repasser en 32). Thumb2 propose un mode mixte 32/16, j'imagine que tous les nouveau cpu ARM utilise se mode de base. Mais cela reste moins optimal que le code x86, il suffit de comparer la taille des binaires générés.
le fait d'utiliser des instructions complexes consomment toujours plus d'énergie en étant toujours moins optimal.
C'est complètement faux. Les instructions très spécialisé sont bien plus efficace : instruction AES par exemple, ou simplement les instructions SIMD à 4 opérandes…
Est-ce que les compilateurs d'aujourd'hui sont capable de penser en terme énergétique.
Cela ne sert à rien. Un code plus efficace dans le sens classique est aussi un code qui consomme moins.
Le SIMD est une unité de calcul spécialisée au sein du FPU, il est plus typiquement RISC dans sa conception,
Cela ne veut rien dire en terme d'architecture. J'imagine que tu veux dire qu'une unité SIMD classique n'a pas les instructions x87 typique comme sin ou cos, et j'imagine que tu veux dire qu'il y a moins de microcode, mais le microcode est géré avant l'unité de calcul.
"Intel nous "impose" toujours ce vieux CISC alors qu'en interne "tout est RISC""
Je crois revenir 15 ans en arrière. Cette phrase ne veut rien dire. RISC ou cisc qualifie un jeu d'instruction, dire que tout est "RISC derrière" n'a aucun sens.
"du coup ça fait de la perte de puissance à cause de cette conversion permanente,"
Non au contraire, la densité de code est énorme en x86, l'itanium devait avoir des Mega octet de cache pour battre un x86. Et il est mort.
"Mais pourquoi donc on n'a pas de concurrent qui propose une puce compétitive face à un Xeon 10 cœurs par exemple?"
Il te faut qq milliard pour ça. Et il faut avoir le logiciel optimisé qui va avec. Les piles complètes logiciels sous Linux, ne sont pas si vieilles que ça.
depuis qu'il a tué AMD (qui fait que le a figuration depuis des années tellement ses CPU sont décevants de nos jours)…
AMD annonce une nouvelle architecture 30% plus rapide en monocore pour une même fréquence. Faut-il encore qu'il la sorte rapidement.
Choisir est juste horrible, Linux parce que Linux mais il est déjà très financé, Apache parce que présent partout, mais financé aussi. VLC parce que sur beaucoup de machines, peu financé mais machine peu critique, 7-zip idem.
C'est vraiment une bonne Liste. Il manque peut-être Firefox.
J'avoue que j'aimerais beaucoup un "wikipedia de code". En gros, l'édition c'est le code et la page, l'application qui tourne. L’intérêt serait de pouvoir faire des "études ouvertes" avec graphiques, et source du code pour vérifier les calculs et graphiques (le truc habituellement fait avec Excel et non public). Cela permet aussi de faire des petits calculateurs (crédit ou autre) à partager facilement.
Au minimum, cela pourrait ressembler à http://numcalc.com/ mais avec une sauvegarde du code qui pourrait être public. Cela pourrait aussi servir à d'autre pour faire de jolies graphiques à insérer "ailleurs".
Vu que vous commencer à avoir un IDE "sérieux", vous n'avez jamais penser à en faire une vrai plateforme de dev ?
Pour gérer plusieurs fichiers, vous pouvez toujours faire des pages comme les pages wikipedia. Vous pouvez toujours garder la gamification pour motiver les codeurs. Vous pouvez gérer des exports vers github pour rassurer contre le vendeurs lockin. Vous pouvez ajouter l’exécution de tests ou de différent outils d'analyse statique pour la qualité de code (sonarqube en java, etc…). Vous pouvez vous la jouer "uber" du code pour découper un projet en morceau, etc…
Vu le bordel d'un "environnement moderne" (IDE+gestion de source+gestion des tests+gestion du planning+gestion de la doc+…) d'un codeur, vous avez sans doute une carte à jouer dans le tout intégré.
Pour bosser dans ingénierie des modèles et dans une boite qui fait un langage graphique, j'ai l'impression qu'il manque vraiment un "langage" comme library d'un programme plus gros (éditeur, RAD, simulateur…). L'idée est de transformer une représentation du gros programme dans un language qui compile ou s'interprète. Il y a bien lvm mais c'est très bas niveau. Je pense qu'il y a vraiment la place d'un langage "haut niveau" pour faire ça. Cela serait plus facile à utiliser.
Un peu comme si on pouvait utiliser le compilo ocaml dans une lib, pour lui fournir un AST directement ou des string de code.
Ok, donc le bête AST est le plus rapide dans la plus part des cas.
Est-ce que tu peux faire un essai avec un arbre de taille semblable à un bon code, genre qq millions de noeuds ? Ici, on parle de quelques us d'écart, ce n'est pas significatif.
Pour faire des graph rapidement, j'utilise gnuplot. Mais je n'ai pas le script type sous la main, pour tracer n courbe à partir d'un fichier de donné type csv.
Boehmdic-Perf semble le plus intéressant au final. Tracer les courbes permettrait de voir si l'écart se creuse ou devient négligeable.
"Le problème de l'égalité structurelle en OCaml c'est qu'elle peut être indécidable, et partir dans un calcul sans fin :"
On dirait que la principale raison du coté indécidable est la récursion. C'est pour cela que je parle de graphe acyclique. Il suffit de traiter les références différemment des définitions, cela permet de transformer la plus part des codes/données en graphes acycliques.
Selon le système de types (sa « puissance » expressive) l'existence d'une preuve d'une assertion peut devenir indécidable
Oui, d'où la recherche d'un sous-ensemble dans lequel il est possible de prouver quelques choses d'utile, et ne surtout pas regarder le cas général.
Le principe même de mon langage était de pousser le principe du typage le plus loin possible, car si il est impossible de "prouver" un code dans le cas général, tu peux prouver beaucoup de choses structurellement. Donc, l'idée était de voir jusqu'où on pouvait aller dans le typage statique.
On peut rajouter que je détestais le principe même du metamodèle UML qui empêche de faire des trucs aussi simple que de fixer la valeur d'une propriété dans un raffinement. Donc, j'ai mis les littéraux au même niveau que leur type.
La syntaxe n'est pas fixé, l'idée était plutôt un truc manipulable par des commandes externes (editeur texte ou graphique) ou un format de fichier type XML mais qui permet de définir des graphs acyclique avec le même langage pour le schéma.
type t =
(*Literals*)
| LInt of int
| LString of string
| LFloat of float
(*Internal type*)
| Integer
| Float
| String
(*Op*)
| And of t * t
| Or of t * t
| Xor of t list
(* Nommé *)
| Name of string
(* Pointeur avec un path *)
| Ref of string list (* TODO: adding integer index ref *)
(* Multiplicité *)
| Mult of int * int
J'avais tenté le gadt, mais j'avais vraiment du mal :
type _ term =
(*Literals*)
| LInt : int -> int term
| LString : string -> string term
| LFloat : float -> float term
(*Internal type*)
| Integer : int term
| Float : float term
| String : string term
(*Op*)
| And : 'a term * 'a term -> 'a term
| Or : _ term * _ term -> _ term
| Xor : 'a term list-> _ term (*agregation also used for array*)
(*Nommé *)
| Name : string -> _ term
(*Pointeur avec un path*)
| Ref : string list -> _ term
(*Multiplicité*)
| Mult : int * int -> 'a term J'avais aussi envie d'ajouter un "Not" pour faire l'inverse de "And", cela permet de faire une logique plus complète (j'y ai pensé après avoir lu logicomix). Mais le "And" n'est pas un "and" (je l'ai appelé comme ça par rapport à "|" du type sum), c'est plus un "Sont du même type" genre un "~", c'est un blanc dans ma mini syntaxe. Le "Xor" c'est le "*" de ocaml (définit par le retour à la ligne et la tabulation). Le moyen de faire les tuples et les array.
Est-ce que tu connais un moyen d'exprimer un "ou" avec un gadt?
Du style :
| Or : 'a term * 'b term -> ('a| 'b) term
Et est-ce qu'il existe un moyen de faire une égalité structurelle, par exemple pour considérer de même type, une structure ou une liste qui contient le même nombre d'argument de type compatible entre eux ?
[^] # Re: Rien sur les spécificités du nouveau bébé 1er du top 500 ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Le Top 500 des supercalculateurs de juin 2016. Évalué à 3.
Ce n'est pas faux, mais beaucoup moins vrai depuis le mode 64 bits qui double les registres. De plus, le système superscalaire offre de fait des centaines de registres invisibles.
Je ne retardes pas du tout. Thumb était loin de l'efficacité des x86, très loin même. Il n'offrait même pas toutes les possibilités du jeu 32 bits (ce qui imposait d'utiliser plusieurs instructions 16 bit ou repasser en 32). Thumb2 propose un mode mixte 32/16, j'imagine que tous les nouveau cpu ARM utilise se mode de base. Mais cela reste moins optimal que le code x86, il suffit de comparer la taille des binaires générés.
"La première sécurité est la liberté"
[^] # Re: Rien sur les spécificités du nouveau bébé 1er du top 500 ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Le Top 500 des supercalculateurs de juin 2016. Évalué à 8.
C'est complètement faux. Les instructions très spécialisé sont bien plus efficace : instruction AES par exemple, ou simplement les instructions SIMD à 4 opérandes…
Cela ne sert à rien. Un code plus efficace dans le sens classique est aussi un code qui consomme moins.
Cela ne veut rien dire en terme d'architecture. J'imagine que tu veux dire qu'une unité SIMD classique n'a pas les instructions x87 typique comme sin ou cos, et j'imagine que tu veux dire qu'il y a moins de microcode, mais le microcode est géré avant l'unité de calcul.
"La première sécurité est la liberté"
[^] # Re: Rien sur les spécificités du nouveau bébé 1er du top 500 ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Le Top 500 des supercalculateurs de juin 2016. Évalué à 3.
Cela n'a rien à voir avec le RISC, et c'est même plutôt faux à cause de la densité du code moins importante.
"La première sécurité est la liberté"
[^] # Re: Rien sur les spécificités du nouveau bébé 1er du top 500 ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Le Top 500 des supercalculateurs de juin 2016. Évalué à 5.
Je crois revenir 15 ans en arrière. Cette phrase ne veut rien dire. RISC ou cisc qualifie un jeu d'instruction, dire que tout est "RISC derrière" n'a aucun sens.
Non au contraire, la densité de code est énorme en x86, l'itanium devait avoir des Mega octet de cache pour battre un x86. Et il est mort.
Il te faut qq milliard pour ça. Et il faut avoir le logiciel optimisé qui va avec. Les piles complètes logiciels sous Linux, ne sont pas si vieilles que ça.
AMD annonce une nouvelle architecture 30% plus rapide en monocore pour une même fréquence. Faut-il encore qu'il la sorte rapidement.
"La première sécurité est la liberté"
[^] # Re: Bizarre le cadeau d'EDF...
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Le Top 500 des supercalculateurs de juin 2016. Évalué à 3.
DE mémoire, j'aurais tendance à dire qu'une consommation continu de 1W, coute 1€ à la fin de l'année. Mais je me trompe sans doute.
"La première sécurité est la liberté"
[^] # Re: C'est quoi un tarif correct d'outil pour une startup ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Au fait RuggedPOD et OpenTower c'est quoi ?. Évalué à 2.
Ils n'ont pas de service comme l'apple store qui ne fait presque rien payer ($100) le kit de dev, mais se rattrape sur le Store ?
"La première sécurité est la liberté"
[^] # Re: C'est quoi un tarif correct d'outil pour une startup ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Au fait RuggedPOD et OpenTower c'est quoi ?. Évalué à 2.
Pour tout (meca, électromagnétisme,…), ou juste le thermique ?
"La première sécurité est la liberté"
[^] # Re: Pour quel projet voter ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Demandez à l’UE un audit de code open source. Évalué à 6.
Choisir est juste horrible, Linux parce que Linux mais il est déjà très financé, Apache parce que présent partout, mais financé aussi. VLC parce que sur beaucoup de machines, peu financé mais machine peu critique, 7-zip idem.
C'est vraiment une bonne Liste. Il manque peut-être Firefox.
"La première sécurité est la liberté"
[^] # Re: C'est quoi un tarif correct d'outil pour une startup ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Au fait RuggedPOD et OpenTower c'est quoi ?. Évalué à 2.
Et l'équivalent chez ansys ?
"La première sécurité est la liberté"
[^] # Re: Vrai IDE ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche CodeBusters, concours d'intelligence artificielle en ligne du 25 juin au 3 juillet 2016. Évalué à 3.
J'avoue que j'aimerais beaucoup un "wikipedia de code". En gros, l'édition c'est le code et la page, l'application qui tourne. L’intérêt serait de pouvoir faire des "études ouvertes" avec graphiques, et source du code pour vérifier les calculs et graphiques (le truc habituellement fait avec Excel et non public). Cela permet aussi de faire des petits calculateurs (crédit ou autre) à partager facilement.
Au minimum, cela pourrait ressembler à http://numcalc.com/ mais avec une sauvegarde du code qui pourrait être public. Cela pourrait aussi servir à d'autre pour faire de jolies graphiques à insérer "ailleurs".
"La première sécurité est la liberté"
[^] # Re: Enfin !
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Au fait RuggedPOD et OpenTower c'est quoi ?. Évalué à 2.
$10 000 plein donc ?
"La première sécurité est la liberté"
# C'est quoi un tarif correct d'outil pour une startup ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Au fait RuggedPOD et OpenTower c'est quoi ?. Évalué à 2.
Vous définissez comment un tarif correct pour ce que vous faites .
"La première sécurité est la liberté"
# Vrai IDE ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche CodeBusters, concours d'intelligence artificielle en ligne du 25 juin au 3 juillet 2016. Évalué à 4.
Vu que vous commencer à avoir un IDE "sérieux", vous n'avez jamais penser à en faire une vrai plateforme de dev ?
Pour gérer plusieurs fichiers, vous pouvez toujours faire des pages comme les pages wikipedia. Vous pouvez toujours garder la gamification pour motiver les codeurs. Vous pouvez gérer des exports vers github pour rassurer contre le vendeurs lockin. Vous pouvez ajouter l’exécution de tests ou de différent outils d'analyse statique pour la qualité de code (sonarqube en java, etc…). Vous pouvez vous la jouer "uber" du code pour découper un projet en morceau, etc…
Vu le bordel d'un "environnement moderne" (IDE+gestion de source+gestion des tests+gestion du planning+gestion de la doc+…) d'un codeur, vous avez sans doute une carte à jouer dans le tout intégré.
"La première sécurité est la liberté"
[^] # Re: Sauf que ...
Posté par Nicolas Boulay (site web personnel) . En réponse au journal TAFTA. Évalué à 10.
C'est plutôt qu'il s'agit d'offrir le monde aux multinationales en leur créant une juridiction à part.
"La première sécurité est la liberté"
# model
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Malfunction: réutiliser la représentation intermédiaire du compilateur OCaml. Évalué à 4.
Pour bosser dans ingénierie des modèles et dans une boite qui fait un langage graphique, j'ai l'impression qu'il manque vraiment un "langage" comme library d'un programme plus gros (éditeur, RAD, simulateur…). L'idée est de transformer une représentation du gros programme dans un language qui compile ou s'interprète. Il y a bien lvm mais c'est très bas niveau. Je pense qu'il y a vraiment la place d'un langage "haut niveau" pour faire ça. Cela serait plus facile à utiliser.
Un peu comme si on pouvait utiliser le compilo ocaml dans une lib, pour lui fournir un AST directement ou des string de code.
"La première sécurité est la liberté"
[^] # Re: 18 ans de DLFP
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Quake. Vingt ans déjà. Évalué à 2.
Mon premier PC, c'était un Bull 386 20 Mhz, il devait y avoir qq Mo de mémoire, et un HD de 80 Mo.
"La première sécurité est la liberté"
[^] # Re: 18 ans de DLFP
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Quake. Vingt ans déjà. Évalué à 4.
Il suffit de ressortir un 486 pour passer pour un dinosaure, pas besoin d'aller jusqu'au truc que l'on a pas connu.
"La première sécurité est la liberté"
[^] # Re: C'est bien la peine !
Posté par Nicolas Boulay (site web personnel) . En réponse au journal EDSL et F-algèbres. Évalué à 2.
Ok, donc le bête AST est le plus rapide dans la plus part des cas.
Est-ce que tu peux faire un essai avec un arbre de taille semblable à un bon code, genre qq millions de noeuds ? Ici, on parle de quelques us d'écart, ce n'est pas significatif.
"La première sécurité est la liberté"
[^] # Re: C'est bien la peine !
Posté par Nicolas Boulay (site web personnel) . En réponse au journal EDSL et F-algèbres. Évalué à 3.
Pour faire des graph rapidement, j'utilise gnuplot. Mais je n'ai pas le script type sous la main, pour tracer n courbe à partir d'un fichier de donné type csv.
Boehmdic-Perf semble le plus intéressant au final. Tracer les courbes permettrait de voir si l'écart se creuse ou devient négligeable.
"La première sécurité est la liberté"
[^] # Re: Dans l'art voluptueuse de ne rien comprendre
Posté par Nicolas Boulay (site web personnel) . En réponse au journal EDSL et F-algèbres. Évalué à 2.
On dirait que la principale raison du coté indécidable est la récursion. C'est pour cela que je parle de graphe acyclique. Il suffit de traiter les références différemment des définitions, cela permet de transformer la plus part des codes/données en graphes acycliques.
Oui, d'où la recherche d'un sous-ensemble dans lequel il est possible de prouver quelques choses d'utile, et ne surtout pas regarder le cas général.
"La première sécurité est la liberté"
[^] # Re: Dans l'art voluptueuse de ne rien comprendre
Posté par Nicolas Boulay (site web personnel) . En réponse au journal EDSL et F-algèbres. Évalué à 2.
Le principe même de mon langage était de pousser le principe du typage le plus loin possible, car si il est impossible de "prouver" un code dans le cas général, tu peux prouver beaucoup de choses structurellement. Donc, l'idée était de voir jusqu'où on pouvait aller dans le typage statique.
On peut rajouter que je détestais le principe même du metamodèle UML qui empêche de faire des trucs aussi simple que de fixer la valeur d'une propriété dans un raffinement. Donc, j'ai mis les littéraux au même niveau que leur type.
L'idée est de pouvoir écrire un truc comme :
La syntaxe n'est pas fixé, l'idée était plutôt un truc manipulable par des commandes externes (editeur texte ou graphique) ou un format de fichier type XML mais qui permet de définir des graphs acyclique avec le même langage pour le schéma.
https://github.com/nicolasboulay/cherry-lang/blob/master/src/grape.ml
J'avais tenté le gadt, mais j'avais vraiment du mal :
J'avais aussi envie d'ajouter un "Not" pour faire l'inverse de "And", cela permet de faire une logique plus complète (j'y ai pensé après avoir lu logicomix). Mais le "And" n'est pas un "and" (je l'ai appelé comme ça par rapport à "|" du type sum), c'est plus un "Sont du même type" genre un "~", c'est un blanc dans ma mini syntaxe. Le "Xor" c'est le "*" de ocaml (définit par le retour à la ligne et la tabulation). Le moyen de faire les tuples et les array.type _ term =
(*Literals*)
| LInt : int -> int term
| LString : string -> string term
| LFloat : float -> float term
(*Internal type*)
| Integer : int term
| Float : float term
| String : string term
(*Op*)
| And : 'a term * 'a term -> 'a term
| Or : _ term * _ term -> _ term
| Xor : 'a term list-> _ term (*agregation also used for array*)
(*Nommé *)
| Name : string -> _ term
(*Pointeur avec un path*)
| Ref : string list -> _ term
(*Multiplicité*)
| Mult : int * int -> 'a term
"La première sécurité est la liberté"
[^] # Re: Dans l'art voluptueuse de ne rien comprendre
Posté par Nicolas Boulay (site web personnel) . En réponse au journal EDSL et F-algèbres. Évalué à 2.
Est-ce que tu connais un moyen d'exprimer un "ou" avec un gadt?
Du style :
| Or : 'a term * 'b term -> ('a| 'b) term
Et est-ce qu'il existe un moyen de faire une égalité structurelle, par exemple pour considérer de même type, une structure ou une liste qui contient le même nombre d'argument de type compatible entre eux ?
"La première sécurité est la liberté"
[^] # Re: Dans l'art voluptueuse de ne rien comprendre
Posté par Nicolas Boulay (site web personnel) . En réponse au journal EDSL et F-algèbres. Évalué à 2.
ok, je n'avais pas du utiliser la bonne syntaxe quand j'avais essayé. Va falloir que je reprennes mon code :)
"La première sécurité est la liberté"
[^] # Re: Pareil partout
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Quel modèle économique pour l'Open Hardware ?. Évalué à 3.
Que des trucs venu par d'énorme structures étatiques. Or ce n'est plus du tout la façon d'innover d'aujourd'hui, c'est bien trop lent.
"La première sécurité est la liberté"
[^] # Re: Pareil partout
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Quel modèle économique pour l'Open Hardware ?. Évalué à 4.
Dans ce cas là, tu n'as pas d'innovations à vendre.
L'innovation vient rarement d'énarque ou de science-po, mais de scientifiques.
"La première sécurité est la liberté"