Sujet Le pub des programmeurs
- 1 925 réponses
- 117 participants
- 123 065 vues
- 130 followers
Anonyme
Pov Gabou
Citation :
Oui c'est bien ce que je disait, le C est plus facile à déchiffrer. En plus, il te fournit des types de base (avec vérifications de types), une syntaxe pour les fonctions, des fonctions toutes prêtes. Pour moi c'est déjà quelque chose de "haut-niveau"
Par haut niveau, on sous entend quand meme en general quelque chose ou tu n'as plus a te soucier de la memoire, etc... Je veux dire, plus bas niveau de C, t'as pas grand chose qui ne soit ni de l'ASM, ni antedilivien. Le C, c'est utilise dans l'embarque, prog systeme, bref tres pres de la machine.
Je trouve que parmi les langages utilises assez "massivement" (java, C, C#, C++, php, python, perl, visual basic) , le C/C++ est de loin le plus bas niveau, et est beaucoup plus proche de l'assembleur que python l'est du C, par exemple.
Pov Gabou
Citation :
le C est plus facile à déchiffrer
C'est vachement revelateur, le dechiffre, n'empeche !
zieQ
Citation : Par haut niveau, on sous entend quand meme en general quelque chose ou tu n'as plus a te soucier de la memoire, etc...
Pas uniquement la mémoire. Haut-niveau pour moi c'est quand le langage fournit un certain nombre de services pour simplifier la tâche du programmeur. La gestion mémoire en fait partie mais pas uniquement. Il y aussi le typage et vérification/conversion de types, les structures, le polymorphisme... Après je suis d'accord que le C est de moins haut-niveau que certains autres langages que tu cites. Par contre, je ne mets pas le C++ dans le même panier que le C, car l'objet apporte un grand nombre de "services".
Anonyme
le C est de plus haut niveau que l'assembleur, aucun doute, sinon il n'existerai pas, mais je connais pas d'autre langage plus proche? (de l'assemleur)
et pour en rajouter une couche, on peut faire de l'objet en C (bon ok c'est limite mais possible)
gerfaut
C'est dur pour l'égo surdimensionné du programmeur, mais le fait d'utiliser des langages de haut-niveau ainsi que des gestions automatisées des resources permet avec un compilateur moderne des optimisations bien plus importantes du code (en fonction de la machine etc...) que les astuces de comptoires (très bien dans l'absolue) que l'on trouve sur tous les forums ou autres listes de trucs et astuces.
Bon je vais continuer à me mettre des gens à dos, mais comme c'est parti, c'est pas grave. Un code écrit en C une fois qu'il est compilé, il tourne sur un type de machine (si tout va bien). Il ne sera jamais amélioré, il est figé à vie. Si des nouveaux jeux d'instruction ou un nouvel OS sortent, il faut tout recompiler, retrouver les librairies etc... Alors qu'en Java, il marche sur toutes les plateformes. Une nouvelle JRE sort, le programme marche encre, ça se trouve il a été optimisé, et en plus il tient compte des dernières nouveautés de processeurs etc.
Alors, ok c'est pas demain qu'on vera des VST écrits en Java, et les langages comme Java et C# ont encore du progrès à faire, mais qu'on se le tienne pour dit : dans la plupart des situations (mis à part dans des domaines comme l'embarqué, l'aéronautique etc) c'est bien vers des solutions de haut niveau qu'il faut s'orienter et commencer à lacher les vieux boulets qu'on trimbale depuis les débuts du PC de Messieurs IMB et Crosoft.
Dr Pouet
Citation : mais je connais pas d'autre langage plus proche? (de l'assembleur)
En termes de productivité et lisibilité (ou maintenabilité), le Fortran et le Cobol doivent être entre le C et l'assembleur. A la limite, les vieux Basic avec leur numéros de lignes étaient aussi très peu maintenables, bien que facile à prendre en main et gérant pas mal de trucs pour l'utilisateur. Comme quoi la notion de "bas niveau" est pas si simple qu'on pourrait le croire !
Quant à l'assembleur, sur des projets importants (disons de 100.000 à 1 million de lignes), ça n'a quand même rien à voir avec le C... ;)
Par contre, dans ces nouveaux langages, il n'y en a pas encore qui aident réellement à la programmation multi-thread (au sens détection d'accès concurrents à la mémoire dès la compilation). Finalement l'Ada semble être le seul (populaire) à être allé assez loin dans cette direction. Je connais des gens qui sont aussi "fluents" en C++, java et Ada, et qui utilisent ce dernier quand le choix est complètement libre, à cause de sa productivité (pour des trucs assez gros qui devront être maintenus, pas pour du proto). Ca me semble assez crédible finalement.
Un peu dans le même ordre d'idées, sur des projets importants un typage fort est quand même très utile. Cela dit on a assez rarement beaucoup de choix au niveau langage, ça se termine souvent par : C++ si ça doit aller vite, et java sinon (surtout s'il y a pas mal d'IHMs).
thie91
puisque je voit des programmeurs audio aguérris, j'ai une chtite question pour vous :
comment vous faite un equalizer avec un PC ?
enfin, je veut dire, au niveau de la programmation...
hesitez pas à détailler.
merci
jujupauty
Jul
Dr Pouet
Livre d'histoire :
Un compilateur C était ensuite généralement fourni avec chaque Unix de manière à pouvoir porter les outils de base. Le but n'était pas de faire un langage de très haut niveau. Mais par la suite, à partir du moment où tu as déjà un compilateur qui marche sur ton système, tu es tenté de l'utiliser (notamment de faire des économies en n'achetant rien de plus). J'imagine que c'est pour ça que le C s'est aussi largement imposé.
Pourtant quand on comparait C + vi de base, par rapport à Turbo Pascal 7, le confort de développement n'avait un peu rien à voir. Et puis la vitesse de compilation... 80.000 lignes par minute en Pascal sur un 386 !!
Pov Gabou
Citation :
En termes de productivité et lisibilité (ou maintenabilité), le Fortran et le Cobol doivent être entre le C et l'assembleur.
Fortran et cobol, ca rentre dans la categorie antediluvien, non ? Je parlais bien de langages "recents", cad qui sont encore utilises pour faire de nouveaux projets.
Non serieusement, le C haut niveau, c'est pas tenable comme argument. Je veux dire, c'est quand meme bien la premiere fois que je vois le discours etre tenu. J'ai rien contre le C, c'est un langage que j'utilise beaucoup, mais je le fais pour des trucs bas niveau (implementation d'algo difficilement implementables en python, ce qui est assez rare maintenant quand meme).
Citation :
Par contre, dans ces nouveaux langages, il n'y en a pas encore qui aident réellement à la programmation multi-thread (au sens détection d'accès concurrents à la mémoire dès la compilation).
C'est pas tout a fait vrai. Par exemple, les langages fonctionnels, permettent de paralleliser pas mal de trucs facilement (la encore, mapreduce sur google ). Ensuite, erlang est un langage qui gere explicitement la concurrence, et c'est pas un jouet (c'est utilise pour l'implementation de switch telephoniques, par exemple: ericsson, deutsch telekom, etc...)
Ada, je connais tres peu, et c'est vrai que ca avait l'air interessant. Mais par contre, contrairement a ce que tu dis, j'ai l'impression que peu de programmeurs aiment. C'est vachement contraignant, et c'est considere par beaucoup comme un langage ayant echoue.
Citation :
C++ si ça doit aller vite, et java sinon
Putain, ca fait je ne sais combien de posts que je me tue a dire pourquoi c'est pas vrai, qu'il y a des choses a voir ailleurs
Citation : comment vous faite un equalizer avec un PC ?
enfin, je veut dire, au niveau de la programmation...
A quel niveau tu veux savoir ? L'algo dsp, le tuyautage autour ? Un equalizer de base (ie un filtre shelve), c'est relativement facile. Tu peux trouver les equations de base (il y a d'autres trucs plus sophistiques) la:
http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt
Citation :
Il ne sera jamais amélioré, il est figé à vie. Si des nouveaux jeux d'instruction ou un nouvel OS sortent, il faut tout recompiler, retrouver les librairies etc... Alors qu'en Java, il marche sur toutes les plateformes. Une nouvelle JRE sort, le programme marche encre, ça se trouve il a été optimisé, et en plus il tient compte des dernières nouveautés de processeurs etc.
Je suis d'accord sur le fond, a savoir que c'est un domaine (recompilation dynamique de code) qui va voir beaucoup de progres, et qui va engendrer des trucs de plus en plus utiliser. Par contre, pour java, je suis pas tout a fait d'accord parce qu'en pratique, le coup du write once, run everywhere, c'est pas verifie. T'as toujours des problemes de plateformes, de version java, etc... Ensuite, absolument rien t'empeche d'appliquer les memes techniques a du code compile machine plutot que du bytecode java: rosetta, par exemple, sous mac os X, utilise exactement cette technique. qemu, emulateur d'OS, utilise aussi cette technique (dans un but different)
Un exemple:
https://pdos.csail.mit.edu/~baford/vm/
Citation :
et pour en rajouter une couche, on peut faire de l'objet en C (bon ok c'est limite mais possible)
C'est pas limite, je l'utilise toujours quand je fais du C. Ca facilite beaucoup les choses quand tu as des librairies avec pas mal de parametres. FFTW, par exemple, est implementee comme ca. Ce qui est lourd en C, c'est tout ce qui concerne l'heritage, et la, clairement, j'utiliserai pas le C. (je fais C++ + QT pour du graphique avec python pour le proto); a part si le C est intermediaire, et sorti par un programme par un programme de plus haut niveau.
Ton truc d'automate, j'avoue ne pas voir de quoi tu parles; tu as un lien qui en dit plus ?
- < Liste des sujets
- Charte