PDA

Afficher la version complète : Choix d'un langage...



salv-ice
02/04/2008, 19h58
Salut à tous !

J'aimerais me lancer dans la programmation sous linux (et particulièrement pour KDE) et j'hésite sur le choix du langage à utiliser. Je précise tout de même que j'ai bientôt terminé mes études en informatique de gestion et que je ne suis donc pas un débutant en programmation et surtout que je suis loin d'être un expert... :P

En fait, j'hésite entre 3 langages de programmation assez portables (j'aimerais que mes applis fonctionnent également sous windows... oui je sais je suis difficile :P):

- Tout d'abord Java que je connais un petit peu et qui est totalement portable. J'aime bien ce langage mais je suis parfois un peu dérouté par certaines constructions utilisées dans certains codes sources que j'ai ouvert. Je me demande simplement s'il est vraiment bien intégré à Linux et KDE...

- Le couple C++ / Qt : je connais assez bien le C++ et pas du tout Qt. J'ai entendu dire qu'il était assez simple de créer une interface graphique avec Qt, mais qu'en est-il de la compatibilité avec Windows? Les applications sont-elles vraiment portables??

- En dernier lieu, Python, langage que je ne connais pas du tout mais dont on m'a dit le plus grand bien. Le seul bémol, la laideur des interfaces graphiques en Python... Est-il possible d'utiliser Qt avec Python et est-ce portable ??

Voilà, j'en ai fini avec toutes ces questions et je remercie d'avance tous ceux qui essaieront d'éclairer un peu ma lanterne. :lol:

Burn2
02/04/2008, 21h12
Bonjour.
C++ avec QT, sans aucune hésitation pour m'y être mis! Si tu connais le C++ tu n'auras aucun pb. Surtout que le QT c'est facile avec QT assistant qui te donne pas mal d'info. Avec Qdevelop ou Kdevelopp ça devrait être jouable... ;)

Quand à la compatibilité avec windows elle est totale avec QT, et mac aussi, tant que tu n'utilises pas de fonctions ou de librairie propre à linux.

genome
02/04/2008, 23h18
Slt,

Tout dépend de ce que tu veux faire...

C++, c'est bien pour les "grosses" applications, et ça peut être portable sous Win si tu utilises Qt (et non pas "QT", qui sert à désigner QuickTime !!!) ; en plus, si tu bosses spécifiquement sous KDE, y'a moyen d'utiliser des blocs KPart, mais ton prog ne sera alors plus portable.

Moi je programme surtout en Python, car on peut quasiment tout faire avec (même des jeux 3D -> voir Slune) et en un temps record. Au niveau graphique, c'est vrai que Tkinter est moche, mais il existe d'autres interfaces multiplate-formes comme pyGTK, pyQt ou encore wxPython (voir ici : http://python.developpez.com/outils/Librairies/?page=IHM)

Java, je maitrise pas trop, alors je ne voudrais pas donner de remarques non-constructives...

tyrtamos
03/04/2008, 07h20
Bonjour,

<div class='quotetop'>Citation (genome @ 2/04/2008 à 23:18) <{POST_SNAPBACK}> (index.php?act=findpost&pid=171852)</div>
Moi je programme surtout en Python, car on peut quasiment tout faire avec (même des jeux 3D -> voir Slune) et en un temps record. Au niveau graphique, c'est vrai que Tkinter est moche, mais il existe d'autres interfaces multiplate-formes comme pyGTK, pyQt ou encore wxPython (voir ici : http://python.developpez.com/outils/Librairies/?page=IHM)[/b]
+1 pour Python.

On peut faire facilement des choses qui fonctionnent avec le même code source sur Windows, Linux, BSD et mac...

Il y a un nombre impressionnant de modules qui traitent de tous les sujets. Par exemple, en quelques minutes, on peut faire un serveur web, ou obtenir l'heure exacte par consultation d'un serveur ntp.

C'est un langage moderne: structuré, objets, threads, etc...

Il a des particularités étonnantes. Par exemple, il sait calculer avec des nombres entiers sans limite de taille. On peut ainsi calculer factorielle de 20000 en moins de 4 secondes, ce qui renvoie un nombre composé de 77338 chiffres...

Tyrtamos

salv-ice
03/04/2008, 09h26
Hé bien, je vois que la balance penche en faveur de python. Il est vrai qu'on en entend beaucoup parler ces derniers temps !

Je crois que je vais mettre de coté Java et voir ce que vaut python !

Appartemment PyQt permet d'interfacer les librairies Qt avec python, c'est exactement ce que je recherchais !

Merci à vous tous pour ces précieux conseils :lol:

Je me mets à python dès que mon travail de fin d'études sera bouclé ;)

Bonne journée à tous !

Heero_Yuy
03/04/2008, 09h32
Salux,

J'utilise également C++/Qt. Franchement, c'est facile d'accès. La doc est très bien faite, et les nombreux exemples permettent de trouver une réponse à une de ses questions (j'en ai fait l'expérience ;) ).

Si tu veux, pour bien débuter avec Qt, je te conseille de lire ce livre : Qt4 et C++ - Programmation d'interface GUI de Jasmin Blanchette et Mark Summerfield (http://wiki.alionet.org/doku.php?id=howto_log:ref_biblio#qt4_et_c_-_programmation_d_interface_gui), tous 2 employés chez Trolltech ;) . Le livre est facilement compréhensible, les exemples sont pratiques (ce ne sont pas des exemples "bateau", ie que dès le 2ème ou 3ème chapitre, il te propose le code d'un tableur, certes simples mais facile à compléter).


La compatibilité avec Win$ est assurée puisque Qt est un framework multiplateformes (il tourne sous Nux, Win$ et même Mac OS X). Le même code source peut être réutilisé sous Win$, il suffit juste de recompiler pour peu que dans ton code source tu n'utilise que du standard ;)


Et si tu as besoin d'aide, il y a ce site/forum : http://www.qtfr.org/ (http://www.qtfr.org/). Bon, je ne m'y suis pas encore inscrit, mais les quelques recherches que j'ai faites dans le forum m'ont permis de trouver réponse à mes questions :)


Java, je l'ai aussi un peu utilisé, mais principalement sous Win$, mais il semble qu'une recompilation du code source suffit pour que le programme soit utilisable sous un autre environnement :)


Python, je ne connais pas vraiment, je n'ai pas encore eu l'occasion de développer sous ce langage, mais je me suis déjà amusé à regarder le code source. Ca semble vraiment facile d'accès, mais lorsque tu as l'habitude de la rigueur du C/C++ (notamment dans la déclaration des variables), tu peux te retrouver assez désarçonné lorsque, dans un script Python, tu rencontres des variables qui n'ont pas été déclarées précédemment dans le code. Mais, à mon avis, c'est une question d'habitude :)

salv-ice
03/04/2008, 09h42
Il est vrai que j'aime beaucoup la rigueur du C++, tout comme celle de Java d'ailleurs ! Cela permet de vraiment tout contrôler au poil près !

Python est donc un langage non typé... Ça m'ennuie un peu... Déjà que je fais mon TFE en PHP :P ...

Enfin, j'ai encore un peu de temps devant moi pour réfléchir, je dois avant tout terminer mon année scolaire B)

Merci beaucoup pour le lien et pour le titre du livre !

Heero_Yuy
03/04/2008, 13h07
Python est donc un langage non typé... Ça m'ennuie un peu... Déjà que je fais mon TFE en PHP :P ...[/b]

Attention, ne me fais pas dire ce que je n'ai pas dit. Il existe des types sous Python, mais ce n'est pas obligé de les utiliser, d'après ce que j'ai compris, en fonction de leur affectation, Python saura s'il s'agit d'un entier, d'un flottant ... sans avoir besoin de le préciser. Mais tu peux quand même préciser le type. C'est juste que j'ai rencontré récemment du code Python où les variables n'étaient pas typées et que dans ces conditions, il n'est pas facile de s'y retrouver.

En fait, par cet aspect de ne pas être obligé de typer ses variables, Python me fait penser à VB (mais là, on sort du Libre, je n'irais pas plus loin au risque de me brûler encore plus les "ailes" - malheureusement, au boulot, je dois programmer avec les outils M$, dont le VB, alors tu peux imaginer qu'il ne me reste plus beaucoup d'"aile" :P ).


<div class='quotetop'>Citation (salv-ice @ 3/04/2008 à 9:42) <{POST_SNAPBACK}> (index.php?act=findpost&pid=171876)</div>
Enfin, j'ai encore un peu de temps devant moi pour réfléchir, je dois avant tout terminer mon année scolaire B)[/b]

Bon courage pour le reste de ton année :)


<div class='quotetop'>Citation (salv-ice @ 3/04/2008 à 9:42) <{POST_SNAPBACK}> (index.php?act=findpost&pid=171876)</div>
Merci beaucoup pour le lien et pour le titre du livre ![/b]

Mais de rien ;) - ça me fait plaisir de proposer à d'autres développeurs, des bouquins et des sites que j'ai découvert et que je trouve fort utile et très bons :)

phoenix
03/04/2008, 17h38
<div class='quotetop'>Citation </div>
C'est juste que j'ai rencontré récemment du code Python où les variables n'étaient pas typées et que dans ces conditions, il n'est pas facile de s'y retrouver.[/b]

Ah bon ? :P

tyrtamos
03/04/2008, 18h19
En Python, on n'a pas besoin de déclarer les variables. Il est vrai que l'obligation de déclaration apporte de la sécurité.

Ce faisant, si on peut affecter et réaffecter à une variable donnée n'importe quel objet python, on peut tester à tous moments ce qu'elle contient! Cela donne une souplesse intéressante.

Par exemple, on peut passer une valeur de n'importe quel type à l'argument d'une fonction, et on peut changer le comportement de cette fonction en fonction du type d'argument fourni. C'est réalisé de manière plus complexe dans les langages objets (=polymorphisme).

Il n'y a pas de langage parfait. J'ai travaillé avec pas mal de langages (y compris forth et lisp) et ils ont tous des points forts et des points faibles. Par exemple, Python a une grande capacité de manipuler des listes, y compris des listes de listes (etc...), donc des arbres. Par contre, il est moins fort en tableaux. Etc...

Python, en tant que langage objet moderne et structuré n'a vraiment plus rien à voir avec le basic d'il y a 25 ans...

Tyrtamos

salv-ice
03/04/2008, 18h50
En fait, par cet aspect de ne pas être obligé de typer ses variables, Python me fait penser à VB (mais là, on sort du Libre, je n'irais pas plus loin au risque de me brûler encore plus les "ailes" - malheureusement, au boulot, je dois programmer avec les outils M$, dont le VB, alors tu peux imaginer qu'il ne me reste plus beaucoup d'"aile" :P ).[/b]
Il faut bien gagner sa vie... Pis à l'école c'est pareil, c'est du M$ à toutes les sauces, je n'ai qu'un prof qui soit pro-linux mais il doit quand même donner une partie de son cours en Windows... :angry:

De toute façon, mon choix n'est pas encore fait, ça sera soit C++/Qt ou Python/PyQt, j'ai encore bien le temps d'y réfléchir :P

Heero_Yuy
04/04/2008, 09h49
Ah bon ? :P[/b]


:lol: :lol: :lol: :lol: - il sait de quoi il parle le bougre :P :P

<div class='quotetop'>Citation (salv-ice @ 3/04/2008 à 18:50) <{POST_SNAPBACK}> (index.php?act=findpost&pid=171933)</div>
Il faut bien gagner sa vie...[/b]

C'est sûr :)

zesamoth
07/04/2008, 09h42
Allez je met mon petit grain de sel !
Et je dis + 1 pour python.

Comme le disent Tyrtamos et Heero_Yuy le non typage des variables peut être un plus dans la gestion des classes et la programmation orientée objects.
Mais comme il est aussi dit tu n'es pas obligé de ne pas typer tes variables. Libre à toi de choisir.
Et j'ai aussi apprécié dans ce language la gestion des listes très puissantes.
Un petit ex pour illuster ces deux propos (je suis pas sur de pas marquer une conner**, arretez moi si je me trompe, j'ai pas touché au python depuis 6 mois :lol:)


liste = ('toto' , 1 , ' et ' , 2 , "titi") #Création d'une liste mélangeant entier et string, remarque : ' et " sont équivalent, pratique dans certains cas

# après on peut jouer avec cette liste, affichage des types strings
print liste(0) , liste(2) , liste(4)
=>"Toto et titi"

#Addition des entiers
print liste(1) + liste(3)
=> 3

# Et comme les types string sont aussi des listes... (de caractères)
print liste(0)(:2)+ liste(4) (3:) , liste(2) , liste(4)(:2)+ liste(0) (3:)
=> "Toti et Tito"

Mais si ça t'intéresse je ne saurais que te conseiller ce génial ouvrage de Gérard Swinnen : Apprendre à programmez avec Python dont voici le lien Pdf:
Tuto Python (http://www.cifen.ulg.ac.be/inforef/swi/download/python_notes.pdf)

Et pour finir il me semble aussi qu'il ya une différence fondamentale entre python et C++ qui réside dans le fait que C++ est compilé alors que Python est inteprété (ou peut être pseudo compilé je sais plus trop <_< ). Donc en termes de portabilité ça chnge la donne. Je ne veux pas dire de bêtise et t'induire en erreur donc si tu veux plus de renseigneents regarde le lien. Il est très très complet et très très instructif !

@+

Heero_Yuy
07/04/2008, 10h13
Et pour finir il me semble aussi qu'il ya une différence fondamentale entre python et C++ qui réside dans le fait que C++ est compilé alors que Python est inteprété (ou peut être pseudo compilé je sais plus trop <_< ). Donc en termes de portabilité ça chnge la donne. Je ne veux pas dire de bêtise et t'induire en erreur donc si tu veux plus de renseigneents regarde le lien. Il est très très complet et très très instructif ![/b]

Salux,

Tu as parfaitement raison sur ce point. C, comme C++ sont des langages compilés. Alors que le Python est lui un langage interprété comme le bash ou shell ;)


Si vous voulez des sources documentaires (ou même compléter avec vos propres sources), n'hésitez pas à consulter cette bibliographie que j'ai initiée (http://wiki.alionet.org/doku.php?id=howto_log:ref_biblio)

Burn2
07/04/2008, 10h16
A noter que ça a aussi des avantages d'être un langage compilé, c'est bien plus rapide à lancé au premier lancement de la session puisque c'est compilé une bonne fois pour toute.

Donc à toi de voir ce que tu préfères: portabilité ou performances au lancement. A noter qu'un programme compilé est aussi distribuable sans aucun problème même compilé comme ça... A moins d'avoir un noyau non X86.

tyrtamos
07/04/2008, 11h19
Bonjour,

Petits compléments concernant Python:

- le code python est compilé en "bytecode" avant exécution. Ce qui fait que c'est quand même très rapide, même si ça ne l'est pas autant que du C compilé "natif".

- les modules python devant être importés sont compilés la 1ère fois qu'ils sont rencontrés. Les fois suivantes, c'est la version compilée qui est prise, tant que la date du source n'a pas changé.

- les modules python sont écrits en source python, ce qui évite de patauger dans la programmation de bibliothèques (.dll ou .so).

- il existe cependant des méthodes pour écrire certaines parties critiques du code Python avec des langages compilés "natifs" (C, C++, ...).

- à ma connaissance, les langages existant sur le .NET de Windows et sur Mono de Linux sont aussi compilés en bytecode.

- en fait, à mon avis, la compilation native est importante pour la programmation système, mais la compilation en bytecode suffit la plupart du temps pour les applications.

- avec Python, on peut très facilement faire du code multi-plateforme (Windows-Linux-Mac), tant qu'on n'utilise pas des modules spécifiques à l'un ou l'autre des OS. Par exemple, ma "calculext" (http://linux.jpvweb.com/mesrecetteslinux/calculatrice).


Pour des infos complémentaires sur Python:

- mon site Python commence à se remplir: http://python.jpvweb.com/ (et je m'amuse bien, merci :) ).

- il contient une liste de liens: http://python.jpvweb.com/mesrecettespython/liens_utiles.

- le site python de developpez.com est assez riche (http://python.developpez.com/), et son forum (http://www.developpez.net/forums/forumdisplay.php?f=96) est assez fréquenté (y compris par moi :D ).

Tyrtamos

Burn2
07/04/2008, 11h30
Perso pour avoir testé les deux. J'aime bien python pour du script linux mais dès que je veux faire une vrais appli je passe sur du c++ car la vitesse de lancement est bien plus rapide.

CF ton launcher ;) Mais chaque langage à ses avantages et inconvénients, à toi de voir ce que tu veux faire;

salv-ice
07/04/2008, 12h49
Merci beaucoup pour tous ces conseils!

Je vois qu'il y a pas mal d'aficionados du python sur Alionet :P :P
Il est vrai que ce langage à l'air très intéressant surtout si on peut interfacer les bibliothèques Qt !

Quel livre me conseilleriez-vous pour bien commencer avec python, en sachant que j'ai déjà de bonnes bases en programmation?

zesamoth
07/04/2008, 13h55
Héhé Burn2 désolé mais j'ai été très pris ces derniers temps et je n'ai pas posté la dernière version du launcher qui démarre carrément ( mais alors carrément :blink: ) plus vite !
Le seul hic c'est qu'il n'est plus du tout paramétrable par le fichier XML. Maintenant il faut écrire directement dans le code source ( ce qui n'est pas non plus absolument dérangeant... seul la structure change un peu) mais c'était ça qui posait des problèmes de performances... Et puis j'ai voulu trop en faire sans connaitre assez bien l'optimisation et j'avoue que maintenant que je ne m'y suis pas remis depuis longtemps (développant maintenant toute la journée au taf j'ai plus le courage de m'y mettre le soir et week end) je n'ai plus envie de le faire évoluer.
J'aurais aimé le passer en C pour voir la différence...

@ salv-ice : sans hésitation le lien que je mentionne plus haut !! Très très bon tuto de 300 pages :lol:

Au fait Tyrtamos, toutes mes félicitations pour ta calculette, vraiment un très bon programme !

Heero_Yuy
07/04/2008, 13h57
Pour bien débuter en Python, je te conseille ces 2 livres (en français) : Au coeur de Python 2.5 - tome 1 : Notions fondamentales (http://www.eyrolles.com/Informatique/Livre/9782744021480/livre-au-coeur-de-python-version-2-5-volume-1.php) Au coeur de Python 2.5 - tome 2: Notions avancées (http://www.eyrolles.com/Informatique/Livre/9782744021954/livre-au-coeur-de-python-version-2-5-volume-2.php)Tous 2 écrits par Wesley J. Chun, aux éditions Campus Press.

Tu trouveras toutes les infos nécessaires (notamment ISBN) sur les liens donnés.


J'ai commencé à lire le premier, mais j'ai dû abandonner. Mais sur ce que j'ai déjà lu, je peux dire que ces livres sont plus des supports de cours qu'un prof de fac pourrait utiliser pour l'apprentissage du Python à ses étudiants ;)


Si ça t'intéresse, sur le site developpez.com (http://www.developpez.com/), on trouve une critique du premier tome (http://guigui.developpez.com/critique/python/aucoeurpython1/), ainsi qu'une critique du second tome (http://guigui.developpez.com/critique/python/aucoeurpython2/) :)

tyrtamos
07/04/2008, 14h52
Au fait Tyrtamos, toutes mes félicitations pour ta calculette, vraiment un très bon programme ![/b]
Merci, zesamoth! Je travaille sur la version 1.4 qui apportera pas mal de choses. Mise en ligne dans le mois.


Pour les bouquins, mes préférés sont les 2 livres cités par Heero_Yuy, mais j'aime bien aussi: "Python en concentré" de Alex Martelli (Edition O'Reilly), éventuellement complété par "Python par l'exemple" du même éditeur".

Comme souvent, les différents livres offrent des contenus partiellement redondants, mais aussi partiellement complémentaires.

Pour le cours de Gérard Swinnen dont le lien a été donné plus haut par zesamoth, on peut en avoir plus ici, y compris le corrigé des exercices du livre: http://www.cifen.ulg.ac.be/inforef/swi/python.htm.

Si on est intéressé par les aspects calculs scientifiques, on peut avoir aussi: "Python - Les fondamentaux du langage - La programmation pour les scientifiques" aux éditions ENI.
Python dispose en effet de modules pour les scientifiques (calcul matriciel, tracé de courbes matplotlib, etc...).

Enfin, en cherchant bien avec google, on trouve quelquefois des livres qui, bien qu'ils soient en vente, disposent d'un accord de l'éditeur pour le téléchargement en pfd ou en chm.

Tyrtamos

salv-ice
07/04/2008, 16h41
Arffff, je crois que l'heureux élu sera finalement python... B)

Vous m'avez donné l'eau à la bouche et j'ai hâte de découvrir la bête :lol:

salv-ice
08/04/2008, 21h19
Au fait, pourriez-vous me dire quels éditeurs/EDI vous utilisez pour coder et débugger vos programmes python?

tyrtamos
08/04/2008, 23h11
Au fait, pourriez-vous me dire quels éditeurs/EDI vous utilisez pour coder et débugger vos programmes python?[/b]
J'ai commencé avec IDLE livré avec Python, et je l'utilise toujours pour les petites choses.

Sinon j'utilise surtout "easyeclipse pour Python" (http://www.easyeclipse.org/site/distributions/index.html) qui existe sur Windows, Linux et Mac.

Comme je veux développer seulement en multi-plateforme, easyeclipse permet, même sur Windows, de coder en utf-8 et en fin de ligne Unix.

Mais je regrette de ne pas avoir un "rad" pour la conception graphique.

Il existe beaucoup d'autres outils de développement. Sur Linux, j'ai déjà utilisé KDevelopp. Il existe aussi eric sur opensuse, mais je ne le connais pas.

Tyrtamos

zesamoth
09/04/2008, 08h20
Pour ma part y'a pas de mystère c'est console + Kate. Kate est un éditeur de texte avancé qui permet d'ouvrir plusieurs fichiers en même temps et ça c'est bien pratique. Mais comme Tyrtamos je regrette de pas avoir pu trouver un RAD correct (ça doit bien exister...).

Une méthode assez particulière pour construire les interfaces graphiques est l'utilisation de pyGtk, essentiellement axé Gnome mais qui peut très bien être utilisé sous KDE ou win$. Je te laisse chercher la doc je suis au boulot là :unsure: ... Perso c'est ce que j'utilise !

Un petit lien tout de même : http://python.developpez.com/cours/pygtktutorial/

@+

Heero_Yuy
09/04/2008, 08h53
Tout comme zesamoth, pour coder (même si c'est pas en Python), j'utilise Kate. J'y ai installé le plugin Kate Symbol Viewer (http://www.kde-apps.org/content/show.php/Kate+Symbol+Viewer+Plugin?content=19602) qui me permet de retrouver facilement mes méthodes dans chacune des classes que je développe (et oui, je fais de l'Objet - normal avec Qt qui est un framework basé C++ :P ).

Par ailleurs, j'utilise également la Konsole dans Kate (grâce à KPart ou DCOP je ne sais plus). Ce qui m'évite d'avoir à ouvrir une console supplémentaire ;)

La coloration syntaxique dans Kate est très pratique pour coder (que ce soit en C, C++, Java, Python me semble-t-il, XML...).

Ce que je regrette un peu dans Kate, c'est que l'autocomplétion ne soit pas encore implémentée :(


J'ai également utilisé KDevelop qui est très bien, mais je ne sais pas pourquoi, aujourd'hui, je privilégie Kate (peut-être des réminiscences de mes années de fac, où en TP d'info, on codait avec nedit sous UNIX :D ).



Mais tout comme pour une distrib, il faut essayer plusieurs IDE, éditeurs de texte pour trouver celui avec lequel on se sent le plus à l'aise.

Agemen
09/04/2008, 10h59
+1 pour kate. Mes rares projets passent nécessairement par là. Avant j'utilisais pspad sous windoze, mais j'ai pas du le trouver tout de suite... et kate m'a bien plus...

Burn2
09/04/2008, 11h39
Si c'est sous gnome, il vaut mieux utiliser geany qui est l'équivalent en GTK de kate.

salv-ice
09/04/2008, 12h02
<div class='quotetop'>Citation </div>
Si c'est sous gnome, il vaut mieux utiliser geany qui est l'équivalent en GTK de kate.[/b]
Je suis sous KDE mais je connais assez bien Geany pour l'avoir utilisé sous Ubuntu. C'est un excellent éditeur !

<div class='quotetop'>Citation </div>
Tout comme zesamoth, pour coder (même si c'est pas en Python), j'utilise Kate. J'y ai installé le plugin Kate Symbol Viewer qui me permet de retrouver facilement mes méthodes dans chacune des classes que je développe (et oui, je fais de l'Objet - normal avec Qt qui est un framework basé C++ tongue.gif ).[/b]
Kate est l'éditeur que j'utilise actuellement, surtout pour mes scripts PHP. Le Kate Symbol viewer à l'air particulièrement interressant ! J'installe ça de suite, merci ! :)

Je crois que je vais rester sous Kate pour l'instant vu que c"est un éditeur que je connais bien ! Merci à tous pour vos conseils ! :lol:

thveillon
09/04/2008, 12h33
Je suis un newbie complet en programmation, je commence à causer bash pas trop mal et j'ai décider d'apprendre quelques bases en programmation, plutôt comme un hobbie. Ma première idée était le c, parce que c'est le langage du noyau Linux dont le fonctionnement me passionne, finalement ça sera Python pour sa polyvalence "administration système - développement applicatif - développement web" (j'essaie un serveur "zope" depuis un moment et ça m'impressionne pas mal), et le fait que le code est souvent assez lisible même pour un débutant.

Comme je suis un peu taré j'ai décider d'en commencer deux, pour pouvoir choisir quand ça deviendra trop dur de suivre les deux. Mon deuxième choix c'est porté sur Ruby pour des raisons complètement indépendantes du langage : j'ai passé du temps à lire les forums, sites dédiés et mailling listes de différentes communautés, et les gens qui promeuvent Ruby sortent vraiment du lot par leur gentillesse et leurs bonnes manières. Pas de "flame wars", pas (trop) de rtfm avec les débutants, beaucoup de conseils qui ne ressemblent pas à des concours de "c'est mon code qu'est le plus beau".

Parmi les articles que j'ai lu pour me faire une idée, celui-ci (http://www.jhl.it/Programming/WhatLanguages.html) (eng) a été une bonne base et fournie pas mal de liens.

Voilà pour l'expérience totalement béotienne d'un touriste de la programmation. B)

Heero_Yuy
09/04/2008, 14h03
Le Kate Symbol viewer à l'air particulièrement interressant ! J'installe ça de suite, merci ! :)[/b]

De rien. Je suis tombé dessus par zazard, et je l'ai installé. Aujourd'hui, je ne peux plus m'en passer :lol: (très pratique lorsque ton code commence à faire plus de 100 lignes pour retrouver la méthode ou la fonction que tu dois modifier ;) )

tyrtamos
09/04/2008, 16h22
Je viens de faire une petite expérience qui illustre assez bien les performances de Python:

Calcul de la factorielle de 100000 (cent mille).

Rappel de la définition: factorielle de n=1*2*3* ... (n-1)*n. La factorielle de 10 vaut déjà 3628800.

Exemples d'utilisations: analyse combinatoire et calculs de probabilité.

Voilà le code que vous pouvez essayer dans IDLE:


#!/usr/bin/python
# -*- coding: utf-8 -*-

import time

def fact(n):
x=1
for i in xrange(2,n+1):
x*=i
return x

tps=time.time()
x=fact(100000)
print time.time()-tps

Le résultat est trouvé en 21 secondes sur mon PC.

Ce résultat est un nombre composé de 456574 chiffres. Il faudrait une centaine de pages dactylographiées pour l'imprimer...

Il est d'ailleurs tellement grand que la plupart des contrôles graphiques de Windows refusent de l'afficher (mais il s'affiche sur Linux dans tkinter! :D )... On peut l'utiliser dans d'autres calculs sans l'afficher, ou le sauver sur disque.

Vous pouvez le voir ici: http://python.jpvweb.com/documents/resultat.txt

Le C serait sans aucun doute encore plus rapide, mais je ne vois pas comment je pourrais faire cela aussi simplement...

Tyrtamos

Heero_Yuy
10/04/2008, 11h11
Le C serait sans aucun doute encore plus rapide, mais je ne vois pas comment je pourrais faire cela aussi simplement...[/b]

A mon avis, le code ne va vraiment pas être beaucoup plus difficile. Tu définis une fonction fact() qui reçoit un entier en entrée et retourne un entier en sortie.



#include <stdio.h>

int fact( int n )
{
int x = 1;
int i; // notre compteur pour le for

for(i = 2; i < n; i++) // Je ne maîtrise pas la boucle for en python, pourquoi n+1 ? Peut-être qu'en C, ce sera aussi n+1 ?
x *= i;

return x;
}


void main( void )
{
int x; // Notre valeur de factorielle

x = fact( 100000 );

printf("%d", x);

}

Sans l'affichage du temps ;) J'ai pas testé, mais ce doit être ça à peu de chose près ;)

tyrtamos
10/04/2008, 11h51
Pour Heero_Yuy:

Dans les boucles 'for' de Python, la borne supérieure est exclue.

A ma connaissance, le C ne sait pas calculer avec des nombres entiers aussi long. Ou alors, il faut ajouter une bibliothèque comme "gmp" (http://www.swox.com/gmp/).

J'ai déjà travaillé avec cette bibliothèque gmp sur du C++ sur Linux, et elle est très très efficace. Mais pour la simplicité...

Quand au développement multi-plateformes, le code Python que j'ai donné est identique sur Windows et sur Linux (et probablement sur mac). Il suffit d'avoir Python qui est installé en 3 minutes.

Par contre, en C, il faut connaitre et avoir les 2 outils de développement de Windows et de Linux. Pour Windows, la plupart des outils puissants sont payants, sauf le visual C express de Microsoft qui fonctionne sur .NET (donc en compilation bytecode comme Python). Rien que l'installation est une épreuve (je l'ai!)... Quand aux outils Linux qui nécessitent cygnus pour fonctionner, est-ce que ça veut dire qu'il faudra que tous les utilisateurs du programme devront d'abord installer cygnus? Si c'est le cas, son installation (je l'ai!) n'a rien à voir avec l'installation de Python.

Mais je ne suis pas contre le C ou le C++ que j'utilise aussi: on ne parle ici que de la simplicité de mise en œuvre "développement + utilisation".

Tyrtamos

Heero_Yuy
10/04/2008, 12h48
Pour Heero_Yuy:

Dans les boucles 'for' de Python, la borne supérieure est exclue.[/b]

Oki, je comprends mieux :) Merci


<div class='quotetop'>Citation (tyrtamos @ 10/04/2008 à 11:51) <{POST_SNAPBACK}> (index.php?act=findpost&pid=172669)</div>
A ma connaissance, le C ne sait pas calculer avec des nombres entiers aussi long.[/b]

Effectivement, je ne suis même pas sûr qu'en utilisant un unsigned long, on atteigne un tel niveau de précision :P

<div class='quotetop'>Citation (tyrtamos @ 10/04/2008 à 11:51) <{POST_SNAPBACK}> (index.php?act=findpost&pid=172669)</div>
Ou alors, il faut ajouter une bibliothèque comme "gmp" (http://www.swox.com/gmp/).

J'ai déjà travaillé avec cette bibliothèque gmp sur du C++ sur Linux, et elle est très très efficace. Mais pour la simplicité...[/b]

Connais pô :( - mais dès que j'en aurais le temps, je me renseignerais :)

<div class='quotetop'>Citation (tyrtamos @ 10/04/2008 à 11:51) <{POST_SNAPBACK}> (index.php?act=findpost&pid=172669)</div>
Quand au développement multi-plateformes, le code Python que j'ai donné est identique sur Windows et sur Linux (et probablement sur mac). Il suffit d'avoir Python qui est installé en 3 minutes.

Par contre, en C, il faut connaitre et avoir les 2 outils de développement de Windows et de Linux. Pour Windows, la plupart des outils puissants sont payants, sauf le visual C express de Microsoft qui fonctionne sur .NET (donc en compilation bytecode comme Python). Rien que l'installation est une épreuve (je l'ai!)... Quand aux outils Linux qui nécessitent cygnus pour fonctionner, est-ce que ça veut dire qu'il faudra que tous les utilisateurs du programme devront d'abord installer cygnus? Si c'est le cas, son installation (je l'ai!) n'a rien à voir avec l'installation de Python.[/b]

Sur Win$, si tu utilises des bibliothèques du C-ANSI, normalement, le code doit être facilement portable. Sinon, pour faire un code portable avec des bibliothèques spécifiques, il est toujours possible de faire des tests #if #endif pour inclure les bons en-têtes de bibliothèques ;)

Mais bon, j'ai pas encore eu l'occasion de tester.

Sinon, pour être sûr de faire une appli portable, Java aussi est pratique. Le même code source à recompiler et hop le tour est joué :P

Concernant les outils, sous Win$, en installant Notepad++ et Cygwin que je ne trouve pas trop difficile à installer (avis perso ;) ), on peut déjà faire de bons trucs :) - d'ailleurs sous Linux, je n'utilise que Kate et gcc/qmake (Qt), donc on ne s'y perd pas tant que ça.

