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

Anonyme



The Monz

Citation : Pour ce qui est des jeux video, je pense pas qu'il faille prendre ca comme de s jouets. J'ai plutot l'impression au contraire que c'est ce qu'il y a de plus sophistique comme logiciel avec un OS, au niveau de l'architecture.
Mouais, enfin, des logiciels audios, des simulateurs (ou tu dois etre
capable de "rejouer" ou de reprendre dans un état ne sont pas des logiciels
simples...
Certains jeux, c compliqué, mais tu prends un jeu comme quake, je suis
pas sur et certains que l'architecture soit tres complexe.. Apres, que le
faire en terme de code ne soit pas simple pour etre beau et performant, ok...
mais d'un point de vue architecture, un jeu.. c'est dans la plupart des
cas quelque chose d'assez compréhensible...(et finalement, certains jeux,
on dirait presque des logiciels de simulation ( en dehors de l'aspect
rejeu (ou tu ne revois pas seulement le rejeu de la vidéo, mais aussi les
changements d'états des entrées, etc...)
Bref, je pense qu'on peut trouver des architectures compliqués dans bcp de domaines, donc pour moi... pas de sectarisme...
THe Monz, Toulouse

Dr Pouet

Citation : Sur une echelle de 1 a 10, tu dis pas en general que 2 est en haut de la liste
C'est vrai

Citation : Ben erlang, regarde les boites qui l'utilisent. Et si on a une discussion technique, je vois pas pourquoi on prendrait l'argument industriel: je veux dire qu'a ce compte la, les langages les plus utilises, c'est visual basic et excel.
Ca dépend des industries. Là où je bosse, si je regarde Erlang, ça sera que pour ma culture personnelle, ça n'a aucune chance (malheureusement) d'être jamais utilisé pour autre chose qu'un proto ou une moulinette de dépannage. Ici c'est Unix (autrefois HP-UX, Digital Unix/Tru64, AIX, Solaris et maintenant Linux) et autrefois Ada, C, maintenant C++ et un peu de java. On a aussi du Ilog, de l'Oracle, du SQLforms, des librairies SNMP, autrefois du réseau OSI et bientôt du Corba (TAO, donc ACE, CCM...)
Par exemple des fois on se dit que du OCAML ce serait quand même cool ; mais c'est tellement exotique que c'est pas trop la peine de se battre pour essayer de le suggérer...
Citation : Le coup des scientifiques tres familiers avec Fortran et rien d'autre, je crois qu'ils ont presque tous les cheveux blancs, quand meme
Pas sûr du tout. Je crois que la météo de tous les pays du monde est calculée en Fortran sur des super-calculateurs, et que pour la mécaflu / résistance des matériaux / acoustique c'est pareil, encore qu'ils migrent de + en + de super calculo vers PC linux, mais toujours en Fortran. Généralement ils estiment que le coût du changement n'est pas contrebalancé par le gain à espérer. Ce coût c'est un peu la formation, beaucoup la ré-utilisation de l'existant (dénormes bibliothèques de librairies et outils propres à l'entreprise).
Citation : Non mais je sais tout ca. Mais je ne parle pas de ca. Ce que je raconte, c'est avec les outils dispo aujourd'hui, pour les nouveaux projets, le C est un langage de bas niveau. Compatibilite, bla bla, je connais tout ca, mais ca m'interesse pas dans le sens ou c'est pas une problematique technique.
Ben le sujet initial du thread était :
Citation : Salut y a des programeurs sur AF si oui vous bossez sous quoi ?
Donc on peut parler un peu de ce qu'on veut non ?
Je sais bien qu'au niveau recherche ou "petits" développements les contraintes et les critères de choix sont complètement différents. Je pense que c'est intéressant d'entendre parler des domaines que l'on connait peu ou pas du tout, pour savoir comment ça se passe "ailleurs".
"petit développement" au sens : moins de 100.000 lignes, mais surtout : le contraire d'un soft qui va être développé en 2 à 4 ans et maintenu pendant 10 à 20 ans, par des équipes régulièrement renouvelées (pas toujours ultra-compétentes). Avec des contraintes opérationnelles : disponibilité, staisfaction utilisateur... etc.

Pov Gabou

Citation :
Certains jeux, c compliqué, mais tu prends un jeu comme quake, je suis
pas sur et certains que l'architecture soit tres complexe..
C'est simple, le code de quake 1, 2 et 3 est GPL, tu peux regarder ;) Les jeux video, je connais franchement rien, j'en ai jamais code, je connais pas du tout les technologies. Juste assez pour voir que c'est sacrement balaise (ceux qui font des trucs revolutionaire a la carmack, hein, pas les nieme implementation de je ne sais quel principe bidon). Je me souviens avoir vu des commentaires de developpeurs sur Linux Audio Developers qui disaient que les problemes de programmes audio sont triviaux par rapport a ceux des gros jeux video (et un truc comme ardour, c'est deja loin 'etre trivial, je pense).
Citation :
petit développement" au sens : moins de 100.000 lignes, mais surtout : le contraire d'un soft qui va être développé en 2 à 4 ans et maintenu pendant 10 à 20 ans, par des équipes régulièrement renouvelées (pas toujours ultra-compétentes).
C'est un argument d'un des classiques de Graham: le java est parfait pour les pointy hairy managers, parce que tu peux ecrire beaucoup de code bien commente qui sert a rien

Je pense que l'open source peut regler certains problemes lies a ces inerties (pas tout non plus). Par exemple, c'est ce mouvement qui a permis l'eclosion de beaucoup de langages de maniere viable, ou meme en a relance (lisp, python, perl, ruby, php, ocaml). Typiquement, aujourd'hui, je peux coder sous linux en a peu pres n'importe quel langage, parce qu'il existe de bons compilos pour pas mal de langages, du C a l'ada en passant par ocaml, fortran, sans parler des langages dont l'implementation de ref a toujours ete open source: ruby, perl, python.
Je vais prendre une analogie qui va te plaire

Citation :
Je crois que la météo de tous les pays du monde est calculée en Fortran sur des super-calculateurs
Meteo, je confirme. Maintenant, attention: il y a beaucoup de code numerique en fortran, personne ne te contredira la dessus. Mais rien n'empeche aujourd'hui d'utiliser ces librairies en C ou avec un autre langage (tout langage digne de ce nom etant capable de s'interface avec le C, c'est une des puissances de ce dernier). Perso, j'utilise du code fortran de temps en temps, sans en etre conscient.
Citation :
Donc on peut parler un peu de ce qu'on veut non ?
Oui oui, bien sur, je voulais certainement pas imposer un sujet, juste dire dans quel cadre je me placais dans mes arguments. Evidemment, dire que python c'est pratique pour pas mal d'applis, ca veut pas dire recode demain tes applis d'intranet VB en python, ou ton truc de gestion de portefeuils en boo. Juste dire qu'il y a des choses sacrement interessantes, et qui seront de toute facon ce avec quoi les programmeurs feront leur boulot dans 20 ans (lorsque cobol aura enfin vraiment disparu


Anonyme

Citation : Mouais, enfin, des logiciels audios, des simulateurs (ou tu dois etre
capable de "rejouer" ou de reprendre dans un état ne sont pas des logiciels
simples...
je mettais ca hors course vis a vis du materiel (pas de driver, bug hardware, mal documenter et performances floues).
D'un point de vue complexité, pour ma propre expérience, c'est assez complexe à mettre au point, meme si les algos semble simple, meme si les sources sont dispo (les sources de quake sont libre, mais absolument attroce, et inabordable au premier venus), c'est a s'arracher les cheveux... Tou ca caser dans 32mo de RAM


Pov Gabou

Citation :
Tou ca caser dans 32mo de RAM (la on compte chaque octets, d'ou la nécéssité de gérer la mémoire). Ca tombe bien qu'on en parle, c'est bien le developpement de simulateur?
Imagine le gars lit ca 20 ans en arriere


Anonyme

Citation : Imagine le gars lit ca 20 ans en arriere
lol oui, mais la demande en qualité de technique n'est plus la meme (gros mesh 3D etc etc). 32Mo enfait non, car on a pas le droit de tout utiliser....

Pov Gabou

https://www.pouet.net/prod.php?which=13017
4ko, du 3d, du son...

gerfaut

kkrieger

Attention, nécéssite une carte 3D compatible DX8 et un PC pas trop à la rue...

Anonyme



Anonyme



en effet impressionant!!!
pour me recrédibilier un peu : ils ne doivent utiliser que du procedural (texture et objet 3D), la technique utiliser pour le film Tron (car les ordi utiliser avait trop peu de mémoire pour stocker des images, et des objets 3D complexes).


Anonyme



Anonyme

Citation : mais je serais curieux de foutre la main sur leur algo quand même car le son est de qualitée très corectte je trouve
Ils utilisent directX, doit y avoir un paquet de truc la dedans pour faire du son. Maintenant oue, ils doivent bien le généré d'une facon ou d'une autre!

Dr Pouet

Citation : C'est un argument d'un des classiques de Graham
C'est ce Graham là dont tu parles ? http://www.paulgraham.com/
Citation : Je pense que l'open source peut regler certains problemes lies a ces inerties (pas tout non plus). Par exemple, c'est ce mouvement qui a permis l'eclosion de beaucoup de langages de maniere viable, ou meme en a relance (lisp, python, perl, ruby, php, ocaml).
Ben Linux est déjà une révolution en fournissant ce qui était attendu depuis longtemps : un Unix très complet et bon marché sur une machine bon marché, et qui plus est assez standard et homogène. Les industriels se sont pas mal tirés dans le pied avec leurs Unix légèrement incompatibles et hors de prix, même si la qualité du travail de certains n'est pas négligeable (perfos et compilo C++ chez DEC, montée en charge de l'OS chez Sun...). Par contre, pour les langages de programmation, même si l'effet de mode n'est pas complètement négligeable, ce n'est pas toujours la seule raison, ni même la principale. En l'occurence, le manque de typage de ces langages (à part OCaml) les écarte à eu près sûrement et éternellement des projets que je décrivais.
Citation : Je vais prendre une analogie qui va te plaire ce qui m'interesse, c'est pas de voir les arguments pourquoi windows a 95% de part de marche sur le desktop, mais de voir pourquoi d'autres alternatives, par exemple a nature vegetale, peuvent tout a fait convenir.
Je précise, même si ce n'est pas forcément ce que tu sous-entends, que je ne suis pas du tout un avocat inconditionnel d'Apple. Je peux dire au moins autant de bien des logiciels libres (j'ai commencé à utiliser Linux en 94), mais aussi des logiciels commerciaux, voire même de Microsoft !

Et je peux aussi formuler des critiques sur chacun. Par exemple le clavier Apple que j'ai est une sombre merde, la souris mono-bouton est une stupidité, et beaucoup de logiciels Apple sont plus beaux que ergonomiques (je pense en particulier à la suite iLife). Mais je continue à ne pas regretter l'achat de mon powerbook.
J'essaie de me faire croire que je suis assez objectif.


The Monz

Citation : [quote]c'est bien le developpement de simulateur?
Oui, oui.. C'est plutot sympa...
Enfin, apres, c tjs pareil, ca depend de quel type de simu tu parles.
J'ai bossé sur un simu de tir pour l'armée française, et franchement,
je me suis bien eclaté dans la mesure ou c'était un peu comme du quake
mais avec les vraies armes (modifiées pour le simu) en main...
Maintenant, quand je bosse sur un simulateur ferroviaire, c'est différent
car le métier du rail peut-etre simulé de façon très complexe si on
veut respecter le fonctionnement de la signalisation ferroviaire..
Ca devient d'autant plus compliqué que à chaque fois que tu fais un simu,
tu peux réutiliser des grands principes certes, mais que la locomotive
n'a pas le meme fonctionnement, la meme interface, les memes parametres
à gérer, que la signalisation ne marche de la même façon, etc. etc...
Bref, c'est un monde tres interessant et qui permet, si on aime cela,
de soit se spécialiser dans les aspects visuels (3D) soit dans les aspects
plutot architecture n-tiers et fonctionnels sans oublier les IHM qui peuvent
etre tres rigolote à faire...
(Et meme, parfois, des Simulateurs avec de l'IA)
Et pour nos simus, MFC/C++ et C#.. depuis longtemps déja... et nous n'avons
aucun soucis (sauf de temps en temps) de performance (mais pas lié
au langage mais plutot parfois l'utilisation de CORBA ;)
THe Monz, Toulouse

Dr Pouet


The Monz

Omni ORB et Orbix...
Je crois qu'on est passé à OmniORB parce que s'est gratos à l'instart d'orbix
qui ne l'est pas...
On doit etre en omniORB V2.80
et orbix : autour de la version 3 je crois , de mémoire...
Mais bon, CORBA, c'est bien, mais vu qu'on est full windows maintenant
sur nos simulateurs, c pas forcément pertinent de continuer avec face au
remonting.. (meme si le remoting a plein de chose en moins par rapport à corba).
THe Monz, Toulouse

miles1981

Comme Meyer le dit dans son livre - que je suis en train de lire -, je pense que le GC sera vraiment indispensable partout lorsqu'on pourra le laisser tourner en tache de fond sans qu'il nous pique du temps CPU, et là OK, autrement je préfère garder mon C++ ;)
Gabou> la currification comme tu la présentes, Boost permet de le faire - bind, function, ... - ;)
Les jeux ont aussi un impératif pour rejoure une partie à l'identique, c'est d'ailleurs un gros souci qu'a eu Total annihilation car le calcul du brouillard de guerre était dans l'interface graphique... Civ4 a son IA en Python, ...
Audio Toolkit: http://www.audio-tk.com/

Pov Gabou

Citation :
e pense que le GC sera vraiment indispensable partout lorsqu'on pourra le laisser tourner en tache de fond sans qu'il nous pique du temps CPU, et là OK, autrement je préfère garder mon C++
Betrand Meyer, celui qui a dit "There are only two things wrong with C++: The initial concept and the implementation." ;) Ou celui qui a invente Eiffel, qui utilise souvent un gc.
Piquer du temps cpu par rapport a quoi ? Ca sous entend que le management a la main de la memoire est gratuit, alors que non. Typiquement, quand tu utilises tes auto_ptr et cie, c'est aussi une gestion de memoire qui a un cout. Quand tu fais un malloc, c'est une gestion de memoire qui a un cout. A priori, tu t'amuse pas a changer la taille des segments a la main. Je suis persuade que tu surestimes de beaucoup l'efficacite du C++ pra rapport a d'autres langages.
Sinon, bind, function et cie, ca n'a rien a voir, parce que ca n'a franchement aucun sens de comparer ce genre de fonctionnalites entre un langage interprete et un langage compile comme le C++. Ca reste un artifice pas super elegant, en C++, et franchement peu utilise. Tous les langages fonctionnels sont interpretables dans leur implementation standart, au moins pour ceux que je connais un tout petit peu (lisp, scheme, ocaml, haskell). C'est pas un hasard.
Citation :
l'interface BLAS, c'est franchement pourri !
Je vois pas pourquoi. C'est le standart, et il y a plein de binding. Je comprends pas tres bien l'interet d'utiliser le C++ sans utiliser BLAS si l'on cherche l'efficacite.

miles1981

Le management à la main n'est pas gratuit, OK, mais c'est toi qui gère le quand et le comment, avec un GC, il peut se lancer à tout moment et à un moment critique d'après Murphy

Je ne vois pas pourquoi les bind et autres '_' sont différents de tes defun g(x) f(3, x) !
En C++, la manière intuitive de faire, c'est A = B * C, c'est pas A = mult(B, C).
Audio Toolkit: http://www.audio-tk.com/

Pov Gabou

Citation :
Je ne vois pas pourquoi les bind et autres '_' sont différents de tes defun g(x) f(3, x) !
Ben ca pert beaucoup d'interet si tu dois recompiler le code pour utiliser la nouvelle fonction ;) Je vois pas beaucoup l'interet de ce genre de trucs dans un langage compile statique, pour etre franc.
Citation :
vec un GC, il peut se lancer à tout moment et à un moment critique d'après Murphy
Pour du calcul en batch, on s'en fout. Le GC, c'est un probleme par exemple en temps reel, mais on ne parle pas de ca. Et les malloc a tout moment, ca arrive aussi en utilisant la stl ;)
Sur Meyer, c'etait une pique, evidemment.
Citation :
En C++, la manière intuitive de faire, c'est A = B * C, c'est pas A = mult(B, C).
Il y a quelque chose que je comprends pas. Tu utilises le C++ parce que tu estimes que c'est le seul langage a te garantir l'efficacite exigee. Du coup, tu laisses de cote des langages objectivement nettement plus expressifs, au moins pour la "tuyauterie". Dans cette optique la, la difference entre un * et un mul...

miles1981

Citation : Ben ca pert beaucoup d'interet si tu dois recompiler le code pour utiliser la nouvelle fonction Je vois pas beaucoup l'interet de ce genre de trucs dans un langage compile statique, pour etre franc.
Ah, OK, c'est vrai que j'avais oublié que tu tiens au temps de compilation, donc je suis d'accord avec toi, mais c'est tout de même très utile - par exemple faire des opérations sur des lignes ou des colonnes de matrices, c'est instantanné avec cette méthode, on choisit vite ce qui doit être constant ou pas ;) -
Citation : Pour du calcul en batch, on s'en fout. Le GC, c'est un probleme par exemple en temps reel, mais on ne parle pas de ca. Et les malloc a tout moment, ca arrive aussi en utilisant la stl
Sur Meyer, c'etait une pique, evidemment.
Effectivement, sur du calcul en batch, ça ne sert pas à beaucoup, mais dans le cas d'un processus critique, un GC déclenché peut bouffer du temps à un moment critique auquel on ne s'attend pas alors que pour un malloc, on le sait, on l'a demandé tout de même ;)
Oui, Meyer est un peu bizarre, il dit que pour l'instant, un GC est peu utile, mais il l'utilise tout de même, mais c'est aussi pour ne pas faire de gestion à la main. D'ailleurs, un de ses exemples intermédiaires, c'est les pointeurs intelligents, l'inconvénient face au GC, ce sont les cycles, ce qui peut être évité dans les pointeurs qui vont entrer dans le standard ;)
Citation : Il y a quelque chose que je comprends pas. Tu utilises le C++ parce que tu estimes que c'est le seul langage a te garantir l'efficacite exigee. Du coup, tu laisses de cote des langages objectivement nettement plus expressifs, au moins pour la "tuyauterie". Dans cette optique la, la difference entre un * et un mul...
Oui, je suis bizarre :D
Le C++ n'est pas le seul, j'en suis conscient - c'est pas pour rien que ce que tu dis sur Python m'intéresse au plus haut point, même si je n'ai pas encore eu le temps de me plonger dans ce langage, même si j'ai des docs qui attendent un peu de temps cerveau ;) -, mais pour me simplifier la vie, je préfère tout de même utiliser même en C++ une notation naturelle.
Audio Toolkit: http://www.audio-tk.com/

Wolfen


Tiens puisque je suis là, j'aimerais vous poser quelques questions qui me prennent un peu la tête en ce moment... Récemment, j'ai codé un plug VST en C++ (avec VS.NET 2003), il marche à peu près bien, même si j'ai eu un peu de mal avec les allocations mémoire. Par contre, y a des trucs sur lesquels je galère à mort.
Ces derniers jours, j'ai bossé sur une simulation d'ampli. Et avec quelques filtres et fonctions, j'arrive à un truc qui consomme à mort du CPU. Alors qu'un Guitar Rig 2 avec 20 fois plus de fonctions me prend 4% de CPU au max. Ca me laisse perplexe.
Est-ce qu'il existe des sources d'informations sur l'organisation du code et l'optimisation ? Des bouquins, des articles... Je suis en train de me demander si je devrais faire mon stage de master 2 en Février chez Arturia ou Ohmforce justement pour mieux apprendre à coder mes VSTs, et voir quelles sont les différentes techniques utilisées pour que le tout soit le plus propre et stable possible...
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

Pov Gabou

Citation :
Tiens puisque je suis là, j'aimerais vous poser quelques questions qui me prennent un peu la tête en ce moment... Récemment, j'ai codé un plug VST en C++ (avec VS.NET 2003), il marche à peu près bien, même si j'ai eu un peu de mal avec les allocations mémoire. Par contre, y a des trucs sur lesquels je galère à mort.
Ces derniers jours, j'ai bossé sur une simulation d'ampli. Et avec quelques filtres et fonctions, j'arrive à un truc qui consomme à mort du CPU. Alors qu'un Guitar Rig 2 avec 20 fois plus de fonctions me prend 4% de CPU au max. Ca me laisse perplexe.
Est-ce qu'il existe des sources d'informations sur l'organisation du code et l'optimisation ? Des bouquins, des articles... Je suis en train de me demander si je devrais faire mon stage de master 2 en Février chez Arturia ou Ohmforce justement pour mieux apprendre à coder mes VSTs, et voir quelles sont les différentes techniques utilisées pour que le tout soit le plus propre et stable possible...
Ben dans la mesure du possible, file moi le code en question, on peut en discuter un peu. Si (ce que je comprends bien, bien sur) tu peux pas filer tout le truc, tu peux filer un truc avec les elements de base (filtre et cie), sur une structure differente "non secrete", avec les memes problemes. J'ai VS express installe sur mon portable en VM, pour tester quelques codes multi plateformes.
Mais globalement, c'est un probleme complexe. Le truc de base a regarder, c'est evidemment l'algo version non temps reel, et voir ou ca prends du temps. Pour ca, il faut que tu aies la possibilite de configurer ton projet de telle sorte a ce qu'au lieu d'etre compile VST, il soit compile vers un hote "bateau" ou tu peux profiler et instrumenter ton code.
Quelques regles de base:
- dans la fonction process, est ce que tu utilises des appels systeme ?
- Lorsque tu utilises des sin,cos et autre fonctions transcendentales, est ce que tu utilises les fonctions standarts de la libc ?
- est ce que tu utilises bien le cache de ton proc ?
- est ce que tu calcules plusieurs fois les memes valeurs ?
Il y a des trucs simples pour l'optimisation: par exemple, en maths, diviser par deux et multiplier par 0.5, c'est pareil. Sur un pentium, en flottant, diviser est facilement 5 a 10 fois plus couteux qu'une multiplication. Si tu as besoin de cos et sin regulierments espaces, tu peux utiliser des tables et des formules de recurrence, etc... Aussi, il faut bien connaitre le compilo, et toutes les options d'optimisation. Ca peut changer beaucoup de choses.

miles1981

Audio Toolkit: http://www.audio-tk.com/

Wolfen


Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud
- < Liste des sujets
- Charte