OVH Cloud OVH Cloud

Erreur du preprocesseur

113 réponses
Avatar
candide
Bonjour,

Dans le bouquin de Ph. Drix ("Le langage C ANSI"), je trouve l'exemple
suivant pour illustrer les "substitutions réitérées" par le préprocesseur :


------------- 8< -------------------------------
#define w 0,1
#define f(x,y) (x)+(y)

f(w) /* est remplacé par (0)+(1) */
------------- >8 -------------------------------


Or, chez moi sur gcc, ça ne marche pas :

------------- 8< -------------------------------
candide@candide-desktop:~$ gcc -E test.c

test.c:4:4: erreur: macro « f » requiert 2 arguments, mais seulement 1
ont été passés
f
------------- >8 -------------------------------

Pourtant il me semble que l'exemple est valide, non ?

10 réponses

Avatar
Francois
Par ailleurs C n'est pas un langage à fort typage


Pardon pour cette question, mais j'aimerais bien savoir ce que signifie
"typage fort". Mes recherches sur internet me donnent des informations
pas très claires.


Aujourd'hui ou, qu'on le veuille ou non, l'approche objet prédomine, le
meilleur langage pour apprendre la programmation est Java (du moins un
sous-ensemble).


J'aimerais bien avoir votre avis sur le Python. Il n'est pas très
souvent cité (il me semble) et pourtant j'ai l'impression que ce langage
à bonne réputation, non ?


François

Avatar
Francois
Une définition du typage fort : [couic]


Merci beaucoup pour votre réponse.


Quant à Python, personnellement, c'est un langage que je n'aime pas du
tout, en particulier parce que les blocs d'instructions sont définis par
l'indentation ce qui mélange la forme et le fond...
Connaissant plus de 50 langages de programmation, je dois dire que
Python est vraiment dans le bas de ma liste.


Tiens, c'est marrent ça. Moi, j'aime bien le coup de l'indentation, ça
évite d'avoir à écrire des accolades ou parenthèses. Est-ce le seul
reproche que vous lui faites ?

Merci de m'avoir donné votre avis éclairé.


François

Avatar
wykaaa
Le Sat, 29 Mar 2008 23:12:12 -0000, Francois a
écrit:

Par ailleurs C n'est pas un langage à fort typage


Pardon pour cette question, mais j'aimerais bien savoir ce que signifie
"typage fort". Mes recherches sur internet me donnent des informations
pas très claires.


Aujourd'hui ou, qu'on le veuille ou non, l'approche objet prédomine, le
meilleur langage pour apprendre la programmation est Java (du moins un
sous-ensemble).


J'aimerais bien avoir votre avis sur le Python. Il n'est pas très
souvent cité (il me semble) et pourtant j'ai l'impression que ce langage
à bonne réputation, non ?


François


Une définition du typage fort :
Un langage est fortement typé si toute incohérence de type provoque une
erreur.
On ne dit pas quand l'erreur est provoquée (à la compilation ou à
l'exécution).

Pour cette raison, il faut compléter cette définition par celle du typage
statique :
Un langage a un typage statique si le type de toutes les variables et
expressions est fixé à la compilation.
Dans le cas contraire on parle de typage dynamique.

Dans la définition du typage fort de Wikipedia français, c'est la
définition 3 qui est la plus adéquate, à condition de la compléter par la
définition du typage statique (c'est souvent cela qui crée la confusion
sur le typage fort). En tout état de cause, il est aberrant de considérer
que le langage C est fortement typé car si c'était le cas, le langage C
supporterait la surcharge des fonctions (qui ne peut exister que dans un
langage à typage fort).

Pour pousser plus loin la discussion sur le typage, on peut parler des
conversions implicites. ADA, par exemple, n'autorise aucune conversion
implicite (même des entiers vers les flottants).

Quant à Python, personnellement, c'est un langage que je n'aime pas du
tout, en particulier parce que les blocs d'instructions sont définis par
l'indentation ce qui mélange la forme et le fond...
Connaissant plus de 50 langages de programmation, je dois dire que Python
est vraiment dans le bas de ma liste.


Avatar
JKB
Le 30-03-2008, à propos de
Re: Erreur du preprocesseur,
Francois écrivait dans fr.comp.lang.c :
Une définition du typage fort : [couic]


Merci beaucoup pour votre réponse.


Quant à Python, personnellement, c'est un langage que je n'aime pas du
tout, en particulier parce que les blocs d'instructions sont définis par
l'indentation ce qui mélange la forme et le fond...
Connaissant plus de 50 langages de programmation, je dois dire que
Python est vraiment dans le bas de ma liste.


Tiens, c'est marrent ça. Moi, j'aime bien le coup de l'indentation, ça
évite d'avoir à écrire des accolades ou parenthèses. Est-ce le seul
reproche que vous lui faites ?


Personnellement, je hais Python (et le mot est faible) en raison de
cette indentation. L'indentation est une chose qui doit être faite
pour rendre le code lisible, mais avoir des blocs en fonction d'une
indentation est un truc complètement idiot, car il suffit qu'un
éditeur de texte modifie cette indentation pour tout mettre par
terre. Qui se souvient des scripts d'installation de je ne sais plus
quelle RedHat (6 ?, 7 ?) qui plantaient lamentablement parce qu'un
éditeur avait cru bon de remplacer des tabulations par des espaces ?

Bref, c'est peut-être lisible, mais ce n'est pas pérenne.

Cordialement,

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.


Avatar
candide


Personnellement, je hais Python (et le mot est faible) en raison de


Haïr ??? On t'a fait programmer du Python sous la torture ? ;)


Bref, c'est peut-être lisible, mais ce n'est pas pérenne.


Ça c'est la pérennité du code-source. Mais je m'interroge sur la
"pérennité" du langage. Python me tenterait bien parce qu'il est
puissant et très facile à apprendre
[enfin c'est ce qu'on dit et d'ailleurs un physicien de ma connaissance,
complètement rétif à toute informatique en dehors de son clickodrome
Windows et encore plus à la programmation s'est lancé dans
l'apprentissage de Python sous les conseils d'un de ses collègues et
quelle ne fut pas ma surprise de voir qu'au bout de 1 mois, il savait
faire une animation graphique de collisions de particules, un truc qui
nécessiterait pour un noob au moins un an d'apprentissage à faire en C,
sans parler de la longueur du code-source].

La question que je me pose c'est : que sera Python dans 5 ans ?
Peut-être un langage complètement délaissé. Je ne vois pas qu'on
enseigne Python dans les facs ou dans les écoles, j'ai l'impression que
c'est un langage marginal voire déconsidéré. Par contre, Java, lui est
toujours là.

Avatar
wykaaa
Le Mon, 31 Mar 2008 14:48:38 +0200, candide a écrit:


Personnellement, je hais Python (et le mot est faible) en raison de


Haïr ??? On t'a fait programmer du Python sous la torture ? ;)


Bref, c'est peut-être lisible, mais ce n'est pas pérenne.


Ça c'est la pérennité du code-source. Mais je m'interroge sur la
"pérennité" du langage. Python me tenterait bien parce qu'il est
puissant et très facile à apprendre
[enfin c'est ce qu'on dit et d'ailleurs un physicien de ma connaissance,
complètement rétif à toute informatique en dehors de son clickodrome
Windows et encore plus à la programmation s'est lancé dans
l'apprentissage de Python sous les conseils d'un de ses collègues et
quelle ne fut pas ma surprise de voir qu'au bout de 1 mois, il savait
faire une animation graphique de collisions de particules, un truc qui
nécessiterait pour un noob au moins un an d'apprentissage à faire en C,
sans parler de la longueur du code-source].

La question que je me pose c'est : que sera Python dans 5 ans ?
Peut-être un langage complètement délaissé. Je ne vois pas qu'on
enseigne Python dans les facs ou dans les écoles, j'ai l'impression que
c'est un langage marginal voire déconsidéré. Par contre, Java, lui est
toujours là.


Comment comparer Java et Python ????
Java est utilisé dans des applications importantes qui requièrent
fiabilité, évolutivité, etc. (comme les applications militaires).
Où est Python dans l'industrie ??? NULLE PART
Python est bien un langage marginal.


Avatar
espie
In article , wykaaa wrote:
Comment comparer Java et Python ????
Java est utilisé dans des applications importantes qui requièrent
fiabilité, évolutivité, etc. (comme les applications militaires).
Où est Python dans l'industrie ??? NULLE PART
Python est bien un langage marginal.


Enleve tes oeilleres, ca te fera du bien...

Python est utilise pour pas mal de choses. Sans doute pas dans les coins
que tu frequentes. Il y a un corpus tres important de code utilise en
simulation par exemple, et l'exemple que cite Candide n'est pas du tout
anecdotique: python tend a remplacer pas mal d'autres solutions pour
le pilotage d'experiences.

Il y a de meme un corpus important d'applications OpenSource developpees
en python.

Le plus gros defaut du langage, c'est certainement qu'il n'est pas tout
seul dans son domaine habituel. Ca se partage entre python, perl, php, et
ruby... donc forcement, si tu regardes l'un des 4, tu as une vision un peu
reduite...

Mais ce sont d'excellents langages pour les gens qui ont ce type de besoin.
Marginal pour l'informaticien pur, pas du tout marginal pour le scientifique
qui a besoin de programmer des manips pour obtenir un resultat.

Pour repondre a candide: si tu as des inquietudes quant a la perennite de
python, il y en a pour une bonne dizaine d'annees, au moins, avant que la
tendance actuelle s'inflechisse.


Ah, et python est utilise dans l'industrie... du jeu.
La couche de haut niveau de Civ4, par exemple, c'est du python. ;-)

Avatar
Marc Boyer
On 2008-03-31, wykaaa wrote:
Comment comparer Java et Python ????
Java est utilisé dans des applications importantes qui requièrent
fiabilité, évolutivité, etc. (comme les applications militaires).
Où est Python dans l'industrie ??? NULLE PART
Python est bien un langage marginal.


J'utilise actuellement un logiciel de modélisation SDL, RTDS,
dont les messages d'erreur semblent bien montrer qu'une bonne partie
est faite en python.
Et la societe semble aller plutot bien.

Après, est-ce grace à ou malgré ce choix de python, je n'en
sais strictement rien.

Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)

Avatar
Thierry Chappuis

Comment comparer Java et Python ????
Java est utilisé dans des applications importantes qui requièrent
fiabilité, évolutivité, etc. (comme les applications militaires).
Où est Python dans l'industrie ??? NULLE PART
Python est bien un langage marginal.


Bonjour,

C'est comme tout! The right tool for the right job. Suis-je le seul à
utiliser ce langage? Je ne crois pas qu'il soit si marginal que vous ne
semblez le penser: http://wiki.python.org/moin/OrganizationsUsingPython.
Dans le domaine du web, Python est notamment à la base de YouTube. Yahoo
et Google l'utilise de manière intensive et Django est un des frameworks
web les plus en vogue actuellement.

Mais Python ne se limite pas au web. Son usage monte considérablement en
puissance dans le domaine de la programmation scientifique (qui est plus
mon domaine que le web). En effet, couplé à des modules tels que NumPy
et Scipy, il allie facilité de codage et facilité d'interfaçage avec des
langages tels que Fortran, C ou C++. Dans ce domaine d'application, la
NASA, pour ne citer qu'elle, utilise Python de manière extensive.
Peut-être pas pour les tâches les plus critiques, mais de là à parler de
Python comme un langage marginal, il y a un pas que j'hésiterais à franchir.

Les applications de Python sont nombreuses et le nombre de ses
utilisateurs est en constante augmentation. Si on se fie aux différentes
études publiées ici:
http://www.developpez.net/forums/showthread.php?tG7194, ce langage ne
semble avoir le vent en poupe.

Je ne le cache pas, j'apprécie beaucoup ce langage. Bien que je
programme beaucoup en C++ et en C, c'est le langage vers lequel je me
dirige en premier lieu lorsque ce choix dépend de moi, et précisément
pour les raisons qui lui sont reprochées dans les interventions qui
précèdent. Ces points forts sont à mon avis sa simplicité et sa
souplesse, sa bibliothèque standard extrêmement fournie, sont typage
dynamique et fort, son modèle objet élégant, etc.

Je ne pense toutefois pas qu'il soit plus approprié qu'un Pascal ou que
ADA voir OCaml pour un apprentissage de la programmation. Ces langages
ont le grand mérite, selon moi, d'imposer une grande rigueur dans le
codage, ce qui est bonne chose pour cadrer les premiers pas d'un
débutant. Python est simple à prendre en main et force les bonnes
habitudes de programmation, mais le fait créer des varaibles sont les
déclarer est peut-être une liberté potentiellement source d'erreur pour
un débutant.

En ce qui concerne l'apprentissage, je suis assez vieux jeu. Je trouve
Pascal bien. Ada également, quoique basculant dans l'autre extrème du
trop rigoureux. C++ avec une approche à la "AC++" me séduit assez, mais
je n'ai pas essayé avec des étudiants.

Enfin, la vie d'un langage, c'est comme notre vie à nous. On ne peut pas
plaire à tout le monde et ce n'est pas plus grave que cela. Si les
problèmes d'indentation sont causes de misère chez vous, soit.
Personnellement, mon dévoué vim ne m'a jamais causé aucun soucis de
cette nature.

Meilleures salutations

Thierry

Avatar
Francois
Je pensais que l'indentation chez Python était une force et je
découvre qu'en fait ce point est un vrai sujet de controverse. C'est
vrai que ça peur d'imaginer qu'un script Python très très long puisse
s'effondrer parce qu'une personne inamicale ajoute un minuscule espace
quelque part au beau milieu du code.

Au passage, sur Wikipédia, j'ai pu voir que Google utilisait du
Python et la NASA aussi (dans quelle mesure ?).


François