Maintenant, c'est vrai que les outils M$ (Visual Studio) que j'utilise au boulot sont vraiment lourds, mais puissants, il faut bien l'avouer.

<div class='quotetop'>Citation (tyrtamos @ 10/04/2008 à 11:51) <{POST_SNAPBACK}> (index.php?act=findpost&pid=172669)</div>
Mais je ne suis pas contre le C ou le C++[/b]

Loin de moi de penser que tu sois contre le C ou le C++ ;)

Burn2
10/04/2008, 13h58
Moi je suis fan du C++ pour les logs. Pour moi le python, c'est plus pour du script ou pour des calculs scientifiques.

tyrtamos
10/04/2008, 15h12
Moi je suis fan du C++ pour les logs. Pour moi le python, c'est plus pour du script ou pour des calculs scientifiques.[/b]

C'est un peu sévère. C'est vrai qu'en C on peut tout faire. Mais un langage avec lequel on peut faire des applications graphiques complètes n'est pas qu'un "langage de script".

D'ailleurs on ne dit pas ça de Visual Basic, et pourtant les possibilités de Python lui sont supérieures. Par exemple, on peut faire un serveur web-cgi en Python.

Tyrtamos

Agemen
10/04/2008, 16h17
De toutes façons, le C n'et PAS portable ;) (cf un article dans un linux magazine, je crois ^_^). Quant à l'utilisation de cygwin (que j'ai, je crois, mais bon... j'aime pas windoze pour coder, c'est moche et c'est pas pratique), il me semble qu'elle nécessite d'installer gcc (enfin, sa version pour windoze). Du coup... si tu veux que ton code soit libre, pour être compilé, ton client devra installer gcc sur sa machine. Sinon, tu lui files binaires et exécutables... mais l'open source perd son sens ;)

LUCCI
09/05/2008, 10h14
De toutes façons, le C n'et PAS portable ;) (cf un article dans un linux magazine, je crois ^_^).[/b]
Tu crois bien ;)

J'utilise Linux depuis 5ans, 5ans que je fais de la programmation Bash. Bon là j'ai besoin d'un langage moins crade pour faire une appli. Après m'être penché sur plusieurs langages de la POO je suis arrivé à Ruby et je te conseil vivement d'aller y faire un tour (si tu n'aimes pas Python).
Simple, agréable, interprété, homogène il a toutes les qualités (mis à part le manque de doc française il n'est pas assez connu pour l'instant mais il monte en force grâce à RoR). Quand tu codes en Ruby, tu comprends pourquoi RS compare la programmation à de la poésie.

Java... je te le conseil pas, c'est foutrement complexe. Python c'est pas beau et puis ça mélange les deux paradigmes.

Enfin, ce n'est que l' avis d'un non programmeur qui est obligé de faire le travail de la DSI à cause de l'incompétence de ses collègues.

os2
14/05/2008, 13h31
Tu crois bien ;)

J'utilise Linux depuis 5ans, 5ans que je fais de la programmation Bash. Bon là j'ai besoin d'un langage moins crade pour faire une appli. Après m'être penché sur plusieurs langages de la POO je suis arrivé à Ruby et je te conseil vivement d'aller y faire un tour (si tu n'aimes pas Python).
Simple, agréable, interprété, homogène il a toutes les qualités (mis à part le manque de doc française il n'est pas assez connu pour l'instant mais il monte en force grâce à RoR). Quand tu codes en Ruby, tu comprends pourquoi RS compare la programmation à de la poésie.

