Trouvé via K5, une intéressante comparaison de Java et de C# du point de vue du programmeur.
Note du modérateur: le language C# est un language orienté objet qui doit permettre aux développeurs de créer facilement des applications pour la plateforme .Net de Microsoft. La comparaison semble très complête, à lire.
Note du modérateur: le language C# est un language orienté objet qui doit permettre aux développeurs de créer facilement des applications pour la plateforme .Net de Microsoft. La comparaison semble très complête, à lire.
La comparaison (2911 hits)
la discussion sur K5 (598 hits)
passage par ref / valeur en Java (643 hits)
Penser en Java (1380 hits)
Le portail DotNet (845 hits)
> Lire les commentaires (89 commentaires, moyenne: 2,9).
Vous avez demandé le commentaire #79406.



Opinion
Personnelement, j'apprécie énormément le java pour les raisons suivantes:
- c'est de l'orienté objet, ce qui permet une réutilisation du code ainsi que la modification de celui-ci sans devoir changer tout le reste. (et tous les autres avantages de la POO)
- c'est multi-plateforme. Le programme que j'ecris pour linux, tournera aussi sur windows ou sur tout os ayant une JVM.
- A partir du moment ou on a compris les trucs de base, on évolue rapidement dans l'apprentissage du java (je sais, j'ai encore des progrès à faire ;p)
- Il est génial pour tout ce qui touche le réseau et internet (que ce soit un « bete » programme comme jcoincoin ou une applic applet/servlet)
Par contre, je ne connais pas C# et je n'ai vraiment pas envie de connaitre... Si C# est pensé comme MS a pensé les MFC par exemple, quelle horreur ça doit etre.
De plus, meme si java n'est pas open, il a l'avantage d'etre gratuit.
TOUT le monde peut avoir une jvm pour son os (pour autant quelle existe bien entendu ;p) ....
Et pour C# ? Est-ce que je pourrai faire tourner un programme écrit en C# sous macOSX ? ou sous *BSD ?
Je ne sais d'ailleurs plus le prix absolument abérant (un gros doute sur le abérant) des outils C#, mais, petit étudiant que je suis, je n'ai pas les moyens de me les payer ... (je n'en ai pas l'envie non plus donc, ça tombe plutot pas mal).
Je trouve la position de MS totalement ridicule. Créer un langage _uniquement_ pour essayer de couler sun et le java....
Petite question en passant, est-ce que le C# possede un API aussi énorme que celle de java ?
[+] [^]Re: Opinion
>Est-ce que je pourrai faire tourner un programme écrit en C# sous macOSX ? ou sous *BSD ?
Et moi qui croyait que MacOSX etait un BSD. (Gilbou de posse-press, pourrais tu confirmer?)
En tout cas, c'est clair qu'il n'existera pas de compilateur C# pour les autres systèmes que ceux de Microsoft.
[^]Re: Opinion
> En tout cas, c'est clair qu'il n'existera pas de compilateur C# pour les autres systèmes que ceux de Microsoft.
Si c'est le cas, je vois mal comment Microsoft pense rivaliser avec Java, qui a comme principal interet de pouvoir tourner sur toutes les platformes ...
[^]Re: Opinion
helas pour les meme raison que des tonnes de sites ouaib tournent sur IE et pas sur mon Mozilla adore, parce que ouinouin is everywhere :(
Pour la meme raison que personne, a part moi (et encore :( ) utilise SO5.2, car les "dots doc" doivent s'ouvrir ABSOLUMENT
La raison "Made in Microsoft" peut suffir a pas mal de gens, et c'est bien le probleme !
^d^c
[^]Re: Opinion
C'est faux, des implantations open-source de c#
et de .NET sont prévues : http://www.ximian.com/about_us/press_center/press_releases/mono_ann(...)
C'est le projet mono.
[^]Re: Opinion
je parlais de compilateur "Microsoft cerified" (expresseion qui me fait bien marrer) , comme le jdk de sun par exemple.
[^]Re: Opinion
Mais ouais, pourquoi Microsoft ne sort pas lui meme ses sources pour le compilateur C# ???
Strategiquement ca a aidé Sun pour implanter son Java, mais Microsoft n'as ptet pas envie que son C# fonctionne sur plusieurs platformes ? Ou ils savent ptet pas programmer sous linux :)
[+] [^]Re: Opinion
Je ne pense pas que Sun ait jamais sorti les sources de ses JVM.
[^]Re: Opinion
Le Source Code Catalog de Sun se trouve là : http://www.sun.com/software/communitysource/download.html(...)
On y trouve entre autre les source du J2SE, du J2EE et de HotSpot.
[^]Re: Opinion
Si, il ya mono http://www.go-mono.com/(...)
Extrait : "Mono includes: a compiler for the C# language, a runtime for the Common Language Infrastructure and a set of class libraries."
[^]Re: Opinion
Bonne merde pour suivre les futurs changement "non documentés" de Microsoft ... Dès que MS n'aura plus besoin de Mono (pour le moment il en a besoin pour faire "Regardez, on est open, il y a même un compilo sous Linux") il le coulera (hop un p'tit changement dans le runtime qui fait que C# ne compile plus ou marche "moins bien" sous Linux) ...
Vache qui rit, à moitié dans son lit
[^]Re: Opinion
> Bonne merde pour suivre les futurs changement "non documentés" de Microsoft ...
Microsoft a proposé un standard public pour C#, donc C# sera standardisé comme C ou C++ le sont actuellement (et comme Java ne le sera semble-t-il jamais :-).
[^]Re: Opinion
Microsoft qui respecte les standards, j'y crois pas trop (vas-y que je te mets des donnees dans les champs inutilises de LDAP ou Kerberos, je sais plus)
Pas de bureau 3d libre sans drivers libres!
[^]Re: Opinion
C'est comme pour MSN Messenger, la première version du protocole a été rendue publique, mais après pour les évolutions... plus beaucoup de publications.
[^]Re: Opinion
Kerberos, pas LDAP. Ils ont récupéré un octet laissé inutilisé "pour évolution ultérieure", ce qui n'est pas, en soit, condamnable (après tout, cet octet était là pour ça), sauf qu'ils se sont bien gardé de dire à quoi il sert maintenant au juste.
[^]Re: Opinion
t'as raison, ils ont même réussit à pourir la programmation en Java sous windows, avec leur Visual J++ qui contient des API microsoft non compatible avec les autres OS....
[^]Re: Opinion
Microsoft a proposé un standard public pour C#, donc C# sera standardisé comme C ou C++ le sont actuellement (et comme Java ne le sera semble-t-il jamais :-).
Excuse moi mais là je ris :-) "Microsoft a proposé un standard public ...". Depuis qd est ce que MS suit les standards ? Tu crois que parce qu'il l'a proposé lui-même il le respectera ? Dès que ça ne l'arrangera plus de suivre le standard, il mettra des petites "features" non-standard ("ben quoi, on va pas nous repprochez de mettre des fonctionalités en plus pour nos utilisateurs").
La vie est un eternel recommencement ;-)
Vache qui rit, à moitié dans son lit
[+] [^]Re: Opinion
> Depuis qd est ce que MS suit les standards ?
Depuis qu'ils les font :-)
> Tu crois que parce qu'il l'a proposé lui-même il le respectera ?
Oui, c'est dans leur interêt. Si ils veulent que ce langage marche, il faut éviter qu'il soit "balkanisé".
http://www.ecma.ch/ecma1/MEMENTO/TC39.HTM(...)
[^]Re: Opinion
Question respect des standards, il y a des fois où Microsoft n'a pas imposé sa vision. Je prends le cas du Java ou ils ont pris des libertés dans l'implémentation de la JVM ce qui a impliqué le retrait de la licence accordée par Sun.
D'où l'obligation de l'appellation J++, pseudo-Java qui définit par exemple des directives de compilation (le comble pour un langage supposé multi-plateforme), et avec l'arrivée de .Net la nouvelle appellation J#...
[^]Re: Opinion
>Oui, c'est dans leur interêt. Si ils veulent que ce langage marche, il faut éviter qu'il soit "balkanisé".
L'intérêt de MS n'est pas de faire un "langage qui marche". L'intérêt de MS est d'imposer sa platform .NET/HailStorm/XP (c'est normé ISO ou ANSI, ça ?). C# est l'un des moyens qui permettra d'atteindre ce but.
<parano mode on>
Imaginons qu'une société développe son business sur une platform Linux/.NET avec C#. Dans quelques années, MS modifie .NET (pour des tas de bonnes raisons, si,si ils en trouveront) de sorte que .NET se comporte de façon "étrange" sous Linux et ce sans toucher à C#.
Quelle alternative pour le sociétés qui ont tout misé sur Linux/.NET/C# ?
a) garder Linux et réécrire son business avec un autre langage, d'autres fournisseurs de services.
b) garder son business tel quel et migrer sous XP
A priori, je dirais qu'une de ces alternatives doit être beaucoup plus chère que l'autre...
</parano mode on>
[^]Re: Opinion
> L'intérêt de MS n'est pas de faire un "langage qui marche". L'intérêt de MS est d'imposer sa platform
Et pour ça il faut que les développeurs aient envie de développer dessus, parce que si il n'y a pas d'applis ils n'iront pas loin. Et pour que les developpeurs aient envie de développeur dessus, il faut que le langage soit agréable à utiliser, bref, qu'il marche bien.
> Imaginons qu'une société développe son business sur une platform Linux/.NET avec C#.
Si on a C# et .NET sous Linux, ça sera déjà un exploit :-).
[^]Re: Opinion
Et pour ça il faut que les développeurs aient envie de développer dessus
La tu es franchement idéaliste ... Pour que ça marche, il faut surtout que MS vende sa plateforme aux décideurs (pour ça ils sont fort MS), après les pauvres p'tits développeurs ont pas grand chose à dire ... Si dans ta boite on te dit que le client veut faire ça en .NET/C#, tu vas faire la révolution tout seul, sinon on te montre la porte ...
Vache qui rit, à moitié dans son lit
[^]Re: Opinion
> après les pauvres p'tits développeurs ont pas grand chose à dire
Non. Tu ne forces pas des développeurs à passer à un langage contre leur grè, pas si tu veux que ton projet aboutisse. N'importe quel "décideur" sait ça, ou alors il va l'apprendre dans la douleur :-). Par ailleurs, un "décideur" en général ne souhaite qu'une chose : ne pas changer, à partir du moment où ça marche.
> Si dans ta boite on te dit que le client veut faire ça en .NET/C#, tu vas faire la révolution tout seul, sinon on te montre la porte ...
Ça par contre oui, c'est vrai, tu fais ce que le client demande, ce qui est bien normal, t'es payé pour. Mais pour que le client demande .Net/C#, il faut qu'il ai commencé à l'utiliser lui-même.
Bon, j'exagère, le coté marketing existe, et il y a aussi des managers qui se shootent au buzzword et te rendent un numéro de 01 Informatique avec les pages qui collent. Mais aucun marketing ne fera fonctionner un langage pourri. Si tout ceux qui essayent C# disent "on s'est vautrés", ça va finir par se remarquer.
Il faut arrêter de se mettre la tête dans le sable, MS n'embauche pas que des cons et ne fait pas que de mauvais produits, loin de là. Une boite n'arrive pas là où ils sont avec seulement un "vilain méchant marketing".
Il est bien plus simple et plus sur pour eux de faire de C# un bon langage qui plaise au développeurs et donc s'installera durablement (si Linux a percé, c'est parce qu'il plait aussi) plutôt que de faire un feu de paille marketing qui s'éteindra dès les premiers flops. D'autant plus sur qu'ils n'ont pas exactement misé petit sur .NET.
[^]Re: Opinion
>C# sera standardisé comme C ou C++ le sont actuellement (et comme Java ne le sera semble-t-il jamais :-).
Hum...
Java est standardisé par l'ISO (organisme de standardisation international),
le C est déjà ANSI (American National Standardization Institute) et est en cours de standardisation ISO
le C++... ben je ne me souviens pas qu'il fasse l'objet de la moindre standardisation...
Je me répète, mais mieux vaut promouvoir un langage ouvert et standard, meme s'il certaine parties sont sous copyright, plutôt que de l'enfoncer... ce qui ferais ressortir son "concurrent" direct (C#).
Pourquoi comparer de Java et du C++ ? Les applis C++ peuvent t'elles se lancer dans le navigateur du lambda ?
Le Java me semble etre un langage qui à réelement un avenir, le C# je n'en suis pas si sûr...
[^]Re: Opinion
le C++... ben je ne me souviens pas qu'il fasse l'objet de la moindre standardisation...
Ben si. Voir:
http://www.research.att.com/~bs/C++.html(...)
[^]Re: Opinion (C++ Standard)
Le C++ est un standard ANSI depuis 2 à 3 ans (je ne suis plus trop sur).
Malheureusement peu de compilateurs implémentent la totalité du standard. A ma connaissance GCC v3, KCC, Intel C++ et Dec CXX sont ok, les autres non.
[^]Re: Opinion
Pourquoi comparer de Java et du C++ ? Les applis C++ peuvent t'elles se lancer dans le navigateur du lambda ?
Quel est l'intérêt de pouvoir lancer une appli à partir d'un navigateur ? Pour les applis installées en local il est nettement plus simple de taper mon_appli_ki_tue à partir d'un shell, ou de cliquer sur une icône que de lancer au préalable un navigateur.
Certes cela permettrait d'exécuter l'application directement à partir du serveur sans installation en local mais je ne me vois pas attendre le téléchargement de Gimp à chaque fois que je souhaite le lancer (et pourtant j'ai le cable).
Reste les applets qui sont utilisées uniquement au sein de pages web pour passer outre les limites de HTML. Java a alors un gros avantage sur les langages compilés mais j'ai plutôt tendance à penser que ce genre de chose est de moins en moins utilisé : les applets de sécurisation utilisées un temps par les banques ont été remplacées SSL 128bits et les animations, jeux, etc. sont plus souvent en flash qu'en Java.
[^]Re: Opinion
> Java est standardisé par l'ISO (organisme de standardisation international),
Ah, vraiment :
http://www.zdnet.com/zdnn/stories/news/0,4586,1014537,00.html(...)
"Sun Microsystems Inc.'s long-standing plans to submit its Java language for standardization via the International Standards Organization are dead, according to Alan Baratz, president of Sun's Java Software division."
Ça date de 1999. Dans un numéro de C++ Report (datant de 99 ou 2000, je ne sais plus), il y avait une triple interview de Ritchie, Stroustrup, et Gosling. A la question "considerez-vous que standardiser un langage soit important", Ritchie et Stroustrup répondaient "oui, c'est crucial", et Gosling : "ben on a essayé mais c'était un tel bordel politique qu'on a laissé tomber".
> le C est déjà ANSI (American National Standardization Institute) et est en cours de standardisation ISO
http://anubis.dkuug.dk/JTC1/SC22/WG14/(...)
"The current C programming language standard ISO/IEC 9899 was adopted by ISO in 1999."
(il s'agit de la dernière version, la première date de 87 si ma mémoire est bonne).
> le C++... ben je ne me souviens pas qu'il fasse l'objet de la moindre standardisation...
Ben tu dois vivre sous un rocher :
http://std.dkuug.dk/jtc1/sc22/wg21/(...)
http://www.research.att.com/~bs/iso_release.html(...)
Le standard C++ ISO a été discuté pendant plusieurs années, et voté en novembre 97. Et la boite pour laquelle je travaille est membre du comité.
Joli score :-).
Il y a quelques mois sur un autre sujet dans linuxfr, je me souviens d'un âne qui avait aligné exactement les mêmes imbécilités : C pas encore ISO, et C++ pas standardisé. On avait été 2 à lui répondre... C'est quand même pas toi, dis ?
> Pourquoi comparer de Java et du C++ ?
Je citais C++ et C uniquement pour le fait qu'il y a un standard pour ces deux langages, il ne s'agit pas de comparer
> Les applis C++ peuvent t'elles se lancer dans le navigateur du lambda ?
En général non, et on s'en fout, c'est pas fait pour. Et ça n'a rien à voir avec le sujet non plus :-).
[+] [^]Re: Opinion
Bon bah maintenant je pense que c'est bien ancré dans ma petite tête :)
Sinon, Java est pratique pour etre plateforme-indépendant, mais les différentes plateformes disponibles en entreprise restent i386/UNIX i386/Win32 et des Sun ou des Macs... En disant que les Apple sont sur MacOSX(donc BSD, si je ne m'abuse), je voudrais savoir si ce n'est pas trop difficile de faire un programme qui puisse se compiler sur ces différentes plate-formes ?
Parce que si c'est tranquille, alors Java restera cantonné aux applis qu'on lance dans un browser, et la comparaison n'aura pas franchement lieu d'être, même si on fait de plus en plus de choses dans nos browsers...
Enfin si je demande ça, c'est aussi parce que je ne suis pas (encore) développeur C, C++ ou Java (vous avez peut-etre pu vous en rendre compte sur le post précédent, mettant en avant mon ignorance dans ce domaine, mais bon je croyais tellement ce que je disait) et je compte bien m'y mettre... dès que j'aurais choisi entre Java ou C.
Alors pour du parsing, du client/serveur, pour se connecter aux systèmes et aux SGBD... que choisir ?
[^]Re: Opinion
Il n'y a pas vraiment à choisir ... L'idéal est de connaitre les deux et d'utiliser l'un ou l'autre (ou l'un et l'autre) selon les cas. Java et C sont deux langages ayant des objectifs très différents ...
Vache qui rit, à moitié dans son lit
[^]Re: Opinion
"Microsoft a proposé un standard public pour C#, donc C# sera standardisé comme C ou C++ le sont actuellement (et comme Java ne le sera semble-t-il jamais :-)."
OK, alors faisons un test :
1- J'écris un programme Java sur Linux, puis je le fais tourner sous Windows ou Solaris. Même pas besoin de recompiler.
2- J'écris le même programme Java sous Linux, puis j'essaie de la faire tourner sous Windows ou Solaris. Pour peu qu'il y ait une GUI, bon courage, et bonne prise de tête !
Alors, lequel est "mieux normalisé", d'un façon ou d'une autre ?
[^]Re: Opinion
> 1- J'écris un programme Java sur Linux, puis je le fais tourner sous Windows ou Solaris
> 2- J'écris le même programme Java sous Linux, puis j'essaie de la faire tourner sous Windows ou Solaris.
Je ne suis pas sur de bien comprendre ta question :-).
Si par hasard tu voulais dire "C++" ou "C" au lieu de Java sur l'item 2, ben oui, faire des GUI portables en C ou en C++ c'est la merde, faut une lib en plus, c'est exactement ce qu'on dit plus bas : pour faire un bon langage il faut une bonne grosse lib :-).
Tu montres juste que Java engloble plus de choses que C ou C++, rien a redire. Mais ça n'est pas de ça qu'il s'agit.
[^]En tout cas, c'est clair qu'il n'existera pas de compilateur C#
Si je me souviens bien Gnome travaile sur Mono
http://www.go-mono.com/(...)
et dotGnu pense aussi
http://sourceforge.net/projects/dot-gnu/(...)
et puis Corel est plus ou moins financé par MS pour écrire/porter dotnet pour BSD
http://linuxfr.org/2001/06/30/4072,0,1,0,0.html(...)
Par contre, c'est évident que MS n'a pas intérêt à porter le CLR ailleurs (ou alors ils feront comme NT, qui à sa naissance existait sur PowerPC, Alpha ET x86). Et même, ils pourront porter la CLR, mais s'assureront que cela marche "mieux" sur Windows
Quand à la "racine" BSD de MacOSX, oui, Darwin est basé sur FreeBSD
http://www.opensource.apple.com/projects/darwin/(...)
Mais Aqua et compagnie, c'est pas du BSD... par contre, Apple a bien travaillé pour que Java soit un langage qui s'integre tres proprement à OSX et les diverses API http://developer.apple.com/javaosdn.html(...)
[^]Re: Opinion
"En tout cas, c'est clair qu'il n'existera pas de compilateur C# pour les autres systèmes que ceux de Microsoft."
En fait microsoft va porter .net pour freebsd (dont il apprecie la licence). http://www.oreillynet.com/pub/a/dotnet/2001/06/27/dotnet.html(...)
Par contre aucune "chance" pour linux
[^]Re: Opinion
> Par contre, je ne connais pas C# et je n'ai vraiment pas envie de connaitre... Si C# est pensé comme MS a pensé les MFC par exemple, quelle horreur ça doit etre.
Et puis c'est tellement plus confortable de ne pas remettre en question ses connaissances, hein ?
> Je ne sais d'ailleurs plus le prix absolument abérant [...]
MS n'est pas idiot : leurs outils de dev ne coutent jamais très cher, ça permet d'avoir plus de développeurs.
> Petite question en passant, est-ce que le C# possede un API aussi énorme que celle de java ?
Bien évidemment. L'une des grandes leçons de C++, c'est qu'un langage doit avoir d'entrée une lib standard bien foutue, sinon c'est le bordel parce que chacun fait la sienne.
[^]Re: Opinion
L'une des grandes leçons de C++, c'est qu'un langage doit avoir d'entrée une lib standard bien foutue, sinon c'est le bordel parce que chacun fait la sienne.
Sauf que C++ avait pour objectif d'être compilable là (et pour) où C l'est.
Ce qui signifie donc des machines embarquées ou les interfaces graphiques n'ont aucun sens.
C'est pourquoi, mettre dans une bibliothèque standard des trucs comme swing, une api réseau ou les threads n'est pas une bonne chose (le mettre dans une extension de la bibliothèque standard, pourquoi pas).
Tout dépend bien sûr des objectifs du langage. Mais faire une généralité en disant que plus la bibliothèque standard est grosse et complète, mieux c'est, c'est faux.
[^]Re: Opinion
> Ce qui signifie donc des machines embarquées ou les interfaces graphiques n'ont aucun sens.
L'embarqué était (est toujours, même), l'un des objectifs de Java, et actuellement son domaine de prédilection est les serveurs, où il n'y a pas de GUI non plus.
T'es pas obligé d'emporter toute la lib dans le programme...
> C'est pourquoi, mettre dans une bibliothèque standard des trucs comme swing, une api réseau ou les threads n'est pas une bonne chose
Si, et c'est pourquoi on cherche à l'ajouter à C++ maintenant. Voir une interview de Stroustrup sur le sujet :
http://www.linuxworld.com/linuxworld/lw-2001-02/lw-02-stroustrup.ht(...)
> Mais faire une généralité en disant que plus la bibliothèque standard est grosse et complète, mieux c'est, c'est faux.
Cite moi un exemple montrant le contraire. Pour autant que je puisse dire, c'est vrai.
[^]Re: Opinion
Si tu ne mets pas la bibliothèque complète sur ta plateforme, alors celle-ci n'est plus conforme avec le standard.
Si elle reste standard, c'est que ce qui n'y est pas fait partie des extensions au standard. C'est une définition.
Maintenant, si tu n'es pas d'accord avec ce que je viens de dire, ne lis pas le reste (ou si, mais il faudra que l'on se mette d'accord sur ce qu'est une bibliothèque standard).
Ajouter explicitement la gestion des threads dans la bibliothèque standard de C ou C++, par exemple, serait impossible. En effet, C et C++ doivent tourner sur des plateformes qui n'ont pas de gestion des threads. Ce doit donc être géré via des extensions à la bibliothèque ou par l'API du.
Viens ensuite un autre problème : Rendre ces extensions le plus générique possible et si possible standard. C'est ce qui s'est fait en C avec la norme POSIX. Mais c'est une norme qui est indépendante du langage C (en fait plutôt le contraire, mais bon).
Pour les interfaces graphiques, il n'y a pas pour l'heure de tels standards, ce qui est certes dommage, mais pas catastrophique.
Voilà mon avis, même si Stroustrup et Guillaume ne le partage pas.
[^]Re: Opinion
> Si tu ne mets pas la bibliothèque complète sur ta plateforme, alors celle-ci n'est plus conforme avec le standard.
Il existe des définition un brin plus subtiles de "standard".
> Voilà mon avis, même si Stroustrup et Guillaume ne le partage pas.
Sun non plus ne le partage pas :
http://java.sun.com/j2me/(...)
Recognizing that "one size doesn't fit all," Sun has regrouped its innovative JavaTM technologies into three editions: Micro (J2METM technology), Standard (J2SETM technology), and Enterprise (J2EETM technology). Each edition is a developer treasure chest of tools and supplies that can be used with a particular product:
Java virtual machines* that fit inside the range of consumer devices
a library of APIs that are specialized for each type of device
tools for deployment and device configuration
a profile, that is, a specification of the minimum set of APIs useful for a particular kind of consumer device (set-top, screenphone, wireless, car, and digital assistant) and a specification of the Java virtual machine functions required to support those APIs
Un autre "standard" qui fait la même chose est SVG, il est prévu une version "mini" pour les plateformes plus limitées graphiquement, et même "micro" pour les trucs vraiment petits genre téléphones portables.
[^]Re: Opinion
Si la bibliothèque est programmée avec les pieds
(genre Socket dérive de Frame), tu es dans la m... pour faire un programme réseau sur une plateforme sans affichage graphique. Bien sur, jamais personne ne ferait une chose pareille dans le design d'une librarie.
[+] [^]Re: Opinion
je tombe dans le troll, mais bon...
> Et puis c'est tellement plus confortable de ne pas remettre en question ses connaissances, hein ?
Pas du tout, en tant qu'étudiant en informatique, j'ai encore pas mal de choses a apprendre et/ou a approfondir.
J'ai deja étudié « l'utilisation de class wizard (sigh) » et donc, une partie des MFC.
L'année prochaine on verra CORBA et la réponse microsftienne avec COM/DCOM.
Mes (maigres) connaissances, je les remets en cause tous les jours en cherchant comme améliorer telle ou telle chose dans la facon de coder, en apprenant par moi-meme certains langages que par manque de temps (sans doute) nous nb'apprenons pas à l'école (php, utilisation d'api comme gtk, (faut d'ailleurs que je me mette a perl et python ;p), ...
De toutes manières, l'informatique est un milieu dans lequel nous sommes _obligés_ de nous remettre en question très souvent...
Nouvelle version de java, nouvelle librairie puissante en C, nouveau langage, .... Mais pour une question de gout et de principes (surtout), je n'apprendrai le C# que si il doit devenir un de mes cours l'année prochaine...
[+] [^]Re: Opinion
> je tombe dans le troll, mais bon...
J'ai passé l'age des provocations à 2Frs, merci. Mon post n'était pas un troll.
> Pas du tout, en tant qu'étudiant en informatique, j'ai encore pas mal de choses a apprendre et/ou a approfondir.
C'est déjà bien de le réaliser. Maintenant, pourquoi rejettes-tu d'emblée un langage comme C# si ce n'est parce qu'il vient de Microsoft, et que tu n'aimes pas Microsoft ?
Crois-tu vraiment qu'il soit dans leur interêt de faire un langage pourri ?
> Mais pour une question de gout et de principes (surtout),
AT&T a été un monopole au moins aussi dur que MS, sauf qu'eux le gouvernement US est parvenu à les briser. Mais encore maintenant ils sont loins d'être blancs comme neige. Pourtant tes principes ne t'empèchent pas d'apprendre et d'aimer C ou C++, non ?
Reste le gout, mais bon quand j'étais étudiant j'avais les mêmes réactions, et puis j'ai évolué :-).
[^]Re: Opinion
MS n'est pas idiot : leurs outils de dev ne coutent jamais très cher, ça permet d'avoir plus de développeurs.
Ta notion de "jamais tres cher" differe de la mienne.
D'apres http://msdn.microsoft.com/vstudio/prodinfo/purchase/pricing.asp(...) il faut debourser au moins 1000$ pour Visual Studio 6.0
Les outils de dev de MS sont repandus parcequ'ils sont pirates, pas parcequ'ils sont bon marche.
[^]Re: Opinion
Ils font souvent des offres pour les facs ou les étudiants. Mais il est certain que Linux garde l'avantage de ce coté là :-).
Par contre, $1000 dans le budget moyen d'un projet en entreprise, c'est rien.
[^]Re: Opinion
- c'est de l'orienté objet, ce qui permet une réutilisation du code ainsi que la modification de celui-ci sans devoir changer tout le reste. (et tous les autres avantages de la POO)
Cette possibilité de réutilisation du code n'a rien de propre à Java (comme tu le dis) et si un langage objet facilite les choses il reste possible de le faire en bête C (par exemple Gtk, ou toute autre bibliothèque).
Pour ce qui est de la possibilité de modification sans devoir tout changer cela tiens plus de l'idéalisme que de la réalité. Java permet de le faire, certes mais n'empêche de se planter sur sa conception et d'avoir au final un truc impossible à maintenir.
- c'est multi-plateforme. Le programme que j'ecris pour linux, tournera aussi sur windows ou sur tout os ayant une JVM.
Mouais c'est assez vrai sauf qu'en pratique il faut toujours s'interfacer avec un truc qui nécessite de faire du code natif.
- Il est génial pour tout ce qui touche le réseau et internet (que ce soit un « bete » programme comme jcoincoin ou une applic applet/servlet)
À mon avis pour ce qui est réseau et internet Perl et nettement au dessus de Java mais bon on rentre là dans un domaine hautement subjectif.
[^]Re: Opinion
- Il est génial pour tout ce qui touche le réseau et internet
Mouais et puis surtout ça n'a pas grand-chose à voire avec le langage en lui-même, là il s'agit des bibliothèques standard.
[^]Re: Opinion
Mouais c'est assez vrai sauf qu'en pratique il faut toujours s'interfacer avec un truc qui nécessite de faire du code natif.
Ah bon ? Ce n'est pas mon impression. Les APIs java couvrent un spectre suffisament large pour que tu puisses faire beaucoup de choses avant d'en arriver à utiliser JNI.
[^]Re: Opinion
Ah bon ? Ce n'est pas mon impression. Les APIs java couvrent un spectre suffisament large pour que tu puisses faire beaucoup de choses avant d'en arriver à utiliser JNI.
Tout à fait d'accord. Mais à partir du moment où l'on utilise JNI on sort de l'aspect multiplateforme séduisant (et à fort potentiel marketting) de Java.
[^]Re: Opinion
À mon avis pour ce qui est réseau et internet Perl et nettement au dessus de Java mais bon on rentre là dans un domaine hautement subjectif.
Tiens, je saute la-dessus. Je n'y connais rien en Java mais assez bien en Perl. Jusqu'a present, je n'ai rien lu sur Java qui puisse me faire laisser tomber Perl a son profit.
Quelqu'un d'assez pointu pourrait-il faire une comparaison (objective :-)) ? J'avais deja pose la question ici mais je l'avais posee apres la bataille ce qui fait qu'elle n'avait pas vraiment dechainee les passions...
Ce que j'aimerai, c'est du concret : pas du commercial (du genre, avec Java on fait des softs commerciaux de plusieurs millions de lignes (deja entendu...)). Ce que possede l'un et n'a pas l'autre (et qui soit vraiment valorisable).
Attention, quand je parle de Perl, je parle de Perl et de toutes ses extensions (notamment le CPAN).
Merci
PK, sans accent
[^]Cours avancé de java ;)
je ne connais pas du tout perl donc, je vais simplement t'expliquer les "grosses" bases de la programmation réseau en java.
Tu veux faire un client-serveur quelconque.
il te faut donc d'un coté une socket sur laquelle tu feras des bind/listen/accept/obiwan....
De l'autre coté, tu ne dois faire qu'un bind.
Java te fournit des Socket et des ServerSocket.
En gros, l'ecriture du serveur sera quelque chose du genre
public class Server {
..public static void main(String[] args) {
...ServerSocket mySocket = null;
...Socket serviceSocket = null;
...// créeons d'abord la socket
...try {
.....mySocket = new ServerSocket(5000);
...} catch (IOException e) {
.....System.err.println("oops");
...}
...// on fait le accept
...try {
.....serviceSocket = mySocket.accept();
...} catch (IOException e) {
.....System.err.println("oops");
...}
..}
}
et tu as un serveur qui tourne. Il faut bien entendu maintenant lui faire recevoir les données et blablabla, mais en gros, c'est mettre un flux sur la socket et ca n'apporte que peu d'interet ici.
Le client sera encore plus simple a écrire.
L'avantage des *Socket, est simple, tu as deux classes et entre elles, un flux de sortie et en flux d'entrée. Pour faire toute une partie réseau qui, par exemple en C serait quand meme assez fastidieuse, cela devient d'un coup très simple et réduite à quelques lignes.
Il existe également les URL et les URLConnection qui fonctionnent simplement comme suit:
mon url = new URL("http://machin.truc"(...));
un flux et hop.
Maintenant, je rappelle que je ne connais pas Perl et que je ne peux pas comparer si il est plus "simple" ou pas
[^]Re: Opinion
> Ce que j'aimerai, c'est du concret : pas du commercial (du genre, avec Java on fait des softs commerciaux de plusieurs millions de lignes (deja entendu...)).
Essaie de maintenir une appli de plusieurs millions de lignes en Perl et ça va très vite devenir très concret pour toi :-).
(Enfin, à ma connaissance il n'existe pas d'applis d'une telle taille en Perl, et je ne suis pas sur qu'il en existe en Java non plus mais ça me semble déjà plus du domaine du possible. Disons 200 KLOC, ça existe surement en Java, et en Perl j'ose à peine y penser).
[^]Re: Opinion
Essaie de maintenir une appli de plusieurs millions de lignes en Perl et ça va très vite devenir très concret pour toi :-)
(Enfin, à ma connaissance il n'existe pas d'applis d'une telle taille en Perl, et je ne suis pas sur qu'il en existe en Java non plus mais ça me semble déjà plus du domaine du possible. Disons 200 KLOC, ça existe surement en Java, et en Perl j'ose à peine y penser).
Ben, non, justement. Un porc écrira du Perl non maintenable en une centaine de lignes. La maintenance, lorsque le source est écrit proprement, n'est pas un problème (que ce soit en Perl ou en autre chose).
Quant aux applis grosses, je n'ai pas d'exemples directs sous la main mais je pense que la conception passe avant le langage. Je connais des applis en Scheme de plusieurs millions de lignes : les fans d'Emacs apprécieront :-)
Quant à l'exemple donné plus haut du client serveur, bof. On fait la même chose (peut-être même plus rapidement) en Perl.
Non, je cherche ce qu'apport réellement le Java par rapport à Perl. Et jusqu'à présent, je ne vois rien d'autre que des arguments... qui n'en sont pas :-)
PK
[^]Re: Opinion
> Ben, non, justement. Un porc écrira du Perl non maintenable en une centaine de lignes. La maintenance, lorsque le source est écrit proprement, n'est pas un problème
Ça c'est un cliché qu'on ressort quand on a pas eu a maintenir le code d'un autre :-). Tu peux écrire du code propre en Perl, ça demande juste beaucoup plus d'effort qu'en Java. Et comme dans la réalité, il y a des plus ou moins bons programmeurs, Perl est beaucoup moins maintenable que Java, c'est tout. C'est vrai même pour un bon programmeur Perl, d'ailleurs. Si il peut faire du Perl propre il fera du Java propre aussi, et ça restera toujours plus maintenable. Ne serait-ce que parce que Java est bien plus apte à la POO que Perl.
> Quant aux applis grosses, je n'ai pas d'exemples directs sous la main mais je pense que la conception passe avant le langage.
Moi j'en ai vu passer quelques unes, et je t'assure que le langage fait une énorme différence.
> Quant à l'exemple donné plus haut du client serveur, bof. On fait la même chose (peut-être même plus rapidement) en Perl.
Mouiii :-). On parle pas de la même chose là. Pas d'un petit truc comme slashdot ou daCode. Plutôt WebLogic ou WebSphere.
> Non, je cherche ce qu'apport réellement le Java par rapport à Perl. Et jusqu'à présent, je ne vois rien d'autre que des arguments... qui n'en sont pas :-)
Parce que tu décides qu'ils n'en sont pas. Pose tes oeillères, ouvre un bouquin sur Java, et peut-être que tu changera d'avis.
(Si encore tu parlais de Python ou Ruby... mais Perl, franchement... :-)
[^]Re: Opinion
En vrac ...
Avantages de Java sur Perl :
Avantages Perl sur Java
[^]Re: Opinion
merci : c'est exactement le genre de reponse que je cherchais.
PK, pas pres de passer a Java :-)
[^]Re: Opinion
> PK, pas pres de passer a Java :-)
Ça alors, quelle surprise.
[+] [^]Re: Opinion
Je vais finir par croire que c'est pour se donner bonne conscience qu'il demande des arguments pro-Java (qu'il n'écoute même pas d'ailleurs) :-)
Nelis [qui a abandonné depuis longtemps l'idée de faire essayer Java à PK] (hop -1)
Vache qui rit, à moitié dans son lit