OVH Cloud OVH Cloud

Quel tutoriel pour débuter ?

202 réponses
Avatar
Migrec
Bonjour,

Je cherche un tutoriel imprimable sur le web pour apprendre le C avant
d'acheter un bouquin "de référence".
Je suis débutant en programmation mais je connais les scripts shell
(linux), le HTML ou encore un peu de PHP.

Quel tutoriel imprimable me conseillez-vous pour débuter ? Les 560 pages
de celui du site du zéro
(http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c.html)
découragent un peu mon imprimante, même avec le recto-verso
automatique... Mais le style me plaît ! Existe-t-il quelque chose dans
le même esprit mais en plus condensé ?

--
Migrec

10 réponses

Avatar
onyxs
Wykaaa a écrit le 29/08/2008 à 23h30 :
candide a écrit :
Wykaaa a écrit :

Le seul qui traite correctement de ces structures de données en C,
c'est le livre de Philippe Drix




Il contient néanmoins quelques erreurs dont certaines rapportées
sur ce
forum.

"Langage C - Norme ANSI, vers une programmation orientée
objet".




Tu as oublié un mot capital : "java", à te lire on
pourrait penser qu'il
propose de faire de la POO en C.





Le sous-titre exact est "Vers une pensée objet en java"





Non, je ne parle pas de cette version. Je parle bien d'une ancienne
version où Drix montrait comment faire de l'objet en C avec les
pointeurs sur fonctions dans les structures de données.

Au passage, c'est redondant, je vois difficilement comment on peut
penser non objet en java.




Oh, méfie-toi. Pour certains, tout est possible !!


Tout les autres codent en C comme des cochons les structures de
données polylithiques : arbres, listes, ensembles, etc.





"polylithiques" ???? c'est une maladie ? ;)





Non, c'est l'antonyme de monolithique :-)


Et GTK+, c'est pas de l'objet codé en C ?

Mais bon, on s'éloigne, on s'éloigne...
Avatar
Wykaaa
onyxs a écrit :
Wykaaa a écrit le 29/08/2008 à 23h30 :
candide a écrit :
Wykaaa a écrit :

Le seul qui traite correctement de ces structures de données en C,
c'est le livre de Philippe Drix



Il contient néanmoins quelques erreurs dont certaines rapportées
sur ce
forum.

"Langage C - Norme ANSI, vers une programmation orientée
objet".



Tu as oublié un mot capital : "java", à te lire on
pourrait penser qu'il
propose de faire de la POO en C.

Le sous-titre exact est "Vers une pensée objet en java"




Non, je ne parle pas de cette version. Je parle bien d'une ancienne
version où Drix montrait comment faire de l'objet en C avec les
pointeurs sur fonctions dans les structures de données.
Au passage, c'est redondant, je vois difficilement comment on peut
penser non objet en java.



Oh, méfie-toi. Pour certains, tout est possible !!

Tout les autres codent en C comme des cochons les structures de
données polylithiques : arbres, listes, ensembles, etc.




"polylithiques" ???? c'est une maladie ? ;)




Non, c'est l'antonyme de monolithique :-)


Et GTK+, c'est pas de l'objet codé en C ?

Mais bon, on s'éloigne, on s'éloigne...



Oui on s'éloigne mais le GTK+, je l'avais oublié celui-là...
Ca doit être l'un des premiers logiciels conséquents codé en C d'une
façon objet.
Il me semble que l'héritage était "simulé" à coup de macros du
préprocesseur qui "appendaient" des structures. Ah, la belle époque !
Avatar
Erwan David
Wykaaa écrivait :

Oui on s'éloigne mais le GTK+, je l'avais oublié celui-là...
Ca doit être l'un des premiers logiciels conséquents codé en C d'une
façon objet.
Il me semble que l'héritage était "simulé" à coup de macros du
préprocesseur qui "appendaient" des structures. Ah, la belle époque !



L'héritage n'est pas nécessaire pour faire de l'objet.

--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Avatar
Alexandre BACQUART
candide wrote:
Le sous-titre exact est "Vers une pensée objet en java"

Au passage, c'est redondant, je vois difficilement comment on peut
penser non objet en java.



En t'y forçant !

[HS]

En J2ME (Java pour mobiles européens), on est forcés d'utiliser les
classes le moins possible car elles prennent une place minimum qui
devient significative pour adresser certaines cibles pathétiques
(beaucoup trop limitées pour supporter cette "norme" de manière acceptable).

Si tu considères ceci et le fait que Java n'a pas de pointeurs, tu
auras, je pense, une idée assez précise de comment on peut penser
non-objet en Java.

[HS]


--
Alex
Avatar
espie
In article <48b9a698$0$874$,
Wykaaa wrote:
Erwan David a écrit :
Wykaaa écrivait :

Oui on s'éloigne mais le GTK+, je l'avais oublié celui-là...
Ca doit être l'un des premiers logiciels conséquents codé en C d'une
façon objet.
Il me semble que l'héritage était "simulé" à coup de macros du
préprocesseur qui "appendaient" des structures. Ah, la belle époque !



L'héritage n'est pas nécessaire pour faire de l'objet.



C'est la première fois que je lis ceci !

Si on ne pratique pas l'héritage, on ne fait pas réellement de l'objet.



N'importe quoi.

Il existe des langages orientes objets sans heritage, qui fonctionnent
et qui sont pleinement objets.
Avatar
Wykaaa
Marc Espie a écrit :
In article <48b9a698$0$874$,
Wykaaa wrote:
Erwan David a écrit :
Wykaaa écrivait :

Oui on s'éloigne mais le GTK+, je l'avais oublié celui-là...
Ca doit être l'un des premiers logiciels conséquents codé en C d'une
façon objet.
Il me semble que l'héritage était "simulé" à coup de macros du
préprocesseur qui "appendaient" des structures. Ah, la belle époque !


L'héritage n'est pas nécessaire pour faire de l'objet.



C'est la première fois que je lis ceci !

Si on ne pratique pas l'héritage, on ne fait pas réellement de l'objet.



N'importe quoi.

Il existe des langages orientes objets sans heritage, qui fonctionnent
et qui sont pleinement objets.


1) Cite-moi de tels langages.
2) Que veut dire "pleinement objet" ?
3) Qu'est-ce, pour toi, que le paradigme objet ?

4) Remarque : des langages "qui fonctionnent" est une phrase qui ne veut
rien dire.

Pour les "pères" de l'objet (en particulier Grady Booch), objet =>
héritage et polymorphisme d'héritage.

Faire de l'objet sans héritage, c'est comme faire de la programmation
fonctionnelle sans fonction.
Avatar
espie
In article <48b9bc3d$0$874$,
Wykaaa wrote:
Il existe des langages orientes objets sans heritage, qui fonctionnent
et qui sont pleinement objets.


1) Cite-moi de tels langages.


Self
http://en.wikipedia.org/wiki/Self_(programming_language)

et d'autres...

2) Que veut dire "pleinement objet" ?


qui sont consideres comme langages objets par la communaute qui s'interesse
un peu en langages objets en dehors du cadre fortement type a la java/c++

3) Qu'est-ce, pour toi, que le paradigme objet ?



objet + methodes...

pas forcement heritage, les langages bases sur la notion de prototype
fonctionnent par clonage d'objets existants, plus specialisation, et ca
marche aussi.

Cote theorique, les gens qui etudient ce genre de choses ont pondu le
omega-calcul, qui se rapproche du lambda-calcul, mais en rajoutant juste
ce qu'il faut pour modeliser les appels par methodes.

Confere
http://en.wikipedia.org/wiki/Object-oriented_programming_language

et en particulier la liste des `prototype-based languages'.




Pour les "pères" de l'objet (en particulier Grady Booch), objet =>
héritage et polymorphisme d'héritage.



Grady Booch a pondu une certaine methodologie tres industrielle, mais
il n'est heureusement pas tout seul... il existe d'autres facons de
faire de l'objet qu'avec un typage statique tres strict.
Avatar
onyxs
Wykaaa a écrit le 30/08/2008 à 17h22 :
onyxs a écrit :
Wykaaa a écrit le 29/08/2008 à 23h30 :
candide a écrit :
Wykaaa a écrit :

Le seul qui traite correctement de ces structures de données en C,
c'est le livre de Philippe Drix




Il contient néanmoins quelques erreurs dont certaines
rapportées
sur ce
forum.

"Langage C - Norme ANSI, vers une programmation orientée
objet".




Tu as oublié un mot capital : "java", à te lire on
pourrait penser qu'il
propose de faire de la POO en C.

Le sous-titre exact est "Vers une pensée objet en java"





Non, je ne parle pas de cette version. Je parle bien d'une ancienne
version où Drix montrait comment faire de l'objet en C avec les
pointeurs sur fonctions dans les structures de données.
Au passage, c'est redondant, je vois difficilement comment on peut
penser non objet en java.




Oh, méfie-toi. Pour certains, tout est possible !!

Tout les autres codent en C comme des cochons les structures de
données polylithiques : arbres, listes, ensembles, etc.





"polylithiques" ???? c'est une maladie ? ;)





Non, c'est l'antonyme de monolithique :-)



Et GTK+, c'est pas de l'objet codé en C ?

Mais bon, on s'éloigne, on s'éloigne...




Oui on s'éloigne mais le GTK+, je l'avais oublié
celui-là...
Ca doit être l'un des premiers logiciels conséquents codé
en C d'une
façon objet.
Il me semble que l'héritage était "simulé"
à coup de macros du
préprocesseur qui "appendaient" des structures. Ah, la belle
époque !


Bizarre d'employer un temps du passé pour évoquer GTK+ qui est utilisé par Firefox, Thunderbird, GIMP, l'environnement GNOME de Linux excusez du peu !
Avatar
Mickaël Wolff
onyxs a écrit :

Bizarre d'employer un temps du passé pour évoquer GTK+ qui est utilisé par
Firefox, Thunderbird, GIMP, l'environnement GNOME de Linux excusez du peu !



Firefox et Thunderbird utilisent Gtk+ parce qu'à l'époque du choix,
Qt n'était pas libre, que wxwidget n'était pas aussi connu, le plus
pertinent sur une plate-forme Linux, etc. Quand à The Gimp, il ne faut
pas oublier que Gtk+ a été développé pour écrire The Gimp... Quand à
GNOME... le grand virage qui est actuellement pris vers le C# fait que
je ne n'ai pas grand espoir pour Gtk+...

Ce n'est pas parce qu'une solution est largement utilisée est la
meilleur.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
Wykaaa
Marc Espie a écrit :
In article <48b9bc3d$0$874$,
Wykaaa wrote:
Il existe des langages orientes objets sans heritage, qui fonctionnent
et qui sont pleinement objets.


1) Cite-moi de tels langages.


Self


Si j'en crois : http://research.sun.com/self/, la dernière version date
de juin 2006. Il n'y a pas une activité débordante sur ce langage...
http://en.wikipedia.org/wiki/Self_(programming_language)



Et bien on ne peut pas dire que cet article soit de qualité (cf., par
exemple, le passage sur héritage/délégation). En fait, en Self, on sait
même faire de l'héritage multiple (cf.
http://research.sun.com/self/release_4.0/Self-4.0/Tutorial/Language/ImportantObjects/MultipleInheritance.html).
Ce n'est donc pas un bon exemple de langage objet sans héritage !!

Merci de ne pas donner de référence sur Wikipedia qui n'est absolument
pas une source fiable concernant le logiciel.

En ce qui me concerne, mes principales références sont les revues de
l'ACM et de l'IEEE. Elles me paraissent autrement sérieuses.

et d'autres...



Pourquoi ne pas citer JavaScript qui me paraît le plus connu (surtout
avec AJAX)

2) Que veut dire "pleinement objet" ?


qui sont consideres comme langages objets par la communaute qui s'interesse
un peu en langages objets en dehors du cadre fortement type a la java/c++



Cette réponse est très orientée et partisane. Pourquoi, d'emblée, mettre
sur la table, à nouveau, la querelle sur le fort typage ?
Des tonnes de littérature existent sur le sujet et, sans polémiquer, le
fort typage a un intérêt certain pour construire des logiciels de
qualité (meilleure fiabilité, programmation sûre (au sens anglo-saxon du
terme : safe programming), coût moindre des phases de tests, etc.)

3) Qu'est-ce, pour toi, que le paradigme objet ?



objet + methodes...



C'est un peu maigre comme définition car encore faut-il avoir
parfaitement défini ce qu'est un "objet".
Un objet définit-il un type ?
Objet au sens de l'analyse, de la conception, de la programmation ??
Quant aux méthodes, c'est juste un autre nom pour "sous-programme".
Si l'objet n'était que ça, le sujet ne mériterait pas autant de litérature.

pas forcement heritage, les langages bases sur la notion de prototype
fonctionnent par clonage d'objets existants, plus specialisation, et ca
marche aussi.



Les langages à base de prototype doivent être distingués des langages
objets même s'ils manipulent (soi-disant) des objets...

Par exemple, je ne considère pas que JavaScript est véritablement un
langage à objets. Par contre c'est effectivement un langage à base de
prototype.

Cote theorique, les gens qui etudient ce genre de choses ont pondu le
omega-calcul, qui se rapproche du lambda-calcul, mais en rajoutant juste
ce qu'il faut pour modeliser les appels par methodes.

Confere
http://en.wikipedia.org/wiki/Object-oriented_programming_language



Type même de l'article qui engendre la confusion sur les langages objet.
Tout est mélangé. Cet article est vraiment du grand n'importe quoi et me
conforte dans l'idée que Wikipedia est tout sauf une référence sérieuse
concernant le logiciel...

et en particulier la liste des `prototype-based languages'.



Oui, ben justement...




Pour les "pères" de l'objet (en particulier Grady Booch), objet =>
héritage et polymorphisme d'héritage.



Grady Booch a pondu une certaine methodologie tres industrielle, mais
il n'est heureusement pas tout seul... il existe d'autres facons de
faire de l'objet qu'avec un typage statique tres strict.



C'est justement l'intérêt d'avoir une méthodologie très industrielle,
comme tu dis. C'est la première fois que je vois reprocher qu'une
méthode soit industrielle. D'habitude on reproche plutôt qu'elle ne le
soit pas assez !

Je vois mal les logiciels spatiaux, militaires, centrales nucléaires,
etc. écrits avec des langages où l'héritage est dynamique...

Les langages à base de prototypes ou non fortement typés ont
certainement leur utilité mais dans les domaines que j'ai cités il n'est
même pas envisageable d'étudier leur emploi...