Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Aller à la page:  1 2 3 Page suivante
Page: 1 sur 3
Début de programation en C
Envoyé par: LePsy666

Bonjour à tous ...

Je commence en programation et je crois que je vais me laisser tenter par le C qui m'a l'air bien sympathique comme il faut smiling smiley Donc je voudrai commencer à pratiquer mais la seule idée que j'ai pu trouver est d'utiliser un périphérique retrouvé adns le fond d'un de mes tiroirs (un petit dongle USB : [www.maxim-ic.com] ) J'ai bien pu retrouver qquelques scripts déjà faits mais dès que j'essaye de les compiler avec GCC j'ai énormément d'erreurs du style :

[...]
/tmp/cc4J8VoS.o(.text+0x20bd): In function `displayBankInformation':
: undefined reference to `owCanLockPage'
/tmp/cc4J8VoS.o(.text+0x20d3): In function `displayBankInformation':
: undefined reference to `owCanLockRedirectPage'
/tmp/cc4J8VoS.o(.text+0x20f7): In function `displayBankInformation':
: undefined reference to `owCanLockRedirectPage'
/tmp/cc4J8VoS.o(.text+0x2119): In function `displayBankInformation':
: undefined reference to `owCanLockPage'
/tmp/cc4J8VoS.o(.text+0x213b): In function `displayBankInformation':
: undefined reference to `owHasExtraInfo'
/tmp/cc4J8VoS.o(.text+0x2151): In function `displayBankInformation':
: undefined reference to `owGetExtraInfoLength'
/tmp/cc4J8VoS.o(.text+0x2165): In function `displayBankInformation':
: undefined reference to `owGetExtraInfoDesc'
collect2: ld a retourné 1 code d'état d'exécution

Quelqu'un saurait me dire à quoi cela correspond ?

D'avance, merci smiling smiley

OLVO ZIATUM PAMM PAMM !

Poste le Saturday 25 February 2006 18:53:19
Répondre     Citer    
Re: Début de programation en C

Citation
LePsy666
Je commence en programation et je crois que je vais me laisser tenter par le C qui m'a l'air bien sympathique comme il faut smiling smiley
Je ne pense pas du tout que le C soit un bon language pour apprendre à programmer. C'est un langage trop proche de la machine pour être pédagogique (comme premier language). Je suggère plutôt Ocaml [caml.inria.fr], Scheme (et l'excellent livre classique dit SICP de Abelsonn Sussmann et Sussman -orthographe à revoir-), ou à la rigeur Ruby comme premier langage. En particulier, ils ont tous un interprète interactif (et Ocaml a aussi un compilateur natif) très agréable pour débuter et déboguer.


Citation

J'ai bien pu retrouver qquelques scripts déjà faits mais dès que j'essaye de les compiler
avec GCC j'ai énormément d'erreurs du style

[...]
/tmp/cc4J8VoS.o(.text+0x20bd): In function`displayBankInformation':: undefined reference to `owCanLockPage'

Il semble que vous utiliser une bibliothèque (peut-être liée à a 1-Wire device, je ne sais pas ce que c'est) et que vous oubliez de linker cette bibliothèque.

Pour commencer à programmer (en réalité, il faut commencer par des notions d'algorithmies), commencez plutot par des exercices classiques du genre "compter le nombre de mots dans un fichier" ou même "jeu de tic-tac-toe", ou à la rigueur une petite application graphique simpliste (par exemple dessin d'un carré), et ne dépendez pas de bibliothèques esotériques.

Quel est votre objectif exact et votre connaissance de Linux?

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Saturday 25 February 2006 19:15:21
Répondre     Citer    
Re: Début de programation en C
Envoyé par: AlSim

Citation
Basile STARYNKEVITCH
Je ne pense pas du tout que le C soit un bon language pour apprendre à programmer. C'est un langage trop proche de la machine pour être pédagogique (comme premier language).

Ou pas assez ... mais je suis d'accord, le C n'est pas un bon premier langage.

Il y a deux approches pour débuter la programmation. L'une privilégie l'approche "théorique", dans ce cas il faut utiliser un langage de haut niveau. Dans ce cas, c'est une bonne idée de choisir un langage interprété. Je suis d'accord pour le CAML même si je n'apprécie pas trop son approche (et que je n'aime pas les différences d'opérateurs du genre +/+. ...) et je ne connais pas Scheme, par contre je te déconseille Ruby, qui, comme Perl d'ailleurs, est trop permissif pour un début.
J'ai commencé avec le C (mais c'était une erreur) puis on m'a conseillé Python, et je pense que c'est une bonne idée, surtout parce que ça apprend à structurer son code (l'indentation est obligatoire).
Si tu ne veux vraiment pas d'un langage interprété et que tu veux rester proche du C dans la syntaxe, essaie le Pascal. C'est le langage que j'utilise en cours d'info en MPSI (on doit être un des derniers lycées à l'utiliser, la pluspart étant passés à CAML) et ça me semble également un bon choix.

L'autre approche serait celle de Knuth : commencer par un langage proche de la machine (assembleur). Là, il faut être très motivé et aller s'acheter le tome 1 de The Art of Computer Programming : Fundamental Algorithms, ça doit être dur, mais il parait que commencer par là fait de bons programmeurs. De toute façon tout programmeur doit avoir lu ce bouquin un jour ou l'autre, alors ...

Pour ce qui est de la programmation graphique, si tu dois te lancer, essaie avec des toolkits comme TK ou à la rigueur SDL qui ont une syntaxe simple, mais commence d'abord par les bases avant de t'essayer à ça.

[catwell.info]

Poste le Saturday 25 February 2006 19:44:22
Répondre     Citer    
Re: Début de programation en C

A dire vrai, j'ai moi-même commencé, à l'age de 14 ans, en PL/1, sur cartes perforées, en 1974. A l'époque, mon père travaillait chez IBM, et avait ramené à la maison un livre d'introduction à la programmation en PL/1 écrit par son collègue Marcus Dornbush.

PL/1 était un peu comme le C++ d'aujourd'hui; un langage monumental, qui prétendait tout faire.

A l'époque aussi, la micro-informatique n'existait pas, et j'allais (au grand dam de ma mère) presque tous les dimanches au centre de calcul d'IBM Réaumur pour y perforer mes cartes....

Le système d'exploitation s'appelait OS/VS2, son shell s'appellait le JCL (et c'était un métier en soi). La machine était un IBM 370/168 avec (si ma mémoire ne fait pas défaut) 1Mo (ou 512Ko) de mémoire à tores (et quelques dizaines de Mo de disques, gros comme des machines à laver).

Souvenirs....




----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Saturday 25 February 2006 20:01:11
Répondre     Citer    
Re: Début de programation en C

Voici une photo d'un IBM 370/168 [www.cs.ncl.ac.uk]

Il faut que j'arrête de radoter, mais l'émotion ;-) :-) ça ne se commande pas....

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Saturday 25 February 2006 20:38:57
Répondre     Citer    
Re: Début de programation en C
Envoyé par: Sve@r

Citation
LePsy666
Bonjour à tous ...

Je commence en programation et je crois que je
vais me laisser tenter par le C qui m'a l'air bien
sympathique comme il faut smiling smiley Donc je voudrai
commencer à pratiquer mais la seule idée que j'ai
pu trouver est d'utiliser un périphérique retrouvé
adns le fond d'un de mes tiroirs (un petit dongle
USB : ) J'ai bien pu retrouver qquelques scripts
déjà faits mais dès que j'essaye de les compiler
avec GCC j'ai énormément d'erreurs du style :

[...]
/tmp/cc4J8VoS.o(.text+0x20bd): In function
`displayBankInformation':
: undefined reference to `owCanLockPage'
/tmp/cc4J8VoS.o(.text+0x20d3): In function
`displayBankInformation':
: undefined reference to `owCanLockRedirectPage'
/tmp/cc4J8VoS.o(.text+0x20f7): In function
`displayBankInformation':
: undefined reference to `owCanLockRedirectPage'
/tmp/cc4J8VoS.o(.text+0x2119): In function
`displayBankInformation':
: undefined reference to `owCanLockPage'
/tmp/cc4J8VoS.o(.text+0x213b): In function
`displayBankInformation':
: undefined reference to `owHasExtraInfo'
/tmp/cc4J8VoS.o(.text+0x2151): In function
`displayBankInformation':
: undefined reference to `owGetExtraInfoLength'
/tmp/cc4J8VoS.o(.text+0x2165): In function
`displayBankInformation':
: undefined reference to `owGetExtraInfoDesc'
collect2: ld a retourné 1 code d'état d'exécution

Quelqu'un saurait me dire à quoi cela correspond
?

D'avance, merci smiling smiley

OLVO ZIATUM PAMM PAMM !
Ton source fait appel à des fonctions que ton éditeur de liens n'arrive pas à trouver.
Tu ne fait probablement pas le lien avec la librairie qui va bien lors de ta compilation.

Ce lien t'explique pourquoi et comment une librairie:[fr.lang.free.fr]

Ce lien te donnera les bases du C: [fr.lang.free.fr]


L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Saturday 25 February 2006 21:29:05
Répondre     Citer    
Re: Début de programation en C
Envoyé par: menelrandir

Citation
AlSim
Si tu ne veux vraiment pas d'un langage interprété
et que tu veux rester proche du C dans la syntaxe,
essaie le Pascal. C'est le langage que j'utilise
en cours d'info en MPSI (on doit être un des
derniers lycées à l'utiliser, la pluspart étant
passés à CAML) et ça me semble également un bon
choix.
Pascal est effectivement un bon langage pour apprendre, et il a l'avantage d'être assez proche de la syntaxe du C, tout en étant moins permissif et en évitant aussi certains aspect plus compliqué du C (l'édition de lien par exemple). C'est avec ça que j'ai appris et je ne pense pas que c'était un mauvais choix (celà dit ce n'était pas le mien mais celui de la fac, comme quoi AlSim, vous n'êtes pas les derniers ;-)).

J'ai aussi fait un peu de CAML en première année et là j'avoue que je ne vois pas trop ce qu'on apprend avec ça, à part peut être les notions d'effet de bord ou de récursivité (qui est parfois considéré comme quelque chose de compliqué, je n'ai jamais trop compris pourquoi...). Enfin si l'objectif au final est de faire du C, pascal me parait vraiment le plus indiqué.

Sinon il y a aussi java qui est généralement considéré comme plus facile à apprendre quand on ne sait pas du tout programmer, même si personnellement c'est un langage que je n'aime pas beaucoup, peut être justement parce que j'ai fait autre chose avant.

Poste le Saturday 25 February 2006 21:32:54
Répondre     Citer    
Re: Début de programation en C

Actuellement, de façon professionnelle, je code plus en Ocaml (Ocaml, pas Caml-Light) qu'en C (et je ne suis pas le seul).

Je veux dire par là qu'il existe des endroits où on code, de façon professionnelle, en utilisant Ocaml.

Je ne pensais pas seulement apprendre à coder en Ocaml pour passer en C, mais aussi coder en Ocaml. Et si si, c'est possible.

Je serais probablement amené à coder de nouveau en C -ça sera même du code libre en GPL et je serais payé pour le développer-, mais il est probable que j'essayerais de coder des générateurs de code (qui génèrent du code C) adapté à mes besoins.

Dans mon esprit, le C est de plus en plus un assembleur portable. C'est plus destiné à être généré, ou à être codé pour des parties critiques, qu'à développer un gros logiciel.


Cordialement.

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Saturday 25 February 2006 22:36:36
Répondre     Citer    
Re: Début de programation en C

J'ai oublié de donner une réponse à la question d'origine de ce fil. L'auteur (dont j'avoue ne pas aimer beaucoup son pseudo LePsy666 qui heurte ma sensibilité esthétique) devrait probablement compiler son fichier essai.c avec une commande comme

