Catégories d'outils de développement

gilly -  
 sebsauvage -
Demoiselle novice en détresse! La compatibilité des langages de programmation, outils de développement et systèmes d'exploitation me laissent perplexe. Comment faire pour savoir, par exemple, que l'on peut programmer en C++ sur toute plateforme? J'aimerais un tableau à cet effet pour tous les langages courrants. Qu'est-ce que vous pourrez suggérer?
A voir également:

4 réponses

sebsauvage
 
C'est pas gagné !

Il y a plusieurs facteurs qui gênent la programmation multiplateformes:

a) le fait que les compilateurs pour un même langage soient différents (Rien que pour le C++ : gcc, bcpp, Microsoft Visual C++, djgpp...).

b) les systèmes d'exploitation différents : les entrées-sorties se gèrement totalement différemment d'un OS à l'autres (ex: clavier, souris, fenêtres, accès aux fichier, réseau.). Il n'existe aucune librairie qui soit assez générale pour passer d'un OS à l'autre.

c) les microprocesseurs sont également différents: un *même* programme C++, avec un *même* compilateur, sous le *même* système d'exploitation pourra se comporter différemment d'un processeur à l'autre (essayez simplement un entier (int) en C/C++ sur des processeurs 16/32/64 bits littleendian ou bigendian, histoire de rigoler !)

Donc je résume: c'est le bor-del.

On peut dire que Java aurait été le candidat idéal.
Il aurait preque résolu les 3 points:

a) Un seul compilateur (distribué gratuitement par Sun),
b) Une API unifiée (la même sur tous les systèmes),
c) une machine virtuelle Java (donc le même microprocesseurs virtuel partout)

Mais ça a foiré:

a) d'autres ont fait des compilateurs, souvent pas totalement compatibles (Microsoft, Symantec, IBM...)
b) Sun a été assez con pour modifier ses API en cours de route.
c) Certains (Microsoft) se sont amusé à faire des machines virtuelles par totalement compatibles.

Résultat: un programme Java ne fonctionne pratiquement jamais directement d'une plateforme à une autre.

Donc, raté pour Java.

Le C++, oublie.
Il existe plein de compilateurs différents ; aucun n'implémente totalement les spécifications ANSI et en plus les librairies sont spécifiques à chaque compilateur (Microsoft, Borland...) et à chaque OS (et ce n'est pas wxWindows qui va résoudre tous les problèmes).

Pascal ?
Pas trop mal, mais reste le problème des librairies (comme pour le C/C++).
Et les compilateurs sont moins répandus que C/C++/Java.

Bref, cet immense bordel (et d'autres raisons) m'ont fait passer à Python. Là, c'est le bonheur.
(même si question interfaces graphique on est dépendant de tcl/tk ou wxWindows ; pour le reste, c'est du pur multiplateforme, y compris les accès fichier/répertoire, réseau , bases de données).

Quand je dis multiplateforme, je dis que quand je développe proprement en Python, mes programmes pas d'un système à l'autre sans la *moindre* modification (je n'ai jamais réussi à faire ça avec Java).

Je serais content d'entendre d'autres avis :-)
0
sebsauvage
 
Je reformule mon dernier paragraphe:

"Quand je dis multiplateforme, je dis que quand je développe proprement en Python, mes programmes passent d'un système à l'autre sans la *moindre* modification (je n'ai jamais réussi à faire ça avec Java)."
0
gilly
 
Bonsoir. Je suis d'accord pour le bordel! J'aimerais savoir, avec les langages dont tu parlais, quels OS tu connais le mieux. Quel librairies trouve-tu les plus performantes pour ces combinaisons? Le Python est intéressant. A quoi il ressemble? Quel parcours est le meilleur pour le maîtriser rapidement?
0
sebsauvage
 
>quels OS tu connais le mieux.

J'ai pratiqué Unix (HP-UX, Linux et autres), et Windows.
ça fait un bon bout de temps que je n'ai plus touché à
Unix.

>Quel librairies trouve-tu les plus performantes pour ces
>combinaisons?

Pour les interfaces graphiques, wxWindows est relativement
puissant et bien fourni, et il existe sur un nombre
de plateforme relativement intéressant.
Mais il est quand même un peu lourd.

Pour le reste, pas terrible.
Par exemple pour les accès fichiers, je n'en ai trouvé
aucune qui soit multiplateforme (Windows/Unix/Mac), à part
celle de Python.
Pour le reste, c'est très variable (réseau...).

La mode est de fournir des API unifiées avec les compilateurs
eux-même (Java, mais aussi Python).
Celle de Python me semble plus uniforme d'un système à l'autre.

>Le Python est intéressant. A quoi il ressemble?

A la base, c'est un langage de script (comme perl).
Ce qui me plait dans Python, c'est que:
- c'est un langage propre, mais pas au point d'être chiant comme Java. On peut faire rapide et propre quand même.
- il est très lisible
- il est très facile à apprendre.
- tous les interpréteur Python sont fournis avec une librairie *très* fournie et conçue dès le départ multiplateforme (par exemple, pour se balader dans les répertoires, on a pas besoin de se soucier du / pour Unix, \ pour Windows et : pour Macintosh : Python s'occupe de ça. Idem pour le réseau, les bases de données, etc.)
- Python est opensource, ce qui facilite son portage sur de nouvelles plateformes.

Python existe pour MS-Dos, Windows, Macintosh, Linux, Solaris, OS/2, Amiga, AS/400, BeOS, PalmOS, VMS, Psion, RISC OS, PlayStation, Zaurus, Windows CE, PocketPC...

Seul point gênant: Python ne fourni pas d'API graphique en standard. Mais on peut faire le choix d'utiliser tcl/tk, wxWindows, Windows MFC, QTE, Gnome, OpenGL, X et plein d'autres.
Les plus répandues étant tcl/tk (très commun sous les systèmes Unix) et wxWindows (plus puissant que tcl/tk, et assez répandu).

Un des avantages de Python également, c'est sa facilité à s'interfacer avec des langages existants (C, C++, Java... on peut même créer des objets COM en Python).

Bon bien sûr certains vont dire que je prêche pour mon église, mais quand je cherche un langage à la fois efficace, lisible, multiplateformes et non fermé, je ne trouve rien d'autre que Python.
0
sebsauvage
 
Et pour ajouter de l'eau au moulin, petit article qui parle très bien de Python sur le Linux Journal:

http://www.linux-mag.com/2002-04/python_01.html
0