Se connecter
Se connecter

ou
Créer un compte

ou
FR
EN

Le pub des programmeurs

  • 1 927 réponses
  • 117 participants
  • 131 697 vues
  • 130 followers
Sujet de la discussion Le pub des programmeurs
Salut :coucou: y a des programeurs sur AF si oui vous bossez sous quoi ?
Afficher le sujet de la discussion
901

Citation :

Sur PC, la qualité du timing MIDI "externe" (hors VST) a probablement toujours été le cadet de leurs problèmes. Ce qui ne veut pas dire que les pb n'existent pas, à force de rajouter des couches et des couches d'abstractions matérielles:



Oui, mais on rentre encore une fois dans les problemes de windows. Tous les autres OS dignes de ce nom ont nettement moins ce probleme, car ils ont des mechanismes de scheduling dignes de ce nom. C'est pas tant un probleme d'abstraction qu'un probleme de mauvais abstraction :) Les problemes de timing Midi, je vois pas en quoi ca aurait un probleme specifique a ce niveau la par rapport a 'audio ? J'ai jamais vraiment touche au Midi, donc il y a peut etre un truc qui m'echappe.
902
Désolé de changer de sujet, j'en reviens aux menus déroulants au dessus.
j'en ai fait un en javascript, mais il manque la commande de déroulage automqtique lorsqu'on passe la souris dessus.
Le mien ne se déroule pas si je ne lique pas sur la flèche à droite...
je sais qu'il faut mettre un truc du genre <mouseoveron="showmenu" mouseoverout="hide Delay"> comme c'est écrit dans la source de cette page.

au passage, si vous avez des adresses de sites proposant des listes de codes pour apprendre, je veux bien, parce que jusqu'à maintenant je n'ai pas trouvé comme pour le html... :??:
903
Merci pour ces premiers éléments de réponse... :clin:
J'aurais du préciser quand même ces quelques points : :??:
ce n'est pas vraiment une appli que je souhaite réaliser mais davantage des "manipulations" algorithmiques du son et de la musique.
Quelques exemples :
1. A partir d'un son de piano vst, jouer une partition crée au moyen d'un algorithme (comme à partir d'une matrice de markov par exemple)
2. me fabriquer un "piano préparé" à partir de plusieurs banques de samples
3. fabriquer des "objets-sonores" dans un environnement 3D (ex : un cylindre qui emmet un son de + en + fort en intensité au fur et à mesure qu'on s'en approche)
4. partir du spectre d'un son donné et lui faire subir un algorithme qui le modifie en temps réel...
Bref : "programmer de la musique et du son"
...
En réalité, les idées ne me manquent pas; mais de les organiser dans une logique de programmation me manque cruellement :
certains m'ont parlé de Csound, d'autres de Puredata, d'autres encore d'OpenGL ...J'avoue être un peu perdu dans tout ça...
Il me paraissait logique dans un premier temps de dominer l'aspect midi et C++ ...
A présent vous savez tout!


Autre élément qui peut être décisif dans mon choix :
je me débrouille en C++ ...
Mais bon
904
Pour répondre à alexonif2, j'aime bien me bidouiller des "outils" sonores que je ne trouve pas ailleurs. Mais je préfère largement jouer de la musique plutôt que coder ... :bravo:

Avant de tout coder de zéro, tu as essayé des synthé modulaires ?

Personellement, j'utilise Plogue Bidule et j'en suis super content. C'est un gain de temps énorme par rapport à se palucher un VST qui ferait la même chose. Et si vraiment pour des questions de perf ou pour intégrer une bibliothèque extérieur je suis obligé de coder un plugin, il fait rarement plus de 500 lignes. (Je me suis aussi fait un plugin pour Bidule qui lit du Python, histoire de coder encore moins)

Typiquement, pour les points 1, 2, et 4, ca doit pouvoir se faire dans n'importe quel système modulaire.

Pour le 3, ça se corse. C'est clair qu'il faut mettre les mains dans le cambouis. Mais je pense que tu peux t'en tirer en faisant "simplement" un VST qui sort du MIDI pour les paramètres des tes "objets sonores" et laisser ton séquenceur se charger de tous les problèmes plus "bas niveau".
My name is john, '_' john.
905

« What is full of redundancy or formula is predictably boring. What is free of all structure or discipline is randomly boring. In between lies art. » (Wendy Carlos)

906

Citation :
Il me paraissait logique dans un premier temps de dominer l'aspect midi et C++ ...



Franchement, apres tes precisions, je dirais encore plus qu'avant que le C++ est vraiment pas le bon outil, c'est peut etre meme le pire. Le C++ reste un langage tres peu expressif, c'est du bas niveau.

Pour l'aspect composition, il y a pas mal d'environnements qui devraient te satisfaire: Csound, Pure Data, Max/Msp, reaktor, supercollider, chuck. Chacun avec ses forces et faiblesses.

supercollider et chuck sont des langages temps reels pour la composition et la synthese. Je les connais pas vraiment, mais j'ai vu des trucs interessants faits avec Chuck, par exemple.
907
Je vais dans le sens de Gabou.

Dans pure date il y a un module open GL, qui permet de mixer visualisation et musique...

Regarde du cote de ces outils, ce sera bien plus gratifiant du point de vue créatif.

Jul

908
Bon...
Laissons tomber C++ et ses copains
Allons voir plutôt du côté de PureData.
Quelquechose m'échappe :
  • Citation : Dans pure date il y a un module open GL, qui permet de mixer visualisation et musique...


    Qu'entend tu par module ? Je voyais justement OpenGl comme une librairie exploitable surtout en C++...
  • 909
    OpenGL, c'est surtout du C -contrairement à DirectX - et il y a des wrappers pour presque tous les langages maintenant.
    910
    Tu peux acceder aux fonctionalites openGL depuis chuck, entre autre:

    http://audicle.cs.princeton.edu/

    Citation :
    what is the Audicle? : Many software environments have been developed for computer music. Programming environments typically provide constructs to implement synthesis or musical algorithms, whereas runtime environments allow performers to exert parametric control over their programs onstage, in real-time. We present a potentially new type of audio programming environment that integrates the programmability of the development environment with elements of the runtime environment. The result, called the Audicle, is a duct-taped intersection of a concurrent smart editor, compiler, virtual machine, and debugger, all running in the same address space, sharing data, and working together at runtime. We sometimes believe this augmentation has the potential to fundamentally enhance the way we write and visualize audio programs both offline and on-the-fly.

    911
    Vous vous souvenez des échanges enflammés entre Andrew Tanenbaum (célèbre universitaire spécialiste des systèmes d'exploitation) et le jeune étudiant Linus Torvalds ?

    ( résumé - thread entier )

    Il y a eu une sorte de reprise du débat (15 ans après... :mrg: ) :
    article de Tanenbaum
    réaction de Torvalds (long)
    point de vue d'un tiers réputé
    912
    Je trouve l'argumentaire de Tannenbaum et du tiers repute plutot pauvre, personellement. Typiquement, lorsque le gars donne tout son blabla sur l'IDL, la "componentization" (sic), c'est un peu a cote de la plaque, car Torvald n'a jamais dit qu'il fallait faire des systemes non structures, mais au contraire que l'avantage du micro kernel (differents composants avec une interface bien definie) peut se retrouver dans les noyaux monolithiques, sans les problemes lies au non partage de l'adressage (ou plus exactement ce qu'il appelle access space separation).

    Ensuite, l'argument de coherence est un peu bidon je trouve (d'ailleurs, comme par hasard, la partie ou Linux explique cette partie n'est pas citee :

    Citation :
    Seperating some things is a wonderful thing, and not ten
    years behind. Almost all lockless algorithms depend on
    per-cpu data structures, and that's fine.

    The problem is doing it for "everything". It doesn't work.

    Doing it for the filesystem caches, for example, is a total
    disaster. It increases memory pressure by huge amounts, and
    makes synchronization much harder.

    (snip)

    So replication simply isn't a generally acceptable model.
    It works fine sometimes, and when it works, it's
    wonderful, and monolithic kernels will certainly do it too.
    It's just not a "generic" solution.



    Ce qui repond plutot bien au "The last sentence is obviously wrong: when you do not share data structures, there is no coherency problem by definition. Technically, it is possible to share memory in microkernel-based applications, but the statement is true in the sense that this practice is philosophically discouraged."

    Ce que je trouve assez revalateur, c'est de voir toutes les previsions de Tannenbaum en 92, et de voir le monde d'aujourd'hui. Il a eu tord sur a peu pres toute la ligne (RISC, micro kernel partout, etc...).
    913
    Pour completer, je dirais que Linux en general a pu produire/rendre possible en 15 ans tout un ecosysteme qui a plus ou moins contredit tout ce que l'on pensait possible sur la programmation et le design de software. Deja, la portabilite: un des arguments de A.T en 92; aujourd'hui, Linux est l'OS qui a ete le plus porte au monde, qui peut fonctionner de l'embarque aux super ordinateurs a partir du meme source tree. C'est le SEUL exemple a ma connaissance dans toute l'histoire de l'informatique.

    Rien que ca, ca contredit completement l'argumentaire de la plupart des contradicteurs a mes yeux: si le code de Linux, son organisation etait si mauvais, comment se fait-il qu'il ait put aller aussi loin ?

    Ensuite, sur le probleme des drivers: Linux permet a de plus en plus de drivers d'etre en dehors de l'espace noyau (USB, filesystem avec FUSE, et une autre infrastructure dont le nom m'echappe qui est en train de se mettre en place).

    Enfin, tout le truc sur l'OO, franchement, je trouve que c'est bidon. Deja, presenter l'OO comme super truc des 20 dernieres annees, c'est loin d'etre evident. Puis quand tu vois la liste que donne A.T http://www.cs.vu.nl/~ast/reliable-os/


      * QNX
      * Integrity
      * PikeOS
      * Symbian
      * L4Linux
      * Singularity
      * K42
      * Mac OS X
      * HURD
      * Coyotos


    Franchement... Deja, j'ai jamais vu quelqu'un en dehors d'apple pretendre que mac os X a un meilleur noyau que Linux, plutot le contraire (d'ailleurs, personne n'a jamais utilise le noyau de Mac OS X, alors qu'il est open source); quand tu regardes un peu les sources, c'est plutot darwin en est la ou etait linux il y a 10 ans; en plus, c'est pas du tout micro kernel, vu que tous les drivers sont dans le meme espace d'adressage. L4Linux n'a jamais vraiment servi a rien, HURD n'est toujours pas utilisable (et en plus, pour la version base sur MACH, tous les drivers sont aussi dans l'espace d'adressage du noyau).

    Quand Tannenbaum dit que Torvald n'est pas interesse par l'embarque, c'est aussi de mauvaise foi. Surtout que Linux est vachement utilise en embarque.
    914
    J'ai une question un peu HS : est-ce que vous utilisez les unités mebibit, mebioctet etc...

    Un de mes stagiaires me fait la leçon la -dessus, j'aurai ma revanche quand il devra prononcer "mebibit" en soutenance ou c'est vraiment utilisé maintenant ?

    Affiliation : Dirigeant Fondateur d'Orosys - Two notes Audio Engineering

    915
    Perso, je dois dire que je suis plutôt enclin à suivre Tanenbaum sur ce coup.
    En embraque, on a Linux, oui, mais lorsqu'il s'agit de systèmes temps réel, on se rabat sur les noyaux qu'il a cité.

    Je pense aussi comme lui, chacun poursuit son idée, et que le meilleur gagne en toute sportivité, il y a des avantages et des inconvénients aux deux approches.

    PS : Il faut tout de même penser non-structuré comme non-structuré de l'extérieur, je pense, car Linux est structuré. D'ailleurs, les modifications actuelles (sortir les drivers du noyaux) sont en train d'être faites par tous les suystèmes qui ne le faisaient pas et Microsoft tente de modulariser son OS de la même manière. D'ailleurs, si on réfléchit bien, modulariser, c'est créer des composants qui s'assembleront, donc un micro-kernel à terme. C'est tout de même plus simple à maintenir.
    916

    Citation : J'ai une question un peu HS : est-ce que vous utilisez les unités mebibit, mebioctet etc...

    Un de mes stagiaires me fait la leçon la -dessus, j'aurai ma revanche quand il devra prononcer "mebibit" en soutenance ou c'est vraiment utilisé maintenant ?


    Pour ce que j'en ais vu il semblerais que c'est "la norme" etc comme cédérom...
    917

    Citation :
    En embraque, on a Linux, oui, mais lorsqu'il s'agit de systèmes temps réel, on se rabat sur les noyaux qu'il a cité.



    Il y a aussi des noyaux non micro en embarque. En fait, il ne demontre en rien que le design micro kernel est ce qui fait la puissance de ces OS la; et encore une fois, il s'agit la de systemes ultra specialises, qui ont un domaine ultra limite par rapport a linux. Faire un OS temps reel quand tu ne fais que de l'embarque, c'est beaucoup plus simple.

    Ce que je n'aime pas dans son argument, c'est de dire que les micro noyaux, c'est plus adapte que d'autres design; la preuve, voila des OS micro noyaux en embarque. Mais le lien de causalite micro noyau => meilleur OS, il est pas du tout evident !

    Linux est aussi utilise pour du temps reel (Montavista, par exemple: c'est en train de devenir une plateforme de choix pour les smart phones).

    Citation :
    D'ailleurs, si on réfléchit bien, modulariser, c'est créer des composants qui s'assembleront, donc un micro-kernel à terme.



    Justement, c'est la le point d'achoppement: pour Torvald, tu peux creer des composants sans faire de micro kernel (qui impose un espace d'adressage different pour chaque composant). En fait, la ou A. T dit que le micro noyau est question de design, Torvald repond que c'est un un probleme d'implementation (qui a un impact fort sur les performances).

    La aussi, je pense que le resultat parle de lui meme: Linux est modulaire, car a partir du meme source tree, tu peux faire des noyaux qui tiennent sur quelques Mo de ram, et des noyaux pour du HPC. A.T dit que le seul moyen de faire un truc modulaire, c'est le micro noyau, et Linus dit que non.

    Un autre site sur le debat:

    http://tunes.org/wiki/microkernel.html

    Citation :
    PS : Il faut tout de même penser non-structuré comme non-structuré de l'extérieur, je pense, car Linux est structuré.



    Qu'est ce que tu entends par la ?
    918
    J'ai oublie aussi de poster les dernieres reponses de Torvald, qui sont interessantes concernant l'idee de separation d'espace d'adressage:

    http://www.realworldtech.com/forums/index.cfm?action=detail&id=67263&threadid=66595&roomid=2
    919

    Citation : Rien que ca, ca contredit completement l'argumentaire de la plupart des contradicteurs a mes yeux: si le code de Linux, son organisation etait si mauvais, comment se fait-il qu'il ait put aller aussi loin ?


    Ta passion t'enflamme jeune padawan ! :mrg:

    Pour ce genre de débat il y a truc vicié dès l'origine : croire ou prétendre que un truc est mieux que l'autre. Les deux solutions (et comme le disent certains, il y en a beaucoup plus que 2) ont de nombreuses caractéristiques différentes. En fonction des usages étudiés, ces caractéristiques peuvent être importantes ou non, avantageuses ou pas.

    Croire que "one size fits all" est une erreur évidente, que tous les deux commettent un peu. Il y a deux trucs que j'ai relevés, qui m'ont fait marrer (et que je considère comme grossièrement faux) :

    Citation : I know that computer software is different from car software, but users just want them both to work and don't want lectures why they should expect cars to work and computers not to work. I want to build an operating system whose mean time to failure is much longer than the lifetime of the computer so the average user never experiences a crash.


    A coût constant, évidemment que l'on préfère un truc fiable que buggé. Mais si les évolutions doivent être 3 fois moins rapides, si le logiciel doit coûter 2 ou 5 fois plus, pas sûr que l'utilisateur soit intéressé. C'est même sûr que non. Rarement l'histoire a privilégié la meilleure techno. Digital Unix (=Tru64) était proche d'un micro-noyau si je ne m'abuse? Ils avaient aussi le meilleur hardware, le meilleur Unix, et le meilleur compilo C++ ; donc tout faux par rapport à M$. :mrg:

    Citation : Anybody who has ever done distributed programming should know by now that when one node goes down, often the rest comes down too.


    Heureusement que non ! Systèmes bancaires, salles de marchés, salles de contrôle satellite/fusées, centrales nucléaires, trucs militaires, réservations avion ou train... ;)


    En deux mots, je pense que le gain de fiabilité dont parle Tanenbaum existe (et donc qu'il a raison sur ce point), mais qu'en fait le marché associé est ridiculement petit. 90% se contentent de Windows, pour 9% Linux est hautement satisfaisant et peut-être qu'une partie du pourcent restant pourrait être intéressé.

    Cela dit, soit ce sont des systèmes avec des contraintes physiques ou prix (téléphone portable, jouet, UA1D :mrg: ...) et on prend rarement un OS généraliste ; soit ce sont des système encombrants, et là on traite le fiabilité d'un manière globale : que ce soit l'application, l'OS ou le hardware qui déconne, le mécanisme de tolérance de panne utilisé est le même. Donc le fait que "So what do microkernels have to do with this goal? They make it possible to build self-healing systems." on s'en tape pas mal. D'ailleurs il n'est pas rare de redémarrer la machine (= le noeud) si une appli critique (genre middleware) a planté.

    Du coup je vois peu de cas d'applications. Menfin je prétends pas tout connaître !

    Par contre, ce qui m'a surpris, amusé et intéressé, c'est de voir que l'on retrouve au niveau application, voire appli distribuée cette opposition "partage de données" (noyau monolithique) / "recopie de données" (micro-noyau).

    Et là, le choix de la recopie est très sain, et très viable. C'est assez courant ; et quand on ne le fait pas, c'est souvent des problèmes insolubles ensuite. Dans ce contexte, même si l'inconvénient soulevé par Torvalds est parfaitement vrai, ce choix est généralement meilleur :

    Citation : The fundamental result of access space separation is that you can't share data structures. That means that you can't share locking, it means that you must copy any shared data, and that in turn means that you have a much harder time handling coherency. All your algorithms basically end up being distributed algorithms.

    920

    Citation :
    Ta passion t'enflamme jeune padawan !



    Bof, je crois pas etre si passione que ca, et Torvald sort souvent des anneries aussi, je cherche pas a le defendre a tout prix.

    Citation :

    Croire que "one size fits all" est une erreur évidente,



    Peut etre, mais "Linux fits many more sizes than any other OS ever has before" (c'est la loi de Gabou).

    Plus serieusement, Linux tourne sur enormement de plateformes differentes, avec des contraintes tres differentes aussi. Est ce que tu connais un autre OS qui est utilise aussi bien sur des computing farms, des supercomputers, des telephones portables (motorola par exemple investit pas mal dans linux maintenant) a partir du meme code ? Moi non. Ca n'a jamais ete fait avant. Ca montre bien qu'il y a quelque chose qu'il y a quelque chose qui fait que le design et plus globalement tout le process autour de linux marche extremement bien.

    Citation :
    Heureusement que non ! Systèmes bancaires, salles de marchés, salles de contrôle satellite/fusées, centrales nucléaires, trucs militaires, réservations avion ou train...



    Mais tout ca, ce ne sont pas des systemes distribues au sens ou Torvald l'entend.

    [edit] D'ailleurs, dans quasiment tous ces domaines, Linux est de plus en plus utilise. Salle de marche ? Wall Street est de plus en plus interesse par Linux (j'ai pas trop suivi non plus); controle de fusee/satellites, la, je sais pas trop, c'est pas un domaine que je suis non plus.

    Citation :

    Et là, le choix de la recopie est très sain, et très viable. C'est assez courant ; et quand on ne le fait pas, c'est souvent des problèmes insolubles ensuite. Dans ce contexte, même si l'inconvénient soulevé par Torvalds est parfaitement vrai, ce choix est généralement meilleur :



    Oui mais Torvald n'a toujours parle que de son domaine, la ou les performances comptent enormement.
    921

    Citation : Bof, je crois pas etre si passione que ca, et Torvald sort souvent des anneries aussi, je cherche pas a le defendre a tout prix.


    Tu es parti au quart de tour quand même ! :bravo:
    Ca donne l'occasion de te taquiner, mais note bien que je n'ai pas écrit "ta passion t'aveugle", d'autant qu'on est quasiment d'accord sur tout.

    Citation : Peut etre, mais "Linux fits many more sizes than any other OS ever has before" (c'est la loi de Gabou).


    Pour l'instant Windows fits much more ! Mais c'est vrai que côté serveurs et autre informatique professionnelle, Linux a balayé les UNIX et d'autres produits à une vitesse incroyable. On est d'accord que jamais QNX et son micro-noyau ne vont remplacer Linux sur la moitié de machines où Linux est aujourd'hui, c'est une évidence.

    Citation : Ca n'a jamais ete fait avant. Ca montre bien qu'il y a quelque chose qu'il y a quelque chose qui fait que le design et plus globalement tout le process autour de linux marche extremement bien.


    Certes. Ca ne veut pas dire que Linux était toujours meilleur que ce qu'il a remplacé ; des fois il était simplement beaucoup moins cher, et au global ça suffisait pour l'emporter. Par exemple le multithreading était bien pourri avant le noyau 2.6 (et les NPTL) alors qu'il était ok depuis longtemps chez les autres Unix. On en revient au même point : contrairement à ce que dit Tanenbaum, les endroits où on a vivement besoin d'un noyau beaucoup plus fiable que celui de Linux sont certainement extrêmement rares.

    En plus ya moyen de gagner beaucoup en fiabilité sans passer au micro noyau : en figeant des drivers (UAA de Vista ...) ou en les mettant en user space... et plein d'autres trucs.

    Citation : Mais tout ca, ce ne sont pas des systemes distribues au sens ou Torvald l'entend.

    [edit] D'ailleurs, dans quasiment tous ces domaines, Linux est de plus en plus utilise. Salle de marche ? Wall Street est de plus en plus interesse par Linux (j'ai pas trop suivi non plus); controle de fusee/satellites, la, je sais pas trop, c'est pas un domaine que je suis non plus.


    Mmmh, si, je pense que Torvalds parlait des "applications distribuées" (et non d'un OS distribué), car derrière il ajoute :

    Citation : In contrast, if you do distributed physics calculations, and one node goes down, you can usually just re-assign another node to do the same calculation over again from the beginning. That is not true if you have a really distributed system and you didn't even know where the data was coming from or where it was going


    Je pense que ce sont des utilisations dont il n'est pas familier, c'est tout.

    Et oui dans ces systèmes c'était très généralement des Unix commerciaux qui étaient utilisés, et donc désormais Linux pratiquement partout. Les défauts des threads et du support du C++ étaient encore gênant il y a quelques années, mais maintenant c'est fini. D'ailleurs l'implication d'IBM et autres intel (au niveau de son compilateur) montre bien que la direction actuelle est complètement Linux (pour ce genre de systèmes).

    Citation : Oui mais Torvald n'a toujours parle que de son domaine, la ou les performances comptent enormement.


    On est d'accord. Pour certaines applications (et non OS), courantes dans l'industrie (mais pas côté grand public), ces concepts sont intéressants. Pour le système d'exploitation, possible que ça ait un intérêt, mais certainement très confidentiel.

    SAP tourne sur Windows NT, doit tourner sur Linux, et ne doit rien avoir à foutre d'un micro-noyau. Tibco, Oracle, Weblogic et MQ-Series non plus !
    922

    Citation : D'ailleurs, dans quasiment tous ces domaines, Linux est de plus en plus utilise.


    En gros, à partir de B, jusqu'à E on trouve du linux.
    Pour du A je pense que ce n'est jamais le cas, et que ce n'est pas près de l'être : Linux compte trop de lignes pour être certifiable. Mais c'est un marché ultra-spécifique (notamment au niveau hardware). Donc ça n'apporte rien par rapport au débat Tanenbaum / Torvalds.
    923

    Citation :
    Pour l'instant Windows fits much more !



    Franchement, je vois pas pourquoi tu dis ca ? Deja, windows tourne pas sur tant d'architectures que ca (x86 pour les windows classiques, ppc pour la xbox 360, et arm pour windows CE ?). Ensuite, meme si c'est souvent anectodique, chaque fois qu'un nouveau truc sort en hardware, linux tourne dessus peu de temps apres: ca va des consoles de jeu a toute sorte de NAS et cie.

    Linux tourne quand meme sur pres de 50 architectures differentes. Il y a enormement de FS qui tournent sous linux (la aussi, pionnier a ce niveau la: rien de revolutionnaire, mais le vfs de linux est en avance sur tous les autres UNIX depuis longtemps autant que je sache)

    Apres, la ou je te suis completement, c'est que linux marche pour les memes raisons que windows, quelque part: tu peux avoir le meme systeme au boulot et a la maison, et ca, pour le developpement, c'est important. Ballmer gueulait developers, developers, et le mouvement open source en general fournit ca a des niveaux dont meme MS ne peut pas rever.

    Citation :
    Par exemple le multithreading était bien pourri avant le noyau 2.6 alors qu'il était ok depuis longtemps chez les autres Unix



    C'est discutable, ca. Il y a quand meme un point important a ce niveau la: linux a ete le seul OS generaliste (a ma connaissance) qui au court du temps, a vu ses performances de creation / context de process augmenter et non diminuer. Ensuite, le multi threading, c'est pas dans la philosophie Unix. Enfin, c'est une des innovations et differences importantes de linux par rapport aux autres Unix, il y a le system call clone, qui rentre en jeu la dedans, qui permet de creer des processus/threads tres rapidement (man clone Unlike fork(2), these calls allow the child process to share parts of its execution context with the calling process, such as the memory space, the table of file descriptors, and the table of signal handlers. (Note that on this manual page, "calling process" normally corresponds to "parent process". But see the description of CLONE_PARENT below.)

    Il y a quelques annees, j'avais cette idee que les Unix proprietaires etaient "vachement plus mieux" que linux niveau performances, et la, avec opensolaris, qui est quand meme repute (c'est le meme code que solaris), tu vois qu'en fait, les performances sont bien moindres que linux dans pas mal de cas.

    Citation :
    Pour du A je pense que ce n'est jamais le cas, et que ce n'est pas près de l'être : Linux compte trop de lignes pour être certifiabl



    A ce niveau la, tu peux pas utiliser le C, de toute facon, non ? C'est typiquement le sujet sur lequel je connais rien. T'as des projets comme ASTREE: ); return false;" rel="nofollow" target="_blank">http://www.astree.ens.fr/, qui font la verification du C, mais je me souvient m'etre fait explique par des gens beaucoup plus intelligents que moi que le C est une horreur quan d tu veux faire des preuves formelles, car le langage a enormement de situations non specifiees (pour ASTREE, ils precisent que tu ne peux pas utiliser d'allocation dynamique, par exemple).
    924

    Citation : Franchement, je vois pas pourquoi tu dis ca ? Deja, windows tourne pas sur tant d'architectures que ca (x86 pour les windows classiques, ppc pour la xbox 360, et arm pour windows CE ?)


    Je parlais en nombre d'utilisateurs (donc nombre de PCs équipés avec Linux ou Windows). Je reconnais que dès que l'on va parler de "nombre de types d'utilisateurs différents", Linux l'emporte probablement déjà. Toi tu parles du hardware, et là aussi Linux supporte beaucoup plus de plateformes.

    Citation : C'est discutable, ca. Il y a quand meme un point important a ce niveau la: linux a ete le seul OS generaliste (a ma connaissance) qui au court du temps, a vu ses performances de creation / context de process augmenter et non diminuer. Ensuite, le multi threading, c'est pas dans la philosophie Unix.


    Un problème typique et très gênant : tu fais la maintenance d'un logiciel sur 10 ou 20 ans, au début il est sur un Unix commercial, et il est multithread. Tant que dans Linux les threads systèmes étaient plaqués sur des processus, les signaux (SIGPIPE...) atterrissaient forcément dans le thread responsable de l'action. Or avec POSIX il n'était pas censé avoir cette limitation, le signal est de niveau processus et non thread. D'où gros problème. Maintenant qu'il y a la Native Posix Thread Library, c'est ok.

    Citation : A ce niveau la, tu peux pas utiliser le C, de toute facon, non ?


    Si, ça peut. Par contre faut que le compilateur soit certifié également, ce qui élimine aussi gcc. Ca se complique. :mrg:
    Les méthodes formelles ne sont pas systématiquement utilisées dans ces contextes. Il peut y avoir un mélange aussi : méthode formelle (SDL) pour le découpage en tâches (processus ou threads, mono ou multi machines) et inter-communications, puis codage avec tests unitaires de bouts de code purement fonctionnels.
    925

    Citation :
    Je parlais en nombre d'utilisateurs (donc nombre de PCs équipés avec Linux ou Windows).



    Ah, ok. Mais a ce niveau la, ca veut plus dire grand chose techniquement. Linux qui tourne sur 50 arch differentes, ca veut dire quelque chose techniquement. Windows qui fournit 95 % des machines desktop, ca veut aussi dire quelque chose, mais c'est plus forcement technique :)

    Citation :
    Or avec POSIX il n'était pas censé avoir cette limitation, le signal est de niveau processus et non thread.



    Surtout, pthread est ultra sous specifie vis a vis des signaux. Je crois pas que ce probleme soit specifique a Linux ? Comme le dit Brian Sullivan (a priori pas un demi mauvais a ce sujet):

    Citation :
    On Unix systems, using threads and signals together is a nightmare.



    D'ailleurs, je suis en train de me dire, un peu de mauvaise foi: la notion de thread, c'est finalement tout ce que Tannenbaum reproche a linux: tu partages ton espace d'adressage pour gagner en performances, mais ca devient beaucoup moins fiable :)