gcc -Wall -g -I /usr/local/include/wire -O essai.c -o essai -L /usr/local/lib/wire -lwire

où il faut remplacer essai.c par le nom de son fichier source en C, essai par le nom du binaire souhaité, /usr/local/include/wire par le nom du répertoire où se trouve les fichiers include *.h de sa bibliothèque Wire, /usr/local/lib/wire par le nom du répertoire où se trouve la bibliothèque Wire qu'il utilise, et qui fournit les fonctions owCanLockPage ... qui lui posent problème, et -lwire qui y désigne la bibliothèque en question.

Pour avoir plus d'aide, celui qui se cache sous LePsy666 devrait nous indiquer de quelle bibliothèque il s'agit précisément (Google sur owCanLockPage renvoie à quelque chose du genre 1-Wire sans beaucoup de détails; je ne suis pas sûr que cette bibliothèque soit libre, ce qui peut compliquer les détails des résolutions de problèmes), et avec quelle commande exacte il essaie de compiler.

Je déconseille de démarrer la programmation en C en voulant compiler un programme qui soit plus complexe qu'un seul fichier source (par exemple, un programme avec plusieurs *.c, plusieurs *.h et un Makefile)!

En espérant avoir aidé un peu... ;-p



----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Saturday 25 February 2006 22:53:45
Répondre     Citer    
Re: Début de programation en C
Envoyé par: menelrandir

Citation
Basile STARYNKEVITCH
Actuellement, de façon professionnelle, je code
plus en Ocaml (Ocaml, pas Caml-Light) qu'en C (et
je ne suis pas le seul).

Je veux dire par là qu'il existe des endroits où
on code, de façon professionnelle, en utilisant
Ocaml.

Je ne pensais pas seulement apprendre à coder en
Ocaml pour passer en C, mais aussi coder en Ocaml.
Et si si, c'est possible.
Ce que je voulais dire, c'est que CAML ne me parrait pas être ce qu'il y a de mieux pour apprendre si on souhaite au ensuite passer à C. C'est un mode de pensée assez différent, ça convient certainement mieux à certaines personnes et moins à d'autres, c'est une question de point de vue.
Reste qu'en ce qui me concerne, je n'ai pas l'impression d'avoir beaucoup appris avec caml, moins qu'avec pascal en tout cas, celà dit c'était effectivement du caml-light, et probablement pas exploité à fond.
Mais ce qui me semble le plus important, c'est d'avoir de solides notions d'algorithmique, indépendemment du langage utilisé.

Poste le Sunday 26 February 2006 18:24:40
Répondre     Citer    
Re: Début de programation en C

Citation
menelrandir
Reste qu'en ce qui me concerne, je n'ai pas l'impression d'avoir beaucoup appris avec caml, moins qu'avec pascal en tout cas, celà dit c'était effectivement du caml-light, et probablement pas
exploité à fond.

