[C]fonction avec nombre d'arguments variable

[quote=“MisterFreez”][quote=“Cluxter”]Jusque là tout va très bien. Ensuite tu veut faire évoluer le logiciel :
[ul]
[li]avec de la chance tu peut régénére le modèle à partir des sources[/li]
[li]tu modifie ton modèle[/li]
[li]et ensuite ?..[/li][/ul]

Ensuite soit tu recode tout le logiciel après avoir régénérés des classes dépourvues de code, soit tu as un système pour réappliquer tes modifications à ton code et là c’est super lourd pour refaire coïncider ton code au nouveaux prototype.[/quote][/quote]À ce stade il faut peut être avoir Rational Rose. Faut pas oublier que l’histoire de la Booch method, d’OMT et UML est une histoire de sous.

Bonjour,

Pour ma part je suis aussi autodidacte et pour passer du langage procédurale (le C) à l’objet j’ai essayé l’objective C et le C++.
Je trouve l’objective C super mais trop collé à GNUStep ou Cocoa sous MAC (pas grand chose en lib sous linux) et le C++ trop bordélique mais peut-être n’ai je pas su l’exploiter proprement… aujourd’hui j’en suis à explorer Python .

Cluxter, j’aimerais savoir pourquoi tu as choisit le C++ pour faire de l’objet ?

(Pour sa fréquence d’utilisation ?)
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Le C++ est parfait pour programmer des applications lourdes comme des jeux par exemple, mais aussi pour des systèmes comme… Linux :wink: (Linux est écrit en C, donc ça permet de conserver une certaine homogénéité dans la syntaxe, je préfère).

Cependant, je pense d’abord appliquer la théorie avec Python : plus simple, pas de compilation, et on très utile (pour créer des plugins pour pas mal de logiciels notamment). Le C++ c’est vraiment quand on veut pousser la chose à fond.

Quant au Java, c’est très pratique pour programmer des applications professionnelles qui doivent tourner sur plein de systèmes différents et qui ne requièrent pas des performances importantes, donc j’aimerais l’apprendre également. D’ailleurs il paraît (je ne sais plus pourquoi) que le C++ n’est pas un “vrai” langage objet, contrairement au Java (si quelqu’un peut m’expliquer pourquoi en détails ?).

Moi, ce que j’en dit, c’est que à l’éxécution, C++ est bien plus rapide que Java, et ça, ça décide avant tout de mon choix.
Je ne sais pas si tu es pareil, mais apprendre en autodidacte, surtout le C++, on se retrouve vite perdu, il y a tellement de possibilités! Ce qui est sûr, c’est que c’est un langage très riche, mais je manque d’exercices d’applications pour retenir au fur et à mesure (si quelqu’un a un lien permettant de s’exercer, à tout hasard… :slight_smile: )

[quote=“Cluxter”]Le C++ est parfait pour programmer des applications lourdes comme des jeux par exemple, mais aussi pour des systèmes comme… Linux :wink: (Linux est écrit en C, donc ça permet de conserver une certaine homogénéité dans la syntaxe, je préfère).

Cependant, je pense d’abord appliquer la théorie avec Python : plus simple, pas de compilation, et on très utile (pour créer des plugins pour pas mal de logiciels notamment). Le C++ c’est vraiment quand on veut pousser la chose à fond.

Quant au Java, c’est très pratique pour programmer des applications professionnelles qui doivent tourner sur plein de systèmes différents et qui ne requièrent pas des performances importantes, donc j’aimerais l’apprendre également.[/quote]
Ça c’est des préjugés.

Voici un helloworld C++ :

[code]#include

int main (){
using namspace std;

cout << "Bonjour monde !" << endl;

return 0;

}[/code]

Et voici maintenant un en java:

public class Bonjour { public static void main(String[] args) { System.out.println("Bonjour Monde !"); } }

Tu comprends la différence ?

[quote=“thuban”]Moi, ce que j’en dit, c’est que à l’éxécution, C++ est bien plus rapide que Java, et ça, ça décide avant tout de mon choix.
Je ne sais pas si tu es pareil, mais apprendre en autodidacte, surtout le C++, on se retrouve vite perdu, il y a tellement de possibilités! Ce qui est sûr, c’est que c’est un langage très riche, mais je manque d’exercices d’applications pour retenir au fur et à mesure (si quelqu’un a un lien permettant de s’exercer, à tout hasard… :slight_smile: )[/quote]
Regarde les sites de prof universitaires (surtout d’IUT).

[quote=“MisterFreez”][quote=“thuban”]Moi, ce que j’en dit, c’est que à l’éxécution, C++ est bien plus rapide que Java, et ça, ça décide avant tout de mon choix.
Je ne sais pas si tu es pareil, mais apprendre en autodidacte, surtout le C++, on se retrouve vite perdu, il y a tellement de possibilités! Ce qui est sûr, c’est que c’est un langage très riche, mais je manque d’exercices d’applications pour retenir au fur et à mesure (si quelqu’un a un lien permettant de s’exercer, à tout hasard… :slight_smile: )[/quote]
Regarde les sites de prof universitaires (surtout d’IUT).[/quote]
Pas bête, je vais essayer de trouver ça :wink:

Linux est certainement écrit en C parce que c’était ce langage qui dominait à l’époque et que UNIX est écrit en C.

Tout dépend de ce qu’on souhaite faire en fait. Le C++ étant totalement compilé il est forcément plus rapide que le Java, mais le Java est bien plus portable. Par exemple programmer un logiciel de P2P en C++ est à mon sens un mauvais choix car on n’a pas besoin d’avoir un truc qui aille vite, mais qui puisse tourner sur un maximum de systèmes différents ; le Java est parfait pour ça (et il reste cependant très performant au regard de la portabilité qu’il permet).

Surement, mais je pense que chaque situation peut trouver un langage qui sera plus adapté qu’un autre. Je me vois mal écrire un jeu comme Crysis en Python…

[quote]Voici un helloworld C++
Et voici maintenant un en java
Tu comprends la différence ?[/quote]
D’après ce que je vois, le Java utilise l’approche objet pour la moindre chose tandis que le C++ semble conserver une certaine syntaxe procédurale pour certaines opérations, ce que je trouve dommage. Quelle est l’explication à cela ? Le C faisait déjà très bien du procédural, ils n’auraient pas pu faire un langage totalement objet ?

Je pense que si Linux était à réécrire, on l’écrirait toujours en C à l’heure actuelle, éventuellement en C++, car le C est très proche de l’assembleur et convient donc très bien pour coder un OS. Je sais que certains systèmes militaires embarqués comme des missiles sont codés en C car il permet un développement rapide, compréhensible, facilement portable et maintenable, et peut être optimisé à l’extrême par un bon compilateur. En somme les avantages de l’assembleur sans les inconvénients.

[quote=“Cluxter”][quote]Voici un helloworld C++
Et voici maintenant un en java
Tu comprends la différence ?[/quote]
D’après ce que je vois, le Java utilise l’approche objet pour la moindre chose tandis que le C++ semble conserver une certaine syntaxe procédurale pour certaines opérations, ce que je trouve dommage. Quelle est l’explication à cela ? Le C faisait déjà très bien du procédural, ils n’auraient pas pu faire un langage totalement objet ?[/quote]
Pour être compatible avec le C il faut pouvoir utiliser une fonction hors de tout objet.
Le Java n’est pas non plus totalement objet. En effet il possède des types (int, float,…) qui ne sont pas des objets, les méthodes ne sont pas des objets. Les langages « vraiment » objets TOUT est objet.

Je pense que si Linux était à réécrire, on l’écrirait toujours en C à l’heure actuelle, éventuellement en C++, car le C est très proche de l’assembleur et convient donc très bien pour coder un OS. Je sais que certains systèmes militaires embarqués comme des missiles sont codés en C car il permet un développement rapide, compréhensible, facilement portable et maintenable, et peut être optimisé à l’extrême par un bon compilateur. En somme les avantages de l’assembleur sans les inconvénients.[/quote]
C’est rigolo. Tu pourras trouver des millions de personnes qui vont te dire que c’est exactement les défauts du C.

Le C est massivement utilisé de partout. Quand un constructeur de matériel sort un produit les codes d’exemple sont en C, le C est un passage obligé pour tout développeurs, la simplicité du C le rend facile à porter sur un nouveau materiel. C’est vieux et très bien maitrisé autant sur les technique de développement que par le compilateur par exemple. On garde une syntaxe identique entre l’espace utilisateur et les appels systèmes. Voila le genre d’argument qui font que le C est toujours là dans la plupart des noyaux (bien que pour j’aimerais voir un noyau en erlang (qui permet de mettre à jour le noyau sans l’arrêter et qui est massivement multithreadé).

On en apprend tous les jours :slight_smile:
Quels langages sont totalement objets ?

En fait je me plaçais dans le cas où l’on souhaite développer un OS ou un système assez spécifique, donc les avantages ne sont pas les mêmes que dans d’autres cas c’est sûr.

On en apprend tous les jours :slight_smile:
Quels langages sont totalement objets ?[/quote]
smalltalk, python et ruby par exemple (je peux me tromper pour les deux dernier mais je crois pas).

Oui,

“Objet Python est”.upper()
‘OBJET PYTHON EST’

:023

[quote=“Dixippe”]Oui,

“Objet Python est”.upper()
‘OBJET PYTHON EST’

:023[/quote]
Parfait, moi qui voulait l’apprendre comme langage de script, je sens qu’il va me plaire !

Il peut être pseudo-compilé aussi, l’IDE Geany génère ça < python3.1 -c “import py_compile; py_compile.compile(’%f’)” >
à l’exécution.

[quote=“Dixippe”]Il peut être pseudo-compilé aussi, l’IDE Geany génère ça < python3.1 -c “import py_compile; py_compile.compile(’%f’)” >
à l’exécution.[/quote]
Yes j’avais vu ça, très pratique pour porter des applications sur des systèmes similaires sans avoir à réinstaller à chaque fois le moteur d’interprétation.

T’embale pas trop ça compile en bytecode python, pas en code natif.

Python c’est aussi très laxiste comme langage pas de déclaration par exemple.