J'aimerais apprendre la programation

Salut, comme le dit le titre, j’aimerais apprendre la programation, mais j’aimerais que vous me conseillez sur quelle langage apprendre(J’avais penser au C/C++),mais peut-être que certain language serait mieux pour commencer et si vous connaisser des tutoriels pour m’aider

J’attends vos suggestion!

C/C++ pour commencer : mauvaise idée, pas adapté à l’apprentissage car trop de concepts spécifiques complexes à comprendre au début (pointeurs/référence, gestion de la mémoire, etc.)

Il y a d’autres langages plus adaptés, comme Python ou Ruby par exemple.

Des exemples de documents pour commencer [1] [2].

[1] http://www.ruby-doc.org/docs/ApprendreProgrammer/Apprendre_%E0_Programmer.pdf
[2] http://www.framasoft.net/IMG/pdf/python_notes-2.pdf

Salut,

Salut, comme le dit le titre, j’aimerais apprendre la programation, mais j’aimerais que vous me conseillez sur quelle langage apprendre(J’avais penser au C/C++),mais peut-être que certain language serait mieux pour commencer et si vous connaisser des tutoriels pour m’aider

J’attends vos suggestion!

Mais quel que soit le langage, il va falloir t’astreindre à une plus grande rigueur orthographique :slightly_smiling:

Je ne suis pas d’accord le C/C++ est le langage par lequel j’ai commencé et il n’est pas plus complexe que les autres, il est juste plus rigoureux. Le fait de commencer par python ou par ruby n’est pas forcément une mauvaise chose mais tu peux très bien prendre le C/C++ aussi.

L’intérêt de commencer par le C/C++ serait pour moi un avantage car ça oblige le développeur à être rigoureux et ainsi il sera moins tenté de faire du code pourri.

Avec n’importe quel langage on peut faire du code illisible, et du code lisible, mais ce que tu oublies Ash, c’est aussi qu’il y a des langages plus ou moins intuitifs, et que ça joue aussi sur l’usage:
Si tu veux juste savoir comment fonctionne la programmation, et que tu ne va jamais en faire un métier, ni des choses vraiment sérieuses, n’est il pas plus souhaitable de moins se préoccuper sur la qualité du code produit, et plus sur la rapidité/simplicité d’implémentation ?
Ce sont des questions ou il n’y a pas forcément de réponse universelle.

[quote=“mattotop”]
Ce sont des questions ou il n’y a pas forcément de réponse universelle.[/quote]

surtout quand on ne sait pas ce qu’il veut programmer ni pourquoi !

en facile il y a ms access + vb :imp:
désolé, j’ai rien dit

Je suis d’accord, simplement je prenais mon exemple même si je n’ai aucune intention de faire du code à destination métier, j’ai toujours mis un point d’honneur à faire du code propre.

Ensuite [quote]n’est il pas plus souhaitable de moins se préoccuper sur la qualité du code produit, et plus sur la rapidité/simplicité d’implémentation[/quote]

Je pense que la seule réponse valable est tout dépend de l’état d’esprit du développeur. Il ne tient qu’a lui de prendre tel chemin ou tel autre.

Personnellement j’aurais pensé à java, pour son côté “marche partout” et le fait qu’on n’a pas à trop faire attention à comment est gérée la mémoire dans un premier temps, il y a, de plus, des pelletées de tutos un peu partout du fait qu’il est devenu extrêmement répandu, et la doc de son éditeur, SUN, est plutôt bien faite (à mon goût). Cependant, si tu en as le “courage”, le C ou le C++ sont sûrement de bonnes idées aussi (avec le C++ tu auras peut être plus d’éléments “gratuits” car déjà implémentés qu’en C mais c’est à voir … tu as tout autant de chances, sinon plus, de te tirer une balle dans le pied si tu ne fais pas attention ^^).

Pour le côté immédiat et la doc disponible sur ta bécanne tu as aussi le script shell mais là on s’éloigne peut être du concept de “programmation” du genre “mon prog à moi fait en qui fait <ça> que personne d’autre ne fait”, mais cela aurait l’avantage de t’apprendre ce que tu as sur ta machine et comment l’utiliser. Il y a aussi pas mal de doc quand on cherche un peu. Toutefois c’est à manier avec précautions (comme tout) et en particulier pas en admin à moins de savoir parfaitement ce que tu fais =).

Du côté des curiosités :
Si tu as envie de découvrir une forme de programmation qui peut être un peu déroutante mais extrêmement puissante et avec un gros potentiel d’arrachage de cheveux, il y a Caml / Ocaml. Mais là je pense qu’une première expérience dans un autre langage n’est pas superflue car dans certains cas il y a vraiment littéralement de quoi s’arracher les cheveux :smt003 .

Je n’ai pas encore testé SCALA mais selon un de mes profs c’est l’avenir et il nous en parle comme la solution à tous nos problèmes (vie professionnelle, sentimentale, familiale, virtuelle … tout) dans un futur proche. Tu peux toujours t’y intéresser par curiosité mais je pense qu’il sera difficile d’apprendre là dessus par manque de documentation (comme souvent).

Hoshin va voir un peu par là pour la gestion de la mémoire en Java :wink:
developpez.net/forums/d19106 … collector/

Moi je pense qu’il faut partir de l’envie de faire quelque chose.

En effet, apprendre pour apprendre c’est pas terrible et la motivation est moindre.

Si tu dis : je faire de la programmation web parce que je trouve ça cool, ou j’aimerai faire des jeux videos, ou j’aimerai faire un OS, ou j’aimerai faire des scripts pour tuner mon linux, là on pourra peut être te fournir une réponse pertinente.

[quote=“Hoshin”]
Du côté des curiosités :
Si tu as envie de découvrir une forme de programmation qui peut être un peu déroutante mais extrêmement puissante et avec un gros potentiel d’arrachage de cheveux, il y a Caml / Ocaml. Mais là je pense qu’une première expérience dans un autre langage n’est pas superflue car dans certains cas il y a vraiment littéralement de quoi s’arracher les cheveux :smt003 .[/quote]
Plus généralement la programmation fonctionnelle. Je suis en train d’apprendre le Haskell et c’est vrai que c’est assez puissant. C’est un langage pour les adeptes du principe KISS.
Ça peut-être un premier langage pour certaines personnes et ça peut aussi en décourager d’autres.
Sinon Python est un bon choix.

Je ne résiste pas à citer le langage préfèré de fran, le brainfuck:
fr.wikipedia.org/wiki/Brainfuck

Allez, premier exercice: Que fait

?[->+>+<<]>>[-<<+>>]<[-]<[->>+>+<<<]>>>[-<<<+>>>]<[[-<+>] <<[->>+>+<<<]>>>[-<<<+>>>]<<<[-]>[-<+>]>[-<+>]<-<[->>+>+< <<]>>>[-<<<+>>>]<<<[-]>[-<+>]>[-<+>]<<[->>+>+<<<]>>>[-<<< +>>>]<]<<[->>+>+<<<]>>>[-<<<+>>>]<<<[-]>[-<+>]>[-<+>]<<.
puis

[code]
<+>[>+++[->+>+<<]>>[-<<+>>]<<<[->>>+<<<]>>[-<<+>>]<<-[->>>
[-<+>]<<<<[->>>>+<<<<]>[-<+>]>[-<+>]<<]>[->>[-<<<+>>>]<<[-

+<]>]<<<[->>+>+<<<]>>>[-<<<+>>>]<<<[-]>[-<+>]>[-<+>]<<[->
+>+<<<]>>>[-<<<+>>>]<[-<+>]<>++±[->+>+<<]>>[-<<+>>]<<<[-

+<<<]>>[-<<+>>]<<-[-<[->>>+<<<]>[-<+>]>[-<+>]<<]<[->+<]
[->>[-<<<<+>>>>]<<[->+<]<[->+<]>>]<[-<+>]<-]<[-]<[/code]

Edit: c’est presque aussi clair que du Perl :smiley:

Ben tu peux mélanger les deux si tu veux :smiley: :

Paquet : libacme-brainfck-perl Nouveau: oui État: non installé Version : 1.1.1 Priorité : optionnel Section : interpreters Responsable : Jaldhar H. Vyas <jaldhar@debian.org> Taille décompressée : 94,2k Dépend: perl (>= 5.6.0-16) Fournit: libacme-brainfuck-perl Description : Embed Brainf*ck in your perl code Brainf*ck (yes, there is a u there.) is about the tiniest Turing-complete programming language you can get. A language is Turing-complete if it can model the operations of a Turing machine--an abstract model of a computer defined by the British mathematician Alan Turing in 1936. A Turing machine consists only of an endless sequence of memory cells and a pointer to one particular memory cell. Yet it is theoretically capable of performing any computation. This module will allow you to mix Brainf*ck with your perl code.

Ah mais ash je n’ai jamais dit que le GC était la meilleure chose qui soit arrivée dans JAVA et j’ai eu l’occasion de pester contre certains bugs apparemment pas réglés “parce que tout le monde s’en fout tant que ça marche sans couacs sous winwin”. Je dis juste que, dans l’optique de commencer à apprendre, il peut être intéressant de se pencher sur JAVA car certains aspects, comme la gestion de la mémoire, en sont simplifiés pour la grande majorité des cas. Après j’ai été biberonné à ça avant de commencer à coder en C alors forcément j’ai des habitudes qui me font préférer java par moments mais bon c’est comme une trousse à outils tout ça : faut prendre ce dont on a besoin pour le boulot à faire.
En l’occurence pour apprendre je pense qu’un novice n’a pas envie de se poser des questions existentielles du type “alors cette var là je la garde sur la pile ? je la mets sur le tas ? j’ai bien free tout comme il faut ? mes mallocs sont de la bonne taille ?”… Ce sont des concepts à comprendre si l’on veut avancer en termes de programmation mais quand tu en es à te demander comment afficher un message dans ta console je penses que tu t’en cognes un peu et que ça n’éclaircit pas particulièrement la compréhension :stuck_out_tongue:.
Après effectivement si on souhaite une approche la plus rigoureuse possible il est indéniable qu’il vaut mieux faire du C ^^. Parce vu qu’à la moindre petite erreur dans tes allocations paf tu le payes immédiatement … c’est sur que ça incite à être rigoureux. Cependant, dans ce cas, autant foncer sur caml, comme ça, tant que t’as des “erreurs” ça compile pas (c’est pour ainsi dire toujours le cas), ça aussi ça incite à être rigoureux, surtout quand tu vois les messages parfois abscons que te renvoie le compilo quand t’as pas l’habitude ^^.

[quote=“Hoshin”]
Après effectivement si on souhaite une approche la plus rigoureuse possible il est indéniable qu’il vaut mieux faire du C ^^. Parce vu qu’à la moindre petite erreur dans tes allocations paf tu le payes immédiatement … c’est sur que ça incite à être rigoureux. Cependant, dans ce cas, autant foncer sur caml, comme ça, tant que t’as des “erreurs” ça compile pas (c’est pour ainsi dire toujours le cas), ça aussi ça incite à être rigoureux, surtout quand tu vois les messages parfois abscons que te renvoie le compilo quand t’as pas l’habitude ^^.[/quote]

Les messages de Caml sont très clairs :slightly_smiling:.

Plus sérieusement c’est contradictoire ton discours. Caml justement t’évite toute manipulation de mémoire et les problèmes d’allocations. La libération est automatique. Par ailleurs c’est un langage fonctionnel avec tous les avantages que ça a et (parait qu’il y en a) les inconvénients. Tout dépend de toute façon de ce qu’on veut apprendre: la programmation, la programmation dans un domaine particulier ou un langage. Dans le premier cas, je recommande fortement un langage fonctionnel type Caml ou bien python malgré les incompatiblités entre les différentes versions si on veut de l’impératif. Après, c’est selon les goûts de chacun, il y a ceux qui aiment Ségolène Royal et le Java et d’autres Aubry et le C :smiley:

[quote=“fran.b”]Allez, premier exercice: Que fait

?[->+>+<<]>>[-<<+>>]<[-]<[->>+>+<<<]>>>[-<<<+>>>]<[[-<+>] <<[->>+>+<<<]>>>[-<<<+>>>]<<<[-]>[-<+>]>[-<+>]<-<[->>+>+< <<]>>>[-<<<+>>>]<<<[-]>[-<+>]>[-<+>]<<[->>+>+<<<]>>>[-<<< +>>>]<]<<[->>+>+<<<]>>>[-<<<+>>>]<<<[-]>[-<+>]>[-<+>]<<.D[/quote] Une erreur de syntaxe, si je ne m’abuse.

[quote=“fran.b”]puis

[code]
<+>[>+++[->+>+<<]>>[-<<+>>]<<<[->>>+<<<]>>[-<<+>>]<<-[->>>
[-<+>]<<<<[->>>>+<<<<]>[-<+>]>[-<+>]<<]>[->>[-<<<+>>>]<<[-

+<]>]<<<[->>+>+<<<]>>>[-<<<+>>>]<<<[-]>[-<+>]>[-<+>]<<[->
+>+<<<]>>>[-<<<+>>>]<[-<+>]<>++±[->+>+<<]>>[-<<+>>]<<<[-

+<<<]>>[-<<+>>]<<-[-<[->>>+<<<]>[-<+>]>[-<+>]<<]<[->+<]
[->>[-<<<<+>>>>]<<[->+<]<[->+<]>>]<[-<+>]<-]<[-]<[/code]Edit: c’est presque aussi clair que du Perl :smiley:[/quote] Absolument, c’est même parfois aussi lisible que du perl (zut grillé par dimm):

[quote=“bf.pl”]#!/usr/bin/env perl
use Acme::Brainfuck;
print “Resultat:\n”;
<+>[>+++[->+>+<<]>>[-<<+>>]<<<[->>>+<<<]>>[-<<+>>]<<-[->>>
[-<+>]<<<<[->>>>+<<<<]>[-<+>]>[-<+>]<<]>[->>[-<<<+>>>]<<[-

+<]>]<<<[->>+>+<<<]>>>[-<<<+>>>]<<<[-]>[-<+>]>[-<+>]<<[->
+>+<<<]>>>[-<<<+>>>]<[-<+>]<>++±[->+>+<<]>>[-<<+>>]<<<[-

+<<<]>>[-<<+>>]<<-[-<[->>>+<<<]>[-<+>]>[-<+>]<<]<[->+<]
[->>[-<<<<+>>>>]<<[->+<]<[->+<]>>]<[-<+>]<-]<[-]<
print “\nfin du resultat\n”;[/quote] Sauf que là aussi, il y a une erreur:

roc@ROC:~$ ./bf.pl Resultat: Modification of non-creatable array value attempted, subscript -1 at ./bf.pl line 4. (je ne garantis pas que ça vienne de ton code ceci étant).

Je citais plus caml pour l’ “obligation” de rigueur mais c’est vrai que c’est un peu fouillis ce que je raconte (et que caml est merveilleux)

tout à fait d’accord.

Perso j’apprécie énormément le C++ car il permet de toucher un grand nombre de principe (les pointeurs, la généricité, la conception objet, la programmation par contrat, la surcharge d’opérateur, les espaces de nom, les functors, …). Surtout que la rpochaine norme va roxxer des pandats

Après les langages fonctionnels j’en ai jamais touché, je sais pas ce qu’ils apportent ni s’ils sont beaucoup utiliser en entreprise.

Sinon pour apprendre l’algorithme je conseillerais le python.

[quote=“MisterFreez”]
Après les langages fonctionnels j’en ai jamais touché, je sais pas ce qu’ils apportent ni s’ils sont beaucoup utiliser en entreprise.[/quote]
Ocaml est largement utilisé, ils sont essentiels dès que les structures de données manipulés sont complexes. Utilisés surtout là où il y a de l’IA. Ils simplifient énormément le code.