Ocaml apporte des traits importants sur CamlLight: la modularité (les foncteurs de Caml, c'est comme des templates, mais en mieux) et les aspects objets (classes avec heritage multiple) d'Ocaml.

En pratique, pour des gros développements, ces apports sont très appréciables. Il y a MetaOcaml [metaocaml.org] qui apporte en plus la métaprogrammation.

Et c'est vrai que la pratique de CommonLisp peut aussi beaucoup apporter.

Cordialement

Poste le Sunday 26 February 2006 22:18:45
Répondre     Citer    
Re: Début de programation en C
Envoyé par: tuxfanch

Hop ben tiens, j'ajoute mon grain de sel :

Pour ma part je trouve que le C est un très bon premier language pour 2 raisons :
* Primo : en C, on peut tout faire
* Secundo: en C, il faut tout faire

En fait, c'est plus grâce au C et à des langages de "bas-niveau" qu'on apprend l'algorithmique qui manque tant à nos nouvelles recrues (et par là même, un minimum de bon sens dans la programmation).
C'est encore grâce au C qu'on comprend comment fonctionnent la plupart des sous-couches que l'on utilisera après sans réfléchir (sockets, threads etc etc ...).

Après bien sûr, tout est question de goût : je trouve que Pascal c'est de la merde en barre, mais je n'ai pas franchement d'argument pour étayer mon propos (qui du coup a une valeur plus réduite ^o^ ).

Et dans ce cas, je préfère python de très très loin à tous les autres. En fait pour ma part, il existe 5 langages :
- C : pour l'embarqué et le temps réel ou certains vieux soft "industriels"
- C++ : un mastodonde de l'objet, bien puissant mais bien compliqué.
- Java : à cause de tous les projets J2EE (mais je trouve la vm pourrie)
- C# : une version plus "haut-niveau" que C++ sur un framework efficace
- python : plus rapide, plus puissant, plus efficace, plus maintenable, plus pratique, plus compréhensible, plus fun

my2cents, à côté de la fontaine ^^D-*

------- <br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay

Poste le Monday 27 February 2006 22:32:32
Répondre     Citer    
Re: Début de programation en C
Envoyé par: Mushroom

Citation
tuxfanch
- C : pour l'embarqué et le temps réel ou certains vieux soft "industriels"
Y a aussi ADA dans cette catégorie non ? ... je ne connais ni C ni ADA, mais quand tu vois le typage de la mort exigé en ADA, tu comprends pourquoi il est dédié aux très grosses applis.

Pour le reste -- 2¢ à mon tour -- il y a tout de même un bon point pour Ocaml (enfin, qui m'intéresse moi) : il permet de programmer en impératif comme en fonctionnel. C'est une donc bonne porte pour ouvrir vers un langage comme XSLT, et donc le traitement de bases de données ou de document XML...

Poste le Tuesday 28 February 2006 12:41:36
Répondre     Citer    
Re: Début de programation en C
Envoyé par: abgech

Dans le milieu industriel, C reste malgré tout ce qui se fait de mieux, essentiellement pour des raisons de compacité du code produit.

Pour l'avionique, il n'y a pas vraiment de langage imposé, mais si l'on veut avoir un chance que le logiciel soit certifié, ADA est incontournable à cause justement de sa rigueur. Et encore, c'est un sous-ensemble d'ADA, débarrassé de toute allocation dynamique de mémoire (interdite en avionique).
Microsoft est très loin d'être capable d'écrire des logiciels en avionique :-D :-))

Poste le Tuesday 28 February 2006 16:10:06
Répondre     Citer    
Re: Début de programation en C
Envoyé par: niorf

Bonjour,

j'ai une question, vous dites que le C n'est pas un bon langage pour commencer à apprendre à programmer. Mais comment expliquer vous que c'est pourtant le premier langage enseigné en IUT, Universitée, école d'ingé
et que les langages type ML eux ne sont pas ou tres peu enseigné ?

Pour ma part je suis en Maitrise d'info, je viens de voir Ocaml (nous ne l'avons que survolé) cette année, donc apres 3ans d'étude...
Je ne trouve pas C plus dure qu'Ocaml, au contraire la généricité de caml le rend, a mon gout, plus difficile pour des débutants.

Poste le Tuesday 28 February 2006 17:08:13
Répondre     Citer    
Re: Début de programation en C

Citation
niorf
j'ai une question, vous dites que le C n'est pas un bon langage pour commencer à apprendre à
programmer. Mais comment expliquer vous que c'est pourtant le premier langage enseigné en IUT,
Universitée, école d'ingé et que les langages type ML eux ne sont pas ou
tres peu enseignés ?

