Je plussoie le rappel de la nécessité absolue du souçi méthodologique de se conformer aux besoins des entreprises.
Quel est-il généralement ?
- Un produit éprouvé et pérenne. Une entreprise veut pouvoir tabler sur un produit dont elle va pouvoir amortir l'investissement financier et humain(donc financier). Pas être obligé de suivre une politique de licence et/ou technologique. Solidité de la technologie, utilisation éprouvée chez d'autres, popularité garantissant la possibilité de recruter des compétence au cas où etc...
- Un support Une entreprise, et là je le dis pour les étudiant "kikounet" veut un support. Quand on a un logiciel à écrire ou tout autre chose (une série de chaises en plastique qui doit sortir de l'usine par exemple), et que le logiciel est un maillon majeur, on veut un numéro de téléphone en cas de problème. Il ne faut pas oublier que le problème peut se chiffrer en 10^n euros rapidement (n) en fonction de la situation. Moi même, dans les outils que j'utilise pour développer des logiciels, je veux un numéro de téléphone, un support sur les outils que j'utilise. Ce parce que le client il en a rien à f**** que je lui explique que j'ai livré une semaine plus tard parce qu'il y avait un bug dans la librairie machin. C'est pénalité de retard et "au revoir monsieur" pour la prochaine fois.
Donc le débat Debian/Gnome/kde/Kikounet, etc... n'est pas le problème.
Le problème c'est un produit adapté et adaptable (pour le prestataire de service qui passe entre les deux (editeurs et client)) et surtout un support avec la capacité à régler un problème rapidement en cas de pépin.
Voilà pour la règle générale.
Pour le reste bien qu'étant assez peu au fait des stratégies de boites comme Red-Hat, Mandriva ou Suse, je me lancerai en commetant quelques avis:
Je vois plusieurs stratégie possibles
-La stratégie "gros serveur". C'est la stratégie de Red-Hat. Fourniture d'un OS bétonné à mort pour des serveur puissant très important se trouvant dans des salles blanches aménagé et tout le toutim.
L'OS, on s'en fout à la limite, ce que veux le client c'est une certification et un support d'une qualité irréprochable, bref, un techos là sous 2h en cas de problème. On parle de serveur dont l'arrêt peut couter 1 millions à l'heure.
- La stratégie réseau d'entreprise.On pense plus à Mandriva ou Novell
Les problématique de haute disponibilité sont moins prégnantes mais pas à négliger.
Le client veut là un produit polyvalent, configurable, administrable aisément, souple etc...
La facilité d'administration importe, surtout dans des PME.
Rappelons qu'une PME de moins de 50 à 100 salarié n'a pas toujours de rationalité économique à embaucher un informaticien.
J'avais expliqué ce que selon mon expérience et d'après moi un boite comme Novell et/ou Mandriva devrait proposer à des entreprises :
Non, je te suggèrais plutôt Gambas
C'est un logiciel libre, ça ressemble pas mal à Viual Basic, et c'est très simple à utilisé. http://gambas.sourceforge.net/index.html
"In compiler design, static single assignment form (often abbreviated as SSA form or SSA) is an intermediate representation (IR) in which every variable is assigned exactly once. Existing variables in the original IR are split into versions, new variables typically indicated by the original name with a subscript, so that every definition gets its own version. In SSA form, use-def chains are explicit and each contains a single element."
En gros c'est une analyse de flot light. Cela permet de faire pas mal d'optimisation intéressantes, mais on n'atteint pas une analyse de code logique
Dans une analyse de flot "profonde", l'ensemble du graphe du code est analysé. L'ensemble étant tous le code concerné pour la création du binaire. Cela suppose bien sûr d'accéder à la totalité du source.
Le compilateur possédant une représentation du code, il va pouvoir faire pas mal d'optimisation classique et moins classique. Classique, les propagations de contantes, suppression de code morts, renomage de registre, etc... Moins classique les analyses logique de code, comme la dérurcivation d'une récuricive, ou comme par exemple détecter qu'une variable entière est définie comme paire et que 10 km plus loin, on test son imparité, là le moteur logique peut supprimer ce test inutile.
Une personne que je connais bien a écris ce genre de chose, qui est difficilement utilisable dans le monde industriel car c'est très couteux en mémoire.
Réaliser un tel compilateur pose un problème : la taille de la grammaire. Plus celle-ci est grosse, plus l'optimisation et la taille du compilateur est difficile et imposante. En effet, l'optimisation se concentre sur la sémantique du code. Un test if..then...else, un while, un for, une résolution dynamique de message entre deux objets héritant d'un autre reviennent tous à la même sémantique : le test. Certains d'entre eux sont un peu cachés.
Une grosse grammaire implique pour les concepteurs du compilateur d'écrire une traduction sémantique de chacune des primitives... ce qui est un énorme travail.
Une bonne sémantique pour une bonne analyse de flot doit comporter au maximum une dizaine de primitives (test, <, =, &,*,/, -,...).
Le moteur logique de l 'analyse de flot détecte ensuite des pattern (des sous graphes assez court) et applique des règles transformant le graphe du code quand ces pattern sont détectés en association avec d'autres, je pense à l'exemple de test de parité dont je parlais plus haut.
L'augmentation de la taille de la mémoire disponible sur les machines de monsieur tout le monde va peut être permettre à terme d'aller vers l'utilisation de ce genre de compilateur qui ont le gros défaut d'être exponentiels (mais on peut toujours finasser...). On pourrait aussi imaginer de descendre encore plus bas dans la sémantique, comme par exemple se restreindre aux portes {et,ou, non} ce qui permettrait des optimisations assez halucinantes mais qui implique aussi des modèles de processeurs totalement différents puisqu'ils seraient bit à bits.
Bref, d'intéressantes perpectives...
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
C'est un petit logiciel sans prétention, mais il a le mérite de la simplicité.
Je ne suis pas sûr qu'il suffise à toutes les fonctionnes dont tu as besoin. Mais c'est un logiciel libre (écrit en java) et tu peux éventuellement ocntribuer si tu en as le temps.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
- As-tu eu déjà des problèmes avec ce graveur (en gravure ou en lecture) ?
- As-tu essayé de passer un cd de nettoyage, afin de nettoyer la lentille
- Lorsqu'il lit un cd correctement, est-ce qu'il le lit bien ou a-til un peu de mal ?
Ou sinon, as-tu gravé ton livecd de par l'original, auquel cas tu as peut être gravé l'erreur de lecture ?
Monte un petit protocol de tes pour savoir si ça vient, du cd, de l'image du cd, du lecture, de l'os...
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
T'as les Blue Steel qui ont un son superbe, mais elles tiennent 2 semaines.
Sinon j'avais essayé les Elixir Nanoweb, qui sont des cordres avec une couche de plastique, elles tiennent plusieurs mois mais ça me tuait mon inspiration, c'était bizare, plus rien ne sortait avec ces cordes là.
Ernie Ball est un bon compromis.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Ca me confirme une idée que j'ai depuis longtemps : faudrai que le compilateur intègre un résolveur mathématique (qui reconstitue la formule à partire du graphe, bon courage), le résolveur aurait pour tâche de simplifier les calculs.
Petite difficulté informatique : ne pas mettre les calculs par terre à cause des arrondis.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Comprends tu, ce genre de chose est ici assez sensible.
Le journalisme c'est attirer le challant avec du subjectif, du sentiment.
Cela dit, un monopole, dans un système économique capitaliste libéral (j'ai pas dis néolibéral, cela n'a rien à voir) c'est dangereux, car la stabilité du système est basé sur la concurrence.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Et on en revient a la necessite d'avoir une grammaire du langage de programmation qui soit suffisamment expressive. Sinon, ces optimisations sont tres difficiles a mettre en oeuvre.
C'est bien pour cela que le JIT a attendu des langages comme Java ou C# pour devenir populaire.
On a surtout besoin de grammaires expressives.
Dans le langage auquel je pensais (toujours le même), Lisaac, la conditionnel, les briques de bases pour les boucles n'existent pas. Le compilateur ne connait que 7 primitives (-,*,/,and, or, =, >). Toute la lib est faîte avec ça.
Le if est une résolution dynamique sur les objets true et false héritant de booléan. Le compilateur l'optimise pour retomber sur un if comme en C. Ce qui fait que toutes les structures de ce type n'importe où dans le code sont optimisées. De même pour les récursives etc...
Plus ta grammaire est minimaliste, plus le compilateur se concentre sur la sémantique du code, pare que tu retombes toujours dessus quand tu fait l'analyse sémantique dans le compilateur (le micro langage interne).
Et c'est là que les optimisations sont possibles.
Le nombre de primitives dans Java et C# sont énormes, (http://isaacos.loria.fr/li_simplicity.html ), par contre le langage de la machine virtuelle est sufisament minimaliste et expressif pour que les optims soient faites dessus.
Cependant, l'analyse statique restera toujours limitee. Le comportement d'un programme depend de son code et de ses parametres en entree. Une optimisation statique a la compilation ne peut optimiser que le code d'un point de vue general. Elle ne peut pas connaitre quelle fonction est appelee plus souvent dans la pratique. C'est la que les optimisations JIT interviennent. Elles regardent le code s'executer et peuvent trouver les fonctions qui sont reellement utilisees en permanence.
Le C etant compile en assembleur avant d'etre execute, toute l'information sur la notion de fonction et de variable est perdue. Meme si cette information perdurait, a terme, la grammaire du C est trop peu expressive a mon sens pour permettre des optimisations de longue haleine (pas de notion d'interface, pas de notion de dictionnaire, utilisation de pointeurs pour gerer des tableaux, utilisation de pointeurs sans types, etc).
Donc plus ca va, plus le C va etre a la rue parce qu'il ne peut guere evoluer. D'un autre cote, cette stabilite est aussi ce qui a fait son succes.
Il y a C et C : il y a C écrit par un humain et C généré par un compilateur.
Le C écrit par un être humain exprime de la sémantique humaine : c'est à dire que le code est proche d'une représentation humaine du programme et moins un représentation adaptée à la machine.
Il est par exemple quasiment impensable qu'on s'amuse à faire un gros malloc au début et gérer les pointeurs pour faire en sorte que la mémoire cache soit utilisée au mieux. Ca devient vite ingérable. Par contre un compilateur peut le faire.
De même, souvent, tu vas utiliser des chaînes pour représenter une structure sémantique préfixée, alors que des nombres peuvent le faire, car c'est bijectif. C'est un peu ce qu'on fait dans les bases de données relationnelles.
Il est vrai qu'en l'état actuel des choses, on devrait réfléchir non à la machine virtuelle, mais à une espèce de programme possédant des informations sur son code et capable dans certains cas de générer son propre code. Mais il faut faire très attention : là où la machine virtuelle virtualise tout, il faudrait un système qui permette d'utiliser des optimisations faites par les VM seulement là et quand c'est utile.
C'est en tout cas une piste intéressante, mais le problème est qu'elle impose de connaître ton assembleur cible ou d'embarquer une part du compilateur (le back end de GCC par exemple)...
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Pas mieux. Je ne comprends pas vraiment le but de cet article, qui tourne autour d'une fumeuse théorie du complot teintée de paranoïa, avec en arrière plan une haine non dissimulée pour toute grande entreprise...
Je vais encore me faire tapper dessus, mais je me sens tout de même visé...
Mon propos n'est absolument pas de dénoncer un prétendu complot (les partisans de la théorie du complot ne sont que des mous du cerveau qui ne veulent pas accepter la complexité du monde) ou une haine dissimulée contre des grandes entreprises (Je suis fière d'Airbus, EDF, etc...).
Mon propos consiste simplement à remarquer ce que je pense être une tendance de fond et une stratégie d'entreprise.
J'imagine que tu as bêtement pris mon titre au premier degré.
J'évite le premier degré tant que possible, c'est une faute de goût.
Qu'il y ait ici pas mal de gens à qui on peut faire ce reproche est une chose, mais réfléchit à deux fois avant de te lancer dans ce genre de remarques.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
Sinon, ces optimisations post-génération de code exécutables sont quand même applicables aux machines physiques ?
Soit tu met des primitives dans le processeur et j'ose pas imaginer les conséquences...
Soit tu te débrouilles pour que le compilateur intègre les techniques que Kha citait plus haut. Et là ça devient assez chaud. Ca n'est possible à mon avis qu'avec :
- Un compilateur utilisant massivement une analyse de flot
- Un compilateur qui dispose de bonnes informations, à priori sur les statistiques d'utilisation du code (ie. distribution des valeurs les plus courantes en entrée des fonctions).
De là, soit tu t'amuses à compiler ton programme, à lui balancer une batterie de tests - en espérant qu'ils soient représentatifs - et à recompiler celui-ci en connaissance de cause, ou soit tu lui colle une sémantique du type contrat, définition d'intervals/ensemble afin d'avoir de bonnes infos sur le comportement de ton code.
Dans tous les cas c'est problématique, et faut bien analyser
- Quels appels extérieurs cela implique pour optimiser leur appel (table de hashage, etc...) et le cas échant, il faut que l'OS soit optimisé pour ça
- Les problèmes de mise à jour des données (table de hashage sur appels de fonction).
Dans le compilateur, il faudrait que l'analyse de flot analyse les sous graphes potentiellement très consommateurs en calculant leur complexité ainsi que les possibilités de "distributions" des paramètres dans l'intervalle possible (typiquement , on peut déduire, dans certains cas, par un moteur logique, que le param appliqué à la fonction f, dans le contexte se trouvera dans l'interval [20;100]).
Avec ça, le compilateur peut poser un système de table de hashage dessus, voire découper le code de la méthode en petit bout et la spécialiser aux seuls paramètres qui change.
Merci pour l'idée Kha, ça serait sympa à intégrer au compilo...
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
J'ai achete un XP (force certe mais bon ca c'est une autre histoire) c'est pas le meme soft en boite et celui fournit par l'OEM? Si non c'est quoi la difference?
La différence c'est que dans une PME, par exemple, un XP boite peut être mis sur un autre poste au cas où on décide mettre un Linux ou autre sur le pc sur lequel il était initialement.
Avec un OEM, si tu jette le pc, si tu installe autre chose définitivement, tu perd la licence.
Dans une PME qui a un petit budgt informatique, c'est important, et faut danser avec, je sais de quoi je parle.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
T'as de la chance, si tout se passe bien on publie IsaacOS cette été (juste le temps de bien commenter le code, de faire une distrib propre, s'assurer que l'OS se compile bien avec la dernière version du compilo en cours d'écriture).
Mais on réfléchi depuis quelques temps, surtout à l'instigation de nicO à des fonctionnalités massivement parralèles un peu comme Erlang. Mais faut spécifier tout cela et ensuite réfléchir si c'est intégrable et comment l'intégrer...
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Mauvaise stratégie desktop ?
Posté par Ontologia (site web personnel) . En réponse au journal Novell fait du ménage. Évalué à 9.
Quel est-il généralement ?
- Un produit éprouvé et pérenne. Une entreprise veut pouvoir tabler sur un produit dont elle va pouvoir amortir l'investissement financier et humain(donc financier). Pas être obligé de suivre une politique de licence et/ou technologique. Solidité de la technologie, utilisation éprouvée chez d'autres, popularité garantissant la possibilité de recruter des compétence au cas où etc...
- Un support Une entreprise, et là je le dis pour les étudiant "kikounet" veut un support. Quand on a un logiciel à écrire ou tout autre chose (une série de chaises en plastique qui doit sortir de l'usine par exemple), et que le logiciel est un maillon majeur, on veut un numéro de téléphone en cas de problème. Il ne faut pas oublier que le problème peut se chiffrer en 10^n euros rapidement (n) en fonction de la situation. Moi même, dans les outils que j'utilise pour développer des logiciels, je veux un numéro de téléphone, un support sur les outils que j'utilise. Ce parce que le client il en a rien à f**** que je lui explique que j'ai livré une semaine plus tard parce qu'il y avait un bug dans la librairie machin. C'est pénalité de retard et "au revoir monsieur" pour la prochaine fois.
Donc le débat Debian/Gnome/kde/Kikounet, etc... n'est pas le problème.
Le problème c'est un produit adapté et adaptable (pour le prestataire de service qui passe entre les deux (editeurs et client)) et surtout un support avec la capacité à régler un problème rapidement en cas de pépin.
Voilà pour la règle générale.
Pour le reste bien qu'étant assez peu au fait des stratégies de boites comme Red-Hat, Mandriva ou Suse, je me lancerai en commetant quelques avis:
Je vois plusieurs stratégie possibles
-La stratégie "gros serveur". C'est la stratégie de Red-Hat. Fourniture d'un OS bétonné à mort pour des serveur puissant très important se trouvant dans des salles blanches aménagé et tout le toutim.
L'OS, on s'en fout à la limite, ce que veux le client c'est une certification et un support d'une qualité irréprochable, bref, un techos là sous 2h en cas de problème. On parle de serveur dont l'arrêt peut couter 1 millions à l'heure.
- La stratégie réseau d'entreprise.On pense plus à Mandriva ou Novell
Les problématique de haute disponibilité sont moins prégnantes mais pas à négliger.
Le client veut là un produit polyvalent, configurable, administrable aisément, souple etc...
La facilité d'administration importe, surtout dans des PME.
Rappelons qu'une PME de moins de 50 à 100 salarié n'a pas toujours de rationalité économique à embaucher un informaticien.
J'avais expliqué ce que selon mon expérience et d'après moi un boite comme Novell et/ou Mandriva devrait proposer à des entreprises :
https://linuxfr.org/comments/689183,1.html
Je pense que si Novell fait ça avec une interface archi simplifiée, il trouveront pas mal de clients...
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Eclipse c'est bien ?
Posté par Ontologia (site web personnel) . En réponse à la dépêche Programmation Java pour les enfants, les parents et les grands-parents. Évalué à 2.
C'est un logiciel libre, ça ressemble pas mal à Viual Basic, et c'est très simple à utilisé.
http://gambas.sourceforge.net/index.html
Un screenShoot :
http://gambas.sourceforge.net/2006-05-28.png
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Houla, forcément, si on fait un icc -Ox uniquement...
Posté par Ontologia (site web personnel) . En réponse au journal Benchmarks de GCC 4.1. Évalué à 10.
"In compiler design, static single assignment form (often abbreviated as SSA form or SSA) is an intermediate representation (IR) in which every variable is assigned exactly once. Existing variables in the original IR are split into versions, new variables typically indicated by the original name with a subscript, so that every definition gets its own version. In SSA form, use-def chains are explicit and each contains a single element."
En gros c'est une analyse de flot light. Cela permet de faire pas mal d'optimisation intéressantes, mais on n'atteint pas une analyse de code logique
Dans une analyse de flot "profonde", l'ensemble du graphe du code est analysé. L'ensemble étant tous le code concerné pour la création du binaire. Cela suppose bien sûr d'accéder à la totalité du source.
Le compilateur possédant une représentation du code, il va pouvoir faire pas mal d'optimisation classique et moins classique. Classique, les propagations de contantes, suppression de code morts, renomage de registre, etc... Moins classique les analyses logique de code, comme la dérurcivation d'une récuricive, ou comme par exemple détecter qu'une variable entière est définie comme paire et que 10 km plus loin, on test son imparité, là le moteur logique peut supprimer ce test inutile.
Une personne que je connais bien a écris ce genre de chose, qui est difficilement utilisable dans le monde industriel car c'est très couteux en mémoire.
Réaliser un tel compilateur pose un problème : la taille de la grammaire. Plus celle-ci est grosse, plus l'optimisation et la taille du compilateur est difficile et imposante. En effet, l'optimisation se concentre sur la sémantique du code. Un test if..then...else, un while, un for, une résolution dynamique de message entre deux objets héritant d'un autre reviennent tous à la même sémantique : le test. Certains d'entre eux sont un peu cachés.
Une grosse grammaire implique pour les concepteurs du compilateur d'écrire une traduction sémantique de chacune des primitives... ce qui est un énorme travail.
Une bonne sémantique pour une bonne analyse de flot doit comporter au maximum une dizaine de primitives (test, <, =, &,*,/, -,...).
Le moteur logique de l 'analyse de flot détecte ensuite des pattern (des sous graphes assez court) et applique des règles transformant le graphe du code quand ces pattern sont détectés en association avec d'autres, je pense à l'exemple de test de parité dont je parlais plus haut.
L'augmentation de la taille de la mémoire disponible sur les machines de monsieur tout le monde va peut être permettre à terme d'aller vers l'utilisation de ce genre de compilateur qui ont le gros défaut d'être exponentiels (mais on peut toujours finasser...). On pourrait aussi imaginer de descendre encore plus bas dans la sémantique, comme par exemple se restreindre aux portes {et,ou, non} ce qui permettrait des optimisations assez halucinantes mais qui implique aussi des modèles de processeurs totalement différents puisqu'ils seraient bit à bits.
Bref, d'intéressantes perpectives...
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
# AnalyseSI
Posté par Ontologia (site web personnel) . En réponse au message design sql (merise et MCD). Évalué à 3.
http://analysesi.free.fr/
C'est un petit logiciel sans prétention, mais il a le mérite de la simplicité.
Je ne suis pas sûr qu'il suffise à toutes les fonctionnes dont tu as besoin. Mais c'est un logiciel libre (écrit en java) et tu peux éventuellement ocntribuer si tu en as le temps.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: :(
Posté par Ontologia (site web personnel) . En réponse au journal Mea Culpa au foot. Évalué à 2.
Ok, je --> []
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Firewall ?
Posté par Ontologia (site web personnel) . En réponse au message Problemes d'acces a certains sites. Évalué à 2.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
# Hardware
Posté par Ontologia (site web personnel) . En réponse au message Pb de CDROM. Évalué à 2.
- As-tu eu déjà des problèmes avec ce graveur (en gravure ou en lecture) ?
- As-tu essayé de passer un cd de nettoyage, afin de nettoyer la lentille
- Lorsqu'il lit un cd correctement, est-ce qu'il le lit bien ou a-til un peu de mal ?
Ou sinon, as-tu gravé ton livecd de par l'original, auquel cas tu as peut être gravé l'erreur de lecture ?
Monte un petit protocol de tes pour savoir si ça vient, du cd, de l'image du cd, du lecture, de l'os...
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Communiqué Officiel
Posté par Ontologia (site web personnel) . En réponse au journal La parnanoia IE, c'est mal. Évalué à 2.
Promis, on en parlera pas à Jonita ;-)
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: RE : regexp
Posté par Ontologia (site web personnel) . En réponse au message Captures dans une regexp. Évalué à 2.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: kodos
Posté par Ontologia (site web personnel) . En réponse au message Captures dans une regexp. Évalué à 2.
Dans le cas général, supposons que j'ai une chaine du style
motclé1 motclé2 motclé3 <param1,param2> motclé4 param3 motclé4
Bref une chaine avec une grammaire BNF du style
mot ::= motclé1 | motclé2 | motclé3
param ::= '<' 'a'..'z'* ['a'..'z'] '>'
phrase ::= mot [mot ]* param[',' param]
J'ai plein de chaîne de ce style et je voudrai récupérer les paramètres.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: le monsieur te dit !
Posté par Ontologia (site web personnel) . En réponse au message Arrive pas à reformater ma clé USB. Évalué à 3.
En cadeau le message de cfdisk :
"Disque ouvert en mode lecture seulement - aucune permission d'écriture"
Bien évidemment, il n'est pas monté.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Partoches, partoches ...
Posté par Ontologia (site web personnel) . En réponse au message Arrive pas à reformater ma clé USB. Évalué à 3.
Lorsque je tente de lire le contenu, le système émet les erreurs suivantes (obtenues avec dmesg) :
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4800
Buffer I/O error on device sda, logical block 600
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4808
Buffer I/O error on device sda, logical block 601
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4816
Buffer I/O error on device sda, logical block 602
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4824
Buffer I/O error on device sda, logical block 603
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4832
Buffer I/O error on device sda, logical block 604
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4840
Buffer I/O error on device sda, logical block 605
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4848
Buffer I/O error on device sda, logical block 606
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4856
Buffer I/O error on device sda, logical block 607
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4864
Buffer I/O error on device sda, logical block 608
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4872
Buffer I/O error on device sda, logical block 609
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4880
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4888
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4896
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4904
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4912
SCSI error : <2 0 0 0> return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error
end_request: I/O error, dev sda, sector 4920
usb 4-2.1: reset high speed USB device using ehci_hcd and address 8
scsi: Device offlined - not ready after error recovery: host 2 channel 0 id 0 lun 0
SCSI error : <2 0 0 0> return code = 0x8000002
Unrecognized sense data (in hex):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
end_request: I/O error, dev sda, sector 4928
printk: 6 messages suppressed.
Buffer I/O error on device sda, logical block 616
scsi2 (0:0): rejecting I/O to offline device
scsi2 (0:0): rejecting I/O to offline device
scsi2 (0:0): rejecting I/O to offline device
scsi2 (0:0): rejecting I/O to offline device
scsi2 (0:0): rejecting I/O to offline device
Je pense qu'elle est morte...
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: /dev/sda ou /dev/sda1
Posté par Ontologia (site web personnel) . En réponse au message Arrive pas à reformater ma clé USB. Évalué à 2.
# dd if=/dev/sda1 of=cle bs=512
dd: ouverture de `/dev/sda1': Aucun fichier ou répertoire de ce type
Merci quand même ;-)
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Partoches, partoches ...
Posté par Ontologia (site web personnel) . En réponse au message Arrive pas à reformater ma clé USB. Évalué à 2.
Alors, j'ai commencé par lancer la copie et le résultat m'inspire de grosses craintes :
# ls -l /dev/sda*
brw-rw---- 1 root disk 8, 0 mai 27 02:00 /dev/sda
# dd if=/dev/sda of=cle bs=512
dd: lecture de `/dev/sda': Erreur d'entrée/sortie
64+0 enregistrements lus.
64+0 enregistrements écrits.
[root@192 totemGuHGb7]#
Ensuite, j'ai pas de commutateur sur le côté.
Sur le site du fabriquant de la clé, on ne trouve rien d'intéressant. Tant pis, sinon, ça sera une clé neuve :(
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Il est temps de faire qqch contre ça
Posté par Ontologia (site web personnel) . En réponse au journal Les francais sont des pirates. Évalué à 1.
Sinon j'avais essayé les Elixir Nanoweb, qui sont des cordres avec une couche de plastique, elles tiennent plusieurs mois mais ça me tuait mon inspiration, c'était bizare, plus rien ne sortait avec ces cordes là.
Ernie Ball est un bon compromis.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Comment casser le mythe de rapidité de Fibonacci :-)
Posté par Ontologia (site web personnel) . En réponse à la dépêche Erlang/OTP R11B supporte les architectures multiprocesseur. Évalué à 2.
Petite difficulté informatique : ne pas mettre les calculs par terre à cause des arrondis.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Grand méchant loup...
Posté par Ontologia (site web personnel) . En réponse à la dépêche Google, futur grand méchant loup ?. Évalué à 0.
Le journalisme c'est attirer le challant avec du subjectif, du sentiment.
Cela dit, un monopole, dans un système économique capitaliste libéral (j'ai pas dis néolibéral, cela n'a rien à voir) c'est dangereux, car la stabilité du système est basé sur la concurrence.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: ...
Posté par Ontologia (site web personnel) . En réponse à la dépêche Erlang/OTP R11B supporte les architectures multiprocesseur. Évalué à 2.
C'est bien pour cela que le JIT a attendu des langages comme Java ou C# pour devenir populaire.
On a surtout besoin de grammaires expressives.
Dans le langage auquel je pensais (toujours le même), Lisaac, la conditionnel, les briques de bases pour les boucles n'existent pas. Le compilateur ne connait que 7 primitives (-,*,/,and, or, =, >). Toute la lib est faîte avec ça.
Le if est une résolution dynamique sur les objets true et false héritant de booléan. Le compilateur l'optimise pour retomber sur un if comme en C. Ce qui fait que toutes les structures de ce type n'importe où dans le code sont optimisées. De même pour les récursives etc...
Plus ta grammaire est minimaliste, plus le compilateur se concentre sur la sémantique du code, pare que tu retombes toujours dessus quand tu fait l'analyse sémantique dans le compilateur (le micro langage interne).
Et c'est là que les optimisations sont possibles.
Le nombre de primitives dans Java et C# sont énormes, (http://isaacos.loria.fr/li_simplicity.html ), par contre le langage de la machine virtuelle est sufisament minimaliste et expressif pour que les optims soient faites dessus.
Cependant, l'analyse statique restera toujours limitee. Le comportement d'un programme depend de son code et de ses parametres en entree. Une optimisation statique a la compilation ne peut optimiser que le code d'un point de vue general. Elle ne peut pas connaitre quelle fonction est appelee plus souvent dans la pratique. C'est la que les optimisations JIT interviennent. Elles regardent le code s'executer et peuvent trouver les fonctions qui sont reellement utilisees en permanence.
Le C etant compile en assembleur avant d'etre execute, toute l'information sur la notion de fonction et de variable est perdue. Meme si cette information perdurait, a terme, la grammaire du C est trop peu expressive a mon sens pour permettre des optimisations de longue haleine (pas de notion d'interface, pas de notion de dictionnaire, utilisation de pointeurs pour gerer des tableaux, utilisation de pointeurs sans types, etc).
Donc plus ca va, plus le C va etre a la rue parce qu'il ne peut guere evoluer. D'un autre cote, cette stabilite est aussi ce qui a fait son succes.
Il y a C et C : il y a C écrit par un humain et C généré par un compilateur.
Le C écrit par un être humain exprime de la sémantique humaine : c'est à dire que le code est proche d'une représentation humaine du programme et moins un représentation adaptée à la machine.
Il est par exemple quasiment impensable qu'on s'amuse à faire un gros malloc au début et gérer les pointeurs pour faire en sorte que la mémoire cache soit utilisée au mieux. Ca devient vite ingérable. Par contre un compilateur peut le faire.
De même, souvent, tu vas utiliser des chaînes pour représenter une structure sémantique préfixée, alors que des nombres peuvent le faire, car c'est bijectif. C'est un peu ce qu'on fait dans les bases de données relationnelles.
Il est vrai qu'en l'état actuel des choses, on devrait réfléchir non à la machine virtuelle, mais à une espèce de programme possédant des informations sur son code et capable dans certains cas de générer son propre code. Mais il faut faire très attention : là où la machine virtuelle virtualise tout, il faudrait un système qui permette d'utiliser des optimisations faites par les VM seulement là et quand c'est utile.
C'est en tout cas une piste intéressante, mais le problème est qu'elle impose de connaître ton assembleur cible ou d'embarquer une part du compilateur (le back end de GCC par exemple)...
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Grand méchant loup...
Posté par Ontologia (site web personnel) . En réponse à la dépêche Google, futur grand méchant loup ?. Évalué à 2.
Je vais encore me faire tapper dessus, mais je me sens tout de même visé...
Mon propos n'est absolument pas de dénoncer un prétendu complot (les partisans de la théorie du complot ne sont que des mous du cerveau qui ne veulent pas accepter la complexité du monde) ou une haine dissimulée contre des grandes entreprises (Je suis fière d'Airbus, EDF, etc...).
Mon propos consiste simplement à remarquer ce que je pense être une tendance de fond et une stratégie d'entreprise.
J'imagine que tu as bêtement pris mon titre au premier degré.
J'évite le premier degré tant que possible, c'est une faute de goût.
Qu'il y ait ici pas mal de gens à qui on peut faire ce reproche est une chose, mais réfléchit à deux fois avant de te lancer dans ce genre de remarques.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: ...
Posté par Ontologia (site web personnel) . En réponse à la dépêche Erlang/OTP R11B supporte les architectures multiprocesseur. Évalué à 4.
Soit tu met des primitives dans le processeur et j'ose pas imaginer les conséquences...
Soit tu te débrouilles pour que le compilateur intègre les techniques que Kha citait plus haut. Et là ça devient assez chaud. Ca n'est possible à mon avis qu'avec :
- Un compilateur utilisant massivement une analyse de flot
- Un compilateur qui dispose de bonnes informations, à priori sur les statistiques d'utilisation du code (ie. distribution des valeurs les plus courantes en entrée des fonctions).
De là, soit tu t'amuses à compiler ton programme, à lui balancer une batterie de tests - en espérant qu'ils soient représentatifs - et à recompiler celui-ci en connaissance de cause, ou soit tu lui colle une sémantique du type contrat, définition d'intervals/ensemble afin d'avoir de bonnes infos sur le comportement de ton code.
Dans tous les cas c'est problématique, et faut bien analyser
- Quels appels extérieurs cela implique pour optimiser leur appel (table de hashage, etc...) et le cas échant, il faut que l'OS soit optimisé pour ça
- Les problèmes de mise à jour des données (table de hashage sur appels de fonction).
Dans le compilateur, il faudrait que l'analyse de flot analyse les sous graphes potentiellement très consommateurs en calculant leur complexité ainsi que les possibilités de "distributions" des paramètres dans l'intervalle possible (typiquement , on peut déduire, dans certains cas, par un moteur logique, que le param appliqué à la fonction f, dans le contexte se trouvera dans l'interval [20;100]).
Avec ça, le compilateur peut poser un système de table de hashage dessus, voire découper le code de la méthode en petit bout et la spécialiser aux seuls paramètres qui change.
Merci pour l'idée Kha, ça serait sympa à intégrer au compilo...
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Juste une petite question...
Posté par Ontologia (site web personnel) . En réponse au journal Personne n'en a parlé ? Une interface driver intelligente bientôt sous Linux !. Évalué à 2.
La différence c'est que dans une PME, par exemple, un XP boite peut être mis sur un autre poste au cas où on décide mettre un Linux ou autre sur le pc sur lequel il était initialement.
Avec un OEM, si tu jette le pc, si tu installe autre chose définitivement, tu perd la licence.
Dans une PME qui a un petit budgt informatique, c'est important, et faut danser avec, je sais de quoi je parle.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: ...
Posté par Ontologia (site web personnel) . En réponse à la dépêche Erlang/OTP R11B supporte les architectures multiprocesseur. Évalué à 4.
Mais on réfléchi depuis quelques temps, surtout à l'instigation de nicO à des fonctionnalités massivement parralèles un peu comme Erlang. Mais faut spécifier tout cela et ensuite réfléchir si c'est intégrable et comment l'intégrer...
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: ...
Posté par Ontologia (site web personnel) . En réponse à la dépêche Erlang/OTP R11B supporte les architectures multiprocesseur. Évalué à 1.
Lisaac. Et c'est le but (bon évidemment pour le fonctionnel par exemple, on fera jamais mieux que Caml, Lisp, etc...).
Et s'il manque des choses a ton goût, c'est ici : http://wiki.loria.fr/wiki/Sp%C3%A9cifications_compilateur
Bon j'ai fait ma prosel de la semaine, c'est bon...
Ok, je --> []
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Une nouvelle très importante
Posté par Ontologia (site web personnel) . En réponse au journal Personne n'en a parlé ? Une interface driver intelligente bientôt sous Linux !. Évalué à 3.
PbPg est un impie, un hérétique que la funeste liberté des moeurs de notre sombre époque laisse trop exprimer.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Légendaire ?
Posté par Ontologia (site web personnel) . En réponse au journal mon mémoire sur les logiciels libres. Évalué à 2.
Enfin, c'est ce que j'en pense...
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker