Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Début en C et C++

106 réponses
Avatar
HB
Bonjour,


En début d'année, je vais suivre une formation dans l'automatisme et
l'informatique Industriel.


cependant je ne connais rien en langage de programmation. je suis à la
recherche de site voir des livres, afin de prendre de l'avance.

Question au passage, pour apprendre le C++ j'entend différente sons de
cloche, certain dissent qu'il faut apprendre le C au parvant, d'autre le
conseil fortement enfin d'autre que cela n'est absolument pas nécessaire.

Donc faut il l'apprendre ?

Merci de vos réponses

10 réponses

Avatar
Gabriel Dos Reis
(Marc Espie) writes:

| In article ,
| Gabriel Dos Reis wrote:
| >Il a un bouquin spécifiquement orienté débutants (basé sur des cours
| >aux freshmen ici au TAMU) qui est sous presse
| >
| > http://www.research.att.com/~bs/programming.html
|
| Pourquoi fltk et pas qt ?

Ah, bonne question. Le choix était guidé essentiellement par
l'audience (freshmen). En 2004, BS cherchait une bibliothèque simple,
portable (la plupart des étudiants freshmen ont des portables Mac ou sous
Windows, même si la plupart des machines en lab sons sous Unix
ou GNU/Linux). Donc, on a fait la revue de pas mal de bibliothèques GUI,
y compris QT (à l'époque on avait que le bouquin sur la version 3, la
version 4 est venue quelque temps après), GTK (et ses variantes), etc.
BS voulait quelque chose en C++ relativement simple en concepts à
expliquer aux élèves (freshmen). QT vient avec sa propre version de
C++ molestée. En termes de concepts et simplicité FLTK présentait un
meilleur avantage sur les concurrents. Mais on avait discuté à
plusieurs reprises de QT -- il a encore toute une pile de bouquins liés
à QT dans son bureau.

-- Gaby
Avatar
espie
In article <48bbb521$0$6986$,
Mickaël Wolff wrote:
Marc Espie a écrit :

Pourquoi fltk et pas qt ?



Et pourquoi pas wxwidget ou gtkmm ? ;)



gtkmm, lol! apprendre le C++ avec un wrapper autour d'une bibliotheque
concue par des gens refractaires au C++, ca ne me parait pas une bonne
idee pour debuter...

wxwidget n'est pas trop geniale non plus de ce que j'en ai vu, en particulier
cote callbacks.
Avatar
Mickaël Wolff
Marc Espie a écrit :
gtkmm, lol! apprendre le C++ avec un wrapper autour d'une bibliotheque
concue par des gens refractaires au C++, ca ne me parait pas une bonne
idee pour debuter...



Tu auras saisi que c'était de la provocation, pour répondre à ta
provocation sur QT (car il revient souvent le repproche de la dépendance
à Moc).


wxwidget n'est pas trop geniale non plus de ce que j'en ai vu, en particulier
cote callbacks.



Je me suis concentré sur Gtkmm, donc je ne sais pas ce qu'il en est
de wxwidget.

Cependant, je trouve aussi étrange le choix de FLTK, qui est tout de
même un abandonware si l'on en croit la doc (la dernière version date de
début 2007).


--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
Gabriel Dos Reis
Mickaël Wolff writes:

[...]

| Cependant, je trouve aussi étrange le choix de FLTK, qui est tout
| de même un abandonware si l'on en croit la doc (la dernière version
| date de début 2007).

En 2004, où le bouquin (basé sur les cours donnés ici au TAMU) prenait
forme, la situation était très différente (tu remarqueras aussi que
le bouquin couvre presque uniquement C++98, largement suffisant pour un
débutant, bien supporté par tous les compilateurs C++). Enfin, il faut
aussi noter que le but du bouquin n'est pas d'enseigner spécifiquement
le GUI -- des tonnes de pavés ont déjà écrits sur le sujé. Le but,
c'est d'enseigner à *programmer* (Le titre c'est bien « Programming
»), avec C++ comme outil.

Je suis persuadé que d'ici la prochaine révision du bouquin, on aura
pas d'offres en matière de GUI :-)

-- Gaby
Avatar
pjb
James Kanze writes:

On Aug 31, 5:49 pm, Gabriel Dos Reis wrote:
(Pascal J. Bourguignon) writes:



| James Kanze writes:



| >> Bon, mais serrieusement, concernant le C++, le problème c'est
| >> que c'est un langage qui n'est pas fini.



| > C'est, il me semble, un caractèristique essentiel de tout
| > langage de programmation utilisable.



| Non, un important caractère est que le langage soit extensible. Pas
| qu'il faille commencer par écrire 20,000 lignes de code pour pouvoir
| l'utiliser.



Cela me rappele le(s) Lisp.



Pas tout à fait. En Lisp, ce n'est pas 20,000 lignes, c'est
20,000 ouvertures et fermatures des parenthèses.



Il y en a plus en C ou C++ qu'en Lisp (En comptant [comme il se
doit]) les accolades et crochets.

--
__Pascal Bourguignon__ http://www.informatimago.com/

CAUTION: The mass of this product contains the energy equivalent of
85 million tons of TNT per net ounce of weight.
Avatar
pjb
(Pascal J. Bourguignon) writes:

James Kanze writes:

On Aug 31, 5:49 pm, Gabriel Dos Reis wrote:
(Pascal J. Bourguignon) writes:



| James Kanze writes:



| >> Bon, mais serrieusement, concernant le C++, le problème c'est
| >> que c'est un langage qui n'est pas fini.



| > C'est, il me semble, un caractèristique essentiel de tout
| > langage de programmation utilisable.



| Non, un important caractère est que le langage soit extensible. Pas
| qu'il faille commencer par écrire 20,000 lignes de code pour pouvoir
| l'utiliser.



Cela me rappele le(s) Lisp.



Pas tout à fait. En Lisp, ce n'est pas 20,000 lignes, c'est
20,000 ouvertures et fermatures des parenthèses.



Il y en a plus en C ou C++ qu'en Lisp (En comptant [comme il se
doit]) les accolades et crochets.



Et j'oubliais maintenant les < et > dans les templates C++...

--
__Pascal Bourguignon__ http://www.informatimago.com/

CAUTION: The mass of this product contains the energy equivalent of
85 million tons of TNT per net ounce of weight.
Avatar
Sylvain SF
Gabriel Dos Reis wrote on 01/09/2008 10:55:

Mais maintenant, on sait qu'il existe [...]



ou alors il faut ne pas avoir lu les 15 posts précédents qui le citent,
ce n'est plus un conseil (anticipé), ça devient une tribune.

enfin, pour une fois que Bjarne nous promet du "designed for classroom
use", pas de raison de bouder son attente.

Sylvain.
Avatar
loic.actarus.joly
On 1 sep, 10:52, Gabriel Dos Reis wrote:

| Je pense que le passage d'arguments par référence constante doit
| arriver assez tôt,

Définis « assez tôt » :-)



En l'occurrence, assez tôt, ça voulait dire pour moi dès qu'on veut
passer des vectors à des fonctions, ce qui arrive probablement juste
après qu'on ait appris les boucles et les fonctions.

En tout cas bien avant que l'on ait commencé à apprendre les types
définis par l'utilisateur, donc assez tôt.


| si l'on veut donner de bonnes habitudes, non ?

Lesquelles ?

Passer des doubles ou floats ou ints par référence const n'est pas un e
bonne habitude.  Dans mon expérience, dès que tu mentionnes quelque
chose comme ça, il y a deux réactions possibles :
  (1) ils commencent à en foutre partout, ou
  (2) ils sont complètement tétanisés à l'idée de voir leurs
      programmes tout d'un coup inefficaces parce qu'ils n'ont pas mis
      assez de const ref.



Donc tu proposes de tout passer par copie au début, même des
structures lourdes, et de leur montrer le passage par référence const
bien plus tard ? A quel moment ? Après qu'ils aient vu les
constructeurs par copie te semble un bon endroit ? A un autre moment
encore ?

--
Loïc
Avatar
Gabriel Dos Reis
"" write s:

| On 1 sep, 10:52, Gabriel Dos Reis wrote:
|
| > | Je pense que le passage d'arguments par référence constante doit
| > | arriver assez tôt,
| >
| > Définis « assez tôt » :-)
|
| En l'occurrence, assez tôt, ça voulait dire pour moi dès q u'on veut
| passer des vectors à des fonctions, ce qui arrive probablement juste
| après qu'on ait appris les boucles et les fonctions.

Pour les débutants, passer ces arguments par valeurs (ce que nous leur
apprenons à faire) suffit largement. Après, quand ils ont compris les
mécanismes fondamentaux, on peut leur apprendre à se soucier de la
performance. En somme :

écris un programme correct d'abord, optimise ensuite sur la base de
données concrètes.

C'est dur d'optimiser un programme buggué, ou d'optimiser tout cours
sans avoir de données concrètes.

| En tout cas bien avant que l'on ait commencé à apprendre les ty pes
| définis par l'utilisateur, donc assez tôt.

On leur apprend à définir leurs propres classes relativement assez
tôt. Et comme la plupart des choses qu'ils font ont des sémantiqu es
par valeurs, ils n'ont pas à se soucier de contructeur de copie ou
d'opérateur de copy et d'affectations.

Quand on arrive sur des problèmes qui requièrent la notion de
référence (pas juste au sense C++), on introduit les réfà ©rencs. Et
souvant, cela va aussi avec la notion de gérer ses propres copies.

| > | si l'on veut donner de bonnes habitudes, non ?
| >
| > Lesquelles ?
| >
| > Passer des doubles ou floats ou ints par référence const n'es t pas une
| > bonne habitude.  Dans mon expérience, dès que tu mention nes quelque
| > chose comme ça, il y a deux réactions possibles :
| >   (1) ils commencent à en foutre partout, ou
| >   (2) ils sont complètement tétanisés à l'id ée de voir leurs
| >       programmes tout d'un coup inefficaces parce qu'ils n'ont pas mis
| >       assez de const ref.
|
| Donc tu proposes de tout passer par copie au début, même des
| structures lourdes, et de leur montrer le passage par référence const
| bien plus tard ?

Yep.

| A quel moment ?

Un peu aux alentours de simples GUIs (où ils doivent se souvenir de
quelles « fenêtres » ils détiennent)

| Après qu'ils aient vu les constructeurs par copie te semble un bon
| endroit ?

Presque au même moment.
Comme le titre du bouquin le dit, c'est « Programming ». Donc on leur
appred à résoudre des problèmes. Et les concepts du langage sont
présentés au fur à mesure de résolutions de problè mes. Le secret,
c'est de trouver des problèmes graduels en difficulté qui permett ent
un apprentissage relativement indolore.

-- Gaby
Avatar
Fabien LE LEZ
On 01 Sep 2008 03:55:16 -0500, Gabriel Dos Reis :

| Ouais, mais celui-là, y'a pas grand-monde en mesure de le conseiller.

Mais maintenant, on sait qu'il existe ; et pas mal de gens savent
qu'ils existent



Mais combien ont lu la version définitive ? Ou au moins, une partie
assez importante d'une version assez proche de la version définitive
pour pouvoir le conseiller ?