Le pub des programmeurs
- 1 927 réponses
- 117 participants
- 131 718 vues
- 130 followers

Anonyme



batman14

Citation :
Faudrait une fois que je regarde comme marche les plugins sous mac os X.
A priori, c'est la même chose. J'utilise Juce comme crossplateforme, et je fais l'export pour tous ces formats à partir de cet overlay.
La taille des chunks varie constamment sur FL Studio...lors de l'augmentation de la polyphonie, qui doit entraîner une surcharge CPU à ce moment, les chunks sont plus petits...
Ce que je trouve aussi dommage est l'ncompatibilité de VST avec d'autres environnements non Windows...je ne me sers jamais d'appel spécifique windows dans mes plugins, et Juce y aide grandement tu me diras !
Enfin bon, mon petit synthé VST est en route, il arrivera avant Janvier c'est sûr !
http://soundcloud.com/bat-manson

cptn.io

Dsl j'ai pas les capacités techniques pour vous suivre, je commence à peine avec le Java ...
Je souhaitais savoir si vous pouviez m'expliquer si c'est possible de se faire un plug vst avec java ? Si oui comment ?
Et si qqun a déjà essayé de le faire avec Puredata ( logiciel de prog graphique, proche de maxdsp) ? Je sais qu'ils ont un module permettant d'en sortir avec ...
cptn.io

Pov Gabou

En java, tu as jni qui permet de faire ca, mais c'est pas super commode a utiliser. En plus sympathique, tu as swig qui permet de sortir du java.
Si t'es debutant, c'est pas le plus facile non plus, quand meme, interfacer avec le C. Surtout que tu vas devoir avoir un systeme d'instanciation de ton plugin complexe (l'hote s'attend a voir un wrapper avec des fonctions C/C++, donc va falloir lancer une machine virtuelle, exposer ton plug in, etc....). Ca doit etre possible, mais loin d'etre facile.
Fondamentalement, c'est pas une bonne idee de faire des plugs en java, je pense, a cause du garbage collector. Je connais pas beaucoup java, mais je pense pas qu'il soit possible, au moins facilement, de lancer un thread avec un systeme d'allocation memoire compatible avec le "temps reel". Et java ne permet pas non plus un prototypage rapide, donc je suis pas sur que ca ait un grand interet pour les plugs ins; je suis pas un gros fan de java, faut dire, donc bon, je suis pas forcement objectif