C'est une erreur de certains pédagogues. Surtout en grande école ou à l'Université, on devrait vous enseigner des concepts qui vous servent toute votre vie professionnelle, pas le langage à la mode chez les industriels du moment (qui d'ailleurs sont souvent mal placés pour choisir un langage: l'industrie a rarement le temps d'une veille technologique, et suit l'habitude des autres). Si vous connaissez Ocaml & Prolog ou CommonLisp, vous apprendrez en quelques semaines PHP, Perl ou Java (mais l'inverse n'est pas vrai).

Cela étant, à Berkeley, à Stanford, à Polytechnique, à l'ENS Ulm, à l'ENS Cachan, à l'ENS Lyon, à Paris6 Jussieu, à Paris11 Orsay, et ailleurs, les langages fonctionnels (Ocaml, Haskell) sont très largement enseignés. En prépa en France, Caml-light semble bien plus enseigné que Pascal. Donc, dans un certain nombre d'établissements d'enseignement de qualité, la programmation fonctionnelle est effectivement enseignée.

D'ailleurs, le meilleur cours sur Ocaml est américain (Berkeley si j'ai bonne mémoire).

Il y a une vingtaine (ou peut-être 30) d'années, E.Dijkstra écrivait déjà que ceux qui enseignait Cobol étaient des criminels. L'objectif d'un enseignant, c'est d'apprendre à réflechir, pas d'apprendre un langage. Et il n'y a pas si longtemps, les programmeurs qui ne connaissait que le Cobol ont eu des difficultés d'emploi!

Quel que soit le language que vous utilisez (et c'est vrai pour Ocaml aussi) dans 5 ou 10 ans il sera obsolète. Ce qui est important, c'est votre capacité à apprendre de nouveaux langages. Donc, ca ne sert à rien de vous enseigner un language utile immédiatement!

On pourrait objecter que les IUT ne forment pas des ingénieurs, mais des techniciens... C'et un autre débat (différence entre ce qu'on appelle en France les cadres et les techniciens) et ça pourrait expliquer qu'ils apprennent C++ ou Java.

Mon métier actuel est de faire l'analyse statique de programmes C, donc de savoir formaliser sa sémantique (par exemple, pour aider à prouver la correction des programmes critiques embarqués de l'Airbus A380). Je peux vous assurer que celle-ci est assez obscure dans ses détails (voir par exemple le projet Concerto auquel participe Xavier Leroy et d'autres). Essayez par exemple d'écrire un compilateur C (ou un processeur XSLT) en Ocaml, c'est bien moins pénible que de l'écrire en C++.

J'ai été en fac d'informatique il y a presque 20 ans. Les langages que j'ai appris sont évidemment obsolètes (PL1, Fortran, Pascal, Modula, Lisp -même si ce dernier a remarquablement évolué en CommonLisp). Les concepts et algorithmes que j'ai appris me servent encore dans ma pratique quotidienne (les notions de lambda-calcul, de complexité, d'indécidabilité me servent bien plus souvent que le PL1 ou le Fortran).

Je vous souhaite donc d'apprendre d'abord des concepts. Pour apprendre un langage, vous aurez le temps durant votre pratique professionnelle. Et quel que soit le formalisme ou le(s) langage(s) que vous apprenez, il sera obsolète bien avant la fin de votre vie professionnelle. En résumé, l'une des principales qualités de l'ingénieur, c'est de savoir vite apprendre (sur le terrain).

Dans la pratique industrielle, le plus important sur un langage, c'est les bibliothèques disponibles; celles ci sont encore moins pérennes que les langages, et ce n'est pas la peine de les enseigner de manière approfondie en formation initiale!


N'attendez pas d'une formation initiale qu'elle vous apprenne le langage qui 5 ans plus tard sera obsolète, exigez de votre formation initiale qu'elle vous enseigne des concepts qui vous suiveront toute votre vie!

Un excellent langage pour débuter la programmation est évidemment Scheme. Il ne sert à rien dans la vrai vie professionnelle, mais les concepts du fameux SICP [en.wikipedia.org] (un classique de la littérature) sont irremplaçables. De même, les algorithmes décrits dans les livres de Knuth (ou même Wirth) sont plus importants que les langages dans lesquels ils sont écrits.

Ce que je veux dire, c'est qu'on devrait enseigner plusieurs languages pour les concepts qu'ils vous donnent, pas pour l'usage immédiat après l'école. J'ai eu la chance d'avoir ce genre d'enseignement, et ça me sert encore. Je plains beaucoup ceux qui ne voient qu'un seul langage (C++, Java, ...). De même, une formation en logique ou en math est plus utile (car plus pérènne) qu'une formation à XHTML2, et elle vous servira toute la vie!

Il y a une tendance triste actuelle à vouloir former des exécutants (qu'on licenciera sans ménagement dans quelques années, quand leur savoir pratique sera obsolète), et pas des citoyens autonomes et responsables... L'intérêt immédiat du patronat (main d'oeuvre corvéable, immédiatement operationnelle, jetable comme un kleenex) est distinct de l'intérêt à long terme des citoyens (capacité d'apprendre et de s'adapter à un monde qui change...)..


D'ailleurs, la difficulté de C n'est pas de connaitre bien le langage (personne ne connait le sens exact de i *= 2.3 avec int i -la multiplication est-elle entière ou flottante?) c'est de savoir bâtir un logiciel en C qui soit maintenable. Ce n'est pas une question de connaitre la syntaxe ou la sémantique détaillée du C.

Dans le labo où je travaille, il y a une vingtaine de personnes, et une bonne douzaine est en train de suivre, cette semaine même, une formation Ocaml, donc il y des gens qui en ont besoin.

Bien sûr, l'ingénieur en éléctronique ou en acoustique qui a ponctuellement besoin de développer un petit système embarqué codera en C (mais il l'apprendra bien plus vite s'il a appris Scheme, Prolog ou Caml à l'école!).


Je dois avouer d'ailleurs que je prefère MétaOcaml à Ocaml, et qu'il m'arrivera encore de coder en C.
Je suis sûr que le langage dans lequel je coderais dans 15 ans n'est pas encore né.


----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Tuesday 28 February 2006 19:46:50
Répondre     Citer    
Re: Début de programation en C
Envoyé par: niorf

Merci de votre réponse

Citation
Basile STARYNKEVITCH
...les notions de lambda-calcul, de complexité, d'indécidabilité me servent...
Ca me rassure, car mis a part l'indécidabilité, je me demandais bien si je me servirais un jour du reste. A priori oui, j'ai moins l'impression d'avoir étudié des choses inutiles :-)

Poste le Tuesday 28 February 2006 20:19:09
Répondre     Citer    
Re: Début de programation en C

Citation
niorf
Merci de votre réponse

Basile STARYNKEVITCH a écrit :...les notions de
lambda-calcul, de complexité, d'indécidabilité me
servent...
Ca me rassure, car mis a part l'indécidabilité, je me demandais bien si je me servirais un jour du
reste. A priori oui, j'ai moins l'impression d'avoir étudié des choses inutiles

La complexité, ca sert à tous les développeurs. Si vous vous rendez compte qu'un problème équivaut à celui du voyageur du commerce (ou simplement qu'il se calcule en temps exponentiel) ca ne sert à rien de vous casser la tête à essayer de le coder efficacement - il faut plutot le contourner.

Le lambda-calcul me sert, parce que je travaille sur la sémantique des languages de programmation.

Je dois avouer aussi que je suis (ingénieur-) chercheur, donc il est normal que la théorie me soit un peu utile. Je suis payé pour proposer des innovations aux industriels.

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Tuesday 28 February 2006 20:33:23
Répondre     Citer    
Re: Début de programation en C
Envoyé par: abgech

Je partage une grande partie des opinions de Basile STARYNKEVITCH (tu n'as pas un surnom ? ;-)).
Est-ce un effet de génération ? Retraité, j'ai enseigné l'algorithmique et la programmation de processus industriels en école d'ingénieur. J'ai toujours une activité de développement d'applications industrielles pour quelques clients.

Combien de fois ai-je dit que l'on devrait apprendre à programmer avec un cerveau, du papier, une gomme et un crayon (dans l'ordre d'importance décroissante). Il devrait être strictement interdit d'apprendre à programmer avec un ordinateur. Mais, c'est infiniment plus facile pour un prof et ses assistants de corriger un programme écrit en un langage informatique quelconque que de corriger un algorithme écrit en pseudo-code ou avec tout autre moyen d'expression, alors ...

Si je peux me permettre une analogie grossière avec l'automobile, lorsqu'on apprend à conduire, on n'apprends pas à conduire une Peugeot ou une Renault (pub non rétribuée, hélas): on apprend à conduire une voiture, point barre.
La programmation c'est la même chose, il faut apprendre les bases, l'algorithmique ! Les applications (tel ou tel langage) ne viennent qu'après et ne sont qu'une illustrations de concepts plus généraux. Par exemple, les algorithmes de KNUTH sont décris en assembler d'une machine totalement fictive et cela convient très bien. Apprendre un langage comme le C alors qu'on a une connaissance raisonable d'algorithmique, c'est une affaire d'une semaine, écrire courament du C c'est une affaire d'un mois et maîtriser pratiquement totalement le C ne devrait pas prendre plus de 6 mois. Par contre C est certainement le langage le plus exécrable que l'on puisse trouver pour apprendre.

Toutefois, comme il faut bien "faire avec" et qu'il faille enseigner la programmation avec un support ordinateur, je préconise en fait différents langages selon le paradigme de programmation que l'on souhauite illustrer:
- Programmation structurée
PASCAL pour les bases, MODULA pour l'aspect concurrence, ADA pour une approche de la généricité.
- Programmation objet
Sans aucun doute SMALLTALK. C++, à mes yeux n'est qu'un infame bricolage. JAVA, pourquoi pas ?
- Programmation en logique
LISP, év. PROLOG
- Programmation fonctionnelle
OCAML

Certains de ces langages n'ont aucune applications pratiques, mais, muni d'une bonne connaissance d'algorithmique, de la connaissance de deux ou trois langages de programmation, vous êtes prêt à apprendre n'importe lequel des 2000 à 3000 langages de programmation existant au monde.



Une question pour Basile, les application de l'A380 sont en C ? J'ai travaillé, il y a une dizaine d'année sur des problèmes de givrage (pour un concurrent d'Airbus :-)), à l'époque, ADA était imposé "de facto" pour obtenir la certification. Les choses ont changés ?

Poste le Tuesday 28 February 2006 20:35:40
Répondre     Citer    
Re: Début de programation en C

Citation
abgech


Une question pour Basile, les application de l'A380 sont en C ? J'ai travaillé, il y a une
dizaine d'année sur des problèmes de givrage (pour un concurrent d'Airbus ), à l'époque, ADA était
imposé "de facto" pour obtenir la certification. Les choses ont changés ?

Oui (mais je ne travaille pas directement sur l'A380, même si Airbus/EADS est un gros client industriel de mon labo).

Mais le code critique est soigneusement validé et statiquement analysé, avec des méthodes formelles. La certification peut se faire sur du code formellement validé.

Quelques liens pour en savoir plus.

[www-list.cea.fr]

[www.di.ens.fr]

[www-list.cea.fr]

On verra bientôt de plus en plus d' analyseurs statiques de C en logiciel libre.



----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Tuesday 28 February 2006 20:47:25
Répondre     Citer    
Aller à la page:  1 2 3 Page suivante
Page: 1 sur 3

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Début de programation en C
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.
Nouveau sujet sur ce forum

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons