Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 26/12/2007, à 21:11

UgM

Re : Quel language pour débuter?

Jemico a écrit :

A mon avis, C, C++, C# et autre Java sont des horreurs, mais pour des raisons historiques sont très développés.

Quand même?! sad Dire que le C, C++ sont des horreurs c'est comme insulter les gens qui developpent le noyau Linux et d'autres logiciels (comme gimp tiens) . mad !

Quand on aime pas, on aime pas. Mais, "horreur"! mad

cool

Hors ligne

#27 Le 26/12/2007, à 21:30

AschezuAsche

Re : Quel language pour débuter?

Salut !,

Perso j'ai commencé avec Python, puis du xhtml/php puis du C/C++. Tant que tu es motivé tu peux les apprendre.
Mais, je pense que Python est un bon langage pour commencer.

a+

AschezuAsche.

Dernière modification par AschezuAsche (Le 26/12/2007, à 21:31)

Hors ligne

#28 Le 27/12/2007, à 13:03

Aurel34

Re : Quel language pour débuter?

+1 pour le C smile

bon j'argumente un peu, en partant des réponses précédentes:

Par contre, C se distingue par une absence totale de garde fou et laisse la gestion de la mémoire entièrement à la charge de l'utilisateur. Ça a ses avantages, mais du coup on a tôt fait de réaliser des choses étranges, aux comportements erratiques et difficiles à comprendre. C n'est pas un langage difficile, mais ces caractéristiques le rendent peu approprié, en effet, à une première approche de la programmation.