Citation :
La taille des chunks varie constamment sur FL Studio...lors de l'augmentation de la polyphonie, qui doit entraîner une surcharge CPU à ce moment, les chunks sont plus petits...
Oui, c'est oblige d'avoir des tailles variables, donc de ce cote la, VST est pas en faute. Par contre, je suis d'accord sur le fait qu'ils pourraient avoir un exemple qui traite de ce probleme (taille variable en E/S-> taille constante pour l'algo interne).
Citation :
Ce que je trouve aussi dommage est l'ncompatibilité de VST avec d'autres environnements non Windows.
Ca, c'est inexact. Je crois que certains softs steinberg ont ete developpes sous IRIX a la base (entre autre nuendo ?), et ardour supporte VST. Ce qui est fondamentalement imconpatible, c'est la GUI, mais de toute facon, tu peux pas le faire de facon cross platform, ca (je parle du framework; si tu imposes un quelconque toolkit, ca marchera pas sous linux, parce que tu as gtk et qt, etc...)
Citation : A priori, c'est la même chose. J'utilise Juce comme crossplateforme, et je fais l'export pour tous ces formats à partir de cet overlay.
JUCE le fait pour toi, ou tu dois gerer ca toi meme ?
Le probleme de JUCE et de VST, c'est qu'en theorie, je crois pas que ce soit possible d'utiliser les deux en meme temps question license (a moins que tu developpes avec la version non GPL de JUCE).
Encore une fois, c'est vraiment chiant cette histoire de redistribution de VST.

batman14

Citation :
JUCE le fait pour toi, ou tu dois gerer ca toi meme ?
Juce le fait pour moi. Tu as une classe qui s'appelle filtre et qui correspond plus ou moins à l'interface de VST. Ensuite à la compilation, tu spécifies quelle est le chemin de la classe prototype de filtre, et tu choisis entre VST, AU et RTAS.
C'est super pratique, car avec un seul code, tu peux compiler les trois versions.
Pour les GUI, Juce est aussi crossplateform. De la même manière, tu changes des options dans la compilation pour faire une GUI mac windows ou linux...mais ça, t'as même pas à t'en soucier pour les plugins audio, si tu prends VST, il prends par défaut la version windows etc...
Citation :
Le probleme de JUCE et de VST, c'est qu'en theorie, je crois pas que ce soit possible d'utiliser les deux en meme temps question license (a moins que tu developpes avec la version non GPL de JUCE).
Juce vends une licence commerciale effectivement. Mais rien ne t'empêche de fournir tes sources. Il faut pour l'utilisateur qui voudra compiler tes sources, inclure le chemin vers VSTSDK lors de la compilation (donc le télécharger).
Juce ne fournit pas ce SDK, il faut le télécharger soit même. Juce est juste une overlay de VSTSDK...
Par contre, il est tout à fait possible question licence d'utiliser Juce et VST-SDK en même temps, sauf que le résultat n'est pas GPL.
Je me demande si VST SDK est si complexe que cela, et que l'on ne pourrait pas reprendre l'intégralité du code dans une version GPL...mais cela risque d'être impossible niveau juridique...
http://soundcloud.com/bat-manson

batman14

Citation :
un plug vst avec java
Un coup de google est tu aurais trouvé :
http://jvstwrapper.sourceforge.net/
Jamais utilisé de mon côté, je sais qu'ils ont des très bons résultats.
PS : je hais Java.
Citation :
Et si qqun a déjà essayé de le faire avec Puredata
Oui. Mais je suis pas un grand fan de Pure Data pour faire des produits finis. Je préfère reprendre les protos Pure Data tout le code en C++ ou en C...
(en fait j'utilise plus Reaktor, il est vraiment super ce truc).
En plus les GUI PD sont minables et consomment énormément de ressouces. J'ai jamais vu une aussi mauvaise gestion des graphismes que sous Pure Data.
http://soundcloud.com/bat-manson

Pov Gabou

Citation :
Par contre, il est tout à fait possible question licence d'utiliser Juce et VST-SDK en même temps, sauf que le résultat n'est pas GPL.
Justement, je crois pas qu'il soit possihle d'utiliser une librairie GPL sans que le resultat soit GPL. C'est le fameux caractere 'viral' de la license. D'ailleurs, je viens de dl le wrapper java pour vst que tu as lie, c'est illegal, ce qu'ils font (la redistribution des headers VST).
Citation :
Jamais utilisé de mon côté, je sais qu'ils ont des très bons résultats.
Je suis un peu etonne de leur affirmation selon laquelle le garbage collector n'a pas de consequence. Peut etre que le GC des dernieres version de java est extremement bon dans ces cas, mais ca m'etonnerait un peu, car le GC est optimise pour les performances moyennes, par pour le pire des cas, je pense, en java; dans ton thread de processing, si tout d'un coup, le GC decide d'intervenir, je vois pas comment tu peux eviter les problemes...
Je vais regarder comment ils font dans JSTWrapper. Maintenant que java a une license open source, ca devient interessant a utiliser sous linux. Et puis c'est toujours moins penible a utiliser que du c++ (je reserve ma haine a ce langage).
Niveaux perfs, java a pas mal progresse; un truc tout con, par exemple, je viens de verifier combien de temps un hello world met a executer (pour voir le temps de lancer une jvm), et ca met 0.2 s sur mon pc, je pensais que ca mettrait plus longtemps... Faudrait que je vois comment ca se comporte quand t'importes pas mal de packages et de classes

batman14

Je peux donner des détails par PM pour ajouter de l'eau au moulin des antijava.
A priori, tu ne modifies pas Juce en lui même, tu l'utilises : je pense que rien ne t'empêche de faire un synth avec cela...du moment que tu donnes les sources quand on te les demande. De plus, je pense qu'un petit mail au gars de Juce et on a une licence com sans problème.(il travaille sur Traktion maintenant si je ne m'abuse).
http://soundcloud.com/bat-manson

cptn.io


cptn.io

batman14

Mais apprendre Java avec les spec VST, c'est pas le plus malin : les choses untéressantes en Java sont les gros framework type struts. Ce sont ces connaissances qui servent lors d'un recrutement.
http://soundcloud.com/bat-manson

Pov Gabou

Citation :
Je n'aime pas Java du tout, mais par contre le C++ est un bon language
J'ai deja dit sur ce meme thread pourquoi je pensais que le C++ etait un langage vraiment mediocre. Je suis pas un gros fan de java, surtout que ce pour quoi il marche bien aujourd'hui ne m'interesse pas du tout (applis serveur); le langage en lui meme est quasiment identique au C++ a peu de choses pres au niveau syntaxe et puissance d'expression. Mais j'ai jamais vraiment utilise pour de vrais projets. Le tout objet, tout ca, pour moi ca veut rien dire.
J'ai ete un gros utilisateur du C++, que j'ai laisse tomber une fois que j'ai commence a utiliser plusieurs langages, a cause de ses multiples problemes quant a l'utilisation de code c++ a partir d'autre langages (en particulier sous linux ou gcc a casse plusieurs fois l'ABI durant des changements de version) et des temps de compilation abyssaux.
Mon principal reproche au C++ est la complexite enorme du langage (c'est le langage le plus complexe que je connaisse) pour une expressivite ridicule; je trouve la syntaxe vraiment moche (les template sont illisibles pour a peu pres n'importe quel probleme non trivial).
C'est dommage qu'il y ait pas eu un langage nettement plus simple avec l'idee du C + quelques fondamentaux de l'objet (a la objective-C, mais plus repandu), car ecrire un gros programme avec une interface complexe est impossible en C. Quand je developpe du code C, finalement, avoir une syntaxe pour acceder aux membres de this automatiquement serait deja super utile. Et la chaine de caractere comme type fondamental.
Reste certains framework excellents en C++, comme qt, qui est a peu pres le seul truc pour lequel j'utiliserais le C++ aujourd'hui (interface graphiques complexes).
Citation : Lol par rapport a java, j'avais demandé au prof si c'était pas possible d'apprendre du python, si deja on
Apprends le toi meme, python. Commence par lire le tutorial sur ); return false;" rel="nofollow" target="_blank">http://www.python.org, puis va http://diveintopython.org/. Et utilise le dans tes projets. Je pense que le fait que java soit maintenant en train d'etre passe sous GPL a des chances d'augmenter les communautes telles que jython, aussi, qui est une implementation de python en bytecode java (pour scripter des applis java par exemple).
De toute facon, apprendre a programmer, c'est pas apprendre un langage, c'est utiliser un langage pour exprimer facilement les idees que tu as en tete. Le seul langage que tu dois vraiment connaitre a mon avis, c'est le C, parce qu'il n'y a qusiment aucune chance que tu n'ais pas a en faire de temps en temps, et que c'est LE langage utilise pour l'implementation de la plupart des OS et des autres langages (l'implementation standart de python est en C, le core de la plupart des interpreteurs LISP que je connaisse est en C; le core de java doit surement etre en C aussi, une jvm, c'est un peu comme un OS finalement)
Apres, bien sur, il y a connaitres les framework, etc... Mais c'est pas fondamental (meme si c'est necessaire, et que ca demande du temps evidemment).

Dr Pouet

Citation : Le seul langage que tu dois vraiment connaitre a mon avis, c'est le C, parce qu'il n'y a qusiment aucune chance que tu n'aies pas a en faire de temps en temps
Je pense que ça dépend quand même vachement des contextes. En plus si tu sais faire du C++ tu sais faire du C, il y a même des chances que tu pondes du meilleur C, et que les ajouts objets (type Gtk ou Qt) soient plus naturels.
Citation : objective-C
Là encore, ça dépend des contextes. Objective-C a l'air sympa, mais c'est orienté typage dynamique si je ne m'abuse. Quand tu travailles sur des gros logiciels et que tu recherches des outils qui te permettent d'éviter les bugs au maximum, il vaut mieux détecter les erreurs de type dès la compilation.
Qt est effectivement élégant, mais a aussi ses défauts. Autrefois il ajoutait au C++ de mots clés qui lui sont propres (pour ses signaux je crois), je ne sais pas si c'est encore le cas aujourd'hui, mais du coup on ne programme plus réellement en C++, et du coup les outils capables de manipuler du C++ ne marchent plus, par exemple les outils pour éviter les fuites mémoire (insure/purify), ceux pour mesurer la qualité du code (type Coverity), ceux pour optimiser (appelés profiler)...
Bref, pas de vérité absolue dans tout ça. Après on a chacun nos préférences personnelles. Pas mal de gens qui ont touché à pas mal de langages préfèrent encore l'ADA pour coder vite et bien (perso je n'ai jamais pratiqué). Ya aussi objective-CAML ou OCAML qui jouit d'une très bonne réputation.
Il y a de quoi apprendre en tous cas !


Pov Gabou

Citation :
Je pense que ça dépend quand même vachement des contextes. En plus si tu sais faire du C++ tu sais faire du C, il y a même des chances que tu pondes du meilleur C, et que les ajouts objets (type Gtk ou Qt) soient plus naturels.
A ce niveau la, le C ou le C++, ca change rien; je parlais du C comme langage systeme par excellence, avec parfois des melanges C et C++ (windows ou mac, par rapport a linux). Objet, pas objet, c'est assez pipo je trouve comme argument pour des langages qui sont tres pratiques, surtout pour le C++ qui est tout sauf elegant (suffit de regarder ce que disent djikstra, knuth, Meyer ou Kay). En plus, ca depend de la definition que tu as d'objet (par contre, aucune reference en milieu academique te dira que le C++ est un bon langage objet).
Citation :
Quand tu travailles sur des gros logiciels et que tu recherches des outils qui te permettent d'éviter les bugs au maximum, il vaut mieux détecter les erreurs de type dès la compilation.
Si tu travailles sur des gros logiciels (ceux dont tu parles tout du moins, si je comprends bien que tu sous entends des softs bien specifies et cie, softs d'entreprise), tu ne le fais pas en C++ en general de toute facon. Detecter des bugs a la compilation: le C++ est incapable de detecter les bugs d'allocation memoire, qui sont la premiere plaie du langage, ni les depassements de bornes; a eux deux, ca fait une sacre part des bugs en C++ ? java, c'est quoi ? Fondamentalement, c'est le C++ avec un GC, et une grosse librairie. La gestion a la main de la memoire, c'est debile dans la majorite des programmes, maintenant, tellement le cout est faible en general: Programmation web, qui est un gros truc maintenant depuis un moment, y a pas grand monde qui le fait en C++.
Entre nous, pour un projet logiciel, tu pense qu'entre un programme en C++ ou en java, lequel prendra plus de temps a programmer en general ? Sur lequel il y aura le plus de bugs ? Entre utiliser la STL et les containers java, il y en a un qui est plus facile que l'autre, quand meme. En Java, t'as pas a te prendre la tete sur les semantiques de tes objets, etc...
Il y a bien sur des exceptions: jeux (au moins le moteur 3d), programmation systeme, grosses interfaces graphiques, etc...
Quand je parlais de l'objective C, je voulais dire que perso, j'aimerais bien un langage entre le C et le C++: quand je programme en C avec des structures un peu complique, j'utilise toujours le principe utilise dans la librairie standart pour fopen/close; ie une structure opaque definie dans un fichier prive, que tu ne peux acceder qu'au travers de fonctions, comme FILE. Dans les fonctions, tu passes en premier argument un pointeur vers la structure; en C++, c'est fait par le compilateur au travers de this. J'aimerais bien un langage avec gestion automatique de this, plus garbage collector, plus eventuellement heritage simple et quelques autre trucs quand je fais du code destine a etre appele par des langages de plus haut niveau (python en general). Pas de template, pas de surcharge d'operateur, pas de differences merdiques virtual/non virtual, pas d'exception, pas de RTTI, etc...
Un truc comme C++ embedded (qui est utilise pour certaines parties/drivers de mac os X par exemple). Un langage *simple*, dont je comprends les messages d'erreurs, dont la compilation ne met pas 3 heures pour 4 fichiers, dont je n'ai pas besoin de lire un bouquin de 1300 pages pour voir tous les problemes possibles et inimaginables a chaque coin du langage. Comme le dit stroustrup lui meme "Within C++, there is a much smaller and cleaner language struggling to get out."
C++, pour moi, c'est un peu le windows du langage de programmation. T'as une justification pour chaque merde du systeme, mais ca en fait pas un bon systeme pour autant. Quand tu lis le blog the old new thing, qui explique tous les trucs de compatibilite dans windows, tu vois le boulot gargantuesque, et tu vois que Raymond Chen est un sacre programmeur; quand tu lis le bouquin de Stroustrup (je l'ai lu plusieurs fois, la e edition de plus 1000 pages), tu vois que le gars est clairement intelligent. Mais a la fin, ca fait vraiment un truc enorme, ingerable. Encore un peu de mauvais foi, mais tellement vrai: "Whenever the C++ language designers had two competing ideas as to how they should solve some problem, they said, "OK, we'll do them both". So the language is too baroque for my taste. " (Knuth).
Y a des niches pour lesquelles le C++ a encore du sens (grosses GUI par exemple; pour tout ce qui est softs de MAO, je le ferais en C pour la partie dsp et en C++ pour la plupart du reste avec un langage de script pour le scriptage), mais y en a pas beaucoup a mon avis.
Tiens, la, je lis un article pour gerer les graphs avec boost:
https://www.informit.com/articles/article.asp?p=673259&seqNum=5&rl=1
Serieux, c'est du delire integral a ce niveau la, et c'est revelateur de pas mal de code C++ que j'ai pu voir/utilise. Les template de template, c'est le pire truc du monde; utiliser du C++ pour ce type de problemes, c'est vraiment n'importe quoi. Ca revient a utiliser les template comme des mini compilateurs totalement non teste et non specifie.
Citation :
Autrefois il ajoutait au C++ de mots clés qui lui sont propres (pour ses signaux je crois), je ne sais pas si c'est encore le cas aujourd'hui, mais du coup on ne programme plus réellement en C++, et du coup les outils capables de manipuler du C++ ne marchent plus, par exemple les outils pour éviter les fuites mémoire (insure/purify), ceux pour mesurer la qualité du code (type Coverity), ceux pour optimiser (appelés profiler)...
C'est toujours le cas, les mots cles, mais je vois vraiment pas le probleme. C'est toujours du C++, puisque tout le code est compile par un compilateur C++. Le fait que insure ou purify ou les profiler ne marchent pas, j'ai jamais utilise les outils dont tu parles, mais j'ai deja utilise des profiler et des outils de gestion memoire sous linux avec qt sans aucun probleme (valgrind, dmalloc et gcov); j'ai plus l'impression que c'est une limitation des outils cites qu'un probleme de qt.
Ensuite, le *vrai* C++, je sais pas ce que ca veut dire, vu que c'est un des langages les moins portables au monde, et qu'aucun n'implemente le standart a 100 %. Suffit de regarder le C++ utilise par mozilla pour voir que ca limite pas mal d'utiliser seulement les parties portables de C++ (cas extreme et pas vraiment pertinent, je reconnais ma mauvaise foi

Bien sur qt n'est pas parfait, mais ca rend le C++ utilisable a mon avis en donnant (y a d'autres trucs; on parlait de JUCE, que je n'ai jamais utilise mais qui visiblement a l'air pas mal, etc...) le multi threading, du reseau, de la gestion XML, la gestion de l'unicode.
Je suis en train de bosser sur une petite appli de visualisation pour python, une sorte de mini editeur audio. Ben c'est clair que le widget de base, il sera fait en C++.
Citation :
Bref, pas de vérité absolue dans tout ça.
Je pretends pas detenir une quelconque verite absolue, evidemment. Je peux comprendre que certaines personnes aiment utiliser le C++ (en fait, aimer, non). Mais en tout cas, faut pas se limiter au C ou au C++ si on veut apprendre a programmer dans la plupart des cas; faut voir d'autres langages (a moins qu'on soit vraiment un genie, j'en ai deja vu, mais c'est pas la majorite). Moi, j'aime bien python, mais il y a aussi lisp et derives, occaml, etc... Ada, au niveau expressivite, c'est comme le C/C++, donc ca changera pas ta maniere de penser un programme, je pense, en general.

Dr Pouet

Citation : Objet, pas objet, c'est assez pipo je trouve comme argument pour des langages qui sont tres pratiques, surtout pour le C++ qui est tout sauf elegant (suffit de regarder ce que disent djikstra, knuth, Meyer ou Kay). En plus, ca depend de la definition que tu as d'objet (par contre, aucune reference en milieu academique te dira que le C++ est un bon langage objet).
Mouais. Enfin moi je ne parlais pas dans l'absolu mais dans un contexte industriel, où généralement le choix est assez restreint. En plus je ne ferais pas confiance à des universitaires pour choisir un langage de programmation. Par exemple les trucs largement interprétés (au lieu de compilé) ça ne les choque pas, pourtant c'est beaucoup plus sujets aux bugs.
Citation : Si tu travailles sur des gros logiciels (ceux dont tu parles tout du moins, si je comprends bien que tu sous entends des softs bien specifies et cie, softs d'entreprise), tu ne le fais pas en C++ en general de toute facon.
Heu... si ! C'est généralement C++ ou java. Java est généralement préféré à moins que la question des performances soit sensible. Ceux qui font du calcul scientifique font du Fortran, certains vieux programmes sont en Ada. Et en gros c'est tout. Probablement .Net aussi pour les trucs pas très critiques. Si tu regardes les langages et la plate-formes supportées par les produits Ilog, ça donne un idée de ce marché (le web est à part).
Citation : Quand je parlais de l'objective C, je voulais dire que perso, j'aimerais bien un langage entre le C et le C++: quand je programme en C avec des structures un peu complique, j'utilise toujours le principe utilise dans la librairie standart pour fopen/close; ie une structure opaque definie dans un fichier prive, que tu ne peux acceder qu'au travers de fonctions, comme FILE. Dans les fonctions, tu passes en premier argument un pointeur vers la structure; en C++, c'est fait par le compilateur au travers de this. J'aimerais bien un langage avec gestion automatique de this, plus garbage collector, plus eventuellement heritage simple et quelques autre trucs quand je fais du code destine a etre appele par des langages de plus haut niveau (python en general). Pas de template, pas de surcharge d'operateur, pas de differences merdiques virtual/non virtual, pas d'exception, pas de RTTI, etc...
Tu peux très bien faire tout ça en C++, suffit de pas utiliser toutes les possibilités du langage. C'est généralement ce que l'on fait dans un contexte industriel, on défnint ce que l'on appelle des "règles de codage" et généralement elles interdisent d'utiliser tout ce qui est inutilement acrobatique.
Citation : Encore un peu de mauvais foi, mais tellement vrai: "Whenever the C++ language designers had two competing ideas as to how they should solve some problem, they said, "OK, we'll do them both". So the language is too baroque for my taste. " (Knuth).
Je suis d'accord. Mais encore une fois, si tu utilises ce langage intelligemment, tu arrives facilement à quelque chose de pas mal.
Citation : C'est toujours du C++, puisque tout le code est compile par un compilateur C++.
Ben non, désolé, tu te retrouves avec des mots clés qui n'existent pas dans le C++, donc un outil qui doit interpréter ce code ne s'en sort pas. Et cette démarche est vraiement mauvaise selon moi. Ca ne sert à rien de définir des standards si c'est pour les violer d'entrée de jeu.
Citation : Je pretends pas detenir une quelconque verite absolue, evidemment.
Ce que je dis c'est que la bonne solution varie en fonction du contexte ; il y a rarement des solutions qui sont bonnes ou mauvaises dans tous les cas de figure. Par exemple ocaml cumule pas mal de qualités, mais pas celle d'être largement répandu. Donc si du jour au lendemain tu dois embaucher 10 développeurs, ça va pas être facile. Etc.

Pov Gabou

Citation :
Par exemple les trucs largement interprétés (au lieu de compilé) ça ne les choque pas, pourtant c'est beaucoup plus sujets aux bugs.
Ca, j'y crois pas une seconde. Tu te bases sur quoi pour dire ca ? En plus, la difference compile, interprete, elle est super vague. Java, c'est interprete, compile ? IronPython (implementation de python en bytecode .net), c'est interprete ? La tendance de tous les langages a utiliser de la memoire automatiquement, a avoir des structures de haut niveau, bref, l'oppose du C++, c'est une tendance hyper lourde, je pense.
Le C++, encore une fois, c'est comme windows dans l'industrie: beaucoup se sont dit "cool, on peut utiliser comme le C, mais c'est objet, c'est cool". Il y a compatibilite avec le C; des nouveaux projets en C++, je pense pas qu'il y en ait beaucoup aujourd'hui.
Ca vaut ce que ca vaut (clairement discutable comme maniere de compter, je suis preneur pour d'autres stats), mais j'ai trouve juste ca:
http://www.tiobe.com/tpci.htm
Tu peux voir que le C++ est sur une courbe clairement descendante, comme java d'ailleurs, et que tous les autres montent ou sont constants. A part le C et le C++ (ada et pascal sont en bas de la chaine), tous les langages ont un layer d'interpretation entre le "binaire" et la machine: vm pour java et C#, interprete plus ou moins directement pour perl, python, ruby et cie, "batards" pour SQL, etc...
Citation :
C'est généralement C++ ou java. Java est généralement préféré à moins que la question des performances soit sensible. Ceux qui font du calcul scientifique font du Fortran, certains vieux programmes sont en Ada. Et en gros c'est tout.
Deja, t'as oublie le Basic, et le C pour l'embarque, tous les deux tres tres gros marches; ensuite, le php/asp/etc... pour le web. C# et java, c'est en gros pareil (au niveau types de marches). Le calcul scientifique, t'as de moins en moins de gens a utiliser du Fortran, meme en milieu industriel (Morgan and Stanley ont leur propre langage, par exemple); matlab est quand meme tres gros. Airbus est maintenant en train d'utiliser de plus en plus python a la place de Fortran d'apres les echos que j'ai pour certains trucs de calcul; la Nasa aussi d'ailleurs. D'autres boites utilisent d'autres langages, parce que les contraintes sont pas forcement les memes evidemment, etc...
Citation :
Tu peux très bien faire tout ça en C++, suffit de pas utiliser toutes les possibilités du langage.
Ben non, parce que la librairie standart est ecrite avec le C++ en tete, donc les templates et autres saloperies. Deja que c'est pas super fourni a la base... Si tu as un framework comme QT (ou autre chose du meme type, hein, je suis pas en train de dire qu'il faut utiliser QT), alors la, oui, Ok.
Citation :
Ben non, désolé, tu te retrouves avec des mots clés qui n'existent pas dans le C++, donc un outil qui doit interpréter ce code ne s'en sort pas. Et cette démarche est vraiement mauvaise selon moi. Ca ne sert à rien de définir des standards si c'est pour les violer d'entrée de jeu.
Je comprends pas le probleme des mots cles au niveau des outils. Si t'as du vieux code a maintenir, je comprends que de nouveaux mots cles peuvent foutre la merde dans ton namespace, mais sinon... Ensuite, il y a quand meme un paquet de justifications pour les macros dont tu parles (ca evite les template, c'est dynamique, etc...).
Je sais pas, donne moi un exemple concret ou ca t'as pose probleme, parce que perso, je vois pas. Et le C++ est quand meme suffisament batard pour qu'il n'y pas de probleme "esthetique", non ?
Citation : Ce que je dis c'est que la bonne solution varie en fonction du contexte ; il y a rarement des solutions qui sont bonnes ou mauvaises dans tous les cas de figure.
J'ai jamais dit le contraire, j'ai presque l'impression que tu sous entends que parce que je pense que le C++ est presque jamais approprie, je pense qu'un autre langage peut tout faire...
Par exemple, pour mes projets lies a ma these, j'ai choisi python non parce que c'est le meilleur langage, mais parce que justement il y a un bon compromis performance - popularite - communaute vivate - expressivite. Je suis persuade qu'il y a de meilleurs langages (en autre, l'absence d'option compilation est un gros defaut python, mais peut etre qu'un projet comme pypy pourra regler en partie ce type de problemes). Maintenant, doit y avoir, meme dans ce cas la, 20 % de code en C/C++ (j'ai du pondre 20000 lignes de code en gros depuis mon debut de these, et le C/C++ doit pas depasser les quelques milliers de lignes).
Encore une fois, je developperais pas un plug in VST en python, ou un moteur 3d pour jeux video en perl.
Mais je developperais plus grand chose en C++, ca c'est clair.
Il faut etre capable d'apprendre de nouveaux langages, je pense que c'est fondamental une fois un langage bien maitrise; parce que chaque nouveau langage suffisament different t'apprend vraiment qqch de different. Si ton seul univers c'est le C++, honnetement, a part quelques niches (comme les softs de MAO, et encore)...

jujupauty

Hors sujet : Citation : je ne ferais pas confiance à des universitaires pour choisir un langage de programmation.
Citation : Par exemple les trucs largement interprétés (au lieu de compilé) ça ne les choque pas, pourtant c'est beaucoup plus sujets aux bugs.
C et C++ c'est compilé, c'est plus que carrément sujet aux bugs. Je ne vois pas pourquoi un language compilé serait moins sujet aux bugs.
Jul

Pov Gabou

Y a rien qui separe en theorie un langage compile d'un langage interprete ou sous vm; en pratique, tout langage non compile a la C/C++ a la gestion de memoire dynamique, mais je vois pas en quoi ca va donner plus de bugs, au contraire...
Hors sujet : Citation :
Je trouve cette remarque vraiment typique de l'état d'esprit français qui scinde aussi nettement les mondes industriels et universitaires. A l'étranger la frontière entre les deux mondes est poreuse. On a moins cette espece de condescendance d'un millieu envers l'autre. Ca me navre de voir à quel point chacun s'ignore dans le meilleur des cas, ou se méprise dans le pire des cas.
Je pense que Pouet voulait juste dire que l'argument academique n'est pas forcement le meme que l'argumentaire industriel, ce qui est evident.
Mais encore une fois, la discussion, c'etait si le C++ etait un langage de choix. Parce que dire que c'est utilise dans l'industrie, c'est pas un argument super valable je trouve; comme dit je sais plus quand sur ce meme thread. Ou alors ca revient a reconnaitre que c'est un langage tellement pourri que la seule raison pour son utilisation, c'est l'inertie.
Mais a ce niveau la, on peut defendre le Cobol ou visual basic comme bons langages de programmation.
Mon argumentaire, c'est qu'on peut avoir des langages qui sont plus elegants que le C++, qui sont *souvent* plus appropries, et que j'ai du mal a comprendre comment on peut *aimer* le C++.

batman14

Les premiers à avoir fait le saut étaient les entreprises type banque, marché fi, assurances...maintenant beaucoup suivent.
Il est vrai que Java est super lourd pour cela. L'un des gros points forts naissants de C# est XLink (dispo sur tout le framework .NET), une gestion XML avancée et très performante.
Alors même si tout le monde ne fait pas du XML à longueur de journée, cela reste un mot magique pour les architectes et décideurs. (à tort ou à raison d'ailleurs).
Par contre, Pov Gabou tu es un peu dur avec le C++ ! Lorsque j'ai du développé un client Kamdemlia, ce langage m'a été d'un grand secours. Je pense qu'il y a énormément de domaines où la gestion fine de la mémoire est importante.
Gestionnnaire de base de données, système, sécurité, serveurs, dev réseaux, graphisme, sons...
En gros tous les systèmes critiques, qui requiert d'etre performant et d'être "blindé".
Pour son plaisir cela est sûr qu'on va pas toucher au C++ (ni au C d'ailleurs).
Mais il est quand même très pratique pour tout un tas de développement. Le dev de VST en fait partie.
Penses tu vraiment qu'il ya ait tant de développeurs (amateurs) sur C++ juste pour une question dinertie ?
Je ne pense vraiment pas.
Bref, pour le C++, faut savoir coder, faut aimer se prendre la tête sur de l'allocation, mais cela reste une arme absolue pour certains développements.
On a pas vu tellement de moteur 3D en python hein ?
(ni en PHP d'ailleurs qui est le langage que j'utilise journaièrement).
http://soundcloud.com/bat-manson

Dr Pouet


Citation : > Par exemple les trucs largement interprétés (au lieu de compilé) ça ne les choque pas, pourtant c'est beaucoup plus sujets aux bugs.
Ca, j'y crois pas une seconde. Tu te bases sur quoi pour dire ca ? En plus, la difference compile, interprete, elle est super vague. Java, c'est interprete, compile ? IronPython (implementation de python en bytecode .net), c'est interprete ? La tendance de tous les langages a utiliser de la memoire automatiquement, a avoir des structures de haut niveau, bref, l'oppose du C++, c'est une tendance hyper lourde, je pense.
Effectivement, j'aurais du écrire à typage statique, ou plutôt à typage fort. Par exemple en C++ un pointeur sur un type T c'est pas un pointeur sur autre chose, et l'erreur sera détectée dès la compilation. En java, jusqu'à récemment (les génériques), une liste d'objets était une liste, indépendamment du type des objets manipulés. De ce point de vue les templates sont plus rigoureux.
Les langages genre Perl, Python, php qui ne sont quasiment pas typés (juste la distinction scalaire / liste), sont très propices aux erreurs. Les langages dont on peut changer le type des objet en cours d'exécution (ça doit être le cas pour Eiffel, objective-C et d'autres), sont aussi propices aux erreurs. Par contre Ocaml semble à la fois souple (peu de déclarations de types par le programmeur) tout en étant très rigoureux (analyse de type très poussée par le compilo).
Citation : Il y a compatibilite avec le C; des nouveaux projets en C++, je pense pas qu'il y en ait beaucoup aujourd'hui.
Ben yen a. Dans les gros trucs critiques que je croise, en gros c'est un peu plus de la moitié en java, le reste en C++.
Citation : Le calcul scientifique, t'as de moins en moins de gens a utiliser du Fortran
Chez ceux qui utilisent des machines dédiées (genre supercalculateur Fujitsu), il n'est pas courant que le compilo et la librairie de caclul soit optimisés dans d'autres langages que le Fortran. A la limite le C démarre mais représente qu'une petite part de marché. Faut voir que pour ces machines si tu utilises pas les outils optimisés, tu perds l'essentiel de la puissance, vu le prix (et les objectifs qui justifient l'achat de la bête), ce serait dommage.
Citation : Ben non, parce que la librairie standart est ecrite avec le C++ en tete, donc les templates et autres saloperies. Deja que c'est pas super fourni a la base...
Tu peux très bien utiliser la STL, sans définir toi même des templates acrobatiques. Je l'ai fait longtemps, alors me dis pas qu'on ne peut pas !
Citation : Je sais pas, donne moi un exemple concret ou ca t'as pose probleme, parce que perso, je vois pas.
Ben je te l'ai déjà donné. Tu prends un source de pseudo C++ (avec des mots clés genre Qt, ou Ilog Broker ou autre) et tu essaies de passer dessus un outil comme Insure ou Purify, et ben c'est cuit. Et si jamais tu as besoin d'une autre librairie qui elle aussi a enrichi le langage, généralement c'est indémerdable. C'est pour ça que le mieux est que personne le fasse.
Citation : J'ai jamais dit le contraire, j'ai presque l'impression que tu sous entends que parce que je pense que le C++ est presque jamais approprie, je pense qu'un autre langage peut tout faire...
Meuh non, faut pas s'emporter comme ça ! Je pense juste qu'il y a pas mal de cas où le C++ est le moins mauvais compromis. Il est évident que ce sont des situations où il y a pas mal de contraintes externes ; mais c'est souvent le cas dans de gros projets industriels.
Citation : Par exemple, pour mes projets lies a ma these, j'ai choisi python non parce que c'est le meilleur langage, mais parce que justement il y a un bon compromis performance - popularite - communaute vivate - expressivite.
Ben quand tu fais un truc qui ne vient pas se brancher dans des tas de choses existantes, qui n'est pas censé être maintenu pendant 15 ans par 6 dévelopeurs différents, c'est certainement un très bon choix. Pas de doute là-dessus.
Citation : Il faut etre capable d'apprendre de nouveaux langages, je pense que c'est fondamental une fois un langage bien maitrise; parce que chaque nouveau langage suffisament different t'apprend vraiment qqch de different.
Complètement d'accord avec toi. Et tu fais même des progrès avec ceux que tu connais déjà, ça te donne des idées à ré-utiliser (genre le toString de java à implémenter en C++)
Citation : > je ne ferais pas confiance à des universitaires pour choisir un langage de programmation.
Je trouve cette remarque vraiment typique de l'état d'esprit français qui scinde aussi nettement les mondes industriels et universitaires. A l'étranger la frontière entre les deux mondes est poreuse. On a moins cette espece de condescendance d'un millieu envers l'autre. Ca me navre de voir à quel point chacun s'ignore dans le meilleur des cas, ou se méprise dans le pire des cas.
C'était un peu de la provoc hein !

Moi aussi je regrette que les deux mondes soit aussi séparés. Je me trouve côté industriel actuellement, et j'ai essayé plusieurs fois de proposer des problématiques industrielles à des universitaires proches ; mais généralement c'est trop "terre à terre" pour les intéresser. Je trouve que c'est pourtant intéressant pour une université ou une grande école de bosser sur des projets du type ACE / TAO : c'est plus proche de l'info des industriels, ça oblige à travailler en groupe, à faire des compromis, des plannings, et ça contribue au renom de l'école.
Mais souvent (et j'espère que ça peut changer) on préfère en France des trucs plus théoriques, typiquement on a Bertrand Meyer face à Douglas Schmidt ou Richard Stallman.
Citation : c'est qu'on peut avoir des langages qui sont plus elegants que le C++
Là je suis d'accord.
Citation : qui sont *souvent* plus appropries, et que j'ai du mal a comprendre comment on peut *aimer* le C++.
Ben c'est le souvent qui dépend du contexte. Souvent tu vas avoir le choix entre C et C++. Ben personnellement je préfère largement le C++, étant bien entendu que je vais l'utiliser d'une manière très simple, en visant perpétuellement un code le plus humainement compréhensible. Et là je suis d'accord avec Stroustrup sur "C++ is a better C". ;)
Croisement avec batman14, je vois que nous sommes d'accord sur pas mal de points


Pov Gabou

Citation :
Je pense qu'il y a énormément de domaines où la gestion fine de la mémoire est importante.
Ok, t'as des exemples precis ? Parce que sur ce point, je suis en desaccord absolu. La performance de l'allocation a la main, c'est vrai dans certains cas, mais dans la majorite, un systeme automatique sera plus performant, j'en suis persuade, et ke le constate dans la plupart du code que j'utilise/developpe.
Pour la partie DSP des plug ins, la gestion memoire, il y en a pas, c'est simple, ou alors super bas niveau (en utilisant des pools; mais tu utilises pas de malloc classiques en tout cas)

Citation :
Effectivement, j'aurais du écrire à typage statique, ou plutôt à typage fort. Par exemple en C++ un pointeur sur un type T c'est pas un pointeur sur autre chose, et l'erreur sera détectée dès la compilation. En java, jusqu'à récemment (les génériques), une liste d'objets était une liste, indépendamment du type des objets manipulés. De ce point de vue les templates sont plus rigoureux.
Mais ton raisonnement ne tient que si tout le reste est inchange, ce qui est evidemment faux. T'auras plus d'erreurs ou d'exceptions en python qu'en C++, oui; mais de l'autre cote, ca a aussi contribue a la souplesse du langage. Avec python, t'auras pas de segmentation fault, t'as pas de dangling pointer, t'as pas de problemes de chaines de caracteres sans charactere de fin, etc... T'as la rapidite de protypage qui est une consequence directe du duck typing, et qui te permet de te focaliser sur l'api plutot que sur des details d'implementations, et ca a de sacres consequences sur le nombre de bugs. Donc t'as quand de sacres avantages qui vont avec.
J'ai une question vraiment sans arriere pensee: t'as deja programme en python ? Parce que sur le papier, tu rates la plupart des trucs. C'est vraiment lorsque j'ai converti un projet matlab -> python que j'ai eu ma premiere "revelation" quant a la puissance du truc. Tu peux refactoriser du code, de maniere vraiment differente du C/C++/java.

Pov Gabou

Citation :
Ben je te l'ai déjà donné. Tu prends un source de pseudo C++ (avec des mots clés genre Qt, ou Ilog Broker ou autre) et tu essaies de passer dessus un outil comme Insure ou Purify, et ben c'est cuit.
Je connais pas du tout insure, et jamais utilise purify, donc je suis curieux: je croyais que purify executait le code binaire, et etait un peu similaire a valgrind. Dans ce cas, je vois pas le probleme.
Si l'outil marche a partir du code source, qu'est ce qui t'empeche de faire passer le code *apres* moc ? Tres honnetement, je comprends pas le probleme dans le cas que tu decris.
Citation :
Ben personnellement je préfère largement le C++, étant bien entendu que je vais l'utiliser d'une manière très simple, en visant perpétuellement un code le plus humainement compréhensible. Et là je suis d'accord avec Stroustrup sur "C++ is a better C".
pour la reutilisablite, y a une grosse difference entre le C et le C++ (c'est quasiment impossible d'appeler du C++ a partir d'autres langages directement dans la majorite des langages; sans parler du probleme que le standart C++ ne definit rien sur les conventions de linkage, ce qui est la encore vraiment une plaie; peut etre que sous windows, on peut charger des classes, mais j'en doute. C'est pas pour rien que VST par exemple est du C wrappe en C++).
Apres, c'est sur que faire une GUI en C, c'est pas un truc que je ferais de bon coeur, et je choisirais clairement le C++. J'ai un petit tracker frequentiel, ca a ete fait en C++ et pas en C, car j'avais besoin d'une dizaine de listes en meme temps, et c'est clair que je vais pas faire ca en C. L'exemple de mon widget pour afficher des waves, pareil; entre gtk et qt, c'est le jour et la nuit niveau souplesse et confort.

Dr Pouet

Citation : Je connais pas du tout insure, et jamais utilise purify, donc je suis curieux: je croyais que purify executait le code binaire, et etait un peu similaire a valgrind. Dans ce cas, je vois pas le probleme.
C'était effectivement avec un outil qui s'appuie sur le code source. C'était peut-être Insure alors. Mais le pire c'est que l'on avait effectivement plusieurs sources de trucs qui ajoutent leurs mots-clés non standard. L'outil de gestion de version avait aussi cette sale manie. Et celui-là c'était pas facile de s'en débarrasser, genre "choix d'entreprise", en plus pour se raccrocher aux autres projets une fois parti de l'outil commun ça posait problème, sans parler du support que l'on perdait en faisant le choix d'un autre outil.
Citation : Si l'outil marche a partir du code source, qu'est ce qui t'empeche de faire passer le code *apres* moc ? Tres honnetement, je comprends pas le probleme dans le cas que tu decris.
Déjà il faut que le code généré à partir des mots-clés reste lisible, ce qui n'est pas toujours le cas. Si c'est illisible, l'outil trouve bien une erreur, mais tu passes beaucoup plus de temps à la corriger, voire tu n'y parviens pas. (Je me souviens des templates de templates de Ilog Server... ça c'était un exemple magnifique de code ingérable, des erreurs avec des symboles de 150 caractères à l'édition de lien... pile de l'eau à ton moulin !)
J'imagine que ce moc traduit le Qt en C++ ? Le problème c'est si tu as un autre outil qui a la même démarche, à ce moment là il faudrait que tu ajoutes les mots clés de l'autre outil à ce qui sort de moc... T'imagines le bordel ?
Ca devait être ça la problématique que l'on avait : à cause de l'outil de gestion de conf qui était le premier à dénaturer le langage (ou Ilog Broker ?)...
Enfin bon, ce sont des situations tordues dans lesquelles on ne se met jamais de sa propre volonté ; d'ailleurs on n'imagine même pas que ça existe. Mais sur des projets qui durent des années avec des paquetes de développeurs, plusieurs co-traitants ou sous-traitants... Ca devient vite kafkaïen.
Tu n'as pas encore connu ça, heureux homme ! ;)

Pov Gabou

Citation :
Chez ceux qui utilisent des machines dédiées (genre supercalculateur Fujitsu), il n'est pas courant que le compilo et la librairie de caclul soit optimisés dans d'autres langages que le Fortran. A la limite le C démarre mais représente qu'une petite part de marché. Faut voir que pour ces machines si tu utilises pas les outils optimisés, tu perds l'essentiel de la puissance, vu le prix (et les objectifs qui justifient l'achat de la bête), ce serait dommage.
Supercalculateurs, je connais pas vraiment, donc je vais rien dire. Mais par contre, python est utilise pour de tres tres gros projets scientifiques (au Cern, pyroot est utilise sur des donnees qui se chiffrent en tera octets), et aussi comme glue pour sur de gros clusters (rien que google

Et dans ces cas, de plus en plus courants, le C++ est une horreur, car impossible a appeler depuis d'autres langages (au moins sous linux, qui est la aussi de plus en plus utilise sur de gros clusters en calcul scientifique).

Pov Gabou

Citation :
J'imagine que ce moc traduit le Qt en C++ ? Le problème c'est si tu as un autre outil qui a la même démarche, à ce moment là il faudrait que tu ajoutes les mots clés de l'autre outil à ce qui sort de moc... T'imagines le bordel ?
Oui, c'est ca, pour moc. Clair que c'est pas super lisible; mais ton machine insure, c'est la mort avec n'importe quel truc non trivial a base de template. Genre la STL, ca doit etre pire que QT, parce qu'a debugger, laisse tomber. La, c'est carrement les messages du compilo que tu comprends pas (quand c'est pas le compilateur qui crashe; me souviens de VS 6 qui crashait plus que souvent avec les templates; et g++ m'a plante plusieurs fois. J'ai jamais vu gcc planter en mode C, meme dans des configurations farfelues genre compiler du code binaire pour solaris ultra sparc sur linux powerpc

En fait, tu me donnes des arguments contre le C++ ?

batman14

Citation :
Ok, t'as des exemples precis ? Parce que sur ce point, je suis en desaccord absolu. La performance de l'allocation a la main, c'est vrai dans certains cas, mais dans la majorite, un systeme automatique sera plus performant, j'en suis persuade, et ke le constate dans la plupart du code que j'utilise/developpe.
Quand tu fais de la programmation réseau bas niveau.
Tu sais, quand t'écris tes paquets IP à la main...pour des algos de routage par exemple...
Y'a eu un client Kademlia qui a été tenté en Java, c'est une merde innomable qui te bouffe toute ta RAM (bon c'est aussi en grande partie dûe à la VM).
Ou quand je fais du développement pour téléphone portable et en technos embarqués. Même si la plupart du code est maintenant en NesC (dialecte de C), y'en a quand même en C++.
Du calcul 3D...
Des algos de recherche opérationnelle..
En gros, à chaque fois que les ressources machines peuvent être limitées.
Ce qui n'est effectivement pas le cas pour la plupart du code que tu fais (ni voies aucune aggression ou dénigrement de ton taf, c'est juste qu'on code pas les mêmes choses hein ?)
Il y a aussi beaucoup de systèmes critiques qui sont codés en C++, juste parce qu'il est "facile" de raffiner un code d'un autre langage vers C++.
Par exemple les systèmes de contrôle de la ligne 14 du métro si je me souviens bien, ont été protypés en OCaML, puis raffinés en C++.
http://soundcloud.com/bat-manson

Dr Pouet

Citation : Mais ton raisonnement ne tient que si tout le reste est inchange, ce qui est evidemment faux. T'auras plus d'erreurs ou d'exceptions en python qu'en C++, oui; mais de l'autre cote, ca a aussi contribue a la souplesse du langage. Avec python, t'auras pas de segmentation fault, t'as pas de dangling pointer, t'as pas de problemes de chaines de caracteres sans charactere de fin, etc... T'as la rapidite de protypage qui est une consequence directe du duck typing, et qui te permet de te focaliser sur l'api plutot que sur des details d'implementations, et ca a de sacres consequences sur le nombre de bugs. Donc t'as quand de sacres avantages qui vont avec.
Pour les char* et pbs de pointeurs, il faut effectivement prendre des mesures pour s'en sortir (à commencer par utiliser la librairie string des STL), mais ce serait un point pour Python.
Que signifie "duck typing" ?
Pour la rapidité de prototypage, ben dans les gros softs ce n'est pas recherché, au contraire. On essaie de faire des .h complets et élégants, et après on en bouge le moins possible.
Citation : J'ai une question vraiment sans arriere pensee: t'as deja programme en python ? Parce que sur le papier, tu rates la plupart des trucs.
Python j'ai juste regardé. Par contre j'ai pratiqué php et Perl qui ont pas mal de caractéristiques communes (même si Python est plus élégant). En Perl j'ai fait des générateurs de code C++

Mais sur des gros softs que tu maintiens pendant des années, un typage fort est vraiment un plus, quand même. Le côté lourdingue des .h devient plutôt un avantage. Mais là-dessus, le Pascal de Borland (qui n'a pourtant jamais du percer des des gros systèmes) avait beaucoup de qualité ; et avec une vitesse de compilation fabuleuse. Les belles technos sont-elles toutes vouées à la poubelle ?
Citation : pour la reutilisablite, y a une grosse difference entre le C et le C++ (c'est quasiment impossible d'appeler du C++ a partir d'autres langages directement dans la majorite des langages
On peut appeler du C++ à partir de C (déjà fait d'ailleurs !), donc on s'en sort. C'est sûr que le C est un meilleur candidat au mélange de langages.
Citation : sans parler du probleme que le standart C++ ne definit rien sur les conventions de linkage, ce qui est la encore vraiment une plaie
Complètement d'accord.
Citation : quand c'est pas le compilateur qui crashe; me souviens de VS 6 qui crashait plus que souvent avec les templates; et g++ m'a plante plusieurs fois.
Ha oui, il était très facile (et peut-être encore maintenant) de trouver quelques lignes de codes faisant planter g++ (xlc était un peu plus costaud, mais pas des masses, et non standard pour les templates). Ca t'encourage à faire du code simple !

Citation : En fait, tu me donnes des arguments contre le C++ ?

Ouais en fait on se place généralement pas dans le même contexte, mais je crois que quand on parle de la même chose on est d'accord ! En fait c'est juste que quand on a pas encore connu le cas de projets de plusieurs centaines de milliers de lignes (voire quelques millions), avec maintenance sur au moins 10 ans, avec des équipes qui tournent, des produits imposés (outils, librairies), des contraintes externes (brancher tel soft sur tel autre, l'un en C++ sur PC 32 bits little endian l'autre en ADA sur DEC 64bits big endian, et encore c'est un cas facile)... on imagine pas toutes ces difficultés !
Le mot compromis prend alors tout son sens ;)
- < Liste des sujets
- Charte