Publicité
+ Répondre à la discussion Actualité déjà publiée
Page 3 sur 13 PremièrePremière 1234567 ... DernièreDernière
Affichage des résultats 41 à 60 sur 247
  1. #41
    alex_pi
    Invité(e)

    Par défaut

    Citation Envoyé par Mac LAK Voir le message
    Ne pas apprendreà libérer sa mémoire dès le départ, c'est s'exposer à ne JAMAIS le faire...
    Et être contraint à le faire dès le départ, c'est s'exposer à ne JAMAIS découvrir un gros paquet d'algorithme et de structure de donnée qui ne tolèrent pas la gestion manuelle de la mémoire (sauf éventuellement les "smart pointers"), comme toutes les structures de données persistantes à partage implicite. Encore une fois, je préfère que le débutant explore un maximum des possibilités offertes, quitte à se limiter le jour où il est obligé d'utiliser un langage bas niveau à gestion manuelle des ressources.

  2. #42
    Inactif
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    octobre 2004
    Messages
    3 894
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : octobre 2004
    Messages : 3 894
    Points : 4 853
    Points
    4 853

    Par défaut

    Citation Envoyé par Luc Hermitte Voir le message
    Et en C++ (je n'ai jamais vérifié pour le C, mais cela devrait être bon aussi), and , not, or, et xor sont supportés.
    C et C++ supportent le ET, OU et NON logique, appelés "logical operators" (resp. "&&", "||" et "!").
    Les deux langages supportent également la même chose en binaire, aussi appelés "bitwise operators" (resp. "&", "|", "~").

    Le XOR ne s'applique qu'en binaire ("^"), et peut donc conduire à de sévères erreurs de logique si on tente de l'utiliser en tant qu'opérateur logique sans avoir normalisé auparavant les valeurs booléennes... Mais bon, au pire, on peut toujours définir un XOR logique grâce aux autres fonctions.

  3. #43
    Membre à l'essai
    Inscrit en
    juillet 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 21
    Points : 22
    Points
    22

    Par défaut

    Citation Envoyé par Mac LAK Voir le message
    Ne pas apprendre à libérer sa mémoire dès le départ, c'est s'exposer à ne JAMAIS le faire... Et ça se vérifie sans arrêt, tout comme ne compter que sur le compilo ou la puissance de la machine pour optimiser un programme ou algo.
    C'est comme ça qu'on a de "jeunes diplômés" qui pensent avoir l'idée du siècle en voulant mettre du Java dans une carte embarquée temps réel, en croyant que "rajouter un CPU" ou "2 Go de RAM" n'aura aucune influence ni sur le coût de la carte, ni sur le temps de développement... Et tout ça parce qu'ils trouvent le C (ou le C++) "trop dur" avec tout ces pointeurs tout vilains...
    Je suis un jeune diplômé ayant appris à programmer sur des langages de haut niveau (Caml, Java) et je suis aujourd'hui fan de C# et allergique au C. Pourquoi ? Eh oui, parce que je trouve la gestion de la mémoire et les pointeurs en C trop chiants et trop souvent sources de problèmes qu'on n'a pas dans les langages de haut niveau.

    J'ai appris à programmer sur des langages de haut niveau, et pourtant j'ai toujours réussi à programmer en C sans avoir trop de problèmes liés à la mémoire. Pourquoi ? Parce que ce n'est pas parce qu'on a appris les langages de haut niveau qu'on ne sait pas comment fonctionne la mémoire et qu'on n'y fait pas attention.

    Je fais du C#, ça ne m'empêche pas de faire attention à ce qui est alloué par mes objets, ça ne m'empêche pas d'optimiser mon code, et ça ne me fait pas oublier d'appeler les méthodes Dispose() de mes objets.

    Je crois que tu confonds deux choses qui n'ont rien à voir: être conscient et soucieux de la gestion de sa mémoire, et utiliser un langage qui t'oblige à gérer la mémoire à la main, ça n'a rien à voir. Si tu apprends *correctement* un langage haut niveau, c'est à dire en apprenant correctement les différences entre valeurs et références, en sachant ce qu'est un GC et comment il fonctionne dans les grandes lignes, et si tu apprend à programmer en étant soucieux de tes algorithmes et de leur complexité, de tes objets et de leur durée de vie, alors tu n'auras pas souvent de problèmes en C.

    Ce que tu confonds c'est d'une part les langages de haut niveau, et d'autre part l'apprentissage de la programmation "n'importe comment", en utilisant toutes les bibliothèques sans jamais se soucier de comment un truc est implémenté et quelle est sa complexité.

    Ne jurer que par le Java et le C# ne m'a pas empêché de programmer des trucs complexes et bien codés en C sans jamais avoir vraiment appris le C, ça ne m'a pas empêché non plus d'obtenir de très bons résultats au concours ACM en optimisant bien mes algorithmes et en dépassant en performances des programmes en C mal optimisés, et sans avoir besoin de rajouter 2 Go de ram comme tu dis. Par contre ça m'a permis de passer bien plus de temps à apprendre de bons algorithmes et à utiliser les subtilités des langages de haut niveau au lieu de le passer à débugger des segfaults.

    Etre conscient de comment marche un GC et être capable de prendre sa place dans un langage ou il n'y en a pas, c'est important. Se forcer à faire le travail du GC soi-même, c'est une perte de temps. Si des gens se sont emmerdés à créer des langages de haut niveau, c'est pour que nous puissions les utiliser pour implémenter rapidement des algorithmes péchus au lieu d'allouer notre mémoire à la main. Et à mon avis ce qui manque à une majorité de développeurs de nos jours, c'est pas de savoir bien gérer sa mémoire, mais de savoir coder de bons algos.

  4. #44
    Inactif
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    octobre 2004
    Messages
    3 894
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : octobre 2004
    Messages : 3 894
    Points : 4 853
    Points
    4 853

    Par défaut

    Citation Envoyé par alex_pi Voir le message
    Et être contraint à le faire dès le départ, c'est s'exposer à ne JAMAIS découvrir un gros paquet d'algorithme et de structure de donnée qui ne tolèrent pas la gestion manuelle de la mémoire (sauf éventuellement les "smart pointers"), comme toutes les structures de données persistantes à partage implicite. Encore une fois, je préfère que le débutant explore un maximum des possibilités offertes, quitte à se limiter le jour où il est obligé d'utiliser un langage bas niveau à gestion manuelle des ressources.
    Qui peut le plus peut le moins : je n'ai JAMAIS vu un développeur "bas niveau" ne pas réussir à maîtriser un langage de plus haut niveau... Et, souvent, mieux que quelqu'un qui a démarré avec (le GC, c'est bien, mais libérer soi-même, c'est encore mieux, ça évite les pics de charge et les micro-blocages le temps de libérer le bouzin).

    Par contre, la réciproque est souvent fausse...

  5. #45
    Inactif
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    octobre 2004
    Messages
    3 894
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : octobre 2004
    Messages : 3 894
    Points : 4 853
    Points
    4 853

    Par défaut

    Citation Envoyé par ZoinX Voir le message
    J'ai appris à programmer sur des langages de haut niveau, et pourtant j'ai toujours réussi à programmer en C sans avoir trop de problèmes liés à la mémoire.
    J'aime bien le "sans avoir trop de problèmes"... Normalement, c'est "jamais", tu sais ?

    Citation Envoyé par ZoinX Voir le message
    ça ne me fait pas oublier d'appeler les méthodes Dispose() de mes objets.
    Sauf qu'avec un GC, si tu oublies, ça n'a pas de conséquences. Sans un GC, c'est critique, et les mauvaises habitudes sont rapides à prendre... Trop rapides, d'ailleurs.

    Citation Envoyé par ZoinX Voir le message
    Si tu apprends *correctement* un langage haut niveau
    C'est lç que le bât blesse, justement : le "correctement" semble plutôt rarissime.

    Citation Envoyé par ZoinX Voir le message
    Par contre ça m'a permis de passer bien plus de temps à apprendre de bons algorithmes et à utiliser les subtilités des langages de haut niveau au lieu de le passer à débugger des segfaults.
    Je connais les mêmes algorithmes, pour en avoir implémenté quelques uns d'assez velus. Les langages de haut niveau n'y sont absolument pour rien...

    Citation Envoyé par ZoinX Voir le message
    Si des gens se sont emmerdés à créer des langages de haut niveau, c'est pour que nous puissions les utiliser pour implémenter rapidement des algorithmes péchus au lieu d'allouer notre mémoire à la main.
    Tu as raison sur ce point : c'est pour faire un programme rapidement que ces langages existent. Mais ce n'est absolument pas pour qu'ils soient performants, ni donner de "bonnes" habitudes de programmation, cf. mon post du dessus.

  6. #46
    Expert Confirmé Avatar de jabbounet
    Homme Profil pro frederic frances
    Consultant informatique
    Inscrit en
    juin 2009
    Messages
    1 911
    Détails du profil
    Informations personnelles :
    Nom : Homme frederic frances
    Âge : 39

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : juin 2009
    Messages : 1 911
    Points : 2 965
    Points
    2 965

    Par défaut

    Bref ce que j'en retiens (et que je savais déja) c'est qu'il faut choisr un outil adapté a son besoin.

    un tournevis ne sers pas a enfoncer des clous par exemple.

  7. #47
    Inactif
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    octobre 2004
    Messages
    3 894
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : octobre 2004
    Messages : 3 894
    Points : 4 853
    Points
    4 853

    Par défaut

    Citation Envoyé par jabbounet Voir le message
    Bref ce que j'en retiens (et que je savais déja) c'est qu'il faut choisr un outil adapté a son besoin.
    Cela, c'est surtout après avoir appris à programmer correctement...

    Le sujet initial reste sur le langage d'apprentissage "idéal"... La plupart sont d'accord pour dire que le C n'est pas un "bon" langage de débutant, et qu'un langage d'un peu plus haut niveau est préférable.

    Le débat se situe surtout ici : "où s'arrêter ?". Pour ma part, je préfère prendre le premier palier correct, à savoir Pascal ou Ada, car "qui peut le plus peut le moins". D'autres préfèreraient que le développeur ignore le plus possible comment fonctionne sa machine... Ce que je trouve totalement aberrant pour ma part, au vu des nombreux domaines de l'informatique où un langage de bas niveau (demandant donc d'être familiarisé avec la "tripaille") est tout simplement obligatoire, et où les langages de haut niveau n'ont absolument pas leur place.

    Il est facile d'apprendre à se simplifier la vie. Apprendre à se la compliquer est bien plus difficile, et le plus souvent, ça ne marche d'ailleurs pas.

  8. #48
    Membre à l'essai
    Inscrit en
    juillet 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 21
    Points : 22
    Points
    22

    Par défaut

    Citation Envoyé par Mac LAK Voir le message
    Je connais les mêmes algorithmes, pour en avoir implémenté quelques uns d'assez velus. Les langages de haut niveau n'y sont absolument pour rien...
    De même que les langages de bas niveau n'y sont absolument pour rien dans le fait de savoir bien programmer...

    Citation Envoyé par Mac LAK Voir le message
    Tu as raison sur ce point : c'est pour faire un programme rapidement que ces langages existent. Mais ce n'est absolument pas pour qu'ils soient performants, ni donner de "bonnes" habitudes de programmation, cf. mon post du dessus.
    Soyons clair... de nos jours une vie ne suffit pas pour maitriser tous les aspects de la programmation sous toutes ses formes. Les langages haut niveau sont là pour nous éviter les mêmes difficultés que nos ancêtres qui devaient écrire en assembleur puis en C parce qu'il n'y avait rien au dessus.

    Ils sont là pour nous permettre d'accéder plus rapidement à l'algorithmique avancée sans avoir à passer des années sur des bases qu'il sera toujours important de comprendre mais qu'il n'est plus nécessaire de maitriser grâce aux langages de haut niveau.

    Du coup, puisque la question originale était de savoir ce qui est le plus utile à apprendre d'un point de vue pédagogique, je te pose la question: vaut-il mieux passer des années à apprendre tout plein d'algorithmes intéressants ou à maitriser la gestion de la mémoire en C ? Est-il plus intéressant d'apprendre le réseau en codant un petit client irc minimaliste en un après-midi avec les bonnes bibliothèques java ou en passant une semaine à envoyer des bits sur un cable ethernet en C ? Est-il plus gratifiant pour l'étudiant de faire en quelques dizaines d'heures de mini projet une appli complète Java EE qui te fait apprendre à la fois les architectures 3-Tier, le réseau, la programmation de serveur web, les threads et les clients mobiles, ou de passer la même quantité de temps à faire des fork() et envoyer des signaux entre tes processus en C ?

    La pédagogie, c'est pas seulement enseigner un maximum de connaissances, c'est aussi rendre les choses intéressantes et gratifiantes. Et une chose est sûre, si mon premier cours d'info avait été en C, je serai mathématicien aujourd'hui...

  9. #49
    Inactif
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    octobre 2004
    Messages
    3 894
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : octobre 2004
    Messages : 3 894
    Points : 4 853
    Points
    4 853

    Par défaut

    Citation Envoyé par ZoinX Voir le message
    De même que les langages de bas niveau n'y sont absolument pour rien dans le fait de savoir bien programmer...
    Ils t'aident quand même à comprendre plus finement ce qu'est un ordinateur et son fonctionnement.
    Un ordinateur ne fait QUE ce qu'on lui dit de faire. Encore faut-il le lui demander correctement, et ne lui demander QUE ce que l'on veut...

    Citation Envoyé par ZoinX Voir le message
    Du coup, puisque la question originale était de savoir ce qui est le plus utile à apprendre d'un point de vue pédagogique, je te pose la question: vaut-il mieux passer des années à apprendre tout plein d'algorithmes intéressants ou à maitriser la gestion de la mémoire en C ?
    C'est là un peu où ça pose un problème : les algos, je ne les "apprends" pas. Soit je les conçois, soit je les applique, mais je ne fais pas collection d'algo le soir en rentrant. L'informatique, c'est mon boulot, hein, pas un loisir...

    Citation Envoyé par ZoinX Voir le message
    La pédagogie, c'est pas seulement enseigner un maximum de connaissances, c'est aussi rendre les choses intéressantes et gratifiantes. Et une chose est sûre, si mon premier cours d'info avait été en C, je serai mathématicien aujourd'hui...
    La pédagogie, c'est d'abord de t'apprendre à APPRENDRE.
    Ce n'est pas le "savoir" que tu as en sortant de l'école qui va être le plus important, car soyons réalistes : par rapport à un professionnel expérimenté, ton "savoir" est une goutte d'eau. Le plus important, c'est : "seras-tu capable d'apprendre le métier de la société qui te paie ?".

    Relis mon post ci-dessus : je n'ai jamais été favorable au C comme premier langage. Mais je ne suis pas non plus favorable à Java, par exemple, dans ce rôle. Mais si tu veux être le plus adaptable possible, quelle que soit l'orientation que tu choisiras dans l'informatique, il vaut mieux être à la frontière des deux mondes qu'à l'extrême, et dans une branche inadaptée à ton employeur. Qui ne se gênera pas pour te remplacer, au passage...

  10. #50
    Expert Confirmé Sénior
    Avatar de Luc Hermitte
    Homme Profil pro Luc Hermitte
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    4 730
    Détails du profil
    Informations personnelles :
    Nom : Homme Luc Hermitte
    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 : 4 730
    Points : 7 790
    Points
    7 790

    Par défaut

    Citation Envoyé par Mac LAK Voir le message
    C et C++ supportent le ET, OU et NON logique, appelés "logical operators" (resp. "&&", "||" et "!").
    Les deux langages supportent également la même chose en binaire, aussi appelés "bitwise operators" (resp. "&", "|", "~").
    Je voulais dire qu'il y a des macros (?) en C++ qui permettent d'écrire "if (a!=1 and b>42)".
    Pour le xor, maintenant que j'y pense je me suis peut-être un peu trop avancé.


    Sinon, j'ai l'impression que vous voulez faire un procès d'intention à mac lak. Je lis qu'il vote pour Ada/Pascal. Pas pour C en premier langage.

    Et tout ceci me rappelle un truc : la mémoire n'est pas la seule ressource qu'il faille savoir gérer. Ce n'en est qu'une parmi tant d'autre.
    (Et il va vraiment falloir que je me procure http://www.research.att.com/~bs/programming.html ; le papier qui présente sa démarche me parait rejoindre certains des éléments de ce "débat")
    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.

  11. #51
    Membre à l'essai
    Inscrit en
    juillet 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 21
    Points : 22
    Points
    22

    Par défaut

    Citation Envoyé par Mac LAK Voir le message
    La pédagogie, c'est d'abord de t'apprendre à APPRENDRE.
    Ce n'est pas le "savoir" que tu as en sortant de l'école qui va être le plus important, car soyons réalistes : par rapport à un professionnel expérimenté, ton "savoir" est une goutte d'eau. Le plus important, c'est : "seras-tu capable d'apprendre le métier de la société qui te paie ?".

    Relis mon post ci-dessus : je n'ai jamais été favorable au C comme premier langage. Mais je ne suis pas non plus favorable à Java, par exemple, dans ce rôle. Mais si tu veux être le plus adaptable possible, quelle que soit l'orientation que tu choisiras dans l'informatique, il vaut mieux être à la frontière des deux mondes qu'à l'extrême, et dans une branche inadaptée à ton employeur. Qui ne se gênera pas pour te remplacer, au passage...
    Je suis tout à fait d'accord avec ça. Sauf que toutes les grandes entreprises d'informatique posent des questions d'algorithmique pendant leurs entretiens. Pourquoi ? Parce que c'est ce qui fait le plus défaut aux informaticiens de nos jours.

    Etre capable de coder dans un langage bas niveau ? Bien sûr que c'est important. Mais c'est tout à fait possible à apprendre sur le tas quand on connait un langage haut niveau et qu'on a une connaissance sommaire de son fonctionnement sous le capot.

    Etre capable de pondre de très bons algos qui n'ont pas une complexité exponentielle ? C'est bien plus important encore. Ton algo exponentiel en C, même sur-optimisé, il aura du mal à battre un algo en n log(n) en java... Et malheureusement, à en croire les entreprises, c'est ce point là qui fait bien plus défaut aux informaticiens d'aujourd'hui. Et il est également beaucoup plus dur à apprendre sur le tas pour qui n'a jamais fait d'algorithmique.

    C'est pour ça qu'il est beaucoup plus important d'apprendre à l'école l'algorithmique plutôt que l'optimisation des performances grâce aux langages bas niveau. Parce que l'algorithmique permet des gains de performances incomparables aux petites optimisations spécifiques à un langage.

    Quand tu postules dans une entreprise d'informatique assez généraliste, on veut savoir si tu es capable de sortir de bons algos. Si tu ne connais du tout le langage utilisé c'est pas grave, on sait que si t'es bon en algo le reste tu peux l'apprendre sur le tas assez facilement.

    L'algorithmique c'est justement la seule partie de l'informatique qu'il est très difficile d'apprendre en dehors de l'école (et je parle bien d'apprendre à trouver des algorithmes efficaces dans n'importe quelle situation, pas d'apprendre par coeur des algorithmes connus), et c'est aussi la plus complexe et la plus importante. Et coup de bol, c'est aussi la plus intéressante et la plus pédagogique, et celle qui donne en général le plus envie aux étudiants de se lancer dans l'informatique.

    Or tu auras du mal à justifier qu'un langage de bas niveau soit plus adapté (ou même aussi adapté) qu'un langage de haut niveau à l'apprentissage de l'algorithmique.

  12. #52
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro Nicolas Vallée
    Ingénieur d'études
    Inscrit en
    décembre 2005
    Messages
    10 217
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas Vallée
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2005
    Messages : 10 217
    Points : 17 565
    Points
    17 565

    Par défaut

    Citation Envoyé par ZoinX Voir le message
    C'est pour ça qu'il est beaucoup plus important d'apprendre à l'école l'algorithmique plutôt que l'optimisation des performances grâce aux langages bas niveau. Parce que l'algorithmique permet des gains de performances incomparables aux petites optimisations spécifiques à un langage.
    je ne vois où il a été dit qu'on enseignait un langage "bas niveau" pour ses possibilités d'optimisations localisées... à moins que tu ne connaisses que des cryptographes enseignant pour des débutants, j'ai du mal à croire qu'un seul autre informaticien avance cet argument
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  13. #53
    Membre expérimenté Avatar de vg-matrix
    Inscrit en
    février 2007
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Âge : 25

    Informations forums :
    Inscription : février 2007
    Messages : 1 215
    Points : 526
    Points
    526

    Par défaut

    Point de vue synthaxe et lisibilité, j'opte aussi pour le Pascal il déroute moins les débutants tant dis que le C est un vrai casse tête surtout quand on plante

    Je ne suis pas un pro pour l'instant mais si je suis appelé à initier des programmeurs, je commencerais par le Pascal c'est sûr.
    Il est difficile de retrouver ses erreurs lorsqu'on est persuadé que son code est juste...

    Groupe des développeurs ivoiriens

  14. #54
    Membre expérimenté Avatar de vg-matrix
    Inscrit en
    février 2007
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Âge : 25

    Informations forums :
    Inscription : février 2007
    Messages : 1 215
    Points : 526
    Points
    526

    Par défaut

    C'est vrai que pour certains paramètres comme la portabilité du code, il y aura un problème mais pour une simple initiation à la programmation ça passe.
    Il est difficile de retrouver ses erreurs lorsqu'on est persuadé que son code est juste...

    Groupe des développeurs ivoiriens

  15. #55
    Membre Expert Avatar de chaplin
    Inscrit en
    août 2006
    Messages
    1 215
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 1 215
    Points : 1 574
    Points
    1 574

    Par défaut

    J'ai commencé avec du FORTRAN puis du C, calcul numérique pour l'un, infographie pour l'autre. J'ai privilégié le "métier" à l'outil, pour assimiler ce dernier.

    J'aime bien les exemples pédagogiques d'alex_pi à la syntaxe O'CAML donnant encore plus de recul sur l'approche d'un problème.

    Mais, l'approche "mettre les mains dans le cambouis" avec le C, ça forge aussi le caractère, surtout pour les (liste simples/doubles) pointeurs et la gestion de la mémoire, sans compter la syntaxe, disons au sens "adaptation". En même temps, il faut être aussi extrèment rigoureux dans ce langage pour ne pas faire n'importe quoi.

  16. #56
    Expert Confirmé Avatar de jabbounet
    Homme Profil pro frederic frances
    Consultant informatique
    Inscrit en
    juin 2009
    Messages
    1 911
    Détails du profil
    Informations personnelles :
    Nom : Homme frederic frances
    Âge : 39

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : juin 2009
    Messages : 1 911
    Points : 2 965
    Points
    2 965

    Par défaut

    Soyons clair... de nos jours une vie ne suffit pas pour maitriser tous les aspects de la programmation sous toutes ses formes. Les langages haut niveau sont là pour nous éviter les mêmes difficultés que nos ancêtres qui devaient écrire en assembleur puis en C parce qu'il n'y avait rien au dessus.
    il me semble que nos ancetres ont commencé par le fortran. et ce bien avant le C


    Point de vue synthaxe et lisibilité, j'opte aussi pour le Pascal il déroute moins les débutants tant dis que le C est un vrai casse tête surtout quand on plante
    la lisibilité va surtout dépendre de la façon de le developpeur va mettre en forme son code, du choix des nom de ces variable et du bon usage des commentaires qu'il fera. et cela indépendament du langage.

  17. #57
    Membre expérimenté Avatar de vg-matrix
    Inscrit en
    février 2007
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Âge : 25

    Informations forums :
    Inscription : février 2007
    Messages : 1 215
    Points : 526
    Points
    526

    Par défaut

    Citation Envoyé par chaplin Voir le message
    En même temps, il faut être aussi extrèment rigoureux dans ce langage pour ne pas faire n'importe quoi.
    C'est bien ce qui manque très souvent dans l'enseignement du langage C.
    Il est difficile de retrouver ses erreurs lorsqu'on est persuadé que son code est juste...

    Groupe des développeurs ivoiriens

  18. #58
    Inactif
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    octobre 2004
    Messages
    3 894
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : octobre 2004
    Messages : 3 894
    Points : 4 853
    Points
    4 853

    Par défaut

    Citation Envoyé par ZoinX Voir le message
    Je suis tout à fait d'accord avec ça. Sauf que toutes les grandes entreprises d'informatique posent des questions d'algorithmique pendant leurs entretiens. Pourquoi ? Parce que c'est ce qui fait le plus défaut aux informaticiens de nos jours.
    Je ne sais pas pour toi, mais pour ma part, j'avais des cours d'algorithmique qui n'étaient sûrement pas faits en même temps que les cours de programmation... Les deux choses n'ont rien à voir, du moins dans un premier temps.

    Citation Envoyé par ZoinX Voir le message
    Mais c'est tout à fait possible à apprendre sur le tas quand on connait un langage haut niveau et qu'on a une connaissance sommaire de son fonctionnement sous le capot.
    Et t'as alors un mauvais développeur "bas niveau"... Le genre qu'on ne peut laisser seul, et qui fait plus le boulet que le collègue. Que crois-tu ? Que c'est "facile" à apprendre, qu'on peut le faire "sur le tas" comme ça, en un clin d'oeil ?
    Non : sur le tas, à partir de théories de langages de haut niveau, tu n'apprends pas à développer, mais soit à bidouiller pour franchir les barrières syntaxiques, soit à faire des usines à gaz. En général, c'est les deux en même temps.

    Citation Envoyé par ZoinX Voir le message
    Et coup de bol, c'est aussi la plus intéressante et la plus pédagogique, et celle qui donne en général le plus envie aux étudiants de se lancer dans l'informatique.
    Tiens, à ce sujet, tu remarqueras que la syntaxe usuelle (=la plus courante) des algos est extrêmement proche du Pascal/Ada... Tiens donc...


    Je n'ai JAMAIS dit qu'il fallait apprendre via un langage de bas niveau, AU CONTRAIRE. Pour moi, il est important d'apprendre avec un langage médian, justement, afin de pouvoir aller aussi bien vers le bas niveau que vers le haut niveau, sans avoir de mauvaises habitudes pour aucun des deux domaines.

    La défense du C/C++ que je fais, c'est afin de montrer que si ce ne sont pas des langages "visibles", ils restent néanmoins essentiels à tout point de vue, et forment une très vaste partie de l'informatique... Certes, c'est plus du marché caché qu'autre chose, mais cela reste quelque chose d'énorme.

    Le monde du temps réel, de l'embarqué et des optimisations, c'est un monde invisible pour la plupart des gens. Reste quand même le fait que sans eux, ton langage de haut niveau serait sur du papier uniquement.

    Et qu'un informaticien entre les deux "mondes" sera bien plus apte à se spécialiser vers l'un ou l'autre qu'un pseudo-spécialiste avec un diplôme à peine sec pour aller de l'autre côté... Et cette adaptabilité, tu l'obtiens en n'étant ni trop haut, ni trop bas niveau pendant l'apprentissage.

  19. #59
    Membre Expert Avatar de chaplin
    Inscrit en
    août 2006
    Messages
    1 215
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 1 215
    Points : 1 574
    Points
    1 574

    Par défaut

    Citation Envoyé par vg-matrix Voir le message
    C'est bien ce qui manque très souvent dans l'enseignement du langage C.
    Je crois que c'est valable pour n'importe quel langage, c'est pour cela qu'un(des) bouquin(s) de référence sur un langage, c'est pas du luxe. Pour le C#, ils ont compris .

    Citation Envoyé par Mac LAK
    Je n'ai JAMAIS dit qu'il fallait apprendre via un langage de bas niveau, AU CONTRAIRE. Pour moi, il est important d'apprendre avec un langage médian, justement, afin de pouvoir aller aussi bien vers le bas niveau que vers le haut niveau, sans avoir de mauvaises habitudes pour aucun des deux domaines.


    EDIT: pour les matheux purs, on peut aussi comprendre leur démarche (par rapport à leur niveau).

  20. #60
    Rédacteur
    Avatar de SpiceGuid
    Homme Profil pro Damien Guichard
    Inscrit en
    juin 2007
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Nom : Homme Damien Guichard
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : juin 2007
    Messages : 1 574
    Points : 2 707
    Points
    2 707

    Par défaut

    Citation Envoyé par alex_pi
    Disons autrement : le changement de paradigme et l'élévation dans les niveau d'abstraction me semble demander plus d'effort que le détail technique de la gestion manuelle de la mémoire.
    C'est une question de parcours personnel: ce qui coûte le plus d'effort c'est la formation initiale.

    Pour toi la POO c'est enfantin (l'héritage c'est du sous-typage sur les enregistrements) mais si tu vas sur les forums Delphi/Java/C# tu verras que la POO c'est vraiment difficile. Tout paraît plus facile quand on est déjà très bon.

    C'est la même chose pour le bas niveau, si on commence par là il faut suer pour le maitriser.

    Le bas niveau c'est grisant, le haut niveau c'est gratifiant, ce sont deux motivations différentes, il y a autant de compétence à acquérir des deux côtés et la tienne n'est pas plus primordiale que celle d'un autre.

    Je comprends d'où vient ton idée: tu pense que C est pauvre en types composites tandis que Caml est pauvre en type primitifs. Mais que ça n'est pas problématique puisque la vraie compétence c'est de savoir bien typer. Selon moi c'est aussi problématique que l'inverse: bien typer c'est la partie lisibilité/qualité/preuve, l'autre moitié, la partie programme/performance/bindings est tout aussi importante à mes yeux.

    Citation Envoyé par alex_pi
    Parce que moi, quand je regarde un mec qui a débuté en bel impératif bien main dans le cambouis et qui tente de faire du Caml ou du Haskell, le résultat n'est pas mauvais, il est catastrophique. Parce qu'ils pensent optimisationnnnnnnn avant de penser correction et lisibilité de l'algo.
    On ne peut pas programmer en fonctionnel sans s'intéresser à la preuve. Ce qui fait le succès des méthodologies POO c'est que les programmeurs veulent plus de garanties mais sans apporter plus de preuves. Le "mec qui a débuté en impératif" veut continuer à écrire des programmes, il n'a pas du tout envie d'un typage élaboré qui l'oblige à écrire des pseudo-preuves.
    Quelqu'un qui sait imbriquer des portées lexicales fait un très bon programmeur POO, il n'a plus rien à apprendre et il le sait. La POO c'est mettre les fonctions dans la même portée (extensible) que les variables. Un programmeur POO n'a pas besoin de (et ne veut pas) parler d'inclusion ou de sous-typage. Il aura d'ailleurs du mal à passer d'un sous-typage sur les enregistrements à, par exemple, un sous-typage sur les modules.
    Du même auteur: le cours OCaml, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •