Langage de programmation

Quel autre langage de programmation pratiquez vous ?

Vous pouvez sélectionner 1 option
 
 
Voir les résultats
ViPHP
ViPHP | 5924 Messages

13 août 2008, 23:09

Ouais, en C, tout est pointeur, à ne pas oublier :)
On peut tout manipuler, stocker une adresse de fonction dans une variable et l'appeler. Le principe du C est simple, il va t'imposer un typage fort parce qu'il est compilé, et cela t'empèche de faire des conneries, mais cela n'empèche pas de passer outre, car tu peux très bien (attention, gros raccourci), changer radicalement le type d'une variable, simplement en passant par des pointeurs (le cast ne suffit pas toujours, et peut modifier le contenu, selon le type de cast…).

ViPHP
ViPHP | 4674 Messages

13 août 2008, 23:17

Mais attention, la syntaxe du cast c'est tout simplement l'appel d'une fonction avec un argument. En effet : (int) var, revient à écrire int(var). La syntaxe int(var) n'est peut-être pas accepté (me souviens plus), mais quand on a un tableau de pointeur vers des fonctions, on utilise cette syntaxe là : (*(tab + i)) arg, ou (tab) arg (totalement équivalent, plus lisible). On comprend déjà plus pourquoi on peut faire ce qu'on veut avec C, c'est d'une logique implacable …
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 1668 Messages

14 août 2008, 12:15

En fait, tu as raison, mais quand je parlais de fonctions, je parlais de fonctionnalités. Je n'arrive pas à le décrire, mais la syntaxe de C est tellement bien construite qu'on peut écrire des gros délires en se disant : « Allé, si ça marche, je me rase la tête », et bah, hop, un chauve de plus (le malheureux).
Bon, j'ai pire, mais : chauve qui peu !
J'étais impressionné de voir des tableaux de fonctions par exemple.
Je ne comprend pas tellement pourquoi c'est impressionant, bien que j'ai eu un peu de mal à modéliser le problème, c'est une sorte de référencement de fonction, certes, en PHP on peu appelé une fonction via son seul nom...

Bah j'ai appris pas mal de trucs d'un coup :lol:
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 4674 Messages

14 août 2008, 13:12

J'étais impressionné de voir des tableaux de fonctions par exemple.
Je ne comprend pas tellement pourquoi c'est impressionant, bien que j'ai eu un peu de mal à modéliser le problème, c'est une sorte de référencement de fonction, certes, en PHP on peu appelé une fonction via son seul nom...
Comme en C tout est pointeur, on peut pointer vers une données, ou une fonction (ou encore d'autres choses hein). Un tableau de fonction est donc un tableau de pointeur vers des fonctions. Le tableau ne contient pas le nom des fonctions, mais un pointeur vers la fonction, c'est très différent.

Avec PHP, on peut faire d'autres choses, mais c'est interprété, c'est différent ;-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 5924 Messages

14 août 2008, 13:50

certes, en PHP on peu appelé une fonction via son seul nom...
Euh, en même temps, tu mets le nom d'une fonction dans une variable et il est possible d'appeler une fonction sans hardcoder son nom…

Evidemment qu'en C on ne met pas le nom d'une fonction dans une variable, cela n'a aucun sens, le processeur ne sait pas ce que cela veut dire, il ne connaît pas le nom des fonctions. C'est pour cela qu'en langage compilé, à fortiori bas-niveau, on ne manipule que des adresses. A vrai dire, ce n'est pas vraiment compliqué, il faut juste savoir que le programme tourne sur une machine et non dans le vide, que chaque type a une taille, que la mémoire ça se gère, etc… Pour appeler une fonction, on pourraît très bien stocker dans un pointeur correctement typé un entier correspondant à l'adresse de la fonction (bon, le seul problème, c'est qu'il est rare que l'on connaisse cette adresse…).
C'est exactement ce qui est fait avec les variables pour écrire des drivers :

Code : Tout sélectionner

*( (volatile byte *) 0xffb7 = 3; // On écrit 3 dans une variable d'adresse 0xffb7 et de taille d'un octet…

Mammouth du PHP | 1668 Messages

15 août 2008, 11:04

Je me demandais une chose : lorsqu'ils ont voulu faire le C, ils ont dût faire le premier compilateur à partir de rien et définir la syntaxe, la compilateur n'avais qu'à passé le code émit en langage machine, c'est étrange, non ?
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol