On 20 Feb 2007, at 17:49, Adrien Caillot wrote:
On Tue, Feb 20, 2007 at 12:12:54PM +0100, François TOURDE wrote :
Il y a d'autres langages qui vont assez vite, et qui sont peut-être
plus simple à apprendre que le C, surtout si on a jamais fait d'info
avant. Et puis "Apprendre à programmer" et "Apprendre le C" sont deux
choses différentes. Il vaut mieux commencer par l'une, puis l'autre,
non?
Je ne voudrais pas alimenter le tro^Wdébat inutilement, mais je suis
extrêmement surpris de voir tant de personnes affirmer qu'il vaut
mieux
commencer par un autre langage que par le C. Je vois ça un peu
partout,
c'est pourquoi j'ai envie de réagir.
[...]
Moi aussi ! Et je ne suis pas étonné que tu te sois trouvé avantagé
par rapport à ceux qui ont commencé par java, qui combine le pire des
deux mondes : loin du métal, et plein de mots clé au sens obscur
(public static blah blah...)
Je ne comprends pas non plus pourquoi certains sont si hostiles au C
comme language d'apprentissage. Ce mêmes personnes recommandent-elles
d'apprendre à conduire avec une voiture à boite automatique ?
D'autre part Python, que certains recommandent (et qui est un de mes
favoris) est *très* compliqué. Classes, métaclasses, itérateurs,
décorateurs, générateurs sont des concepts qu'à mon humble avis il
est sage d'éviter au début. De plus ils ne sont vraiment utiles que
si l'on comprend les problèmes qu'ils résolvent. Beaucoup de ces
problèmes deviennent apparents au programmeur qui utilise le C. Il
peut alors choisir *en connaissance de cause* quelle solution
adopter: python, ruby, lisp, haskell, ML, C++, (java?), etc.
Je ne prétends pas qu'il faille absolument commencer par le C mais je
pense que c'est une approche qui en vaut largement une autre. Elle
permet de comprendre beaucoup d'aspects de la programmation qui, même
s'ils sont cachés au début, sont présent dans tous les langages. Par
exemple les pointeurs, même s'ils "n'existent pas" en python, sont
essentiels à sa compréhension:
[EMAIL PROTECTED]:~$ python
Python 2.4.4 (#2, Jan 13 2007, 17:50:26)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a=[1,2]
>>> b=a
>>> a[0]=0
>>> b
[0, 2]
>>>
Le langage que je connais qui s'abstrait le plus de ces concepts
"près du métal" est caml, mais je ne pense pas qu'il soit à
conseiller pour un débutant non versé dans le lambda-calcul...
--
Arnaud