Sujet Le pub des programmeurs
- 1 925 réponses
- 117 participants
- 123 088 vues
- 130 followers
Anonyme
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
- < Liste des sujets
- Charte