Java... je te le conseil pas, c'est foutrement complexe. Python c'est pas beau et puis ça mélange les deux paradigmes.

Enfin, ce n'est que l' avis d'un non programmeur qui est obligé de faire le travail de la DSI à cause de l'incompétence de ses collègues.[/b]

ruby et java ne sont pour moi pas vraiment destiné au même domaine

si je dois gérer une applications en cluster sur plusieurs serveur avec des centaines d'usager simultanée, j'utiliserais surement pas ruby pour ça

qu'est-ce qui est difficile dans java?

j'ai débuté par le C, VB, C++, Delphi, php et java et je trouve ce derniers très bien adapté au débutant

LUCCI
14/05/2008, 21h10
si je dois gérer une applications en cluster sur plusieurs serveur avec des centaines d'usager simultanée, j'utiliserais surement pas ruby pour ça[/b]
Je pense que c'est une bonne idée.

<div class='quotetop'>Citation (os2 @ 14/05/2008 à 13:31) <{POST_SNAPBACK}> (index.php?act=findpost&pid=175785)</div>
qu'est-ce qui est difficile dans java?[/b]
Beaucoup de trolls dans mon poste, c'était sous l'émotion provoquée par la fermeture d'O'reilly france.

Par contre, je trouve sincèrement Java plus difficile à assimiler. Première raison, la lourdeur (longueur) du code.
Deuxième raison, et ça rejoint la première, c'est difficile d'être rapidement opérationnel avec ce langage (tu connais un bouquin complet de moins de 500 pages ?). Troisième raison, et c'est la plus subjective, je me suis initié à la POO avec Java et ce n'est pas un bon langage d'apprentissage. Tout est objet :) ?... oui enfin presque... <_<

Voilà pourquoi j'ai l'impression d'avoir perdu pas mal de temps avec Java. Après plusieurs nuits de lectures et d’essais, je n’ai jamais été capable de produire quoi que ce soit en Java. Je suis juste capable de comprendre le code source d'un programme. Par contre depuis que j’ai découvert Ruby, j’avance bien :). Mais je rappelle que je ne suis pas développeur. Tout ce dont j'ai besoin c'est d’un petit langage portable pour remplacer les macros Excel et access.

salv-ice
14/05/2008, 21h46
Petite parenthèse à propos du langage Java, que j'apprécie particulièrement...

1) Java n'est pas un langage compliqué en soi, ce qui le rend compliqué c'est l'énorme bibliothèque de classes qui l'accompagne (c'est aussi ce qui fait sa puissance et sa polyvalence).

2) La modèle objet de Java est parfait pour apprendre ce paradigme de programmation aux débutants. C'est par Java que j'ai appris à programmer en objet et je ne le regrette pas du tout. De ce point de vue, Java est complet et très bien pensé (pas d'héritage multiple très complexe à gérer).

3) Pour ce qui est de la "lourdeur" du code, faut avoir fait du C pour comprendre que Java est plutot léger pour un langage qui permet un tel contrôle...

4) Contrairement à ce qui a été dit plus haut, un programme Java ne doit être compilé qu'une seule fois, il peut ensuite être exécité dans n'importe quel environnement.

Voilà, comme vous l'aurez compris, je suis un fervent défenseur du "petit noir" :lol:

LUCCI
15/05/2008, 01h25
1) Java n'est pas un langage compliqué en soi, ce qui le rend compliqué c'est l'énorme bibliothèque de classes qui l'accompagne (c'est aussi ce qui fait sa puissance et sa polyvalence).[/b]
Je parlais de syntaxe. Compares un "bonjour le monde" avec swing et un avec pyGTK ou ruby-gnome.
<div class='quotetop'>Citation (salv-ice @ 14/05/2008 à 21:46) <{POST_SNAPBACK}> (index.php?act=findpost&pid=175860)</div>
2) La modèle objet de Java est parfait pour apprendre ce paradigme de programmation aux débutants. C'est par Java que j'ai appris à programmer en objet et je ne le regrette pas du tout. De ce point de vue, Java est complet et très bien pensé (pas d'héritage multiple très complexe à gérer).[/b]
J'aime que les choses soient claires. POO= tout est objet. En Java, tout est objet sauf les primitives, les méthodes, les classes (surtout si je me trompe corrige moi).
À propos de l'héritage multiple, je trouve son absence frustrante. Le C++ dispose de l'héritage multiple et ce n'est pas un défaut... Suffis de choisir le nom de ses méthodes avec soin pour éviter la collision. Pour pallier (partiellement) ce manque, Java dispose d'interfaces et Ruby de modules. Dommage que ces langages ne laissent pas au développeur la liberté de choisir.
<div class='quotetop'>Citation (salv-ice @ 14/05/2008 à 21:46) <{POST_SNAPBACK}> (index.php?act=findpost&pid=175860)</div>
3) Pour ce qui est de la "lourdeur" du code, faut avoir fait du C pour comprendre que Java est plutot léger pour un langage qui permet un tel contrôle...[/b]
Je ne connais pas le C. Mais si on compare avec d'autres langages... (cf 1)
<div class='quotetop'>Citation (salv-ice @ 14/05/2008 à 21:46) <{POST_SNAPBACK}> (index.php?act=findpost&pid=175860)</div>
4) Contrairement à ce qui a été dit plus haut, un programme Java ne doit être compilé qu'une seule fois, il peut ensuite être exécité dans n'importe quel environnement.[/b]
J'ai jamais dit ça.
<div class='quotetop'>Citation (salv-ice @ 14/05/2008 à 21:46) <{POST_SNAPBACK}> (index.php?act=findpost&pid=175860)</div>
Voilà, comme vous l'aurez compris, je suis un fervent défenseur du "petit noir" :lol:[/b]
Java est à la mode, mais personnellement je n'éprouve pas de plaisir en codant en Java. Les goûts et les couleurs :rolleyes:

tyrtamos
15/05/2008, 06h49
Bonjour,

Juste un petit témoignage. Je partage assez le point de vue de LUCCI.

J'ai programmé assez facilement dans de nombreux langages (C, C++, Delphi, VB, fortran, ...), y compris dans des langages bizarres comme prolog, forth ou lisp. Et maintenant en Python.

Le seul avec lequel je ne sors rien, mais vraiment rien, c'est java.

Pourtant je voulais absolument un langage objet multi-plateforme, et java semblait en avoir toutes les caractéristiques. Je m'y suis remis à plusieurs reprises ces 5 dernières années, et j'ai plusieurs livres très épais sur le sujet. Mais quand au bout d'une semaine je n'ai toujours rien sorti d'intéressant, j'abandonne.

Comme je suis têtu, ça ne m'empêchera pas de recommencer un de ces jours :D

Alors, recommander java à des nouveaux? Peut-être à des étudiants très très bien soutenus par leurs profs?

Tyrtamos

salv-ice
15/05/2008, 08h40
<div class='quotetop'>Citation </div>
J'aime que les choses soient claires. POO= tout est objet. En Java, tout est objet sauf les primitives, les méthodes, les classes (surtout si je me trompe corrige moi).[/b]
En java, tout est objet, y compris les "types primitifs". Pour éviter une certaine complexité, ces types s'utilisent comme des primitifs mais en interne ce sont des objets. Il est également possible d'utiliser des classes enveloppantes (wrappers) afin de les utiliser comme des objets. C'est un peu tordu mais ce sont les choix des ingénieurs de Sun.

<div class='quotetop'>Citation </div>
J'ai jamais dit ça.[/b]
Non, cela a été dit ailleurs dans la discussion.

<div class='quotetop'>Citation </div>
Alors, recommander java à des nouveaux? Peut-être à des étudiants très très bien soutenus par leurs profs?[/b]
Tout à fait d'accord, Java peut être compliqué à apprendre pour un autodidacte, par contre, dans le cadre de cours dans une école, il est très bien pour apprendre l'objet et il est surtout incontournable pour quelqu'un qui veut devenir développeur de métier. Il suffit de voir le nombre d'offres d'emploi concernant Java.

De toute façon, c'est un fait, Java on aime ou on aime pas... Personnellement, il m'a laissé une très bonne impression lors de ma première année d'études en informatique. Peut être grâce au professeur...

Heero_Yuy
15/05/2008, 10h23
Concernant Java, j'ai appris seul, mais j'avais déjà une certaine base en programmation (C, C++, Ada). Et j'ai appris la POO grâce à C++.

Je n'ai pas eu trop de difficultés à programmer en Java, mais je pense que c'est dû à mes bases.


Par contre, je n'ai codé qu'une année en Java. Aujourd'hui, je me suis remis au C++ avec Qt :P que j'affectionne particulièrement. Mais s'il faut un jour me remettre au Java, je le ferais. Bien que je ne cherche pas vraiment à aller dans ce sens ? Pourquoi, j'en sais trop rien. C'est pas que je n'aime pas Java, mais voilà, j'ai découvert Qt, et j'en suis super satisfait :D



Et concernant les livres sur la programmation, plus ils ont de pages, et plus j'aime les lire :P . Maintenant, il me semble que la collection Pour les Nuls propose des livres sur la programmation (C++, Java ?? A vérifier) de moins de 500 pages ;) mais je pense que ce ne sont que les bases. Avec des livres de plus de 500 pages, si un jour tu rencontres un problème, à mon avis, il sera plus facile de trouver un début de réponse que sur un livre qui ne fera que 100-200 pages :) - mais c'est mon avis perso.

Par contre, pour débuter, c'est clair que les pavés de 500 pages font peur :P

LUCCI
15/05/2008, 13h27
En accord avec toi, mais … je n’ai rien contre les bouquin de 500 pages ;) Bien au contraire, je suis un grand lecteur (pas exclusivement dans ce domaine). L’inexistence d’un bon pavé francophone pour le langage ruby est selon moi fort regrettable.

Si j’ai parlé de l’absence d’un bouquin d’initiation à java, inférieur à 500 pages c’était pour appuyer le fait que Java est complexe. Programmer en Java de Claude DELANOY fait plus de 680 pages et c’est à peine suffisant pour être opérationnel. Pour un débutant en POO, il me semble préférable de s’orienter vers un langage qui permettra d’obtenir rapidement des résultats.

Heero_Yuy
15/05/2008, 14h50
Je ne sais pas ce qu'ils valent, mais sur le site developpez.com, il y a quelques critiques de livres sur Ruby (http://ruby.developpez.com/livres/), et parmi eux j'ai pu remarquer qu'il y avait quelques pavés (plus 550 pages ;) ).

Peut-être trouveras-tu ton bonheur :)


Sinon, tu as aussi la faq ruby sur developpez.com (http://ruby.developpez.com/faq/) ;)

LUCCI
15/05/2008, 15h21
Je ne sais pas ce qu'ils valent, mais sur le site developpez.com, il y a quelques critiques de livres sur Ruby (http://ruby.developpez.com/livres/), et parmi eux j'ai pu remarquer qu'il y avait quelques pavés (plus 550 pages ;) ).

Peut-être trouveras-tu ton bonheur :)
Sinon, tu as aussi la faq ruby sur developpez.com (http://ruby.developpez.com/faq/) ;)[/b]
Merci, mais je suis déjà passé par cet excellent site ;)
Le problème de ces pavés est qu'un volume relativement restreint est consacré à Ruby. Ils sont essentiellement destinés aux développeurs web utilisant le framework "Ruby on Rails".

Il reste donc (en français):
Ruby par l'exemple (o'reilly): Les exemples ne correspondent pas à ce dont j'ai besoin (et est très RoR)
Introduction à Ruby (o'reilly): bonne qualité mais comme son nom l'indique c'est une intro. Grâce à ce libre je suis opérationnel en Ruby. Malheureusement il n’est pas exhaustif (normal en 250 pages)
Ruby in a nutshell(o'reilly):Pratique mais ... sans commentaire.

Le langage Ruby, traduction d'un bouquin anglais devait sortir en Juillet. J'ai survolé la version anglaise, il me semble parfait pour moi (un presque pavé de 450 pages). Problème: la maison d'édition est o'reilly France :cray2:


Si vous avez 20 minutes pour voir à quoi ressemble Ruby: http://www.math.hokudai.ac.jp/~gotoken/ruby/ruby-uguide/

oh!rocks
15/05/2008, 15h25
Il y a Pratique de Ruby on Rails chez O'Reilly, ouvrage original en français de 580 pages.


à plus,

oh!rocks

LUCCI
15/05/2008, 15h29
Le problème de ces pavés est qu'un volume relativement restreint est consacré à Ruby. Ils sont essentiellement destinés aux développeurs web utilisant le framework "Ruby on Rails".[/b]
<div class='quotetop'>Citation </div>
Il y a Pratique de Ruby on Rails chez O'Reilly[/b]

Comme son nom l'indique c'est du "Ruby on Rails", pas du Ruby ;)

New2008
20/05/2008, 14h42
Je viens tout juste de recuperer Lazarus Freepascal, j'avais deja testé le language dans une ancienne version il y'a longtemps que j'ai vite classe dans les dinosaures en voie de disparition tant ca me paraissait primitif de l'utiliser, avec Lazarus je viens de me prendre une claque, voila quasiment un rad de developpement opensource et multiplateforme et permetttant meme la crosscompilation soit compiler un programme pour windows alors qu'on est sous linux par exemple, c'est meme compatible delphi dans certaines limites (il est possible de recuperer directement des sources delphi), mais ce qui est epatant c'est l'editeur de code et la possibilite de creer dessiner directement une interface graphique, j'avoue n'avoir pas utilise souvent le language pascal que je trouvais inconfortable mais apres avoir survole lazarus et la doc de freepascal, je vais m'y remettre, il y'a plusieurs exemples dans le package d'installation de lazarus, il est possible de creer toutes sortes de programmes base sur les bases de donnee (Mysql, Firebird, Sqlite, Dbase...), la 3d (openGL,GLScene...), Systeme (process, multitache...)...

J'ai teste la version windows mais j'ai egallement recupere une version rpm 64 bit pour linux, le language existe en 32 et 64 pratiquement pour toutes les plateformes, d'apres la doc, dans la plupart des cas, il suffit de recompiler un programme pour le faire s'executer sur une autre plateforme...

Cela dit pour ma premiere compilation d'un programme sous window, je me suis trouve avec un executable de 12 mo pour un code assez simple, il semblerait que le compilateur integre les donnees de deboguage au programme, heureusement, il existe un programme externe nomme strip qui permet de nettoyer l'executable qui a ete ramené a une taille plus raisonable de 1500 ko et a env 450 ko en utilisant upx...

Perso, cherchant un language multiplateforme, je n'ai pas accroché java (trop lourd, lent...), je crois que freepascal pourrait faire l'affaire, reste a voir la fiabilite du language a l'usage, sinon j'en ai repere un autre egallement opensource depuis quelques temps nomme Euphoria une sorte de basic tres evolue qui genere un code C compilable...

voila voila

os2
21/05/2008, 14h44
Je viens tout juste de recuperer Lazarus Freepascal, j'avais deja testé le language dans une ancienne version il y'a longtemps que j'ai vite classe dans les dinosaures en voie de disparition tant ca me paraissait primitif de l'utiliser, avec Lazarus je viens de me prendre une claque, voila quasiment un rad de developpement opensource et multiplateforme et permetttant meme la crosscompilation soit compiler un programme pour windows alors qu'on est sous linux par exemple, c'est meme compatible delphi dans certaines limites (il est possible de recuperer directement des sources delphi), mais ce qui est epatant c'est l'editeur de code et la possibilite de creer dessiner directement une interface graphique, j'avoue n'avoir pas utilise souvent le language pascal que je trouvais inconfortable mais apres avoir survole lazarus et la doc de freepascal, je vais m'y remettre, il y'a plusieurs exemples dans le package d'installation de lazarus, il est possible de creer toutes sortes de programmes base sur les bases de donnee (Mysql, Firebird, Sqlite, Dbase...), la 3d (openGL,GLScene...), Systeme (process, multitache...)...

J'ai teste la version windows mais j'ai egallement recupere une version rpm 64 bit pour linux, le language existe en 32 et 64 pratiquement pour toutes les plateformes, d'apres la doc, dans la plupart des cas, il suffit de recompiler un programme pour le faire s'executer sur une autre plateforme...

Cela dit pour ma premiere compilation d'un programme sous window, je me suis trouve avec un executable de 12 mo pour un code assez simple, il semblerait que le compilateur integre les donnees de deboguage au programme, heureusement, il existe un programme externe nomme strip qui permet de nettoyer l'executable qui a ete ramené a une taille plus raisonable de 1500 ko et a env 450 ko en utilisant upx...

Perso, cherchant un language multiplateforme, je n'ai pas accroché java (trop lourd, lent...), je crois que freepascal pourrait faire l'affaire, reste a voir la fiabilite du language a l'usage, sinon j'en ai repere un autre egallement opensource depuis quelques temps nomme Euphoria une sorte de basic tres evolue qui genere un code C compilable...

voila voila[/b]

c'est le genre d'outils comme delphi... tu programmes vite mais ça vaut ce que ça vaut.... c'est pas le genre d'outis qui préconise les bonnes pratiques

sur ça je retourne faire du java

New2008
22/05/2008, 14h43
c'est le genre d'outils comme delphi... tu programmes vite mais ça vaut ce que ça vaut.... c'est pas le genre d'outis qui préconise les bonnes pratiques

sur ça je retourne faire du java[/b]


Ca depend ce que veut dire bonne pratique, si c'est se prendre la tete a dessiner a la main une interface graphique en positionnant par essai tous les elements, ce n'est plus tres logique actuellement puisqu'il existe des outils qui permettent de faire ca facillement, bon c'est vrai que le code est moins optimisé mais avec les machines actuel ce genre d'argument ne tient plus... pour avoir il y'a quelques annees pratique le developpement de programmes de gestion, je peux dire sans me tromper qu'il est extremement pratique d'avoir un rad qui permet d'accelerer la programmation parce que le client ne va pas attendre longtemp une demande qu'il a faite sur un programme, en tant qu'amateur ca peut aller de tout faire soi meme mais en tant que pro il faut etre tres reactif si on veut contenter les clients...

Pour le reste lazarus est un front end a freepascal qui a d'ailleur ete developpe avec, rien n'empeche d'utiliser directement le language si on le souhaite...

Quant a delphi, c'est un excellent et tres performant language, dommage qu'il soit delaisse par son editeur...

Cela dit, on a tous bien compris je crois que tu aimes java, si c'est bien pour toi tant mieux, les gouts et les couleurs ca ne se discute pas...

voila voila

os2
23/05/2008, 16h05
Ca depend ce que veut dire bonne pratique, si c'est se prendre la tete a dessiner a la main une interface graphique en positionnant par essai tous les elements, ce n'est plus tres logique actuellement puisqu'il existe des outils qui permettent de faire ca facillement, bon c'est vrai que le code est moins optimisé mais avec les machines actuel ce genre d'argument ne tient plus... pour avoir il y'a quelques annees pratique le developpement de programmes de gestion, je peux dire sans me tromper qu'il est extremement pratique d'avoir un rad qui permet d'accelerer la programmation parce que le client ne va pas attendre longtemp une demande qu'il a faite sur un programme, en tant qu'amateur ca peut aller de tout faire soi meme mais en tant que pro il faut etre tres reactif si on veut contenter les clients...[/b]

concernant les bonnes pratiques il y en a une tonne...

les rad tu en as aussi en c++ et java...

si j'adopte le stype de programmation delphi en java, je crois que j'irais aussi vite à programmer de quoi
construire une gui avec netbeans maintenant ne prend pas plus de temps que le faire avec delphi...

pour quelques écran ça va, aussitôt que tu dois commencé à faire de l'héritage pour tes écrans tu perds grandement en productivités
la programmation de gestion se fait de plus en plus par le web, les mises à jour sont plus simple, mais faut bien batir son archictecture

la dernière fois que je l'ai utilisé il y avait pas de système de layout tel qu'on en retrouve en java et .net

c'est clair qu'avec des outils comme access, vb, delphi ça va vite, c'est fait directement pour ne pas avoir vraiment d'architecture... or dès que tu dois faire une refonte du système on commence à voir les limites

malgré tout j'ai utilisé delphi 4 jusqu'à la 7
les gros défaut pour moi c'est que c'étais chère, pas assez d'outils d'ingénierie intégré, version linux buggé à l'os


<div class='quotetop'>Citation (New2008 @ 22/05/2008 à 14:43) <{POST_SNAPBACK}> (index.php?act=findpost&pid=176675)</div>
Pour le reste lazarus est un front end a freepascal qui a d'ailleur ete developpe avec, rien n'empeche d'utiliser directement le language si on le souhaite...

Quant a delphi, c'est un excellent et tres performant language, dommage qu'il soit delaisse par son editeur...

Cela dit, on a tous bien compris je crois que tu aimes java, si c'est bien pour toi tant mieux, les gouts et les couleurs ca ne se discute pas...

voila voila[/b]

je pratique java actuellement, mais j'ai fait du C, Php, Vb, Delphi
un peu de c++

j'aime bien java car ta la liberté des outils, libraire, tout

en terme d'ingénierie, java contient d'excellent outils qui facilite le travail et permet d'avoir une meilleur vision de l'ensemble

et si demain un autre langage me propose plus, j'irais dessus... mais il y en a pas actuellement

j'ai touché à python et j'ai détesté

New2008
26/05/2008, 13h45
Bon, oui java c'est libre (depuis peu d'ailleurs), mais c'est lent quoique pour les ordinateurs actuels ca ne pose pas de probleme, cela dit perso je vois la difference entre un programme java et un autre ecrit dans un language compilé, c'est aussi tres lourd, ce n'est pas reellement compilable, c'est du pseudo code si j'ai bonne memoire, il y'a un programme qui permet de melanger le runtime java et le code pour fournir un exe (window), le code peut toujours etre decompile, aucune protection a ce niveau a moins d'utiliser d'autres outils pour ca, c'est un language object (idem pour freepascal si on le souhaite, au moins on a le choix), j'ai survole la doc en anglais et lu quelques unes en francais (penser en java, eclipse...), je me suis bien pris la tete habitué a de la programmation classique, j'ai quand meme fait l'effort de me procurer easyeclipse un rad complet pour le developpement desktop, je me suis retrouve avec un fouillis pas possible de nombreuses classes et une interface franchement limite incomprehensible, je n'accroche tout simplement pas a ce language....

J'ai installé Lazarus / Freepascal en quelques secondes, et compile des programmes exemples quasiment a l'instinct immediatement, l'interface est tres bien concu (en francais) et tres coherente, et les programmes testés marchent parfaitement...

Les avantages de Lazarus/Freepascal :

- Totallement libre (opensource)
- Compatible delphi dans certaines limites
- Compilateur 32 et 64 bits avec possibilite de crosscompilation
- Compatible Intel x86, Amd64/x86_64, PowerPC, PowerPC64, Sparc, ARM...
- Multiplateforme Linux, FreeBSD, Mac OS X/Darwin, Mac OS classic, DOS, Win32, Win64, WinCE, OS/2, Netware...
- Utilisation possible des bibliothèques Pascal avec .NET et Mono
- Interfaces GTK2, Carbon, QT, Windows CE, fpGui (composants ecrits en pascal object)
- Le language couvre tous les domaines...

Il existe beaucoups d'informations sur le net en francais, pratiquement tout les domaines sont couverts avec freepascal, il est meme possible d'exploiter les librairies provenant du language c (avec un convertisseur externe).

Prenez le temps de tester le rad, cela dit comme je l'ai dit dans un post precedent, c'est une question de gout et la ca ne se discute pas...

Si j'ai signale Lazarus / freepascal, c'est parce que je pense vraiment qu'il le merite au vu des specs...

C'est mon dernier post a ce sujet, je n'ai helas pas beaucoup de temps...

voila voila

Kiwi
26/05/2008, 14h47
python avec www.style-python.fr et c#.net avec www.msdn.com / www.developpement-csharp.net (en construction) :]

os2
26/05/2008, 19h47
Bon, oui java c'est libre (depuis peu d'ailleurs), mais c'est lent quoique pour les ordinateurs actuels ca ne pose pas de probleme, cela dit perso je vois la difference entre un programme java et un autre ecrit dans un language compilé, c'est aussi tres lourd, ce n'est pas reellement compilable, c'est du pseudo code si j'ai bonne memoire, il y'a un programme qui permet de melanger le runtime java et le code pour fournir un exe (window), le code peut toujours etre decompile, aucune protection a ce niveau a moins d'utiliser d'autres outils pour ca, c'est un language object (idem pour freepascal si on le souhaite, au moins on a le choix), j'ai survole la doc en anglais et lu quelques unes en francais (penser en java, eclipse...), je me suis bien pris la tete habitué a de la programmation classique, j'ai quand meme fait l'effort de me procurer easyeclipse un rad complet pour le developpement desktop, je me suis retrouve avec un fouillis pas possible de nombreuses classes et une interface franchement limite incomprehensible, je n'accroche tout simplement pas a ce language....[/b]

lent?
pourtant dans plusieurs domaine il est plus rapide que le c++

dans n'importe qu'elle langage tu peux avoir des programmes lent, c'est une question d'algo, architecture....
openoffice et firefox en sont de bon exemple, c'est codé en C++ est c'est lent et très lourd

java n'est pas interprété mais compilé à la volé, ce qui permet d'être optimisé pour le processeur de la machine et aussi de pouvoir être utilisé sur d'autre os, cpu sans recompilation

n'importe quel code peut être décompilé, c'est comme ça qu'on fait pour cracker un programme ...

même avec un décompilateur, tu es loin d'avoir le code source original, les variables sont tous changé...... pour rendre la tâche plus ardue, faut employer un obfuscateur

easyeclipse n'est en aucun cas un rad, c'est seulement un packaging qui eclipse et divers plugin
un rad en java c'est plutôt netbeans qui inclus un debuger, un GUI builder, un profiler.... en 2, 3 clique l'environnement peut supporté php, C++ et les principaux framework tel que struts, seams, gwt, spring

java n'est qu'un langage, si ta des problèmes avec les vm, tu peux compiler ton code java avec gcj

faudrait te renseigner un peut, car ton discourt tenait peut-être la route en 1999..... mais on est en 2008 maintenant

Silfax
26/05/2008, 20h50
Salut,

En fait le choix d'un langage de programmation dépend de ce que tu veux faire avec. Les langages généralistes comme Java, C, C++ permettent de réaliser à peu près n'importe quel type de programme mais ça demande un investissement assez important (syntaxe, paradigme objet, mécanisme de compilation, bytecode, etc ...). Pour le developpement de drivers et plus généralement pour un accès direct au matériel, Java n'est clairement pas le langage à utiliser (à cause de sa JVM essentiellement qui empêche l'accès direct au matériel). Par contre pour des applications de gestion, de calculs ou d'entreprise, Java est un choix parmi d'autres. De plus juste pour préciser, il existe 3 plateformes "Java" : le J2SDK, le J2ME et le J2EE respectivement pour le développement d'applications monopostes, pour les mobiles et pour les applications d'entreprises et serveur ...Le C++ est un très bon langage mais il me semble un peu trop ardu pour apprendre la programmation sans aide externe (syntaxe compliquée, mixte entre procédural et objet) ...
Il existe des milliers de langages de programmation donc pour ceux qui veulent apprendre, il y a le choix !! :-)

@+

Sfx

os2
26/05/2008, 21h20
Salut,

En fait le choix d'un langage de programmation dépend de ce que tu veux faire avec. Les langages généralistes comme Java, C, C++ permettent de réaliser à peu près n'importe quel type de programme mais ça demande un investissement assez important (syntaxe, paradigme objet, mécanisme de compilation, bytecode, etc ...). Pour le developpement de drivers et plus généralement pour un accès direct au matériel, Java n'est clairement pas le langage à utiliser (à cause de sa JVM essentiellement qui empêche l'accès direct au matériel). Par contre pour des applications de gestion, de calculs ou d'entreprise, Java est un choix parmi d'autres. De plus juste pour préciser, il existe 3 plateformes "Java" : le J2SDK, le J2ME et le J2EE respectivement pour le développement d'applications monopostes, pour les mobiles et pour les applications d'entreprises et serveur ...Le C++ est un très bon langage mais il me semble un peu trop ardu pour apprendre la programmation sans aide externe (syntaxe compliquée, mixte entre procédural et objet) ...
Il existe des milliers de langages de programmation donc pour ceux qui veulent apprendre, il y a le choix !! :-)

@+

Sfx[/b]

il y a aussi une jvm que sun fait pour les systèmes embarqué..... elle est disponible pour plusieurs type d'architecture

il y a une panoplie de langage avec chacun ses qualités et défaut... mais seul une minorité est vraiment utilisé sur le marché.... et quand vient le temps de mangé...... mieux vaut en connaître quelqu'un qui sont les plus populaire....

de toute façon une bonne partie des langages se ressembles... viennent de la même famille...

java, c, c++, pascal, delphi, vb.... c'est dans la même famille.....on peut passé d'un à l'autre sans devoir passé 25 ans à étudier..... alors que si tu prends eifel... tu tombes dans un autre type de langage totalement différent tout comme lisp

Silfax
26/05/2008, 21h54
Si je lis bien, l'auteur initial du post ne cherchait pas un langage utilisé sur le marché mais un langage de programmation pour apprendre à développer sur Linux et plus particluièrement sur KDE ... Et d'ailleurs "sur le marché", je ne suis pas sur que Java soit le plus utilisé (je ne parle même pas d'Eiffel ...) étant moi-même sur le marché ....

@+

Sfx

os2
26/05/2008, 22h14
Si je lis bien, l'auteur initial du post ne cherchait pas un langage utilisé sur le marché mais un langage de programmation pour apprendre à développer sur Linux et plus particluièrement sur KDE ... Et d'ailleurs "sur le marché", je ne suis pas sur que Java soit le plus utilisé (je ne parle même pas d'Eiffel ...) étant moi-même sur le marché ....

@+

Sfx[/b]

si on se fit sur le nombre d'emploi en demande, java est #1

sur la popularité?
http://www.tiobe.com/index.php/content/pap...tpci/index.html (http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)

il me semble d'avoir lue une news disant que c'est java sur sourceforge qui avait le plus de projet....

ne pas oublier que java est maintenant utilisé un peut partout...... du portable au lecteur blue ray.... du système embarqué au cluster.... de la caisse enregistreuse au système bancaire...

java est plus rapide pour certaine opération que d'autre langage et vice versa.... ce qui fait sa force c'est la facilité à programmer..... c'est ça qui a contribué à son succès rapidement à ses débuts......

avec la puissance des machines actuelle, ce n'est pas nécessairement la performance brute qui va faire la différence..... mais le time to market

oh!rocks
26/05/2008, 22h29
'tain, les gars... j'espère que vos programmes au moins vous les relisez...
là, les posts, c'est limite compréhensible...

et me dites pas que c'est pour être plus rapide ! :lol:


à plus,

oh!rocks

Silfax
27/05/2008, 09h45
De toute façon, c'est un débat sans fin :-) ... [c'est compréhensible là ? B) ]

@+

Sfx

salv-ice
27/05/2008, 09h47
Salut à tous !

Je crois qu'une petite intervention de ma part s'impose vu que ce post part sur des sujets trollesques qui n'étaient pas le propos initial.

J'ai créé ce post simplement pour savoir quels étaient les langages que je pouvais utiliser pour développer sous linux. Il n'a jamais été question de savoir quel langage est le meilleur ou le plus performant mais simplement d'avoir une idée des langages qui sont le plus souvent utilisés sous linux...

Et puis pour mettre fin au débat stérile de "C++ est mieux que java" ou "les RAD c'est pour les mauviettes", je dirais que chacun est libre d'utiliser les outils qu'il souhaite pour développer, le langage en lui même étant un moyen et non un fin.

B) B) B)

Kiwi
27/05/2008, 11h36
python, perl, shell script, bash, c, c++, java, ruby

Après avec mono le c# te devient accessible grâce aux gtk# et #glade.

Heero_Yuy
27/05/2008, 11h36
Et puis pour mettre fin au débat stérile de "C++ est mieux que java" ou "les RAD c'est pour les mauviettes", je dirais que chacun est libre d'utiliser les outils qu'il souhaite pour développer, le langage en lui même étant un moyen et non un fin.

B) B) B)[/b]


:wise: :wise: :wise:

Tout comme avec GNU/Linux où chacun a ses préférences envers telle ou telle distrib, il en est de même avec les langages de programmation.

Kiwi
27/05/2008, 11h40
:wise: :wise: :wise:

Tout comme avec GNU/Linux où chacun a ses préférences envers telle ou telle distrib, il en est de même avec les langages de programmation.[/b]


Réf au dial "direct" en bas de l'index du forum... C'est exactement le même principe, faut pas être fixé sur vos idées...

New2008
27/05/2008, 13h07
Amusant les differentes reactions...

Initiallement, la question etait quel language pour programmer sous linux, j'en ai trouvé un qui me parait faire l'affaire, je l'ai donc signalé point barre, je n'ai pas dit que c'etait le meilleur ni que c'etait la solution ultime, quelle que soit le language utilisé, c'est la competence du programmeur le plus important, si c'est une brele il le restera qu'elle que soit le systeme utilisé, je dois avouer que les eternels debats du genre c'est moi qui ait raison, ca me fait bien rigoler, pour moi le dev etait un metier, le language qui me convient c'est celui qui me permettait de gagner ma vie rapidement tout en optimisant mon temps au maximum...
Une anecdote, j'avais participe a un debat dans le meme genre il y'a longtemps sur un forum avec plusieurs personnes dont certains avaient des arguments alors que d'autres n'en avait pas du tout et se contentait de participer sans reelle fond ni experience dans le domaine du travail juste pour se faire mousser, l'un deux etait plus virulent que les autres et pretendait a tout va etre celui qui a raison parce qu'il utilise un language machine, manque de pot pour lui, il est tombe sur un veritable expert en assembleur qui lui a posé des questions et l'a quasiment detruit ridiculise en direct et pour finir il s'est averé qu'on etaient en train de debattre avec un gamin de 14 ans vous imaginez, c'est juste pour dire que sur un forum tout est relatif, on ne sait pas forcement a qui on a affaire....

C'est pour ca qu'il vaut mieux clore le debat avant de se retrouver dans une discussion sterile et sans fin...

voila voila

Silfax
27/05/2008, 13h44
:clap: :wise:
<div class='quotetop'>Citation </div>
De toute façon, c'est un débat sans fin :-)[/b]

LUCCI
21/06/2008, 13h27
:clap: :wise:[/b]
Au contraire puisque Java c'est nul
:lol:

salv-ice
24/06/2008, 15h07
arffffff... Très beau déterrage Trollesque ! :lol:

os2
24/06/2008, 15h45
java 100% opensource très bientôt

salv-ice
24/06/2008, 16h41
Oui, en effet et ça pourrait faire en sorte qu'il soit plus utilisé pour développer des logiciels libres...

Silfax
24/06/2008, 17h03
Oui, en effet et ça pourrait faire en sorte qu'il soit plus utilisé pour développer des logiciels libres...[/b]

Et pourquoi ?

os2
24/06/2008, 18h42
Oui, en effet et ça pourrait faire en sorte qu'il soit plus utilisé pour développer des logiciels libres...[/b]


j'avais lu que c'est le langage ayant le plus de projet chez sourceforge...

LUCCI
30/06/2008, 19h58
j'avais lu que c'est le langage ayant le plus de projet chez sourceforge...[/b]
Oui, mais essentiellement des bibliothèques Java :D :lol: :D