qu'est-ce que tu veux dire par là? OOo C'est du java, non?
Enfin, la JVM elle-même est peut-être développée en C++, mais bon , suffit d'un maillon dans la chaîne pour tout ralentir...
qu'est-ce que tu veux dire par là? OOo C'est du java, non?
Enfin, la JVM elle-même est peut-être développée en C++, mais bon , suffit d'un maillon dans la chaîne pour tout ralentir...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Beuh ? C'est lent à charger, mais ensuite l'exécution est correcte.Envoyé par Le Furet
(OpenOffice 1.1.5). Ca fait maintenant plus d'un an que je me suis débarassé de Word.
Avant de revenir au sujet du topic, je tiens a apporter des precisions :
- OpenOffice.org a des morceaux en Java mais c'est minime ;
- La JVM de Sun (HotSpot) est ecrite en C ;
- On peut ecrire une JVM en Java, il suffira de la compiler en code natif pour eviter la dependance avec une autre JVM.
Le developpement Java apporte de nombreux avantages par rapport au C... dans certaines conditions. Je ne vais pas revenir sur ces avantages (notamment la gestion de la memoire) mais il est important de comprendre que les critiques faites a l'egard de Java sont pour la plupart fausses aujourd'hui. C'etait, il est vrai, lent il y a 10 ans mais il n'y a plus aucun probleme aujourd'hui. Dans certains cas precis, les JVM modernes vont meme plus vite que le C. C'est le cas du calcul pur et des allocations/desallocations memoire. Pour d'autres operations Java reste plus lent que le C mais largement assez rapide pour la plupart des applications.
Il convient ensuite de distinguer les environnements d'execution Java. J'ai developpe du Java sur des desktops, des serveurs, des PDA, des telephones mobiles, des Lego et meme des cartes a puce. Etant donne la difference importante entre les JVM et les API utilisees il n'est pas possible de generaliser et dire "Java c'est lent" ou "Java est assez rapide". En fait je trouve que ca se passe mieux dans les petits systemes embarques que les grosses machines ^^
J'utilise Java parce que j'adore sa bibliotheque graphique Swing qui me permet de faire de jolies interfaces et de les distribuer sous Windows, MacOS X et Linux. J'utilise neanmoins encore le C de temps en temps pour ecrire des extensions natives a mon code Java, des outils qu'il serait difficile de faire en Java (hooks systemes, plugins pour certaines applis, etc.) ou encore quand le C est tout simplement la solution. Par exemple lorsque je programmais sur GameBoy Advance.
A mon avis il est important de connaitre au moins trois types de langages :
- Un langage bas niveau, proche de la machine et offrant les meilleures performances directes avec un acces total au systeme. Je parle du C (Linux, Windows) ou de l'Objective-C (MacOS X) ;
- Un langage haut niveau, de preference multi-plateformes, pour realiser des applications completes plus rapidement, notamment lorsqu'elles ont des interfacesgraphiques. Je pense a Java ou a C# ;
- Un langage de script dynamique pour rediger encore plus rapidement des petits outils pour tous les jours. J'utilise enormement Python pour creer des generateurs de code, pour prototyper des applications, automatiser des taches. Je me sers aussi de Python en integrant un interpreteur dans mes applications pour ecrire certaines parties plus rapidement. Vous pouvez aussi regarder du cote de Ruby ou Perl.
Bref, un langage ne suffit pas a mon avis, meme si Java (et C# dans une moindre mesure) permet de developper des cartes a puce, des serveurs, des robots, des telephones... (Il existe une specification temps reel pour Java, deja utilisee par des entreprises comme Boeing).
Quoi qu'il en soit, evitez de vous reposer sur des idees recues ou des observations datant d'il y a 10 ans. Le tout est de pouvoir mener ses projets a bien de la maniere la plus efficace. Ce ne sont que des outils, sachons choisir celui qui nous semble le plus adapte au travail.
C'est vrai que je critiquais surtout Java pour sa lenteur, surtout remarqué dans des applications desktop (je ne sais pas si c'est encore le cas) et pour sa gourmandise au niveau des ressources, je ne sais pas comment ca a évolué depuis y'a 1 ou 2 ans.
C'est vrai aussi qu'en générale je suis assez sectaire, mais je conseil aussi Python qui est très simple à apprendre et qui est assez souple d'utilisation, puis il est dynamique ce qui lui apporte un plus par rapport à d'autre langages interprétés. Faudrais que je m'y remette aussi un jour![]()
gfx, je n'avais pas du tout pensé au fait d'intégrer Python en tant qu'interpreteur dans une application, c'est une approche très intéressante. D'ailleurs ce que j'aime dans Python, c'est la possibilité de faire des ajouts codés en C vu que Python est créé en C !
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Comme je le disais j'utilise Java tous les jours pour developper des interfaces graphiques, ce qui est le plus gourmand en ressources. Je reconnais que la bibliotheque n'est pas la plus facile a utiliser mais quand on connait deux/trois principes de base (expliques dans des tutoriaux) on obtient des performances tout a fait normales.
En gros le probleme de beaucoup d'applications Java est qu'elles bloquent le thread responsable de redessiner l'interface. C'est une erreur courante et facile a faire mais ce n'est pas le langage et sa JVM qui sont fautifs. Il y a aujourd'hui pas mal d'applications Java qui te surprendrait)
troll: Comment une JVM écrite en C peut-elle être plus rapide que le C...Envoyé par Gfx
J'ai appris le C, puis je me suis tournée vers le C++. Pour de gros programmes, je me sens plus à l'aise avec le C++: développement plus rapide, modification du code plus aisée, maintenance plus facile.
Open Source Microsoft MediaFoundation
https://github.com/mofo7777
http://jeux.developpez.com/faq/directx/?page=dshow
C'est extremement simple, un compilateur statique (donc un compilateur C) a des options d'optimisations limitees au contexte du code source. La JVM fait une compilation dynamique et peut effectuer des optimisations qu'un compilateur statique ne peut pas faire. De fait une JVM est capable de produire du code plus rapide qu'un compilateur C. Rappellons que les JVM modernes ne se contentent plus d'interpreter le bytecode Java mais le convertissent en code natif (x86 par exemple) lors de l'execution.troll: Comment une JVM écrite en C peut-elle être plus rapide que le C...
De la meme maniere allouer un nouvel objet en Java est beaucoup plus rapide qu'en C++ car les JVM utilise un tas et il leur suffit de deplacer un pointeur. Cette operation est beaucoup plus rapide que les malloc() du C ou les new du C++. Voir cette URL pour plus d'informations : http://www-128.ibm.com/developerworks/java/library/j-jtp09275.html?ca=dgr-lnxw01JavaUrbanLegends
Cela ne veut pas dire que Java sera toujours plus rapide que du C mais c'est possible et cela arrive dans certains cas. Quoi qu'il en soit Java est loin d'etre aussi lent que ce qu'on lit dans beaucoup de discussions. Bref, prenez le temps de connaitre ce que vous critiquez ;-)
Essaye C# ou Java et tu diras la meme chose mais par rapport au C++je me sens plus à l'aise avec le C++: développement plus rapide, modification du code plus aisée, maintenance plus facile.![]()
Ca, par contre, je veux bien le croireEnvoyé par Gfx
![]()
Je ne connais pas très bien ces langages. Je suis sur, effectivement, que ce sont de très bons langages parce qu'ils sont orientés objets. Et pratiquant le C++, je trouve beaucoup d'avantage aux LOO.Envoyé par Gfx
Je vais essayer de ne pas trop dévier du sujet. Concernant le troll, c'était une "boutade". Ton argument est très valable, mais je suppose que ce type de gestion de la mémoire n'a pas que des avantages dans le java par rapport au C++.
Je ne me suis jamais tourné vers ces deux langages, parce que le C++ me convient très bien pour le type d'application que je développe. Il me permet une gestion plus fine de ce que je code. Et il me semble que pour le C# ou le java, on est dépendant d'un système sous-jacent (jvm). Déjà être dépendant de l'OS, c'est parfois chiant, alors ...
Mais ceci concerne mon cas, et je conçois très bien que pour d'autres situations, il n'y a que des avantages.
Pour le C, je trouve que ce langage demande une attention trop importante pour le développement de gros projet. Je suis admiratif devant les personnes qui développent des systèmes d'exploitaion en C.
Bien sur le développement d'OS est quelque chose de très particulier, mais concernant des applications classiques, je pense que l'on est aussi efficace avec les LOO pour un temps de développement plus rapide.
Un avantage par exemple, c'est que lors d'ajout ou de modification de code, je peut maîtriser plus finements les interactions par rapport à l'ensemble de l'application, sans avoir à connaître précisément le fonctionnement de l'ensemble du code. En C on peut avoir plus facilement des surprises désagréables. Pour les tableaux, on doit toujours faire attention aux débordements possibles. Pour les variables globlales, ou les pointeurs si on n'utilise pas les globales, il faut être sur de leur contenu à tout moment.
Comme toujours, ceci est dépendant du type d'application, chaque langage est adapté pour telles situations.
Le langage C a déjà été remplacé dans certains développements mais il ne disparaitra pas encore. Comme cela a été discuté dans un autre post, tant que des développeurs utiliseront le C, celui-ci perdurera.
Si je n'avais pas connu le C ou l'assembleur, je pense que je n'arriverais pas à développer efficacement en C++ et surement aussi pour les langages de dernières générations. Pour avoir de bonnes bases en programmation, le C ou des langages similaires me semblent incontournables, ne serait-ce que d'un point de vue algorithmique.
J'ai souvent entendu dire: "si tu sais programmer en C, tu seras capable de programmer dans tous les langages".
Et soyons fou: "il y a un peu de C dans tous les langages...".
Open Source Microsoft MediaFoundation
https://github.com/mofo7777
http://jeux.developpez.com/faq/directx/?page=dshow
Oui tout à fait d'accord, et surtout que leur apprentissage s'en passera que mieux, ce que j'ai pu constater quand j'avais un peu étudier PythonEnvoyé par moldavi
![]()
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Bonjour,
Envoyé par afrikha
Cours chez le marchand de portable et regarde ceux qui utilise Java, ça n'a pas grand chose à voir avec de l'embarqué : c'est devenu des mini-PC.
Je croi que c'est ici que j'ai lu qu'après l'assembleur, le second langage mis en place sur une architecture était le C et sur certain ça s'arrête là.
Et puis va demander à Linus de réécrire son noyau en Java
Et le C apprend au programmeur une chose essentiel qui peu passer à la trappe avec d'autres langages : un ordinateur fait ce qu'on lui demande.ça implique qu'il faut être rigoureux dans ce que l'on écrit et si ça peut parraitre une perte de temps (initialiser un pointeur à NULL, tester les retours des fonctions...) quand on passe sous un autre langage le code marche du premier coup (on apprend à ne plus faire l'apprenti socier, à comprendre ce que l'on veut faire avant de taper bêtement su code).
S'il y a un langage qui est menacé, à mes yeux, c'est plus le C++ avec le C# puisqu'il sont tous les deux orientés object alors que le C n'a rien d'un LOO donc difficile de comparer. Et d'ailleurs je n'arrive pas à trouver un langage comparable au C (itératif et portable au niveau des sources).
Et puis il semble que vous avez oublié une chose importante qui commence à prendre de l'empleur dans les developpement en C : GTK+!
Eh oui, déjà il s'agit d'une bibliothèque graphique portable et surtout elle contient la glib qui propose un nombre impressionant de fonctions qui manque au C lorsque que l'on développe sur un système type PC. Le tout en utilisant une organisation objet (comme quoi on peut ce passer du C++).
Pour le sondage, je n'ai pas répondu puisque j'ai longtemps fait que du C et je me mais de plus en plus au Perl pour la manipulation de fichiers texte surtout. Donc pas de C++ ni Java : j'ai beaucoup de mal à penser en OO.
Dernier point appréciable : lorsque le C à été créé, il n'était pas encore question d'argent à la grande différence de maintenant avec Java et C# (surtout dans le second cas).
Je ne connais pas exactememt les statu juridique de ses deux langages, mes je croi que C# est soumis à des brevets (ce qui, je crois pose problème à certains developpeurs gnome).
Et je vien de lire ceci :
Donc je pense que le C à encore de beau jour devant lui. Le projet GNU conseille fortement d'utiliser le C pour la création de logiciel : Which Languages to UseEnvoyé par [url=http://mail.gnome.org/archives/gnome-fr-list/2004-September/msg00057.html
C# fait l'objet d'une norme ECMA (européenne) publiée.Envoyé par gege2061
http://www.jaggersoft.com/csharp_standard/toc.htm
GTK+ est bien mais pour avoir essaye pas mal de toolkits graphiques je suis convaincu d'une chose, un langage oriente objet est beaucoup plus adapte pour le realisation de GUI qu'un langage procedural. J'ai beau preferer de loin Gnome a KDE, QT est, je trouve, bien plus agreable que GTK+ pour le developpement.
Et pourtant, GTK est concu d'après les règles de la POO, même si cela est pour un langage procédural !
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Heu certes mais je trouve que cela reste moins pratique et moins simple qu'avec un langage oriente objet. J'aime beaucoup le C pour plein de raisons mais pas pour faire des interfaces graphiques.
Je ne suis pas tout à fait d'accord. Certains langages sont très différents du C, et connaître le C n'aide pas à les comprendre. Par exemple, Lisp.Envoyé par moldavi
Oui, c'est bien pour l'apprentissage. Mais pour une utilisation sérieuse, c'est dommage que le langage autorise l'utilisation de pointeurs non initialisés, qu'il fasse peu de vérifications[1]. Pour les retours des fonctions, je trouve plus agréable d'avoir un système d'exceptions, qu'une fonction qui retourne un code d'erreur.Et le C apprend au programmeur une chose essentiel qui peu passer à la trappe avec d'autres langages : un ordinateur fait ce qu'on lui demande.ça implique qu'il faut être rigoureux dans ce que l'on écrit et si ça peut parraitre une perte de temps (initialiser un pointeur à NULL, tester les retours des fonctions...)
De plus, si on manque un peu de rigueur en écrivant en C, il y a des risques au niveau de la sécurité (buffer overflows, par exemple).
Bien sûr le C a ses avantages (cités dans les autres messages), mais c'est en partie pour des raisons historiques (mises en avant dans le lien "Which Languages to Use") qu'il est utilisé.
[1] par exemple, en C il est très facile de faire compiler un code. Mais beaucoup d'erreurs se remarquent seulement à l'exécution (segmentation faults, etc.). Utiliser les bonnes options de gcc aide (-W -Wall, etc.), mais ne suffit pas. Un langage comme OCaml fait beaucoup de vérifications à la compilation (le typage très fort, ca aide), du coup je n'ai jamais eu de plantage à l'exécution (hors boucles infinies).
C'est le choix de la performance. Un langage 'managé' est forcément plus lourd en taille et en temps d'exécution. Le C est délibérément un langage pour programmeurs avertis.Envoyé par LLB
"C is a sharp tool"...
Par contre, le temps de développement est un peu plus long, c'est sûr.
Cela ne suffit pas. Je me considere comme un developpeur averti et je fais le choix du C quand je le considere justifie. On n'a pas toujours besoin des gains en performances et memoire apportes par le C.Le C est délibérément un langage pour programmeurs avertis.
Ces langages sont des outils, il faut choisir celui adapte a la tache et il n'y a pas une reponse universelle. Attendez vous d'ailleurs a voir enormement d'applications ecrites en .NET/C# avec l'arrivee de Vista. On voit deja des applis de bonne taille en faire usage (World Wind de la NASA par exemple).
On n'est plus il y a 15 ans, on peut aujourd'hui faire des concessions sur les perfs d'un logiciel pour faciliter le developpement.
Partager