Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

débuter dans la programation

55 réponses
Avatar
-----------
Bonjour,

tout ce qui touche a l'informatique me passionne, aujourd'hui j'ai décider
de m'interresser à la programation.

Quelle conseil pouvez vous me donner ?

10 réponses

1 2 3 4 5
Avatar
Marc Boyer
TheChameleon wrote:
Mais l'expérience montre qu'il vaut mieux, si on a la possibilité,
commencer par un autre langage, pour s'intéresser à l'algorithmique,
puis le C.


Quel expérience ?


L'expérience d'un certain nombre d'enseignant ayant vu passer
un certain nombre d'élèves.

Perso, j'ai commencé par l'assembleur avec des machine
dont mieux vaut taire le nom. Le Basic ne m'a jamais vraiment
passionnée et l'idée de passer par un interprétateur me rebuter. Alors
j'ai appris le pascal puis le C puis le C++ et aussi java. Mais je ne
pense pas que le chemin que doit prendre tous programmeurs est unique.
Alors pourquoi ne pas commencer par le C ?


Tu veux une liste complète ? Non, allez, 2-3
- E/S non typées archaiques
- pas de passage par référence
- pas de notion de module
- boucle for qui est un while

Les algorythmes ne sont-ils
pas présents dans tout les programmes informatiques quelque soit le
langage ?


Si, mais ils sont plus ou moins cachés dans la syntaxe...

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(


Avatar
blc
Bruno Desthuilliers wrote:

yoyo wrote:

"Manuel Leclerc" a écrit dans le




Certes, mais tu n'aura pas besoin du langage C à court terme.
Atrention. Je crois que le but est d'appprendre a programmer, pas un

langage en particulier...

Moi même qui suis programmeur de profession, je n'ai que rarement eu
l'usage du C dans mon boulot - même si c'est clairement un plus pour moi
d'avoir des bases dans ce langage.

Par contre, un ou deux langages 'de script' te seront *indispensables*
pour automatiser diverses tâches.
Une fois que l'on connait bien un langage suffisamment vaste, on n'a

aucun mal a apprendre un langage plus simple...

Je ne peux que te recommander (encore
plus vu les circonstances) Python - qui est bien plus que seulement un
langage de script mais excelle dans ce rôle - et Perl, qui, bien que
beaucoup moins compréhensible, est devenu le 'couteaux suisse' des
admins. AMHA commence par Python, qui est un bon premier langage, te
sera utile professionnellement pour de l'administration (bien plus que
le C) et te permettra d'écrire des applications (des vrais, avec
interface graphique et tout) bien plus facilement que le C.
Commencer par un langage de script est a mon avis un erreur peu importe

ce que l'on souhaite faire. Les langages de script (la plupart) passent
sous silence la plupart des concepts fondamentaux de la programmation
(au sens large) comme les variables, le typage, la memoire... Avec un
langage de script, on fait les choses vite et mal.... avec le C, qd ca
marche, c'est que c'est pas si mal, sinon, ca plante.
De mon experience, qd ca marche trop vite, on ne retient rien du tout...
Par contre, si ca plante et que l'on passe du temps dessus, une fois
trouvee l'erreur, on ne la refait plus et c'est uniquement comme ca que
l'on progresse. Commencer par un langage "jouet" ne peut AMHA que donner
de mauvaises habitudes ("No-brain coding").

Benoit


Avatar
Marc Boyer
blc wrote:
Marc Boyer wrote:
Nicolas Aunai wrote:

Mais l'expérience montre qu'il vaut mieux, si on a la possibilité,
commencer par un autre langage, pour s'intéresser à l'algorithmique,
puis le C.
Tu fais une generalite je pense...



Bien sur, une réalité statistique qui admet foultitude de
contres-exemples.

Pour ma part:
- Langage fonctionnel (scheme)
- Assembleur
- C
- Java/c++/ algorithmique...

Je pense que beaucoup de gens peuvent vouloir programmer sans avoir a se
preoccuper de problemes lies a l'algorithmique...Alors commencer par ca,
c'est un peu rude et complique (pratiquement inaccessible sans un niveau
d'etude correct en maths). Ca ne ferait que renforcer l'idee que pour
programmer, il faut etre bon en maths...


De quoi parlons nous quand nous parlons d'algorithmique ?
Je ne parle pas de calcul de complexité. Pas besoin d'être
fort en math, mais besoin d'amadouer la logique informatique
à base de séquence/boucle/condition et calcul/affectation.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(


Avatar
Sinese
In article <bks0ak$d38$, Marc Boyer wrote:

De quoi parlons nous quand nous parlons d'algorithmique ?
Je ne parle pas de calcul de complexité. Pas besoin d'être
fort en math, mais besoin d'amadouer la logique informatique
à base de séquence/boucle/condition et calcul/affectation.



Ceci n'est pas de l'algorithmique mais de la programation.
L'algorithmique se fous totalement de la logique informatique tout
simplement parce que la notion meme d'informatique etait
inconnu a l'epoque (IX ieme siecle).

L'algorithmique est une discipline mathematique. Elle ne depend donc
pas du tout du langage utilise (C, java, francais, espagnol, ...) et
le calcul de complexite en fait parti.

Triture le code pour le rendre plus performant ou autre rentre
dans le domaine de la programmation, ni plus, ni moins. Et pour
cela le seul reel moyen est de bien connaitre son architecture,
son compilateur et son langage
--
sinese

Avatar
TheChameleon

Quel expérience ?



L'expérience d'un certain nombre d'enseignant ayant vu passer
un certain nombre d'élèves.


Ca c'est de l'argumentation! Je plaisante, rassure toi. Heu! tu es
enseignant ? Pour moi, c'est difficile à admettre pour un enseignant
mais l'école ne m'a plus appris grand chose aprés la primaire et la
pratique reste encore la meilleur école. Bon certe difficile d'apprendre
la modelisation par la pratique, je le reconnais.

Alors pourquoi ne pas commencer par le C ?


- E/S non typées archaiques
Bien qu'elle necessite un travail qui ne sera pas forcement necessaire

avec d'autre langage je n'y vois pas de clause contradictoire à
l'utilisation de ce langage. De plus les E/S courante que l'on doit
utiliser en apprentissage ne sont pas des plus compliquées (vidéo,
fichier). Afficher un message à l'aide de printf ou ouvrir et fermer un
fichier quelconque reste assez simple.
- pas de passage par référence
Tu parles des arguments de fonction. On comprendra qu'il vaut mieux

passer l'adresse d'une structure que sa copie.
- pas de notion de module
Non, pas de notion de module. Encore que dans un projet plus large on ne

pourra pas mettre toutes les lignes dans le même fichier. Et il faudra
bien se préoccuper d'un découpage non linéaire.
- boucle for qui est un while
Oui, cela y ressemble beaucoup mais n'existe-t-il pas dans les autres

langage ayant le même type similitude. Bizarrement j'utilise plutôt for
que while.

Je vois plus cela comme des détails que des caractères bloquant à
l'apprentissage du C par un débutant en programmation.

Les algorythmes ne sont-ils
pas présents dans tout les programmes informatiques quelque soit le
langage ?
Si, mais ils sont plus ou moins cachés dans la syntaxe...

N'est ce pas justement dommageable pour un newbie de passer à coté de

l'essentiel au profit du superficiel. L'important n'est pas la manière
dont je parle mais ce que je veux exprimer.

Je ne veux pas lever de polémique et ne vois les choses que par mon cas
personnel. Bon d'accord! Il faut dire que mon cas n'est évidemment pas
le meilleur exemple.

The Chameleon!!!


Avatar
Marc Boyer
In article , Sinese wrote:
In article <bks0ak$d38$, Marc Boyer wrote:

De quoi parlons nous quand nous parlons d'algorithmique ?
Je ne parle pas de calcul de complexité. Pas besoin d'être
fort en math, mais besoin d'amadouer la logique informatique
à base de séquence/boucle/condition et calcul/affectation.


Ceci n'est pas de l'algorithmique mais de la programation.
L'algorithmique se fous totalement de la logique informatique tout
simplement parce que la notion meme d'informatique etait
inconnu a l'epoque (IX ieme siecle).


Huh ? Si on veut pinailler sur les mots, je rappelle que
l'informatique, c'est la science du traitement de l'information,
et qu'on a pas attendu d'avoir un processeur pour apprendre
à trier un jeu de cartase.
Quoi qu'il en soit, il existe un modèle, que l'on retrouve
dans la machine de Turing, les machines à mot, dans lequel
on a un "programme", basé sur les opérateurs séquence/choix
puis branchement ou boucle, et un support (mémoire, ruban),
et une logique entre les deux d'évolution discrète à base
de lecture/écriture.

Je dis que c'est cela qu'il faut commencer par amadouer
ces paradigmes là (en général, on préfère la boucle au
saut actuellement, et on ajoute le typage), et qu'il
y a pas besoin d'être fort en math.

L'algorithmique est une discipline mathematique. Elle ne depend donc
pas du tout du langage utilise (C, java, francais, espagnol, ...) et
le calcul de complexite en fait parti.


L'indépendance entre une "discipline mathematique" et son
langage support... On pourra relire Godel.

Triture le code pour le rendre plus performant ou autre rentre
dans le domaine de la programmation, ni plus, ni moins. Et pour
cela le seul reel moyen est de bien connaitre son architecture,
son compilateur et son langage


Oui, tout à fait. Mais ou ais-je parlé de triturer le code ?

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(


Avatar
Marc Boyer
TheChameleon wrote:
Quel expérience ?


L'expérience d'un certain nombre d'enseignant ayant vu passer
un certain nombre d'élèves.


Ca c'est de l'argumentation! Je plaisante, rassure toi. Heu! tu es
enseignant ?


Voui.

Pour moi, c'est difficile à admettre pour un enseignant
mais l'école ne m'a plus appris grand chose aprés la primaire et la
pratique reste encore la meilleur école. Bon certe difficile d'apprendre
la modelisation par la pratique, je le reconnais.


Question de caractère, de motivation.
Globalement, je pense qu'un cours permet de faire passer
en peu de temps des notions que l'auto-apprentissage prendrais
plus de temps à faire passer.
Après, il y a aussi des choses qui s'enseignent plus facilement
que d'autre.

Alors pourquoi ne pas commencer par le C ?
- E/S non typées archaiques

Bien qu'elle necessite un travail qui ne sera pas forcement necessaire

avec d'autre langage je n'y vois pas de clause contradictoire à
l'utilisation de ce langage. De plus les E/S courante que l'on doit
utiliser en apprentissage ne sont pas des plus compliquées (vidéo,
fichier). Afficher un message à l'aide de printf ou ouvrir et fermer un
fichier quelconque reste assez simple.


Assez simple ?
printf("%dn",toto);
writeln(toto);

- pas de passage par référence
Tu parles des arguments de fonction. On comprendra qu'il vaut mieux

passer l'adresse d'une structure que sa copie.


Hola, mais tu en est déjà au deuxième semestre. Moi, je
parle d'une fonction qui retourne le min, le max et la moyenne
d'un tableau.
void stat(int* min, int* max, int* moy, int valeur[]);
procedure stat(min: out int; max: out int; moy: out int; valeurs: in int[])

- pas de notion de module
Non, pas de notion de module. Encore que dans un projet plus large on ne

pourra pas mettre toutes les lignes dans le même fichier. Et il faudra
bien se préoccuper d'un découpage non linéaire.


Je comprends pas ta remarque.

- boucle for qui est un while
Oui, cela y ressemble beaucoup mais n'existe-t-il pas dans les autres

langage ayant le même type similitude. Bizarrement j'utilise plutôt for
que while.


Tous les langages qui se veulent compatibles avec le C
utilise ce for qui est un while.
Mais il existe des langages ou on peut faire
For i from N downto 0 step 2
et c'est quand même plus lisible.

Je vois plus cela comme des détails que des caractères bloquant à
l'apprentissage du C par un débutant en programmation.


Disons que ce sont des détails qui rebutent ou dégoutent.
Les gens motivés surmontent. Les autres non.
Et puis puisqu'il existe des langages qui n'ont pas ses
défauts, pourquoi ne pas les utiliser ?

Si, mais ils sont plus ou moins cachés dans la syntaxe...
N'est ce pas justement dommageable pour un newbie de passer à coté de

l'essentiel au profit du superficiel. L'important n'est pas la manière
dont je parle mais ce que je veux exprimer.


Ben justement. Avec un compilateur Pascal ou Ada ou Caml,
il évite de perdre du temps avec le superficiel.

Je ne veux pas lever de polémique et ne vois les choses que par mon cas
personnel. Bon d'accord! Il faut dire que mon cas n'est évidemment pas
le meilleur exemple.


Disons que certains informaticiens me rappellent certains agrégés
qui, reconnaissant envers ce que leur formation en latin et grec
leur a apporté, pensent rendre service en voulant l'imposer
à toute une classe d'age.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(



Avatar
Nophké
Quel expérience ? Perso, j'ai commencé par l'assembleur avec des machine
dont mieux vaut taire le nom. Le Basic ne m'a jamais vraiment
passionnée et l'idée de passer par un interprétateur me rebuter. Alors
j'ai appris le pascal puis le C puis le C++ et aussi java. Mais je ne
pense pas que le chemin que doit prendre tous programmeurs est unique.
Alors pourquoi ne pas commencer par le C ? Les algorythmes ne sont-ils
pas présents dans tout les programmes informatiques quelque soit le
langage ?

The Chameleon!!!



Personnelement, j'ai réussi ma formation de TELEMATIQUE.
(je ne suis pas sur que beaucoup de monde se souvent de ce
que c'est)
Ensuite j'ai tout appris sur le tas tous les langages.
Il faut dire que j'ai travaillé sur des ordinateurs qui fonctionnaient avec
des cartes perforées.
Mon premier langage : L'Assembleur!
Et me voila programmeur depuis maintenant presque 30 ans.

Preuve que le langage de programmation n'est pas un facteur déterminant.

Avatar
TheChameleon

Pour moi, c'est difficile à admettre pour un enseignant
mais l'école ne m'a plus appris grand chose aprés la primaire et la
pratique reste encore la meilleur école. Bon certe difficile d'apprendre
la modelisation par la pratique, je le reconnais.



Question de caractère, de motivation.
Globalement, je pense qu'un cours permet de faire passer
en peu de temps des notions que l'auto-apprentissage prendrais
plus de temps à faire passer.
Après, il y a aussi des choses qui s'enseignent plus facilement
que d'autre.


Comme pour la conduite rien ne remplace l'experience, encore faut-il
savoir ou l'on met la clé. Je suis d'accord avec toi.

Assez simple ?
printf("%dn",toto);
writeln(toto);


Bon je vois cela avec mon experience de programmeur.

- pas de passage par référence


Tu parles des arguments de fonction. On comprendra qu'il vaut mieux
passer l'adresse d'une structure que sa copie.



Hola, mais tu en est déjà au deuxième semestre. Moi, je
parle d'une fonction qui retourne le min, le max et la moyenne
d'un tableau.
void stat(int* min, int* max, int* moy, int valeur[]);
procedure stat(min: out int; max: out int; moy: out int; valeurs: in int[])


plutôt au 24ième semestre, je dirais.
Le passage par pointeur est du 'in/out' et par copie du 'in' simple.
C'est pas tout à fait juste mais bon cela y ressemble.

- pas de notion de module


Non, pas de notion de module. Encore que dans un projet plus large on ne
pourra pas mettre toutes les lignes dans le même fichier. Et il faudra
bien se préoccuper d'un découpage non linéaire.



Je comprends pas ta remarque.


Je travaille sur un projet de gestion d'étudiant justement. Notre
programme écrit en C est composé de structure lié à l'interface
graphique suivant la fonction du programme. Ainsi chaque partie de notre
programme est contenu dans trois fichiers, un pour l'interface graphique
(gestion d'affichage, évènement), un autre pour les procédures lié à la
base de donnée et le fichier de définition.
On peut aussi développer un programme en passant par des librairies
static ou dynamique. Certe les modules sont alors externe au programme.
Evidemment, ce n'est pas un méchanisme du langage mais les programmeurs
passent leur vie à trouver des astuces pour palier aux manques et
contraintes du langage et de la plateforme qu'ils utilisent.

- boucle for qui est un while


Oui, cela y ressemble beaucoup mais n'existe-t-il pas dans les autres
langage ayant le même type similitude. Bizarrement j'utilise plutôt for
que while.



Tous les langages qui se veulent compatibles avec le C
utilise ce for qui est un while.
Mais il existe des langages ou on peut faire
For i from N downto 0 step 2
et c'est quand même plus lisible.


for(i=N ; i>=0; i-=2)
Tout est dans la syntaxe, effectivement.

Disons que certains informaticiens me rappellent certains agrégés
qui, reconnaissant envers ce que leur formation en latin et grec
leur a apporté, pensent rendre service en voulant l'imposer
à toute une classe d'age.


Je ne cherche pas à imposer quoique ces soit, je te rassure. Mais il est
vrai que l'on a toujours tendance à penser que notre méthode
d'apprentissage est la meilleur. Mais je comprends et respecte tout à
fait ta position.

The Chameleon!!!



Avatar
Marc Boyer
TheChameleon wrote:
Comme pour la conduite rien ne remplace l'experience, encore faut-il
savoir ou l'on met la clé. Je suis d'accord avec toi.

Assez simple ?
printf("%dn",toto);
writeln(toto);


Bon je vois cela avec mon experience de programmeur.


Ce que tu ne vois pas, c'est que le type de toto,
c'est peut-être un unsigned ;-) D'ailleurs, l'élève non
plus ne comprend pas pourquoi le résultat qui s'affiche
est différent de ce qu'il attendait.

- pas de passage par référence


Tu parles des arguments de fonction. On comprendra qu'il vaut mieux
passer l'adresse d'une structure que sa copie.


Hola, mais tu en est déjà au deuxième semestre. Moi, je
parle d'une fonction qui retourne le min, le max et la moyenne
d'un tableau.
void stat(int* min, int* max, int* moy, int valeur[]);
procedure stat(min: out int; max: out int; moy: out int; valeurs: in int[])


plutôt au 24ième semestre, je dirais.
Le passage par pointeur est du 'in/out' et par copie du 'in' simple.
C'est pas tout à fait juste mais bon cela y ressemble.


Voui, avec la subtilité du tableau, toujours amusante.
Et puis pour l'appel, la nécessité de prendre l'adresse.
Ce qui fait qu'en fait, ils ne comprennent les passages
d'arguments que quand ils ont compris les pointeurs.

Je comprends pas ta remarque.


Je travaille sur un projet de gestion d'étudiant justement. Notre
programme écrit en C est composé de structure lié à l'interface
graphique suivant la fonction du programme. Ainsi chaque partie de notre
programme est contenu dans trois fichiers, un pour l'interface graphique
(gestion d'affichage, évènement), un autre pour les procédures lié à la
base de donnée et le fichier de définition.
On peut aussi développer un programme en passant par des librairies
static ou dynamique. Certe les modules sont alors externe au programme.
Evidemment, ce n'est pas un méchanisme du langage mais les programmeurs
passent leur vie à trouver des astuces pour palier aux manques et
contraintes du langage et de la plateforme qu'ils utilisent.


Ouaip.

Disons que certains informaticiens me rappellent certains agrégés
qui, reconnaissant envers ce que leur formation en latin et grec
leur a apporté, pensent rendre service en voulant l'imposer
à toute une classe d'age.


Je ne cherche pas à imposer quoique ces soit, je te rassure. Mais il est
vrai que l'on a toujours tendance à penser que notre méthode
d'apprentissage est la meilleur. Mais je comprends et respecte tout à
fait ta position.


J'avais fait cette annalogie car elle parle souvent aux
informaticiens.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(




1 2 3 4 5