Et petit coup d'assembleur, juste pour voir !
-----
Et petit coup d'assembleur, juste pour voir !
Je pense que tu n'as pas saisi ce que je voulais dire ou peut-être me suis-je mal exprimé.Prenons le terme algorithme et ses dérivés. Il est parfaitement défini : c'est une suite logique finie etc... Suivant les cas on le rend synonyme de code, de programme, de logiciel, ou au contraire papier/crayon.
L'algorithmique ne concerne que la logique, on peut la matérialiser [cette logique] avec papier/crayon, en français, à l'aide d'un ordinogramme, en langage pseudo-code, dans son langage informatique préféré, voire dans sa tête, chacun sa méthode, mais c'est une phase indispensable.
Quand je dis "l'algorithmique ok", il faut le prendre au premier degré, ça voulais donc dire que j'était d'accord avec toi sur la nécessité d'avoir une démarche algorithmique, et donc de l'apprendre.
Ce que je disais ensuite, c'était que le seul apprentissage sur papier m'aurait vite dégoûté je pense, tandis que le test direct sur une machine me semble tout de même beaucoup plus motivant.
Le seul inconvénient que je vois au seul test direct sur machine, c'est le manque de réflexion que cela peut entraîner avant de balancer son code et de le tester. Pour illustrer mes dire, j'ai "subi" quelques cours de COBOL où les compilation et les exécutions étaient lancées toutes les 20 mn. C'était long ... Du coup, on réfléchissait à 2 fois (et même plus) avant de lancer une compil pour ne pas risquer de devoir attendre 20 mn à nouveau pour une erreur de syntaxe ou d'algo.
A titre indicatif, les profs de fac de ma jeunesse qui ne connaissaient que l'algorithmique et étaient fiers de ne pas vraiment programmer (il y a déjà pas mal d'années) étaient terrorisé quand ils avaient en face d'eux un étudiant qui maitrisait les 2.
Parce qu'il pondait des algos et leur implémentation largement meilleurs.
Les 2 aspects se nourrissent l'un l'autre et permettent de progresser plus vite. Sans parler de l'aspect motivant déjà cité par Jack.
@ Jack,
Je ne pense pas avoir fait une mauvaise interprétation de ce que tu disais. La meilleure approche de l'apprentissage de la programmation est, à mon mon avis, l'idée de faire un calcul, quel qu'il soit. Puis le coder et voir le résultat. Pour des choses simple l'algorithmique consiste, dans le cas d'une opération binaire, se dire, ou l'écrire, il y a un nombre A, je dois dire à la machine de s'en souvenir, puis un nombre B, la machine doit aussi s'en souvenir. Que dois-je faire avec ces deux nombres ? etc. etc.
Si je conseille le BASIC pour commencer, c'est parce qu'il est au niveau le plus élémentaire, ce qui permet de comprendre et de mettre en oeuvre les étapes les une après les autres. A mon avis, cette étape est indispensable pour progresser ensuite. L'exemple auquel j'ai fait allusion le montre bien : la finalité du module est complètement oubliée.
Je pense par exemple à un membre qui dernièrement cherchait à comprendre le problème des surfaces cachées. Un membre, probablement sûr de lui, lui a conseillé d'utiliser OpenGL. C'était justement ce que ce demandeur ne voulait pas.
Si, au bout d'un mois, Lukarate en a assez du Basic, il pourra en choisir un autre, même Python, mais au moins il aura appris et mis en œuvre des notions fondamentales, et peut-être même être capable de juger en connaissance de cause.
Au risque de me répéter, pour moi, la programmation n'est pas un but, mais un outil. Si je me trompe, je veux bien qu'on me donne des arguments contraires (sauf du type : t'y connais rien).
Petit complément,
Il y a plus de 20 ans que je n'ai pas programmé en Basic. J'ai juste utilisé ce terme comme type de langage très simple pour avoir un résultat immédiat, visuel et surtout intuitif. Je suis sûr que Phyton n'est pas intuitif, mais il est immédiat comme tous les langages interprétés.
Tout cela est intéressant (ou pas) mais tu nous avais expliqué que tu convertirais le code qu'on te donnait en Basic. Tu peux le faire ?
Parce que là, pour le moment, tu fais de l'informatique avec des phrases et c'est assez peu convaincant.
Bonjour, je vais donner aussi mon avis
Perso je déconseille les langages de script parce qu'ils ne sont pas typés.
Ca peut sembler plus facile à coder, le code est plus compact, on a un programme qui semble faire des trucs plus vite qu'avec un langage typé mais derrière il y a moulte problèmes de débugage qu'on évite avec un compilateur.
En plus à moins d'avoir mis des try/catch partout ça risque de partir en exception à tout moment.
Ou pire, si le programme s'acharne à fonctionner il peut y avoir des fonctionnement non appropriés qui ne font pas tout de suite partir le programme en exception mais qui lui font faire n'importe quoi.
C'est vraiment pas simple pour un débutant à déboguer.
Il faut se dire que si le compilateur est assommant avec ses messages d'erreur ou de warning c'est qu'il y a de bonnes raisons.
C'est un guide pour l'apprentissage.
Les langages compilés permettent de prendre de bonne habitudes.
Il est plus facile de passer du typé au non typé que du non-typé au typé.
Donc, les langages script python ou javascript, pour débuter perso je déconseille carrément.
Je verrais plutôt du java ou du C#.
Les deux sont très similaires, on passe facilement de l'un à l'autre.
Java étant plus compliqué à configurer et visual studio pour C# étant super ergonomique et est ultra simple à configurer.
Donc je dirais plutôt C#.
En plus C# est compatible C++, donc si jamais on veut se forcer à jeter un œil aux pointeurs et à se passer d'un ramasse-miette c'est possible (si on aime le rétro).
L'inconvénient de ces langages "lourd" c'est que ca va prendre du temps et de la place à installer mais une fois que c'est fait, on est tout bon.
L'assembleur honnêtement les utilisations c'est quand même vachement rare, même de l'embarqué c'est du C en général.
L'apprendre ca serait par curiosité ou pour un attrait particulier à la prise de tête, mais c'est pas du tout le premier truc à faire pour un débutant.
J'ai très peu codé en python.
Mais pour moi un gros point noir de python c'est l'aspect fonctionnel de l'indentation.
Si par malheur on efface une tabulation à gauche d'une instruction le code peut faire complétement autre chose sans avoir changé un seul caractère d'instruction ::> Hérésie (à mon avis) !
Si tu pars sur du Python je te conseille de faire des copies de sauvegarde régulières de ton code pour éviter de rester bloquer sur du code qui ne marche plus sans que tu ais aucune idée de la cause (le faire avec tout les langages c'est un bonne précaution).
Il existe des logiciels qui s'occupent de ca, des logiciels de gestion des versions comme Git, ils permettent de sauvegarder toutes les évolutions du code.
Si a un moment le code ne marche plus, tu auras un moyen très simple de repartir d'une version antérieure ou tout ne partait pas en cacahuète.
Dernière modification par Tannhauser ; 10/05/2017 à 11h01.
Je précise, je suis dur avec les langages script mais je les ai assez peu utilisés.
D'où peut être ma mauvaise opinion (mais c'est quand même des sacrés cochonneries)
Il me semble que Typescript est typé, mais peu utilisé pour l'instant.
Dernière modification par Tannhauser ; 10/05/2017 à 11h11.
Pourtant, c'est ce qui est enseigné.
On peut aussi remarquer que le célèbre cours du MIT, "Structure and Interpretation of Computer Programs" était en Scheme, un langage non typé.
Et que maintenant, ils sont en Python.
Ceci explique cela. Cela retire aussi beaucoup de valeur à ton avis.
Conseiller Git à un débutant est à peine mieux que les conseils plus haut sur l'assembleur ou le basic et je suis gentil...Il existe des logiciels qui s'occupent de ca, des logiciels de gestion des versions comme Git, ils permettent de sauvegarder toutes les évolutions du code.
Si a un moment le code ne marche plus, tu auras un moyen très simple de repartir d'une version antérieure ou tout ne partait pas en cacahuète.
D'accord avec les remarques de PM42 mais un autre truc me fait tilter :
Qu'est ce que tu entends par là ?
Même si il existe en effet une gestion basique des pointeurs en C# (c'est d'ailleurs le seul point d'incompatibilité avec VB.Net , le seul cas où une traduction entre les deux n'est pas possible dans le sens C# => VB.Net) son utilité est tout au plus anecdotique, et les syntaxes C# vs C++ ne sont absolument pas compatibles (en tous cas, pas plus que Java vs C# ou Java vs C++).
Dernière modification par Bluedeep ; 10/05/2017 à 11h18.
Ils font ce qu'il veulent, niveau productivité c'est une catastrophe.
Va faire un gros projet en langage Python et je me marre.
On est obligé de déboguer en aval ce qui aurait du être traiter à l'édition du programme en amont.
C'est pour ca que je précise.
Non, la gestion de configuration dans un projet c'est tous les jours.
Moi dans mon expérience professionnelle j'ai fais du C embarqué mais je n'ai jamais eu à aller jusqu'à l'assembleur.
La gestion de conf ça sauve la vie, même et surtout pour un débutant qui peut facilement se retrouver coincé et se décourager.
C'est compliqué pour des petits projets, c'est pour ca que je lui conseille plutôt de sauvegarder régulièrement son code à la main.
Mais je lui indique que ca existe et que si il veut jeter un œil ca ne sera pas du temps perdu.
J'ai cité plus haut des exemples de gros projets en Python.
Il y a également d'énormes projets en Lisp, en PHP et dans d'autres langages non typés. Cela n'a apparemment pas empêché les sociétés qui les font de réussir (Dropbox et Facebook par ex. Wikipedia marche pas trop mal aussi).
On ne parle pas de gestion de projet mais d'apprentissage de la programmation par un débutant.
Oui, c'est pour ça que je citais des gens dont le métier est l'enseignement de la programmation, pas le C embarqué.
+1On ne parle pas de gestion de projet mais d'apprentissage de la programmation par un débutant.
C'est bien de rappeler la problématique d'origine de ce fil
scikit-learn par exemple ?
Sinon pour rejoindre quasiment tout le monde :
- python c'est très bien (très largement utilisé aujourd'hui, rapide à comprendre, te force à bien indenter, utilisable dans des domaines très variés)
- basic ça ne sers à rien aujourd'hui (à la rigeur vba pour les macros excel mais franchement une mauvaise idée pour apprendre l'algorithmique)
Sinon pour faire un peu différent :
- julia est un langage très sympa et utile en calcul scientifique
bon résumé,- python c'est très bien (très largement utilisé aujourd'hui, rapide à comprendre, te force à bien indenter, utilisable dans des domaines très variés)
- basic ça ne sers à rien aujourd'hui (à la rigeur vba pour les macros excel mais franchement une mauvaise idée pour apprendre l'algorithmique)
d'autant qu'il n'est pas totalement stupide d'apprendre avec un langage que l'on pourra utiliser par la suite dans de nombreux domaines.
mais il semble que d'autres voient l'utilité de faire du compliqué dans cette histoire.
y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !
Oui justement.
Un débutant va avoir plein d'occasions de faire des fausses manip, de perdre son boulot, de rester coincer sur un programme qu'il a modifié et qui débouche sur une régression.
Moi je lui conseille juste de bien penser à faire des copies de son code régulièrement.
S'il avance suffisamment et qu'il juge qu'il serait bien d'avoir un outil de sauvegarde un peu plus costaud alors il pourra s'y intéresser.
Il va entrer au lycée, donc je pense qu'il aura 16 ans, il devrait pouvoir lire des doc en anglais.
C'est aussi ca l'informatique, il ne va pas y couper.
je sais bien que dans le scientifique c'est python.scikit-learn par exemple ?
Vous n'êtes pas obligé d'être d'accord quand je dis que vous seriez beaucoup mieux avec un langage compilé.
C'est vrai que ca force à indenter, mais je trouve que ca rend le code très fragile.- python c'est très bien (très largement utilisé aujourd'hui, rapide à comprendre, te force à bien indenter, utilisable dans des domaines très variés)
Et justement, la discussion ce n'est pas de savoir ce qui est utilisé ou pas.
Le temps qu'il arrive dans le monde du travail tout ca aura été bousculé.
La question est de savoir quel langage est le plus adapté à l'apprentissage.
Pour la taille de ses projets le script serait très adapté, mais pour acquérir des méthodes je suis beaucoup moins convaincu.
Mais vous êtes majoritairement plutôt pour python et il est parti pour python.
Je donnais juste un avis, et encore une fois je suis conscient d'avoir un avis très biaisé.
Les langages d'avenir sont peut être les scripts.
il y a les langages qu'on apprends à l'école, et ceux qu'on utilise au boulot.
Et c'est pas toujours les mêmes.
Le plus important, en école, c'est de maîtriser un langage qui permette un apprentissage rapide des méthodes de la programmation, et qui permette d'utiliser facilement des structures de données suffisamment riches, comme les listes. Python est un bon choix.
Si l'initiateur du fil, plus tard, fait de l'informatique son métier, il s'adaptera de toutes façons aux standards de développement de son entreprise, que ce soit C#, Python ou autre. (ou .... l'APL et l'assembleur os/370 dans mon cas !)
There are more things in heaven and earth, Horatio, Than are dreamt of in your philosophy.
Faut pas avoir honte et le dire en petit
Je connais un éditeur spécialisé dont le soft est encore en grande partie en APL et qui marche très bien. Ok, il a du acheter un fabricant de compilo APL pour pouvoir continuer à bosser mais c'est tout![]()
Bonjour Tannhauser, je voulais simplement rappeler qu'on est juste en train de parler de première prise de contact avec l'informatique, pas de démarrage d'une carrière. Si ce premier contact est positif, il faudra évidemment changer de registre et adopter un peu plus de rigueur et de bonnes habitudes.
Je ne suis pourtant pas spécialement utilisateur de python pour ma part, plutôt C/C++ et pas mal d'assembleur dans le temps.
Dernière modification par Jack ; 10/05/2017 à 21h58.
Bonsoir,
Pour l'apprentissage de l'informatique, qu'importe le langage, c'est la logique qu'il faut comprendre et apprendre. Pour moi, Python est un mauvais choix, pour la simple raison qu'il utilise la notion de "fonctions toutes faites". Tout à fait incompatible avec l'apprentissage. Pour simplifier, si on commence avec Python, soit on se lasse et on abandonne, soit on finit par comprendre et on aura perdu beaucoup de temps, puisqu'il aura fallu reconstruire, soi-même, tout le cheminement logique.
En tout cas, bon courage.
PS, Je n'ai pas lu de programmes, même très courts, de la part de certains conseilleurs. Je pense que pour donner des conseils, il faut un minimum d'expérience et pas seulement de bonnes lectures.
On attend toujours les conversions en Basic qui étaient supposées si faciles...,
Pour l'apprentissage de l'informatique, qu'importe le langage, c'est la logique qu'il faut comprendre et apprendre. Pour moi, Python est un mauvais choix, pour la simple raison qu'il utilise la notion de "fonctions toutes faites". Tout à fait incompatible avec l'apprentissage. Pour simplifier, si on commence avec Python, soit on se lasse et on abandonne, soit on finit par comprendre et on aura perdu beaucoup de temps, puisqu'il aura fallu reconstruire, soi-même, tout le cheminement logique.
Pour le reste, tous les langages utilisent des "fonctions toutes faites", même l'assembleur, qu'elles soient codées dans le processeur ou dans le BIOS, l'OS ou l'équivalent...
Et encore une fois, il a été donné des références :
- de l'usage de Python dans l'enseignement par des gens plus que sérieux
- de son usage dans l'industrie pour écrire des programmes conséquents
A coté de ça, les "moi je crois que" ne me semble pas relever de l'argument valide.
Dernière modification par pm42 ; 10/05/2017 à 22h48.
Bon, à pm42,
D'abord, je n'ai jamais dit que je pourrais transposer un code en Basic, j'ai dit que je pourrais le transposer dans mon langage préféré. Donc, tu n'as pas lu mon MP ou tu veux tout simplement relancer une discussion hors sujet. Pour les lecteurs, on peut comprendre un code, la transposition facile sous-entend qu'il et écrit avec une logique conventionnelle, ce qui n'est pas le cas pour Python. Par contre une paire de lignes incompréhensible est sans intérêt dans un tel débat.
Concernant la question posée au départ, si on veut apprendre l'informatique, le langage le plus simple est le meilleur pour l'apprentissage. Il y a 30 ans, c'était le Basic, j'avoue que actuellement je ne sais pas, par contre, ce que je sais est qu'il est important d'apprendre l'informatique, quelque soit le langage, pourvu qu'il ne soit pas trop "particularisé" comme est Python. D'autres membres ont dit la même chose et apparemment ils savaient de quoi ils parlaient. Si j'ai bien compté, nous sommes trois à avoir dit la même chose, à part les détails, mais parfaitement d'accord sur le fond.
Bon ça suffit !
Rien ne sert de penser, il faut réfléchir avant - Pierre Dac
En quoi la logique de Python serait elle non conventionnelle ??? Je suis impatient de lire tes explications là dessus. (et d'autant plus volontiers que je ne suis pas fan de ce langage, mais je ne vois pas en quoi sa logique serait "non conventionnelle" .....).
Il est clair que conseiller un langage abandonné depuis trente ans pour débuter est à l'inverse plein d'interêt ....Par contre une paire de lignes incompréhensible est sans intérêt dans un tel débat.
Encore faudrait il s'entendre sur ce que le concept de "simplicité" appliqué à un langage recouvre. Simple par quoi ?Concernant la question posée au départ, si on veut apprendre l'informatique, le langage le plus simple est le meilleur pour l'apprentissage.
Par ce que le jeu d'instruction est le plus simple ? Le Brainfuck a le jeu d'instruction le plus simple qui soit; peut on apprendre la programmation avec ? Je ne pense pas => la simplicité du jeu d'instruction n'est donc pas le bon critère.
Non, le Basic a été conçue comme un langage pour débutant, mais il y a 50 ans; il y a 30 ans son apprentissage était déjà clairement passé de mode, même si différentes formes de Basic ont continué pendant longtemps à être utilisé, en perdant au passage totalement la simplicité originelle (personne n'osera affirmer que les formes ultimes du Basic- par exemple VB.Net - sont simples).Il y a 30 ans, c'était le Basic,
On peut ajouter que Python n'est pas "particularisé" : c'est un langage objet avec du fonctionnel, comme Java, C#, C++, Ruby...
Et dans le top 3 ou 4 dans langages les plus utilisé dans les classements de référence :
https://www.tiobe.com/tiobe-index/
http://redmonk.com/sogrady/2017/03/1...rankings-1-17/
je confirme.Non, le Basic a été conçue comme un langage pour débutant, mais il y a 50 ans; il y a 30 ans son apprentissage était déjà clairement passé de mode, même si différentes formes de Basic ont continué pendant longtemps à être utilisé, en perdant au passage totalement la simplicité originelle (personne n'osera affirmer que les formes ultimes du Basic- par exemple VB.Net - sont simples).
même à l'école ( au début des années 80 ) mes premiers programmes ( avec des cartes perforées svp ! (*), une par ligne de code ) étaient en Fortran.
avant que je passe par la suite en C au début de mon boulot.
(*) le plus dur était de ne pas renverser la boite en carton avec toutes les cartes dedans, car ça m'est arrivé, et dans le genre Pierre Richard, c'était Top !
d'autant que le programme était assez lourd : simulation pour la COMEX d'un nouveau mode de calcul des remontées optimales ( nb de paliers, temps de chacun,... ) en plongée sous marine profonde.
Dernière modification par ansset ; 11/05/2017 à 10h51.
y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !
Python est non typé.Envoyé par jacknicklaus
Re : Quel langage apprendre pour mes études ? Help Please.
il y a les langages qu'on apprends à l'école, et ceux qu'on utilise au boulot.
Et c'est pas toujours les mêmes.
Le plus important, en école, c'est de maîtriser un langage qui permette un apprentissage rapide des méthodes de la programmation, et qui permette d'utiliser facilement des structures de données suffisamment riches, comme les listes. Python est un bon choix.
Pour un débutant prendre le temps de donner un type à ses variables pour que le compilateur vous indique ou vous avez fait une erreur ce n'est pas du luxe.
Le typage est une notion très importante en programmation.
Ca va aussi lui simplifier la vie pour gérer la portée des données.
Ce n'est pas qu'une simple prise de contact.Bonjour Tannhauser, je voulais simplement rappeler qu'on est juste en train de parler de première prise de contact avec l'informatique, pas de démarrage d'une carrière. Si ce premier contact est positif, il faudra évidemment changer de registre et adopter un peu plus de rigueur et de bonnes habitudes.
Il envisage d'en faire son métier, il a besoin de billes pour confirmer son orientation.
Si il avait demandé un langage pour faire vite fait du code sur un coin de table, alors oui j'aurais dit un langage script.
Mais là il faut qu'il développe sur un langage qui permette de faire le maximum le plus facilement possible, avec la meilleure courbe de progression, qui soit ludique et qui le guide.
On peut penser ce qu'on veut de Microsoft, mais visual studio est impressionnant. Ils ont fait de l'excellent travail.
L'IDE va racler jusqu'à la moelle l'information disponible pour faciliter la vie de l'utilisateur.
En 3 clic on peut créer une application fenêtrée avec un bouton.
On rajoute des contrôles de saisie ou d'affichage par glissé/déposé et le code associé est créé automatiquement ou par interface graphique.
L'IDE crée le squelette automatiquement créant ainsi un exemple qu'on a qu'à enrichir avec ses propres instructions.
C'est aussi fun que du légo.
On peut démarrer sur n'importe quel langages mais ils ne se valent pas tous.
Je pense qu'on peut faire une métaphore avec l'apprentissage de la conduite.
Est-ce qu'il vaut mieux apprendre sur un pot de yaourt ou sur une berline avec air-bag.
Pour quelqu'un vous dit qu'il a l'ambition et la motivation de devenir pilote, perso ma réponse c'est C#, sans aucune hésitation.
N'importe quoi.
Tu confond absence de typage et typage dynamique, typage fort et typage faible, dans une salade indigeste.
Python au contraire est à typage fort, typage dynamique certes, mais fort.
Et je précise que je ne connais pas Python, mais là on est vraiment dans les notions de bases de la culture IT.