IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Le C qualifié de language fortement ou faiblement typé ?


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 36
    Points : 36
    Points
    36
    Par défaut Le C qualifié de fortement ou faiblement typé ?
    Citation Envoyé par koala01
    Le C fait partie de ces langages que l'on qualifie volontiers de "fortement typés"...
    Citation Envoyé par Emmanuel Delahaye
    faiblement est plus juste... C++ est fortement typé...
    Je ne vois pas du tout ce que tu veux dire par là. Peux-tu détailler je te prie ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Points : 13
    Points
    13
    Par défaut
    Il y a deux facons de voir le typage je pense:

    Il y a ta manière (niveau compilateur) et celle qui consiste à mesurer selon les conversions de type implicite que le langage authorise et sur ce plan là le C est faiblement typé

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par BVertut
    Je ne vois pas du tout ce que tu veux dire par là. Peux-tu détailler je te prie ?
    Bah, en C :
    est correct. En C++, ça fait un scandale et il faut mettre un cast :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *p = static_cast<char *> malloc(...);

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    On ne dit pas le contraire, mais ca reste quand meme sérieusement plus fortement typé que le php, par exemple, qui permet dans le meme code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $variable="ma chaine";
    ...
    $variable=3;

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Un typage fort est un typage qui peut être déterminé de manière statique (de manière explicite) avant même l'exécution.
    Un typage faible est un typage qui ne peut être déterminé que de manière dynamique (de manière latente) durant l'exécution.

    Aho, Ullman et Sethi ne parle même pas de typage fort ou faible, mais uniquement de vérification statique ou dynamique – Goos et Waite parlent de typage latent/faible ou manifeste/fort.

    En fait, on devrait faire plus de distinction pour être clair dans le typage fort. Car effectivement, le typage du C n'est pas le même que celui du C++ qui n'est pas le même que celui de caml et pourtant ils sont tous fort/statique/explicite.

    Le C est fortement typé car le type est déterminé de manière statique à la compilation. S'il était faiblement typé, il n'y aurait pas de besoin de déclarer le type des variables lors de la déclaration de celle-ci. Comme le C++ donc.

    @Emmanuel Delahaye. Dans l'exemple que tu donnes on peut arguer que le type est celui d'un pointeur. Le typage fort est donc respecté. Certes on pourrait dire que le type est celui d'un pointeur sur un caractère. Mais on rentre dans des subtilités du typage fort. Cela reste du typage fort.


  6. #6
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par Garulfo
    Un typage fort est un typage qui peut être déterminé de manière statique (de manière explicite) avant même l'exécution.
    Un typage faible est un typage qui ne peut être déterminé que de manière dynamique (de manière latente) durant l'exécution.

    Aho, Ullman et Sethi ne parle même pas de typage fort ou faible, mais uniquement de vérification statique ou dynamique – Goos et Waite parlent de typage latent/faible ou manifeste/fort.

    En fait, on devrait faire plus de distinction pour être clair dans le typage fort. Car effectivement, le typage du C n'est pas le même que celui du C++ qui n'est pas le même que celui de caml et pourtant ils sont tous fort/statique/explicite.

    Le C est fortement typé car le type est déterminé de manière statique à la compilation. S'il était faiblement typé, il n'y aurait pas de besoin de déclarer le type des variables lors de la déclaration de celle-ci. Comme le C++ donc.

    @Emmanuel Delahaye. Dans l'exemple que tu donnes on peut arguer que le type est celui d'un pointeur. Le typage fort est donc respecté. Certes on pourrait dire que le type est celui d'un pointeur sur un caractère. Mais on rentre dans des subtilités du typage fort. Cela reste du typage fort.

    Je ne crois pas que la notion de typage fort ou faible soit liée au fait qu'on ait un typage statique ou dynamique. Python, par exemple, est un langage à typage dynamique mais fortement typé (Duck typing).

    Thierry

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Points : 1 111
    Points
    1 111
    Par défaut
    pour voir si des variables sont définies, on utilise les macros du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #ifdef PI
    #define R 1
    #ifndef
    #define PI 3.14
    #define R 1
    #endif
    .
    Commentaire : si PI n'est pas défini par l'inclusion précédente d'un en-tête le définissant, chaque fois que le préprocesseur rencontre PI dans le programme, il le remplace par 3.14, qui est la valeur prévue dans ce cas. Dans tous les cas, le rayon vaut 1.

    Correct ?

    Pour le typage fort/faible, pour moi le typage fort c'est le fait que l'on ne peut pas déclarer une variable comme int (entier) et lui attribuer un float (nombre à virgule flottante). Ça permet d'ajuster le code que l'on écrit à ses besoins.

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par kromartien
    pour voir si des variables sont définies, on utilise les macros du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #ifdef PI
    #define R 1
    #ifndef
    #define PI 3.14
    #define R 1
    #endif
    .
    Commentaire : si PI n'est pas défini par l'inclusion précédente d'un en-tête le définissant, chaque fois que le préprocesseur rencontre PI dans le programme, il le remplace par 3.14, qui est la valeur prévue dans ce cas. Dans tous les cas, le rayon vaut 1.

    Correct ?
    .
    FAUX

    ton ifndef ne marche pas. Ce qu'il faut faire pour faire ce que tu dis est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #define R 1
    #ifndef PI
    #define PI 3.14
    #endif
    ou si tu veux un if..else mais c'est moins élégant (répétition ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #ifdef PI
    #define R 1
    #else
    #define R 1
    #define PI 3.14
    #endif

  9. #9
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Et encore, à ce moment là, on n'a plus affaire à une variable, mais à une constante, et on ne vérifie pas si elle existe, mais si elle est définie

    Sans compter que cela ne fonctionne que sur les constantes défines par macros

Discussions similaires

  1. quel est le Meilleur language pour piloter le port serie ?
    Par flyfab dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 21/07/2003, 10h03
  2. [postgresql] Probleme de language SQL
    Par sbucci dans le forum Requêtes
    Réponses: 3
    Dernier message: 31/05/2003, 13h19
  3. Language
    Par bidson dans le forum XMLRAD
    Réponses: 4
    Dernier message: 10/05/2003, 19h28
  4. [Appli][Autre language]dll-contenant form
    Par flash dans le forum Langage
    Réponses: 6
    Dernier message: 20/09/2002, 14h18
  5. je veux apprendre la programmation quel language choisir??
    Par existance dans le forum Débuter
    Réponses: 26
    Dernier message: 06/08/2002, 05h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo