Je ne trouve vraiment pas le langage C 'simple' car il contient trop d'élément de syntaxe différent (boucle, affectation, pointeur, référence, tableau, fonction, macro ...).
Euh, boucles, affectations, tableaux, fonctions, tout ça tu le retrouves (heureusement) dans tous les langages. Quant aux références, c'est du Java et pas du C. Tiens d'ailleurs, un truc tout bête :
en C, tout est passé par valeur. TOUT. En Java, les types primitifs sont passés par valeur (donc par copie), mais tous les types "complexes" (les objets) sont passés par référence. Et note bien que j'ai parlé de la simplicité du langage/de sa syntaxe, pas de la facilité à programmer avec le langage C. Je trouve que ce dernier est plutôt rapide à mettre en oeuvre justement parce qu'il n'y a pas trop de concepts à connaître (mis à part la notion de pointeur, mais honnêtement, comme je l'ai dit, il n'y a pas besoin de manipuler les pointeurs pour commencer à programmer).
quand je parlais d'algo, je pensais plutôt à des trucs basiques comme un quick sort ou la création de listes chainées
Quand tu commences à programmer, un quicksort ou un algo de listes chaînées n'est pas simple, quel que soit le langage.
Prend le code Java (ou Ruby ou O'Caml) et compare avec un code en C
Je ne connais pas Ruby. En ce qui concerne Java, si tu n'as aucune notion de comment est allouée la mémoire, de comment fonctionne le garbage collector, etc., je ne vois pas comment tu peux comprendre la signification d'un NullPointerException. Java te fait croire qu'il n'y a pas de pointeurs, alors qu'il n'y a que ça, partout. Si tu ne comprends pas le principe d'une référence, je ne vois pas trop comment tu peux faire des choses un tant soit peu complexes en Java, ce qui revient à comprendre les pointeurs en C. Dans les deux cas, il faut parler d'adresse mémoire.
Donc le paradigme objet ne te servira à pas grand chose au début, la seule chose c'est que Java par exemple permet de se détacher un minimun de la machine
La méthode objet ne sert à rien au début. Si on te fait prendre l'habitude dès le départ (enfin, très vite, dirons-nous) de programmer sous forme de modules (fonctions/procédures), les concepts objets seront relativement simples à comprendre (il faut quand même une période d'adaptation, bien sûr). Et justement, prends Java : lorsque tu fais de la prog non objet, tu te retrouves avec le corps minimal suivant :
public class MaClasse {
public static void main(String[] args) {
// programme
}
}
Tu dois donc dire à l'étudiant en prog "oui bon, ben, oublie tout le squelette pour le moment, je t'expliquerai plus tard". En C, tu peux aisément expliquer les choses :
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
/* ... *
return EXIT_SUCCESS;
}
(et encore, les #include étant comparables aux import, je ne devrais pas les mettre dans le "source").
Pour ce qui est des macros, tu ne les utilises pas au début, et bizarrement ça ne manque pas.
[^] # Re: Que veux-tu faire ?
Posté par lasher . En réponse au journal Commencer à programmer ?. Évalué à 1.
Euh, boucles, affectations, tableaux, fonctions, tout ça tu le retrouves (heureusement) dans tous les langages. Quant aux références, c'est du Java et pas du C. Tiens d'ailleurs, un truc tout bête :
en C, tout est passé par valeur. TOUT. En Java, les types primitifs sont passés par valeur (donc par copie), mais tous les types "complexes" (les objets) sont passés par référence. Et note bien que j'ai parlé de la simplicité du langage/de sa syntaxe, pas de la facilité à programmer avec le langage C. Je trouve que ce dernier est plutôt rapide à mettre en oeuvre justement parce qu'il n'y a pas trop de concepts à connaître (mis à part la notion de pointeur, mais honnêtement, comme je l'ai dit, il n'y a pas besoin de manipuler les pointeurs pour commencer à programmer).
quand je parlais d'algo, je pensais plutôt à des trucs basiques comme un quick sort ou la création de listes chainées
Quand tu commences à programmer, un quicksort ou un algo de listes chaînées n'est pas simple, quel que soit le langage.
Prend le code Java (ou Ruby ou O'Caml) et compare avec un code en C
Je ne connais pas Ruby. En ce qui concerne Java, si tu n'as aucune notion de comment est allouée la mémoire, de comment fonctionne le garbage collector, etc., je ne vois pas comment tu peux comprendre la signification d'un NullPointerException. Java te fait croire qu'il n'y a pas de pointeurs, alors qu'il n'y a que ça, partout. Si tu ne comprends pas le principe d'une référence, je ne vois pas trop comment tu peux faire des choses un tant soit peu complexes en Java, ce qui revient à comprendre les pointeurs en C. Dans les deux cas, il faut parler d'adresse mémoire.
Donc le paradigme objet ne te servira à pas grand chose au début, la seule chose c'est que Java par exemple permet de se détacher un minimun de la machine
La méthode objet ne sert à rien au début. Si on te fait prendre l'habitude dès le départ (enfin, très vite, dirons-nous) de programmer sous forme de modules (fonctions/procédures), les concepts objets seront relativement simples à comprendre (il faut quand même une période d'adaptation, bien sûr). Et justement, prends Java : lorsque tu fais de la prog non objet, tu te retrouves avec le corps minimal suivant :
public class MaClasse {
public static void main(String[] args) {
// programme
}
}
Tu dois donc dire à l'étudiant en prog "oui bon, ben, oublie tout le squelette pour le moment, je t'expliquerai plus tard". En C, tu peux aisément expliquer les choses :
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
/* ... *
return EXIT_SUCCESS;
}
(et encore, les #include étant comparables aux import, je ne devrais pas les mettre dans le "source").
Pour ce qui est des macros, tu ne les utilises pas au début, et bizarrement ça ne manque pas.