# \[C\]fonction avec nombre d'arguments variable

**URL:** <https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 11:07 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009 "2016-02-20T23:07:51Z")\
**Posts on this page:** 17\
**Page:** 3

<div class="post-metadata">

**Author:** ![dmon](https://www.debian-fr.org/user_avatar/www.debian-fr.org/dmon/32/5587_2.png) [@dmon](https://www.debian-fr.org/u/dmon)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/41 "2016-02-20T23:10:09Z")

</div>

[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.

---

<div class="post-metadata">

**Author:** ![Dixippe](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/5f8ce5/32.png) [@Dixippe](https://www.debian-fr.org/u/Dixippe)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/42 "2016-02-20T23:10:11Z")

</div>

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](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)

---

<div class="post-metadata">

**Author:** ![Cluxter](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/c/13edae/32.png) [@Cluxter](https://www.debian-fr.org/u/Cluxter)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/43 "2016-02-20T23:10:12Z")

</div>

Le C++ est parfait pour programmer des applications lourdes comme des jeux par exemple, mais aussi pour des systèmes comme… Linux 😉 (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 ?).

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/44 "2016-02-20T23:10:12Z")

</div>

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… 🙂 )

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/45 "2016-02-20T23:10:13Z")

</div>

[quote=«&nbsp;Cluxter&nbsp;»]Le C++ est parfait pour programmer des applications lourdes comme des jeux par exemple, mais aussi pour des systèmes comme… Linux 😉 (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.

> [@Cluxter](#):
>
> D’ailleurs il paraît (je ne sais plus pourquoi) que le C++ n’est pas un «&nbsp;vrai&nbsp;» langage objet, contrairement au Java (si quelqu’un peut m’expliquer pourquoi en détails ?).

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 ?

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/46 "2016-02-20T23:10:13Z")

</div>

[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… 🙂 )[/quote]  
Regarde les sites de prof universitaires (surtout d’IUT).

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/47 "2016-02-20T23:10:14Z")

</div>

[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… 🙂 )[/quote]  
Regarde les sites de prof universitaires (surtout d’IUT).[/quote]  
Pas bête, je vais essayer de trouver ça 😉

---

<div class="post-metadata">

**Author:** ![dmon](https://www.debian-fr.org/user_avatar/www.debian-fr.org/dmon/32/5587_2.png) [@dmon](https://www.debian-fr.org/u/dmon)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/48 "2016-02-20T23:10:25Z")

</div>

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

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

---

<div class="post-metadata">

**Author:** ![Cluxter](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/c/13edae/32.png) [@Cluxter](https://www.debian-fr.org/u/Cluxter)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/49 "2016-02-20T23:10:27Z")

</div>

> [@](#):
>
> 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.

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).

> [@](#):
>
> Ça c’est des préjugés.

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 ?

> [@](#):
>
> Linux est certainement écrit en C parce que c’était ce langage qui dominait à l’époque et que UNIX est écrit en C.

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.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/50 "2016-02-20T23:10:27Z")

</div>

[quote=«&nbsp;Cluxter&nbsp;»][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.

> [@Cluxter](#):
>
> [quote]Linux est certainement écrit en C parce que c’était ce langage qui dominait à l’époque et que UNIX est écrit en C.

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é).

---

<div class="post-metadata">

**Author:** ![Cluxter](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/c/13edae/32.png) [@Cluxter](https://www.debian-fr.org/u/Cluxter)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/51 "2016-02-20T23:10:28Z")

</div>

> [@](#):
>
> 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.

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

> [@](#):
>
> C’est rigolo. Tu pourras trouver des millions de personnes qui vont te dire que c’est exactement les défauts du C.

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.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/52 "2016-02-20T23:10:28Z")

</div>

> [@Cluxter](#):
>
> [quote]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.

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

---

<div class="post-metadata">

**Author:** ![Dixippe](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/5f8ce5/32.png) [@Dixippe](https://www.debian-fr.org/u/Dixippe)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/53 "2016-02-20T23:10:34Z")

</div>

Oui,

> > > «&nbsp;Objet Python est&nbsp;».upper()  
> > > ‹&nbsp;OBJET PYTHON EST&nbsp;›

![:023](https://www.debian-fr.org/uploads/default/original/1X/3c587556c0cc11389317c03a60788d77ceebd307.gif "OK")

---

<div class="post-metadata">

**Author:** ![Cluxter](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/c/13edae/32.png) [@Cluxter](https://www.debian-fr.org/u/Cluxter)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/54 "2016-02-20T23:10:34Z")

</div>

[quote=«&nbsp;Dixippe&nbsp;»]Oui,

> > > «&nbsp;Objet Python est&nbsp;».upper()  
> > > ‹&nbsp;OBJET PYTHON EST&nbsp;›

![:023](https://www.debian-fr.org/uploads/default/original/1X/3c587556c0cc11389317c03a60788d77ceebd307.gif "OK")[/quote]  
Parfait, moi qui voulait l’apprendre comme langage de script, je sens qu’il va me plaire !

---

<div class="post-metadata">

**Author:** ![Dixippe](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/5f8ce5/32.png) [@Dixippe](https://www.debian-fr.org/u/Dixippe)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/55 "2016-02-20T23:10:35Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Cluxter](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/c/13edae/32.png) [@Cluxter](https://www.debian-fr.org/u/Cluxter)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/56 "2016-02-20T23:10:35Z")

</div>

[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.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009/57 "2016-02-20T23:10:36Z")

</div>

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.

[Page précédente](https://www.debian-fr.org/t/c-fonction-avec-nombre-darguments-variable/28009.md?page=2)
