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


Répondre à