En écoutant un informaticien, j'ai appris à ne pas toujours fait confiance à la machine et je l'ai constaté en pratique, c'est choquant au début, on devient méfiant après coup.
EDIT: Au fait, pourquoi faut-il défragmenter les disques durs ?
en tout cas prendre un language ou il y'a de l'arithmétique signée et non signé, parce que j'en ai marre de l'expliquer aux développeurs java
si on te l'a expliqué un jour ce ne ser pas génant pour faire du java en suite.
si on ne te l'a jamais expliqué ce sera plus génant pour ne pas faire de java ensuite
A vrai dire ça devient difficile à comprendre. Pourrions nous rester dans la comparaison du C par rapport au Pascal pour un débutant s'il vous plaît ?
personnellement je ne recommande pas C a un débutant, en tout cas pas au tout début, ce langage est un peu trop permissif , il vaux mieux commencer par un langage plus strict (ada/pascal) histoire de mettre les bonnes habitudes en place, et ensuite éventuellement lâcher la bride et partir sur C un fois que la base est acquise.
le passage par C serait pour permettre de mettre en place quelques notions lié au système.
truc que tu ne peux pas faire en ada (en tout cas pas sans avoir indiquer comment le faire)
c'est tout con, mais cela va te dire dès la compile que tu essaie de mettre mélanger les choux et les carottes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int a; char b; a = 5; b = a;
C'est difficile à comprendre parce que certains n'arrivent pas à voir la différence entre Pascal/Ada et du C... Et qu'ils sont persuadés que si on gère la mémoire à la main, c'est forcément du "bas niveau".
Chose totalement fausse, mais encore faudrait-il savoir ce que sont ces langages stricts que sont Pascal ou Ada pour le comprendre, ou comprendre ce qu'ils apportent à la compréhension d'un algorithme et du fonctionnement d'une machine...
Je répondrais quand tu auras fini ton troll, et que tu auras lu / répondu à ce que je soutiens depuis le début : débuter en position médiane et non pas à trop haut (ou trop bas) niveau.
Cela signifie aussi ne pas zapper la moitié des posts.
Ah mais "le milieu, c'est merveilleux", on est bien d'accord hein. Le seul hic, c'est qu'on n'est pas d'accord sur ce qu'est le haut et le bas, donc on ne peut pas être d'accord sur où est le milieu.
Pour moi, trop haut niveau pour un débutant, c'est Haskell et Prolog, parce que dans un cas, il y a des barrières trop importantes avant de pouvoir faire ce que l'on veut (typiquement les monades), et dans l'autre parce que c'est vraiment trop bizarre.. Scala risque de piquer un peu aussi (quoi que).
Trop bas pour un débutant, ce sont les langages qui risque de faire apparaitre trop de bug liée à l'implémentation plutôt qu'à l'algorithme, ou à l'idée. Les débutants font bien assez d'algo faux pour les occuper un paquet d'heures à débugger. Donc à partir du moment où la gestion de la mémoire se fait à la main, où il n'y a pas de tests dynamique de dépassement de tableau, etc, je considère que c'est du trop bas niveau pour un débutant.
Après, qu'est ce que le juste milieu ? Alors bon, mon coté intégriste dirait "OCaml", parce que super chouette pour l'algo (je persiste à penser que quand on dit qu'un arbre, c'est soit une feuille, soit un noeuds avec deux fils qui sont des arbres, l'écriture
est quand même parmis les plus naturelle qu'on puisse imaginer) et que le typeur te maintient sur le droit chemin (à coup de pied au cul s'il le faut). Mais bien sûr, ne pas s'attaquer directement aux foncteurs, et laisser les objets et les variants polymorphe pour bien plus tard !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 type arbre = | Feuille | Noeud of arbre * int * arbre
Mais bon, j'ai commencé avec VB, et ça ne s'est pas si mal passé que ça, alors pourquoi pas du Java (ok, c'est verbeux, mais pour débuter, c'est pas forcément plus mal. Par contre, s'interdire d'utiliser les 4269666 framework existants...), du C# (bouuuuh, ça pue s'est pas libre ! Mais c'est moins verbeux que java Mais là pareil, se limiter dans son utilisation des librairies .NET à foison), pourquoi pas du F# (merde, mon coté intégriste revient).
Je ne suis pas un fervent défenseur des langages dynamiquement typé comme scheme, python on ruby pour débuter parce que je pense que se prendre des baffes du compilo quand on fait des conneries, c'est une bonne approche pédagogique (un peu comme il vaut mieux une bonne exception de sortie de bornes qu'un bug silencieux). Mais ça peut être bien pour le coté ludique de la chose (je parle là pour de jeunes débutant par exemple, genre ado, qui on plus envie de bidouiller un truc dans leur coin "pour voir").
Après, pour continuer ? Bah, aller se frotter une fois où deux à des langages de Véritables, genre le C, histoire de voir. Mais pour moi, ce n'est pas ça qui apprendra "ce qu'il se passe vraiment". Pour ça, rien de tel qu'un bon cours d'architecture des ordinateurs (c'est quoi un proc, et il se passe quoi dedans ? C'est quoi un registre, une pile, un tas ?) et un de compilation (les même trois dernières questions, plus C'est quoi une fonctions ? C'est compilé comment ? C'est quoi de l'inlining ? De l'élimination de code mort ? C'est quoi une allocation de registre ? Bref, quand est ce que je peux écrire du code propre, même s'il doit aller super méga vite, parce que de toutes façons ça ne changera rien une fois optimisé. Et puis aussi "C'est quoi un GC", histoire de démystifier la chose).
Voilà. Alors pour Pascal et Ada, je répète, je ne les connais globalement pas, donc je ne sais pas dans quelle catégorie les mettre.
Bon alors, c'est quoi l'intérêt d'une macro ?
Et voilà très exactement pourquoi tu ne sais pas ce qu'est le "milieu"... En Pascal (inclus Delphi) et en Ada, tu as des contraintes machine pouvant être lourdes, si tu pousses les langages dans leur retranchements. En dehors de ça, c'est plutôt des langages de haut niveau... Qui restent capables, au besoin, d'effectuer des accès au niveau bit et de taper dans du bas niveau.
Voilà en quoi ils sont supérieurs, d'un point de vue pédagogique et apprentissage de la programmation, à la plupart des autres langages. Ils permettent tous les deux une approche procédurale ou objet (là aussi, "au choix"), et dans une très petite mesure ils permettent même une approche fonctionnelle en distinguant nettement les "fonctions" des "procédures". Certes, c'est pas du Lisp non plus côté approche fonctionnelle, c'est évident. Mais ça donne un petit avant-goût... Juste de quoi ne pas se sentir totalement paumé quand on approche un vrai langage fonctionnel.
J'aurais tendance à dire qu'ils sont même supérieurs à "tous" les autres langages d'apprentissage, pour ma part, mais c'est sûrement parce ce que je n'ai pas d'autres exemples de langage aussi polyvalents tout en étant aussi rigoureux. Et surtout, ils ne sont pas enfermés dans un paradigme particulier...
VB pourrait (presque) être un bon candidat, s'il permettait l'accès bas niveau autrement que via des fonctions externes (DLL), et s'il n'avait pas de type Variant ni de déclarations implicites... Pour ces raisons, il est pour moi plus proche d'un langage de script (et donc de haut niveau) que d'un langage médian.
Au fait : depuis Turbo Pascal (et jusqu'à Delphi), il existe des vérifications d'étendue et de dépassement à l'exécution...
De plus, la mémoire est contrôlée systématiquement par le runtime qui la libère systématiquement à la fin du programme, hors kill violent par l'OS bien entendu (mais là, aucun langage ne permet d'y survivre, donc...), ce qui permet éventuellement d'avoir du code un peu crasseux et qui ne provoque pas de fuite mémoire au niveau système (la fuite au niveau processus étant par contre bien présente, évidemment). Ceci existait déjà sous DOS, à l'époque où les programmes C avaient plutôt tendance à provoquer le reboot de la machine après une fuite mémoire...
Il est également possible d'implémenter des smart pointers en Pascal comme en Ada... Et donc d'avoir une libération automatique des données inutilisées, ce qui est un GC "light", mais un GC quand même.
petit résumé des épisodes précédents :
- même parmi les utilisateurs professionnels de C et C++, peu les conseille en premier langage
- certains (MacLak, gorgonite, etc) penchent pour un langage encore un peu "bas niveau" mais rigoureux à la compilation... Pascal et Ada semblent bien illustrés cette position
- certains sont pour un langage beaucoup plus haut niveau et expressif en terme de typage... OCaml, langage fonctionnel à typage statique inféré, est cité en exemple par alex_pi
qui ai-je oublié ?
quelqu'un a-t-il d'autres propositions ?
pourriez-vous lister les avantages/inconvénients de ces alternatives (ou d'une nouvelle alternative), voire les illustrer d'exemples ?
à tous
Avec la crise les avantages et inconvénients par rapport à l'emploi peut-être intéressant et susciter un peu d'intérêt. Je sais qu'on peut interpréter les chiffres et statistiques à sa sauce mais le ratio entre ceux qui connaissent un langage et ceux qui le pratiquent dans un cadre professionnel c'est autre chose.
Pour le C par exemple je ne suis pas sûr au vu du nombre de personne "sachant programmer" avec ce langage et le nombre de poste réel que le ratio soit très important notamment parce que comme c'est souvent dit on l'utilise pour des cas qui nécessite d'autres connaissances que l'informatique (le génie civil ou militaire, la météorologie, l'embarquer de manière générale etc)
Langage pour débuter : en entreprise vous n'avez pas le choix la plupart du temps et pour l'apprentissage j'ai commencé en autoformation par le C++ puis vu en formation continu avec le C et Ada et toute leur bande de copain vous savez Java, XML, PHP... Professionnellement je fais du Delphi, entre autres
C'est surtout, comme je l'ai déjà dit, que trouver un "bon" programmeur C est plutôt difficile... C'est pas les postes qui manquent, ce sont les gens compétents pour les remplir.
C'est toutefois principalement du marché caché, donc inutile d'éplucher votre journal de petites annonces : ça marche principalement par cooptation ou embauche après une période d'assistance technique / intérim, et inutile de préciser qu'en général personne ne se grille dans sa propre boîte pour faire embaucher quelqu'un qui n'a pas les compétences requises...
Bemol : pour moi, le but du débat, c'est d'aider un débutant encore à l'école (ou en reconversion à la limite), qui fait ça en dehors d'un contrat professionnel afin de pouvoir intégrer cette branche. D'où le fait que je préconise d'apprendre via un langage médian, afin de pouvoir ratisser large côté petites annonces sans passer pour un charlot.
Ce que tu dis est vrai, mais beaucoup de langages que tu cites, bien que très utilisés, sont je pense peu propices à former quelqu'un au développement... Je trouve PHP très sympa, mais commencer par ce langage, c'est du suicide algorithmique !
Je pense qu'il est important d'apprendre correctement, puis de s'aiguiller vers un langage demandé (C, C++, Java sont en tête de liste en général) une fois les (bonnes, est-il utile de préciser ?) bases acquises.
Or, ton message laisserait présupposer que commencer par du PHP ou du C serait une option "viable", parce que demandés en entreprise... C'est à mon sens justement l'erreur de beaucoup de débutants, qui se font éclater ensuite en entretien ou, pire, en période d'essai...
Au risque de paraitre répétitif, je plussoierais bien le Java :
- Typage fort
- Orientation objet, ou impérative possible
- Multi plateforme
- Graphique simple a utiliser, non négligeable, quand on débute, on aime souvent sortir assez vite de la console -- Quel débutant voudrait installer WxWidgets / utiliser l'API de windows ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager