Affichage des résultats du sondage: Selon vous, quel est le meilleur langage pour apprendre la programmation ?

Votants
274. Vous ne pouvez pas participer à ce sondage.
  • C

    85 31,02%
  • C++

    36 13,14%
  • Python

    53 19,34%
  • Ruby

    16 5,84%
  • Java

    28 10,22%
  • C#

    12 4,38%
  • PHP

    9 3,28%
  • Matlab

    9 3,28%
  • HTML/CSS

    8 2,92%
  • OCaml

    14 5,11%
  • 1 0,36%
  • 1 0,36%
  • 1 0,36%
  • 1 0,36%
+ Répondre à la discussion Actualité déjà publiée
Page 9 sur 14 PremièrePremière ... 5678910111213 ... DernièreDernière
  1. #161
    Expert éminent sénior

    Avatar de Neckara
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    6 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2011
    Messages : 6 150
    Points : 15 974
    Points
    15 974

    Par défaut

    Citation Envoyé par Logan Mauzaize Voir le message
    Sémantiquement cela n'a pas de sens. Cela n'a de sens que pour la représentation actuelle des caractères. Certes cette représentation ne risque pas de changer, mais cela reste une aberration d'un point de vue purement conceptuel.
    En quoi?

    'c' n'est pas un caractère mais un entier.
    On dit "chiffrer" pas "crypter" !

    On dit "bibliothèque" pas "librairie" !

    Ma page DVP : http://neckara.developpez.com/

  2. #162
    ALT
    ALT est déconnecté
    Membre chevronné
    Avatar de ALT
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    octobre 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : octobre 2002
    Messages : 1 095
    Points : 1 752
    Points
    1 752

    Par défaut

    C'est justement là le problème : 'c' est un caractère, mais pour le langage c'est d'abord un entier. En matière de typage fort, on fait mieux !
    Et 'c' vaut 99 en ASCII, 129 en EBCDIC. Bonjour la portabilité du code !
    Conceptuellement, utiliser 'c' comme un entier peut se comprendre dans quelques très rares situations (boucles, par exemple). En dehors de ça, il n'y a aucune raison logique de s'en servir comme entier.
    Au strict minimum, le langage devrait exiger un transtypage pour effectuer une opération arithmétique sur un caractère.
    Donc, j'insiste : C n'est pas adapté à l'apprentissage de la programmation.
    "Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux."
    Attribué indistinctement à :
    Thomas Jefferson
    Benjamin Franklin
    Albert Einstein !

  3. #163
    Expert éminent
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2003
    Messages : 5 113
    Points : 9 796
    Points
    9 796

    Par défaut

    Là où le bât blesse, c'est que dans d'autres langages, c'est que 'c' + 2 fait 'c2'.
    Donc la question "quelle est la sémantique ?" est extrêmement pertinente, car elle est justement tout sauf triviale.

    Bon. Après, je n'aurai pas pris 'c'+2 comme démonstration des problèmes du C pour des débutants.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #164
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    août 2005
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : août 2005
    Messages : 2 858
    Points : 6 892
    Points
    6 892

    Par défaut

    'c' est un caractère, point. Sa représentation ASCII n'est pas un entier mais 7-bits, son codepoint Unicode est effectivement un entier 32-bits. Mais ce n'est pas le cas des caractères décomposés en Unicode.
    Rien que ce micro "débat" est une preuve du problème.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  5. #165
    Expert éminent sénior

    Avatar de Neckara
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    6 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2011
    Messages : 6 150
    Points : 15 974
    Points
    15 974

    Par défaut

    Et C et en C++, 'c' est un char, un char est un entier.

    'c' correspond à la valeur ASCII du caractère c mais n'est en rien un caractère.
    On dit "chiffrer" pas "crypter" !

    On dit "bibliothèque" pas "librairie" !

    Ma page DVP : http://neckara.developpez.com/

  6. #166
    Expert éminent
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2003
    Messages : 5 113
    Points : 9 796
    Points
    9 796

    Par défaut

    Citation Envoyé par Neckara Voir le message
    Et C et en C++, 'c' est un char, un char est un entier.

    'c' correspond à la valeur ASCII du caractère c mais n'est en rien un caractère.
    Ce qui est super clair pour un débutant... (pour en revenir au débat)

    Après, 'c' ne va pas forcément correspondre à la valeur ASCII de la lettre c en minuscule. Cela pourrait être de l'ECBDIC -- grâce à qui nous risquons de continuer à avoir des trigraphes en C++17. Tout dépend de l'encodage du fichier source.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #167
    ALT
    ALT est déconnecté
    Membre chevronné
    Avatar de ALT
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    octobre 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : octobre 2002
    Messages : 1 095
    Points : 1 752
    Points
    1 752

    Par défaut

    Oui, c'est bien pour ça que la confusion est possible : "char" signifie "caractère". Si on veut parler d'un entier sur 8 bits, on devrait utiliser un autre mot. Qui n'existe évidemment pas en C.
    Car si on fait un printf('c'), on obtiendra c. Pas autre chose. Et pourtant, vu par le compilateur c'est aussi un nombre !
    Autrement dit : 'c' est un caractère, du point de vue sémantique & un nombre du point de vue du compilateur. Bref, ça oblige à être toujours très attentif à ce qu'on écrit, car ce qui peut être juste pour le compilateur (& à l'exécution du programme) peut être parfaitement absurde du point de vue de la logique de l'écriture, donc de la pensée du développeur. En tout état de cause, ça ne facilite pas la relecture du code, donc son éventuel débogage.
    Encore dit autrement : il est absurde d'écrire 'c'+2 si c'est juste pour calculer 99+2.
    "Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux."
    Attribué indistinctement à :
    Thomas Jefferson
    Benjamin Franklin
    Albert Einstein !

  8. #168
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    juin 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : juin 2002
    Messages : 2 131
    Points : 4 330
    Points
    4 330

    Par défaut

    Citation Envoyé par Neckara Voir le message
    Et C et en C++, 'c' est un char, un char est un entier.
    C'est vrai en C++, pas en C ou 'c' est un int (mais "azerty" est bien un ensemble de char, histoire de complexifier un peu plus).

  9. #169
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    4 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 4 202
    Points : 15 897
    Points
    15 897

    Par défaut

    Citation Envoyé par Logan Mauzaize Voir le message
    Sémantiquement cela n'a pas de sens.
    En quelle honneur ?
    Si j'ai envie que ça signifie "2 lettres après c dans mon alphabet", j'ai pas le droit ?

  10. #170
    Membre expérimenté Avatar de CodeurPlusPlus
    Profil pro
    Inscrit en
    septembre 2013
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2013
    Messages : 530
    Points : 1 712
    Points
    1 712

    Par défaut

    Je vais répéter ce que dit Bousk mais à ma manière, c'est à dire en étant chiant :

    Je ne vois pas en quoi il serait absurde d'additionner un caractère et un entier, du moment qu'on peut donner une définition formelle d'une telle opération.

    1) L'alphabet est une liste ordonnée de caractères : abcdefghijklmnopqrstuvwxyz
    (en fait il peut y avoir beaucoup plus de caractères que dans mon exemple, par exemple il y en a 256 dans le jeu iso-latin-1)

    2) Si c est le caractère d'indice n dans l'alphabet, et si i est un entier, c + i est le caractère d'indice n + i dans l'alphabet.

    Voilà : on a défini une addition entre un caractère et un entier. Cela se tient théoriquement, cela a une utilité pratique, et cela est (relativement) indépendant de la représentation exacte des caractères.

    Les concepteurs d'un langage ont donc le droit de faire un tel choix. (Et j'ajouterais que ce choix se tient suffisamment pour ne pas être un bon argument contre le C...)
    Même si d'autres choix sont possibles, comme l'exemple 'c' + 2 = 'c2' cité par Luc Hermitte.

    De toute façon le C est un des meilleurs langages pour débuter précisément parce qu'il est un des pires... paradoxal isn't it ?

  11. #171
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    juin 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : juin 2002
    Messages : 2 131
    Points : 4 330
    Points
    4 330

    Par défaut

    Citation Envoyé par CodeurPlusPlus Voir le message
    Je ne vois pas en quoi il serait absurde d'additionner un caractère et un entier, du moment qu'on peut donner une définition formelle d'une telle opération.

    1) L'alphabet est une liste ordonnée de caractères : abcdefghijklmnopqrstuvwxyz
    (en fait il peut y avoir beaucoup plus de caractères que dans mon exemple, par exemple il y en a 256 dans le jeu iso-latin-1)

    2) Si c est le caractère d'indice n dans l'alphabet, et si i est un entier, c + i est le caractère d'indice n + i dans l'alphabet.

    Voilà : on a défini une addition entre un caractère et un entier. Cela se tient théoriquement, cela a une utilité pratique, et cela est (relativement) indépendant de la représentation exacte des caractères.
    Oui, c'est un choix qui semble raisonnable.

    Mais en pratique je ne connais pas de langage qui a fait ce choix (et en particulier pas le C où, bien que fonctionnant sur plusieurs implémentation, n'est qu'une conséquence de la confusion caractère/entier, n'est pas garanti et donc non portable).

  12. #172
    Inactif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : novembre 2014
    Messages : 82
    Points : 92
    Points
    92

    Par défaut

    Citation Envoyé par Logan Mauzaize Voir le message
    'c' est un caractère, point. Sa représentation ASCII n'est pas un entier mais 7-bits, son codepoint Unicode est effectivement un entier 32-bits. Mais ce n'est pas le cas des caractères décomposés en Unicode.
    Rien que ce micro "débat" est une preuve du problème.
    Je ne vois pas le problème dans le langage. Le problème dans ce topic est la pluie d'assertions absurdes.

    C'est vraiment n'importe quoi comme argument.

    Le fait que les gens ne soient pas d'accord ne prouvent absolument RIEN, sauf le fait que la moitié des assertions dans ce topic sont grossièrement fausses.

  13. #173
    Inactif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : novembre 2014
    Messages : 82
    Points : 92
    Points
    92

    Par défaut

    Citation Envoyé par Logan Mauzaize Voir le message
    Sa représentation ASCII n'est pas un entier
    Pardon?

  14. #174
    Inactif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : novembre 2014
    Messages : 82
    Points : 92
    Points
    92

    Par défaut

    Citation Envoyé par ALT Voir le message
    Oui, c'est bien pour ça que la confusion est possible : "char" signifie "caractère". Si on veut parler d'un entier sur 8 bits, on devrait utiliser un autre mot. Qui n'existe évidemment pas en C.
    Car si on fait un printf('c'), on obtiendra c.
    Non, on n'obtient rien.

    Citation Envoyé par ALT Voir le message
    Pas autre chose. Et pourtant, vu par le compilateur c'est aussi un nombre !
    Du point de vue du compilateur, 'c' est seulement un nombre. Pas autre chose.

    Citation Envoyé par ALT Voir le message
    Autrement dit : 'c' est un caractère, du point de vue sémantique
    C'est quoi le "point de vue sémantique"?

    Citation Envoyé par ALT Voir le message
    & un nombre du point de vue du compilateur. Bref, ça oblige à être toujours très attentif à ce qu'on écrit
    Comme toujours en programmation.

    Si tu oublies ça, j'espère ne pas avoir à utiliser tes programmes!

    Citation Envoyé par ALT Voir le message
    , car ce qui peut être juste pour le compilateur (& à l'exécution du programme) peut être parfaitement absurde du point de vue de la logique de l'écriture, donc de la pensée du développeur.
    Comme toujours en programmation.

    Citation Envoyé par ALT Voir le message
    Encore dit autrement : il est absurde d'écrire 'c'+2 si c'est juste pour calculer 99+2.
    Alors ne l'écris pas!

  15. #175
    Inactif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : novembre 2014
    Messages : 82
    Points : 92
    Points
    92

    Par défaut

    Citation Envoyé par Luc Hermitte Voir le message
    Ce qui est super clair pour un débutant... (pour en revenir au débat)

    Après, 'c' ne va pas forcément correspondre à la valeur ASCII de la lettre c en minuscule. Cela pourrait être de l'ECBDIC -- grâce à qui nous risquons de continuer à avoir des trigraphes en C++17. Tout dépend de l'encodage du fichier source.
    Pardon?

    Qu'est-ce que l'encodage vient faire ici?

    'c' correspond à la lettre "c", par définition.

  16. #176
    Inactif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : novembre 2014
    Messages : 82
    Points : 92
    Points
    92

    Par défaut

    Citation Envoyé par CodeurPlusPlus Voir le message
    De toute façon le C est un des meilleurs langages pour débuter précisément parce qu'il est un des pires... paradoxal isn't it ?
    Cool.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void f (int b[3]) {
    	printtf ("sizeof b = %d\n", sizeof b);
    }
    
    void g () {
    	int a[3];
    	printf ("sizeof a = %d\n", sizeof a);
    	f (a);
    }

  17. #177
    Inactif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : novembre 2014
    Messages : 82
    Points : 92
    Points
    92

    Par défaut

    Citation Envoyé par gl Voir le message
    Oui, c'est un choix qui semble raisonnable.

    Mais en pratique je ne connais pas de langage qui a fait ce choix (et en particulier pas le C où, bien que fonctionnant sur plusieurs implémentation, n'est qu'une conséquence de la confusion caractère/entier, n'est pas garanti et donc non portable).
    Qu'est-ce qui n'est pas garanti?

  18. #178
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    juin 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : juin 2002
    Messages : 2 131
    Points : 4 330
    Points
    4 330

    Par défaut

    Citation Envoyé par abel.cain Voir le message
    Qu'est-ce qui n'est pas garanti?
    Le résultat de l'opération.

    La norme n'impose pas de charset ni que les lettres soient contigües dans le charset utilisé par l'implémentation (elles le sont en ASCII mais pas en EBCDIC par exemple). Et donc il n'est pas garanti que 'i' + 1 soit égal à 'j' (ce n'est effectivement par le cas en EBCDIC).

    En pratique, les implémentations où les lettres sont contigües sont largement répandues, le problème est donc assez marginal. Mais il n'y a aucune garantie.

  19. #179
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    juin 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : juin 2002
    Messages : 2 131
    Points : 4 330
    Points
    4 330

    Par défaut

    Citation Envoyé par abel.cain Voir le message
    Citation Envoyé par ALT Voir le message
    Oui, c'est bien pour ça que la confusion est possible : "char" signifie "caractère". Si on veut parler d'un entier sur 8 bits, on devrait utiliser un autre mot. Qui n'existe évidemment pas en C.
    Car si on fait un printf('c'), on obtiendra c.
    Non, on n'obtient rien.
    Ca dépend de ce que l'on entend ici par obtenir mais :
    • Sur la sortie standard on obtiendra bien le caractère c.
    • En retour de la fonction on obtiendra 1 (ou une valeur négative en cas d'erreur).

  20. #180
    Inactif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    novembre 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : novembre 2014
    Messages : 82
    Points : 92
    Points
    92

    Par défaut

    Citation Envoyé par gl Voir le message
    Ca dépend de ce que l'on entend ici par obtenir mais :
    • Sur la sortie standard on obtiendra bien le caractère c.
    • En retour de la fonction on obtiendra 1 (ou une valeur négative en cas d'erreur).
    http://codepad.org/ktMS89K2


Discussions similaires

  1. Quel est le meilleur langage pour débuter la programmation ?
    Par Amine Horseman dans le forum Actualités
    Réponses: 144
    Dernier message: 28/11/2014, 17h06
  2. Quel est le meilleur langage pour la reconnaissance d'empreintes ?
    Par hanou88 dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 09/02/2011, 07h58
  3. Débat : Quel est le meilleur langage pour coder en open-source ?
    Par Katleen Erna dans le forum Actualités
    Réponses: 15
    Dernier message: 17/08/2009, 10h54
  4. Quel est le meilleur langage pour la portabilité : Windows & Linux (voire Mac) ?
    Par iubito dans le forum Débats sur le développement - Le Best Of
    Réponses: 57
    Dernier message: 26/11/2007, 23h45
  5. Réponses: 4
    Dernier message: 12/05/2007, 00h55

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