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
Sylvain SF
Fabien LE LEZ wrote on 31/08/2008 06:37:

Je préfère éviter de poster des exemples,
personne ne me croirait si je prétends que c'est du code industriel.



Du code fait n'importe comment par des gens qui ne connaissent pas
grand-chose au langage (que ce soit Java, C++ ou n'importe quel
autre), c'est courant :-(



on pourrait comprendre que tu considères ces productions comme du
"n'importe quoi", c'est un peu insultant, un peu réducteur.
il y a un monde entre un exemple académique ou normatif du C++
et l'usage quotidien industriel ... je me reconnais assez dans
le constat d'Alexandre.

les auteurs connaissent leurs contraintes (temps, outil, environnement),
savoir s'ils connaissent "grand-chose" au langage est très rarement la
première préoccupation (surtout posée comme une question métaphysique).

Y'a qu'à voir les horreurs qui traînent dans du code que j'ai écrit il
y a quelques années, et qui est toujours utilisé -- le pire, c'est
qu'il fonctionne ! :-(



de fait, dans l'industrie, le fait qu'il fonctionne n'est pas "le pire"
mais justement l'attente (merci de ne pas enchainer sur une maintenance
pré-supposée impossible à cause de ce fait même).

Sylvain.
Avatar
Sylvain SF
LMC wrote on 31/08/2008 10:53:

[corrections inutiles]



si tu as su corriger, soit certain que *tout le monde*
a pu le faire; le français n'est pas la langue maternelle
de James pour autant ses rares erreurs n'ont jamais nuit
à la qualité de ses interventions.

Sylvain.
Avatar
Gabriel Dos Reis
(Pascal J. Bourguignon) writes:

| Gabriel Dos Reis writes:
|
| > (Pascal J. Bourguignon) writes:
| > | Compilé avec un compilateur C++. C'est donc du C++. Il serait temps
| > | que tu te rendes compte qu'il n'y a pas d'amélioration au langage
| > | juste en ajoutant deux signes plus au nom.
| >
| > Il reste une question fondamentale à laquelle tu as soigneusement
| > éviter de considérer : qu'est-ce que tu voulais exprimer dans f() ?
|
| Relis mon article.

Mais cela a été fait, mon cher. D'où la remarque. Mais tu n'es pas
obligé d'étayer tes allégations, hein.

-- Gaby
Avatar
Gabriel Dos Reis
(Pascal J. Bourguignon) writes:

| James Kanze writes:
|
| > Compatibilité C oblige. En C++, la risque (pour le débuttant)
| > est moindre, parce qu'il n'aurait pas appris l'opérateur &.
|
| Bien sur que si.

Pourquoi ?

| Pour définir une "reférence", ou pour faire un ET binaire.

Dans quelles circonstances le débutant aurait à le faire ?

Dans notre cours au TAMU, ils ne voient les pointeurs que bien très
tard -- même après voir écrits des programmes avec GUI.

-- Gaby
Avatar
Gabriel Dos Reis
Mickaël Wolff writes:

| HB a écrit :
| > Merci pour vos réponses, je ne sais toujours pas s'il faut ou pas
| > apprendre le C, certains d'entre vous sont même partie dans des
| > explications qui me dépassent pour l'instant !!
|
| Bjarne Stroustrup penses qu'il vaut mieux s'attaquer directement au
| C++, qui permet d'éviter les routines de bas niveau dans un premier
| temps.

Non seulement il le pense, mais c'est pratiqué en grandeur nature
depuis au moins 4 ans ici au TAMU ; et le résultat est plutôt excellent.

[...]

| > Concernant la programmation, je pense me diriger vers le C mais
| > juste le base, ensuite le C++, je ne sais pas si c'est le bon choix,
| > on verra plus tard.
|
| D'ailleurs, pourquoi personne n'a conseillé le bouquin de
| Stroustrup sur le C++ ?

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


Tu peux déjà le commander chez Amazon.

-- Gaby
Avatar
Gabriel Dos Reis
Fabien LE LEZ writes:

[...]

| Je ne le trouve pas spécialement lisible ; par ailleurs, c'est une
| référence du langage (grosso modo, la norme en un petit peu moins
| aride), absolument pas un cours.

http://www.research.att.com/~bs/programming.html

Il y a déjà des traductions dans d'autres langues en cours, je ne sais
pas s'il sera traduit en Gaullois (non, pas moi, j'ai trop de boulot).

-- Gaby
Avatar
Gabriel Dos Reis
(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.

-- Gaby
Avatar
James Kanze
On Aug 31, 2:23 pm, (Pascal J. Bourguignon)
wrote:
James Kanze writes:
> Compatibilité C oblige. En C++, la risque (pour le débuttant)
> est moindre, parce qu'il n'aurait pas appris l'opérateur &.



Bien sur que si. Pour définir une "reférence", ou pour faire
un ET binaire.



Pour jouer sur des mots : le & qui sert à déclarer une référence
n'est pas un opérateur.

Mais dans l'ensemble, je ne crois pas qu'un élève verrait des
références dans le début du cours. Et ce n'est pas certain qu'il
voit jamais les ET binaire ; c'est vraiment quelque chose qui ne
sert que dans les cas très spéciaux, et de très bas niveau.

> (D'ailleurs, même en C, ce n'est pas un sujet qu'on aborde dans
> les première leçons.)



>> Je n'ai pas l'impression que la vérification des types à la
>> compilation aide en quoi que ce soit.



> Pour des petits essais d'école, c'est d'une utilité limitée.
> Pour de grandes applications, c'est essentielle.



La preuve que non. Si sur un programme de trois lignes ce
n'est pas efficace, comment peut il l'être sur un programme de
200,000 lignes?



Parce que son utilité, c'est surtout pour ajouter les contrôles
quand on est plusieurs à travailler ensembles, et quand on
travaille sur des modules distinctes. Sur un programme de trois
lignes, on est rarement plusieurs, et le programme ne comporte
jamais qu'une module. Dans un programme de 200,000 lignes, on
est prèsque toujours plusieurs, et je vois mal une module unique
de cette taille. Mais le typage dynamique est encore jouable, à
condition d'avoir un bon processus de dévelopement. Dans des
programmes de taille moyen (disons à partir d'une million de
lignes), et au delà, le typage statique devient de plus en plus
important.

> [...]
>> Ici, même une erreur à l'exécution n'est pas catastrophique
>> car le programme peut l'attraper et la gérer.



> Ce qui est rarement une bonne idée s'il s'agit d'une erreur de
> programmation.



Ce qui est essentiel dans des systèmes critiques.



On voit que tu n'as jamais travaillé sur des systèmes critiques.
La première règle, absolue, c'est d'aborter le système la plus
vite possible en cas d'erreur, afin que le système de secours
puisse reprendre la main. Et d'exécuter le moins de code
possible (qui pourrait éventuellement empirer l'erreur) dans de
tels cas : pas de destructeurs (qui supposent quand même un
système intégre), ni des blocs catch (ou finally, dans d'autres
langages).

--
James Kanze (GABI Software) email:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Avatar
James Kanze
On Aug 31, 2:17 pm, (Pascal J. Bourguignon)
wrote:
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.



[D'abord, je ne suis pas sûr d'avoir bien compris ton
« fini », ci-dessus. Je l'ai compris dans le sens
« non-infini », et non dans le sens achevé, ou complet et
fermé.]

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.



En somme, comme le C++, qui est prèqu'un modèle de
l'extensibilité. (Quant au nombre de lignes, tout dépend. Je
trouve une certaine rédondnance un avantage, dans la mesure où
il permet au compilateur d'attraper les erreurs qui sinon
propagent jusqu'à l'exception.)

--
James Kanze (GABI Software) email:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Avatar
LMC
SC
"Sylvain SF" a écrit dans le message de news:
48baa946$0$922$
LMC wrote on 31/08/2008 10:53:

[corrections inutiles]



si tu as su corriger, soit certain que *tout le monde*
a pu le faire; le français n'est pas la langue maternelle
de James pour autant ses rares erreurs n'ont jamais nuit
à la qualité de ses interventions.

Sylvain.