en fait tu peux mettre quelques "gardes fous". Il suffit de donner les bons paramètres au compilateur (j'utilise généralement "-W -Wall -Werror -ansi -pedantic") et tu es plus ou moins incité à bien coder. Après pour les fuites mémoire tu as des librairies comme electic-fence qui peuvent aider, et c'est facile à utiliser.

De plus, personnellement, je conseille d'apprendre le C++ avant le C, pour éviter une contamination malvenue (et beaucoup trop répandue) du C dans le C++.

Pas d'accord... C'est un argument que j'ai déjà entendu, mais je pense au contraire qu'un langage impératif reste une approche simple pour la programmation, et donc le débutant n'a pas à se prendre la tête avec des concepts compliqués. Après il y a les fanas de l'objet ou de la prog foncionnelle qui conseillent de commencer par ça. Mais ce que j'ai constaté en encadrant des TDs (de L1) de Scheme c'est que ça a plutôt tendance à dégouter les gens d'attaquer directement par des paradigmes plus lourds...

Cela dit, pour un débutant complet en programmation (mais en admettant qu'il ait au moins fini son collège), l'expérience montre qu'il est plus rapide de mettre le pied à l'étrier en fonctionnel qu'en impératif.

on est d'accord smile

Toutefois, ce qu'il faut garder en mémoire, c'est qu'il n'y a pas de langage parfait qui permet de tout faire....

tout à fait d'accord. Cependant si je te conseille le C, c'est pour les raisons suivantes:

- tu peux TOUT faire en C (enfin, sauf la prog web, et encore avec es cgi...). Sous linux tu auras accès aux entrailles de la machine, tu pourrais faire des projets avec interfaces graphiques facilement (avec glade/libglade on a très vite un résultat sympa), faire de la 3D avec OpenGL voire même des jeux avec libsdl.
- tu vas en baver avec les pointeurs, et après tu auras digéré le concept une bonne fois pour toutes.
- tu auras des applications qui tournent vite. Oui je sais python aussi ça peut être rapide... Mais j'aimerais bien voir un algo d'optim en Python/Numpy qui tourne plus vite que le même en C/Atlas (déjà qu'on a tendance à revenir à fortran pour gagner quelques ms...)
- ça pourra te servir dans un vrai travail dans la vrai vie. Le python, à part avec Zope, c'est moins évident.
- tu pourras te la péter devant tes potes, parce que le C ça fait H@Ck3r wink

Voilà c'est que mon avis hmm
après, quel que soit ton choix, je te conseille d'aller dans une librairie et de prendre un livre. C'est à mon avis le meilleur moyen d'apprendre.
Tu peux aussi consulter des tutos sur developpez.com, ou encore lire les GNU coding standards (une fois que tu auras quelques bases).

Bonne chance en tout cas, le démarrage c'est souvent dur, mais après ça roule (presque) tout seul. wink


PS: je tappe sur python pour "rigoler", mais j'aime beaucoup ce langage smile

#29 Le 27/12/2007, à 13:58

UgM

Re : Quel language pour débuter?

+10 pour le C lol

Hors ligne

#30 Le 28/12/2007, à 01:12

Luc Hermitte

Re : Quel language pour débuter?

Aurel34 a écrit :

De plus, personnellement, je conseille d'apprendre le C++ avant le C, pour éviter une contamination malvenue (et beaucoup trop répandue) du C dans le C++.

Pas d'accord... C'est un argument que j'ai déjà  entendu, mais je pense au contraire qu'un langage impératif reste une approche simple pour la programmation, et donc le débutant n'a pas à  se prendre la tête avec des concepts compliqués. Après il y a les fanas de l'objet ou de la prog foncionnelle qui conseillent de commencer par ça. Mais ce que j'ai constaté en encadrant des TDs (de L1) de Scheme c'est que ça a plutà´t tendance à  dégouter les gens d'attaquer directement par des paradigmes plus lourds...

Les partisants du C++ avant le C (dont je fais parti) ne vendent pas l'OO et les templates avant. Loin de là  l'idée.
Ce que nous vendons, ce sont les pointeurs après. Longtemps après. Chose qui sur le plan pédagogique fait une énorme différence.
(Pour moi, la non contamination n'est que la cerise sur le gateau dû à  l'apprentissage d'idiomes sains au lieu de codes volontairement faux pour raisons de simplicité en phase d'apprentissage)

Soit. On garde l'impératif, mais en gros:
- s/char */std::string
- s/tableaux \(dynamique\|statique\)/std::vector<>
- s/printf/std::cout  # dans ce cas là , on gagne un variadisme sans erreur de typage
- s/scanf/std::cin

Bref. Je déconseille le C avant car il n'y a rien de tel pour décourager un débutant sur des détails peu importants (au debut de l'apprentissage).


OO ou pas d'abord est un autre débat pour lequel je n'ai pas de réponse.

#31 Le 28/12/2007, à 09:39

Aurel34

Re : Quel language pour débuter?

au lieu de codes volontairement faux pour raisons de simplicité en phase d'apprentissage

lol, tu y vas un peu fort là ...

je comprends mieux ton avis, et c'est vrai que ça se défend.
après, est-ce que les élèves préfèrent

for (vector<int>::const_iterator element = tableau.begin();
      element != tableau.end(); ++element) {...

à 

int i,element;
for (i=0;i<max;++i) {
element=tableau[i];...

?
le gros problème de la STL, c'est que tu es forcément "contaminé" par les concepts avancés du C++, dès que tu ne veux pas faire un "code faux". En l'occurrence, l'objet (avec les membres begin/end), les templates (combinés avec les typedefs sur const_iterator), les types const (source d'erreurs inextricables dans le code de certains élèves), les namespaces (pour appeler le tout) et même les pointeurs, vu que dans 99% des implémentations l'itérateur est un pointeur.

PS: on sent l'utilisateur de vim smile Mais j'ai bien compris que tu voulais dire "M-x replace-string printf std::cout"...

#32 Le 28/12/2007, à 10:46

Karl_le_rouge

Re : Quel language pour débuter?

Les pointeurs, un détail non important ? C'est une blague ou quoi ?
Si on met de cà´té les aspects avancés du C++ (OO, templates, STL, les flux, les finauderies genre const et les cast C++), on se retrouve avec un dialecte très proche du C ANSI.

Le plus important pour un débutant c'est d'acquérir les notions d'ASD et d'appréhender les concepts du fonctionnement de la machine (gestion mémoire, pointeurs, etc ...). Le C me semble un bon langage pour cela, il est simplissime et formateur. Son problème est qu'il est mal enseigné.

Quant on a compris ça, expliquer ce qu'est un conteneur, un itérateur c'est un jeu d'enfant ...
Le problème du C++ est qu'on essaie de le vendre comme du C avec classes et non pas comme un langage à  part entière.

Hors ligne

#33 Le 28/12/2007, à 13:31

Luc Hermitte

Re : Quel language pour débuter?

@aurel34
Pour les boucles sur les vecteurs, un simple

for (int i=0 ; i!= v.end() ; ++i)
    element = v[i];

marche très bien. Certes on exploite un aspect objet du C++. Mais ce n'est que de l'exploitation. Pas besoin de définir sa propre classe. Pareil pour les templates. Tant que l'on débute, inutile de savoir comment cela se définit.

Pour les erreurs auxquelles je faisais référence, cf tous les scanf de chaines qui peuvent déborder, et autres allocations sans vérification de réussite. Nombre de fois où je croise de telles choses en production, choses que j'attribue à un apprentissage baclé.

@Karl_le_rouge
Les pointeurs sont un détail non important ... au début de l'apprentissage (mes parenthèses ne sont pas non-importantes). Ce n'est pas une blague. J'assume parfaitement cette phrase .. dans son ensemble.
Je suis un partisant des langages Ada/Pascal comme support d'apprentissage (je ne connais ni OCaml, ni Python, pour avoir un autre avis). Dans ces langages les pointeurs sont vus tout à la fin. En C++ on peut faire la même chose (les voir juste avant le polymorphisme d'inclusion). En C, c'est impossible, on est obligé de les voir à la seconde leçon. C'est pour cela que j'estime que le C++ est un meilleur langage que le C pour les débutants. Même si on ne prend que sa partie impérative (et sa SL).
Une fois l'algorithmie bien comprise (et même les types), on peut s'attaquer aux pointeurs. Leur maitrise est même une chose nécessaire pour les développeurs. Mais pas au début de leur apprentissage.

Karl_le_rouge a écrit :

Le problème du C++ est qu'on essaie de le vendre comme du C avec classes et non pas comme un langage à part entière.

Entièrement d'accord. Avec ces a priori, il souffre aussi d'un mauvais enseignement.

#34 Le 28/12/2007, à 17:09

Aurel34

Re : Quel language pour débuter?

J'aimerais quand même faire un dernier post, histoire de casser un peu une sorte de "consensus": le C est, à  mon avis, un meilleur langage que le C++.

Tout d'abord, le C ne se base que sur quelques principes très simples. Apprendre la syntaxe du C prend une journée à  tout casser si on est motivé. Le C++ mélange pas mal de concepts, et assez mal je trouve. Il y a des tas de subtilités du genre sur la visibilité des membres (cf. Exceptionnal C++), ou l'ambiguà¯té possible entre les <> des templates et l'opérateur << (d'ailleurs gcc oblige à  mettre un espace entre les '<' si on imbrique des templates), qui n'ont pas vraiment d'autre intérêt que de compliquer la vie de développeur. De même sa syntaxe tordue (non LALR) limite l'usage d'outils comme ctags ou cscope.

De plus il y a de gros problèmes pour associer du code compilé par différents compilateurs. Pourquoi le name mangling n'est-il pas standard (l'argument de l'architecture est à  mon avis... léger...) ? En C, la convention de nomage est standard, et ça passe dans la plupart des cas.

Enfn, l'accès aux pointeurs n'est pas un problème, au contraire. Personnellement, j'ai commencé la prog en ASM sur ma HP48... avant de passer au C, C++,Java et quelques langage fonctionnels comme CaMl (merci la prépa) ou lisp (merci emacs). J'ai donc appris à  programmer du bas niveau au haut niveau, et je n'ai ps l'impression de programmer plus mal qu'un autre (et même surement mieux que certains). A l'heure actuelle, on (certains collègues) nous explique que l'approche haut niveau -> bas niveau permet de meilleurs résultats. Hors dans beaucoup de cas, je vois des élèves (je suis chargé de TD/TP) à  qui il manque beaucoup de concepts de base que t'apprennent des vieux langage comme le C (ou même le pascal d'ailleurs).

Après faire du C++ pour introduire les pointeurs un peu plus tard peut être une options intéressante. Mais ça m'étonnerais qu'il arrive à  tirer un trait entre "ce que je dois voir maintenant" et "ce que je verrai plus tard" si il apprend tout seul.

Donc mon conseil c'est: fait du C smile

#35 Le 28/12/2007, à 17:28

Link31

Re : Quel language pour débuter?

Aurel34 a écrit :

le C est, à  mon avis, un meilleur langage que le C++

Un meilleur langage que le C++ pour apprendre, certes (même si le Pascal est encore mieux pour cela).

Mais en pratique, le C++ est bien meilleur, puisqu'il apporte une meilleure sécurité (encapsulation) et permet beaucoup plus facilement que le C d'écrire de gros projets proprement (POO).

Donc oui, le C est bien pour apprendre et pour faire des TP de programmation, mais dès qu'on en vient à  travailler sur de "vrais" projets un langage plus puissant s'impose.

Hors ligne

#36 Le 28/12/2007, à 22:26

Jemico

Re : Quel language pour débuter?

UgM a écrit :
Jemico a écrit :

A mon avis, C, C++, C# et autre Java sont des horreurs, mais pour des raisons historiques sont très développés.

Quand même?! sad Dire que le C, C++ sont des horreurs c'est comme insulter les gens qui developpent le noyau Linux et d'autres logiciels (comme gimp tiens) . mad !

Quand on aime pas, on aime pas. Mais, "horreur"! mad

cool

Loin de moi l'idée d'insulter quiconque, je respecte (et j'admire !) les gens qui ont écrit ces codes (Linux, Gimp et tant d'autres ...). Disons que franchement ce ne me semblent pas être des langages pour débuter...

en tout cas je partage ta conclusion :

cool


excellent tutoriel sur les commandes pour les débutants (comme moi) :
http://www.siteduzero.com/tuto-3-1840-0-reprenez-le-controle-avec-linux.html

Hors ligne

#37 Le 28/12/2007, à 23:29

aleph

Re : Quel language pour débuter?

> Link31

> Donc oui, le C est bien pour apprendre et pour faire des TP de programmation, mais dès qu'on en
> vient à travailler sur de "vrais" projets un langage plus puissant s'impose.

Python, c'est assez bien réussi comme TP de programmation. Non ?

#38 Le 29/12/2007, à 00:25

Link31

Re : Quel language pour débuter?

Oui, mais Python comme les autres "gros" projets en C partagent le même problème : tout est lié, imbriqué, et il faut connaître parfaitement l'API du projet pour ne pas provoquer de catastrophe en ajoutant du code. Tandis que si Python était en C++, il suffirait de jeter un coup d'oeil aux interfaces des classes qu'on veut surcharger pour coder proprement et facilement des ajouts.

Ce que je veux dire, c'est qu'un gros projet en C est possible, mais ça doit être un enfer à maintenir et à développer.

Hors ligne

#39 Le 29/12/2007, à 10:16

Aurel34

Re : Quel language pour débuter?

Un meilleur langage que le C++ pour apprendre

je voulais dire: un meilleur langage conceptuellement. Il est simple et clair.

Link31 a écrit :

si Python était en C++

Si python était en C++:

- il faudrait de toute façon coder une interface C à  un moment (une factory ?) pour en faire une librairie partagée. Et ça compliquerait beaucoup son utilisation en temps que langage embarqué (et je parle même pas des problèmes si tu utilises plusieurs compilateurs C++).
- il ne compilerait pas sur autant de plateformes (pour peu qu'il utilise des templates).
- il faudrait qu'il utilise des librairies C de toute façon, ne serait-ce que pour les threads (les threads boost sont pas encore au point)

tout est lié, imbriqué

là  c'est au programmeur d'avoir une discipline. Il est parfaitement possible de segmenter son code pour avoir quelque chose de propre (ou à  l'inverse de faire en C++ du code brouillon). D'ailleurs en C++, dès qu'on veut imbriquer des classes on se retrouve avec ce genre de problème, d'o๠tout un tas de patterns genre "pimpl" (merci la simplification !).

il suffirait de jeter un coup d'oeil aux interfaces des classes qu'on veut surcharger pour coder proprement et facilement des ajouts

c'est JAMAIS aussi simple tongue En plus, il n'est pas possible d'utiliser des outils comme cscope pour naviguer le code (enfin si mais ça bug pas mal, et je suis un fan de cscope smile). Peut-être en retournant sous windows avec intellisense ça peut passer, mais même là  j'ai vu des cas critiques o๠l'analyse est mise en défaut.

Personnellement, j'ai eu l'expérience dans ma thèse de coder un projet mixte C/C++ (noyau en C et IHM en C++ avec wxwidgets). Et bien à  l'usage j'ai été plus embêté par le C++ que par le C, et pourtant j'ai fait bien attention à  tenir les standards (ça devait être portable).

#40 Le 04/01/2008, à 10:47

Jezzu

Re : Quel language pour débuter?

Bonjour à tous,
je me permets de m'incruster dans votre conversation.

En ce qui me concerne j'ai vraiment appris la prog en C, je suis ensuite passé au C++, et maintenant pour les besoins du boulot je fais du python.

Je préfère très nettement la programmation en C++, mais faut avouer que le python est beaucoup plus simple. Il n'y a pas de pointeurs à gérer, pas vraiment de problèmes entre les types de données vu que les variables ne sont pas "cataloguées" dans un type donné, pas de prises de tête pour gérer la mémoire, les tableaux...

Bref je vais pas tout énumérer ;p
Pour faire court le python est plus simple sous beaucoup d'aspect, et permet de faire beaucoup de choses et assez rapidement et même de grosses applis.

Par contre le C++ va apprendre la rigueur de programmation, choses que je pense est vitale surtout sur des gros programmes. En python vu qu'il y a moins de contraites c'est très vite le bordel.

Je serais donc bien tenté tout de même de dire que le python serait le mieux mais en se forçant à programmer très très proprement et après de passer vite au C++. Et encore ça dépend de ce que l'on veut faire en programmation.

Sinon pour le mini débat faire du C avant le C++, je pense pas que ce soit terrible, c'est ce que j'ai fait et comme ça a déjà été mentionné, ben... j'utilise toujours des fonctions C dans mes codes C++ et le pire c'est que je connais pas toujours les équivalences.

Hors ligne

#41 Le 04/01/2008, à 22:41

Jemico

Re : Quel language pour débuter?

Jezzu, je souscris aux avantages et les inconvénients que tu décris pour C++ et python.

A mon avis, Eiffel cumule les avantages des 2 :simplicité et rigueur
inconvénients : communauté pas autant développée, moins de tuto...

à  considérer en tous cas quand on se lance ou qu'on veut évoluer

Dernière modification par Jemico (Le 04/01/2008, à 22:42)


excellent tutoriel sur les commandes pour les débutants (comme moi) :
http://www.siteduzero.com/tuto-3-1840-0-reprenez-le-controle-avec-linux.html

Hors ligne

#42 Le 05/01/2008, à 12:09

Aurel34

Re : Quel language pour débuter?

Jezzu a écrit :

Par contre le C++ va apprendre la rigueur de programmation.

j'ai du mal à  voir comment...

C'est vrai qu'un langage typé va plus t'embêter pour compiler,                                                                                                                                                                                                                                                                          mais de là  à  dire que ça te rend intrinsèquement plus rigoureux c'est exagéré.
la rigueur c'est dans le tête du programmeur

si tu veux un langage qui te force à  être très strict, essaye ADA...
(pour Eiffel je ne connais pas je ne peux pas dire)