Je me mets au C

Bonsoir,

Je souhaiterai débuter en programmation (je ne me suis jamais lancé, sauf avec quelques .bat de rien du tout sous Windows) et je voudrai pouvoir découvrir un langage simple mais efficace.
Avant de créer quoi que ce soit, je souhaiterai d’abord modifier un programme déjà existant avec le langage que j’aurai choisi.
Vous me comprenez ? Je voudrai essayer de modifier le code source afin de comprendre ce qui change, une fois le tout compilé, etc…
Je suis un total novice dans ce domaine, je n’y connais strictement rien (comme dit plus haut, je ne connais que les echo, del, pause de MS-DOS).

J’ai déjà demandé à mon père (qui a déjà vingt ans d’informatique derrière lui ; il a travaillé en C, en Java, en C++ et tout ça sur Unix, Unix BSD puis Linux, mais il n’exerce plus le même métier et il a oublié pas mal de choses) de m’apprendre les bases et de m’aider par la suite, mais il me lâche toujours sur un bouquin, avec lequel je suis paumé dès la première page (j’ai notamment qqch du CNED “Introduction au développement de logiciels applicatifs”).

Mon père a une tonne de livres à la cave, sur du C++, Java et pleins d’autres trucs pas évidents que j’ai déjà feuilletés : je n’y comprends rien.

Je suis très attiré par ce domaine et j’aimerai y consacrer du temps.

J’espère qu’il vous sera possible de m’aider, mais si vous l’acceptez, j’espère ne pas trop vous faire perdre votre temps.

Merci d’avance, je ne sais pas par où commencer.

D’autre part, je pense que c’est + un sujet orienté “Pause café” que “Programmation” car je n’ai encore aucune connaissance. Enfin, à matt (et aux autres) de juger ! :wink:

Pour bien commencer, apprend le python, il y a un cours destiné aux débutants
http://python.developpez.com/cours/TutoSwinnen/

Ymer a fait la même demande que toi et il a choisi le python. :wink:

Merci, je vais voir ça ! :smiley:

Quels programmes GNU sont codés en Python, afin que je puisse tester quelques trucs sur leurs sources une fois les bases acquises ?

UN ENORME MERCI !

Ce petit livre est vraiment bien fait, pour les débutants comme moi qui n’ont presque aucune notion, et pas un truc tordu que m’avait donné à lire mon père !

J’ai commencé à lire et c’est très instructif et intéressant !

Comment te remercier ??? :smiley: :smiley: :smiley:

Je ne connais que reportbug qui est codé en python, il en existe surement d’autres.

Moi j’aurais plutôt proposé le C au Python, car c’est plus rigoureux, et je pense que commencer à programmer de cette façon (moins structurée), n’est pas un bon point.

[quote=“wavesound”]
Comment te remercier ??? :smiley: :smiley: :smiley:[/quote]

En faisant des maths. :smt003

[quote=“dimm”][quote=“wavesound”]
Comment te remercier ??? :smiley: :smiley: :smiley:[/quote]

En faisant des maths. :smt003[/quote]
:smt021

:laughing:

Le Python me parait intéressant. D’autant plus que, d’après ce que vient de me dire mon père (qui n’a jamais développé en Python - et qui ne le connait vaguement, que de nom), le compilateur C est payant.

Il va falloir revoir un peu la chose alors :p!

-> gcc <-

[quote=“thialme”]Il va falloir revoir un peu la chose alors :p!

-> gcc <-[/quote]
?

GCC The GNU Compiler Collection
Il s’agit du compilateur GNU (il doit faire C et C++ je crois et peut etre d’autres)

Ah ! :slightly_smiling:
Mon père est bouche bée. :stuck_out_tongue:

Alors, Python ou C ?

Ah, c’est aussi GCC qui fait Python.

[code]wavesound@Whale:~$ python
Python 2.4.4 (#2, Apr 26 2007, 00:02:45)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.

[/code]

Ben apparement il fait aussi Fortran, Java et Ada et Objective C (c’est quoi ces deux là?)
http://gcc.gnu.org

Je reste en Python ou je teste C ? ymer a peut être des infos ? :smiley:

Alors quelques petites remarques :
1 - Il existe plusieurs compilateurs C gratuit mais le mieux à utiliser reste tout de même gcc (qui compile tout un tas d’autres lanagages).
2 - gcc ne compile PAS de python. Simplement parce que le python est interprété et non compilé ça nuit un peu à la vitesse d’exécution mais rien de flagrant pour des applications simples. Ce que t’indique python quand tu le lance c’est le compilateur qui a compilé l’interpréteur qui lui va interprété le python (tu me suis ? :laughing: ).
3 - Je te déconseille de t’amuser avec les sources de la suite GNU, elle est dans sa majeur partie écrite en C et reprendre du code déjà écris est très complexe. Ne serais-ce que cat ou less, ils sont bien plus compliqué qu’on pourrait s’y attendre.
4 - @yshi : Ada est un langage évidement compilé qui est très utilisé dans le milieu industriel, il est assez peu permissif c’est bien pour ça qu’il est utilisé dans de l’embarqué aux point critique.

Sinon entre C et python, je dirais qu’avec le C tu va te bouffer les yeux c’est compliqué et chiant (pas de manière péjorative hein? c’est juste qu’il occasionne de belles prises de tête), le python est plus simple, pas compilé pas typé il permet de commencer bien plus vite.
La voie la plus dure est aussi celle qui se pérennise le mieux, si tu te prend la tête dès le début avec le C tu t’en sortiras mieux dans tout les autres langages, alors que passer dans langage “simple” à appréhender à des monstres du type eifel est plus dure.

C’est à toi de voir.

Y aurait t-il un guide de cette qualité pour C ? :unamused:

Salut Wavesound.

je suis un fou fan du C++, qui derive du C, donc je dirais moi aussi qu’il est plus propre, plus structuré, mille fois plus rapide etc… etc… mais il est plus compliqué, et ça faut quand même insister là dessus.

( je trouve mem le C à gerber à coté du C++, même si c’est encore plus compliqué )

Je me suis pas mal amusé avec le python et il est vraiment très intuitif, en plus ça initie un peu au language objet, puisque tupourras aussi faire des classes quand t’auras bien compris les fonction.

je te conseille à 250% le python.

en C tu vas te perdre dans des détails qui vont pas te faire comprendre la programation.

Et je t’assure, fais un peu de math l’année prochaine, c’est sur ça parait chiant, mais je te jure que y’a des trucs qui t’aideront, ça va structurer certains de tes neuronnes… et si t’accroches la programation, un jour t’auras besoin de faire des maths.

par exempel si tu veux programmer de la 3-D… bah tout ce qui est vecteur t’en auras besoin de le comprendre… et dès que t’as des rotations y’a des cosinus et sinus qui se la ramènent… bon t’inquietes pas la grosse enorme majorité des calculs sont déjà implémenté t’auras qu’à utiliser…

mais si t’as une idée de ce qui se passe derriere tout ira beaucoup plus vite.

et la physique, ça peut t’aider à voir comment appliquer les maths au monde concret…

et puis dés que t’as la possibilité d’aller dans une branche info, lance toi y à fond.

c’est grand-père Anoyzthen qui te dit ça en radotant.

8)

Comme ça fait plaisir !

Bon, je vais peut être rester avec Python pour le moment.

Dites, on peut pondre une aussi bonne application en Python qu’en C ?
Mon père m’a expliqué que chaque langage est meilleur dans un domaine, par exemple que Fortran servait dans les domaines scientifiques…

Python est plutôt orienté dans quoi ?

Au fait, mon père est un vieux con de 55 ans ! :laughing:
Nan, je dis ça affectueusement.

Bon, voila un petit aide mémoire des exercices qui ont été traités pour le moment, que je me suis joyeusement monté :

[code]## Python

GCC

les bases

r , pi = 12, 3.14159

on affecte 12 a la variable r

= entier

on affecte 3.14159 a la variable pi

= reel

s = pi * r**2

on affecte pi, donc 3.14159, ainsi que

r, qui vaut 12, puissance de deux (= exponentiation)

(donc 12x12 = 144)

print s

on affiche la variable s qu’on va verifier

452.38896

on verifie le resultat

(3.14159) * r*r

au carre

on teste ça en python

on trouve pareil 452.38895999999994

mais print s arrondi le tout

print type®, type(pi), type(s)

la fonction type () permet d’afficher

le type de variable[/code]

Ca avance, ça avance !

une fois que tu auras bien compris les fonctions… lance toi dans le C.

parce que y’a des subtilités dans le C et le C++ que t’as pas dans beaucoup d’autres languages.

je te donne un exemple, comme quoi c’est subtil le C/C++:
( sache que void ça veut dire rien, vide et int c’est entier ( 0, 1, 2 etc…)

int Addition(int x, int y)
{
x = x + y;
return x;
}

int AdditionSubtile(int &x, int y)
{
x = x + y;
return x;
}
// c’est plus subtil à cause du & qui va permettre de modifier la valeur de x

void MaFonction(void)
{
int a= 1;
int b=2;
int mon_resultat=0;

mon_resultat=Addition(a,b);
// une fois qu’on a executé ça a=1 b=2 et mon_resultat = 3

mon_resultat=AdditionSubtile(a,b);
// une fois qu’on a executé ça a=3 b=2 et mon_resultat=3
}

avec python t’auras pas ça on passe les arguments par valeur, comme ce que fait la fonction Addition, et c’est beaucoup plus intuitif

en C tu n’imagines pas le nombre de fonctions qui utilisent des pointeurs et des references ( * et & )… c’est à mon avis presque la majorité, ou au moins 50%.

avec python tu comprendras plus vite. et tu t’amuseras bien plus vite.

en C la manipulation des chaines, c’est à dire des mots, c’est la grosse galère, alors qu’en python c’est vachement pré-maché.

tu risque fort de faire plein de premiers programme qui travail sur des chaine…

( est ce que je remets une couche pour Python… alors que je suis un apôtre du C++ ?)