|
Publicité ' | ||||||||||||||||||||||||
|
|
#21 |
|
Membre éprouvé
![]() |
pour vos interventions, à vrai dire j'ai fais un tour du côté de l'ADA et je valide vos avis mais vu qu'il est si je peux me permettre de dire ainsi " l'amélioration du Pascal " il est donc claire que vous optez pour le Pascal (en prenant en compte la majorité des avis actuels).C'est vrai que débuter en C doit s'accompagner d'une grande rigueur car je me suis aperçu qu'en cherchant à faire fonctionner les codes à tout prix nous sommes souvent amenés à gribouiller un peu. Résultat on viole totalement la norme. Toute fois j'ai l'impression que le C a peu de partisans
__________________
Il est difficile de retrouver ses erreurs lorsqu'on est persuadé que son code est juste... Groupe des développeurs ivoiriens |
|
|
00
|
|
|
#22 |
|
Expert Confirmé
![]() frederic francesConsultant informatique Inscription : juin 2009 Messages : 1 848 ![]() |
disons que il ne faut pas le voir en premier car il a tendance a donner de mauvaises habitudes.
|
|
|
00
|
|
|
#23 | |
|
Expert Confirmé Sénior
![]() Développeur informatique Inscription : novembre 2006 Messages : 4 445 ![]() |
Citation:
je vais te répondre d'un point de vue pratique : oui il vaut mieux commencer par Pascal qui est très structuré parfaitement académique. Maintenant avec des concepts académiques et de la prose en alexandrins on ne fait pas grand chose. il y a plus de codes sources en C/C++ qu'en Pascal quand tu fais de la programmation Windows ou appeler des API Windows ( et tu seras amené un jour à en faire ) le SDK est en C , faire le portage vers le Pascal n'est pas forcément aisé.Même pour un projet avec ERP auquel j'ai participé il y avait des appels d'API Windows. des SDK comme ceux de Direct X sont en C++. Pareils pour de nombreux autres SDK surtout ce qui touche le bas-niveau , acquision de données temps-réel.J'avais bossé sur un projet multimédia avec une carte de réception satellite le SDK n'était exclusivement en C++ Ceci dit Delphi reste un superbe outil pour faire notamment des applis de gestions voire d'autres types d'applis comme les jeux. |
|
|
|
00
|
|
|
#24 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : août 2003 Messages : 4 522 ![]() |
Citation:
L'essentiel des cours de C pour débutants vont simplifier quantité de choses et au final on fait semblant de programmer au pays magique où les erreurs n'existent pas (pas de tests sur les retours de fonctions, des casts parce que cela permet de faire tomber le programme en marche, ...). Je ne vois nulle bonne habitude là dedans. Bien au contraire. Ada est très bien pour un public futur-pro. Delphi (évolution de Pascal) sera plus "sympa" pour des amateurs. Maintenant, il y a une mode à abandonner ces langages au profit de langages comme le Python. Ne connaissant pas grand chose de ce dernier, je me contente de rester dubitatif.
__________________
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. |
|
|
|
00
|
|
|
#25 |
|
Expert Confirmé
![]() frederic francesConsultant informatique Inscription : juin 2009 Messages : 1 848 ![]() |
python c'est rigolo mais faut pas casser les indentations....
|
|
|
00
|
|
|
#26 | |
|
Membre éprouvé
![]() |
Citation:
__________________
Il est difficile de retrouver ses erreurs lorsqu'on est persuadé que son code est juste... Groupe des développeurs ivoiriens |
|
|
|
00
|
|
|
#27 |
|
Invité(e)
![]() Messages : n/a ![]() |
Puisque je déteste les métaphores moisies, je vais en faire une : conseiller à un débutant en programmation de commencer par l'assembleur et le C pour "comprendre comment ça marche", c'est un peu comme si à quelqu'un qui demande comment apprendre à conduire, on lui répondait "Commence par démonter la voiture, apprendre à faire des vidanges, changer un carburateurs, puis conduis une voiture où pour démarer il faut faire toucher des fils, pour accélérer il faut rêgler manuellement l'ouverture de la valve d'essence, et comme ça tu pourras vraiment savoir conduire".
Je trouve ça super con :-\ Quand on veut débuter, on commence par des choses simples, qui marchent, genre une voiture avec direction assistée et qui ne calle pas trop facilement. Un langage avec GC est le minimum vital, et ne pas avoir à se prendre la tête avec des pointeurs est indispensable. C'est après seulement, quand on s'est familiarisé avec les notions de bases de boucles, de variables, de fonctions etc. qu'on peut commencer à mettre les mains dans le cambouis et à se demander comment ça fonctionne sous le capot. Bref, pour commencer, fuir le C, et pas l'inverse |
01
|
|
|
#28 | |
|
Inactif
![]() Inscription : octobre 2004 Messages : 3 894 ![]() |
Citation:
Comprendre la machine, sans aller trop loin... Pour reprendre ton analogie, à l'auto-école, t'as en général une voiture à boîte manuelle et non pas automatique, tu n'as pas d'ordinateur de bord, de GPS, ni d'assistance au créneau. L'assistance que tu as, c'est en général sur la direction, et le moniteur à côté, point barre. Et si ton moniteur est compétent, il t'apprendra en plus à changer une roue, une ampoule et à faire le plein et les niveaux. Libre à toi après d'acheter une voiture "toute assistée" et de payer quelqu'un pour l'entretenir, ou d'acheter une épave de 1950 et de la retaper toi-même. Au moins, tu le feras en connaissance de cause, car tu auras touché un peu aux deux mondes... Bref, un langage avec des pointeurs, mais non omniprésents. Avec une gestion mémoire manuelle, mais sans cas vicieux de libération / fuite. Strict et rigide pour éviter d'apprendre à patcher plus qu'à programmer. Mais sûrement pas un langage à typage dynamique et/ou GC automatique, en tout cas. Ni du C ou de l'assembleur, d'ailleurs : débuter par l'ASM, ça allait dans les années 80, quand il n'y avait pas grand-chose d'autre. Actuellement, c'est un non-sens. |
|
|
|
10
|
|
|
#29 |
|
Invité(e)
![]() Messages : n/a ![]() |
Je ne comprends pas... D'un coté, tu es contre le GC parce que ça inciterait à trop se reposer sur la machine, mais de l'autre, tu veux du typage statique. Ca n'insiterait pas à ne pas réfléchir et à juste faire confiance au typeur ?
Je n'ai *jamais* compris l'intéret d'emmerder le débutant avec une gestion manuelle de la mémoire. La moralité, ça va être qu'il aura la moitié de ses programmes où il se prendra des crash (ceux où il aura fait des free au mauvais endroit) et l'autre moitié avec des mem-leak à tout va. Et au final il préferera la seconde catégorie parce qu'au moins ça ne plante pas. Quand on voit le faible nombre de programmeur C qui utilisent des outils comme Valgrind, et le nombre incroyable de mem leak dans les programmes de tous les jours, j'avoue que ça me fait douter sur le fait que "programmer sans GC fait qu'on fait plus attention à la gestion des ressources".. Et en plus, ça interdira au débutant un paquet d'algorithme ou de paradigme parce qu'il n'arrivera pas à faire une gestion manuelle de la mémoire là dessus. Est ce que devoir avoir compris les magic pointeur avant de coder est vraiement indispensable... Je ne vois vraiment pas ce que pour un débutant, avoir à gérer sa mémoire à la paluche apporte sur le plan pédagogique |
01
|
|
|
#30 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : août 2003 Messages : 4 522 ![]() |
Il le faut, mais pas dessuite.
Cela peut être fait avec un second langage, ou tardivement dans des langages comme Pascal/Ada.
__________________
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. |
|
|
00
|
|
|
#31 | |||
|
Expert Confirmé
![]() frederic francesConsultant informatique Inscription : juin 2009 Messages : 1 848 ![]() |
Citation:
Ce n'est pas tout de faire de l'algorithme, il faut aussi comprendre comment marche la machine et l'os qui est dessus, sinon on risque de faire de choses qui vont heurter son fonctionnement normal et au final avoir des trucs qui rament. sans compter que c'est un peu l'usine pour faire ton programme tu te retrouve vite a assembler un tas de composants (avec tout un tas d'acronyme ejb, struts, spring, jboss, pojo....) bref il faut s'acheter un dictionnaire français/java pour savoir ce que l'on fait. et ensuite tu te rend parfois compte que tu aurais été plus vite en le codant toi même et que cela aurai mieux répondu a ton besoin et ce surtout si tu débute ou l'on te confie des truc simple au début Citation:
et tu commence doucement a expliquer ce qu'est une mémoire comment elle fonctionne et qu'elle a ses limitation et ensuite ce qu'est une allocation dynamique. Citation:
Ceci dit ce n'est surtout pas parceque tu as un GC que tu ne dois pas t'occuper de ta mémoire, ce serai un erreur. j'ai déjà eu des soucis de memoire avec des programme java de gens oubliant de dereferencér des objets (mem-leak) ou des personnes se retrouvant a dé-référencer trop tôt des objets et avoir un tas de nullpointer exeption (free)..... L'idée que l'on a pas a s'occuper de la mémoire en java est selon moi un peu fausse. |
|||
|
|
00
|
|
|
#32 | ||||||||
|
Inactif
![]() Inscription : octobre 2004 Messages : 3 894 ![]() |
Citation:
Citation:
Citation:
J'ai même vu des horreurs sans nom, dans le genre classe C++ complexe sans destructeur implémenté, alors que la classe allouait à tout va !! Et, ô surprise, c'était un fervent défenseur du Java... Citation:
De l'autre côté, il y a des habitudes, notamment les bonnes, à prendre dès le départ. Sinon, les développeurs ne les prennent JAMAIS, parce que c'est "trop contraignant". Parmi ces habitudes, on a :
Citation:
Ceux ayant débuté par des langages plus stricts sans être trop lourds (Pascal, Ada en tête de liste) ont en général bien moins de mauvaises habitudes... Ou, pour être plus précis, leurs erreurs d'allocation/libération restent dans des limites "acceptables", c'est à dire qu'elle ne crashent pas le programme dans les 10 minutes suite à une fuite mémoire plus proche de la chute d'eau que du robinet qui goutte. Citation:
Citation:
Or, à force d'apprendre le développement "façon assisté", tu vois de moins en moins de développeurs réellement compétents dès qu'il s'agit de développement bas niveau, temps réel ou embarqué... Certes, ils savent faire de belles IHM en Java et ouvrir tout plein de communications TCP/IP en même temps, ou se connecter à une BDD. Mais ils sont infoutus de faire un système d'acquisition temps réel, un driver ou un module exigeant des performances sévères. Citation:
Ah, on me souffle que c'est pour leur en donner l'habitude, parce que ça ne devient pas un réflexe quand c'est appris "trop tard"... Tiens donc...
|
||||||||
|
|
10
|
|
|
#33 |
![]() ![]() Jean-Marc Blanc Inscription : avril 2007 Messages : 2 838 ![]() |
Bonjour à tous.
Je pense que tout dépend du type d'informaticiens qu'on veut former:
__________________
Calcul numérique de processus industriels Formation, conseil, développement Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux) |
|
|
00
|
|
|
#34 | |
|
Inactif
![]() Inscription : octobre 2004 Messages : 3 894 ![]() |
Citation:
Un langage de trop haut niveau est néfaste pour débuter : cela ne donne pas les bonnes habitudes, et le mot "rentable" dépend beaucoup du domaine d'activité (dans le mien, un spécialiste Java est juste un boulet dans 99% des cas par exemple). De même, démarrer par un langage de trop bas niveau est tout aussi néfaste, car cela revient souvent à apprendre à bidouiller plutôt qu'à développer. Il faut un juste milieu. |
|
|
|
10
|
|
|
#35 |
|
Expert Confirmé
![]() frederic francesConsultant informatique Inscription : juin 2009 Messages : 1 848 ![]() |
Clair l'assembleur nécessite un peu de savoir comment est fait un microprocesseur et c'est un peu trop pointu pour débuter a mon avis.
|
|
|
00
|
|
|
#36 | |
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
Bien au contraire, son typage m'a donné un paquet de bonnes habitudes comme éviter d'être tenté toutes les deux minutes de faire des casts ultra sordide, ou encore m'inciter à utiliser les rares possibilités offerte par le système de type des autres langages. Et le fait que ce soit "haut niveau" m'a habitué à d'abord penser aux algorithmes, à leur complexité, à la qualité des structures de données, etc, avant de me demander si je vais pouvoir échanger le contenu de deux variables en 2 ou 3 instructions comme je vois tellement de débutant en C faire sur ce forum (et de moins débutants), ou comment optimiser le prélude d'une boucle au lieu de m'intéresser à son corps. Débuter avec un langage de haut niveau permet de se concentrer sur ce qui est important plutôt que de se prendre la tête inutilement avec des détails d'implémentation et de gestion mémoire sans intérêt. Il est quand même nettement plus intéressant (et finalement valorisant) de comprendre ce qu'est une fonction, une boucle (même si c'est pas indispensable:p), une liste, un tableau, un arbre, un tas, etc, avant d'avoir à se demander ce que peut valoir le code d'erreur retourné par un malloc qui foire, d'avoir à chercher pendant des heures d'où vient ce signal 11 qu'on s'est pris dans les dents ou comment se pointeur a pu se retrouver à 0 avant qu'on le dé-référence. Je reste vraiment persuader qu'un langage de haut niveau est beaucoup plus pédagogique que le C, mais ceci est un troll sans fin |
|
01
|
|
|
#37 | |
|
Inactif
![]() Inscription : octobre 2004 Messages : 3 894 ![]() |
Comme je l'ai déjà dit plusieurs fois, le langage initial permet de prendre de bonnes habitudes dès le départ. Ni plus, ni moins.
Que la libération des ressources devienne un réflexe et non pas une corvée. Que l'on pense ses algorithmes proches de la machine au lieu d'essayer de faire comprendre l'humain au CPU (ce qui en général finit en usine à gaz...). Que l'on sache ce qu'EST une machine, et savoir comment elle fonctionne, plutôt que de systématiquement croire que c'est une entité maléfique devant être debuggée par un chaman. Et une fois le "mauvais pli" pris (souvent, hélas, pendant les études), c'est trop tard : le "développeur" n'a jamais ces réflexes, ce qui coûte du temps de relecture, correction, ou pire, maintenance. Ou d'investir pour pallier des erreurs qui ne devraient JAMAIS être commises. Citation:
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... |
|
|
|
10
|
|
|
#38 | |||||
|
Expert Confirmé
![]() frederic francesConsultant informatique Inscription : juin 2009 Messages : 1 848 ![]() |
Citation:
Code :
Code :
Autrement quid d'un langage de script pour démarrer ? |
|||||
|
|
00
|
|
|
#39 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : août 2003 Messages : 4 522 ![]() |
En Pascal, on va utiliser = et <> (et := pour l'affectation). Et il est un peu plus verbeux avec ses begin/end
En Ada, on va utiliser = et /= (et := pour l'affectation) 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.
__________________
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. |
|
|
00
|
|
|
#40 |
|
Expert Confirmé
![]() frederic francesConsultant informatique Inscription : juin 2009 Messages : 1 848 ![]() |
je ne sais plus cela fait tres longtemps que je n'ai pas fait d'ada....
avec le temps on enjolive un peu les choses mais avoir 'then else endif' à la place de '{ } else { }' me semble déjà plus lisible. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com