Apprendre la programmation en C.
+5
doom
Philippe
Petitagore
MattLA
Stauk
9 participants
Page 2 sur 3
Page 2 sur 3 • 1, 2, 3
Re: Apprendre la programmation en C.
Stauk a écrit:Mon objectif actuel est d'être capable d'écrire des prototypes qui tournent à la fois sous windows et linux, et qui donnent accès à la souris au clavier et à l'écran.
Je suppose que tu as réfléchi à ce dont tu as besoin, mais le choix d'une compatibilité Windows-Linux à l'exclusion de Mac OS, en 2017, c'est un peu déconcertant. Windows, de nos jours, ça a tendance à se cantonner à la machine du prolo désargenté qui ne comprend rien à la technique, voire du retraité de toute façon fâché avec l'informatique, ou alors c'est une machine de bureau gérée par un directeur de parc informatique près de ses sous, et qui n'a qu'une idée: empêcher les utilisateurs de faire tourner autre chose que les logiciels qu'il a choisis pour réduire la masse de travail de la hotline. Dès qu'un utilisateur a trois francs six sous, il s'équipe en Mac, spécialement s'il a moins de cinquante ans. Par ailleurs, le monde windozien a assumé qu'il n'était pas à la pointe de la technique, et généralement il cherche plus à faire survivre des machines vieilles de plus de cinq ans que de s'équiper du dernier cri de la technique.
Par ailleurs encore, l'utilisation des dispositifs mobiles, smartphones et tablettes, a totalement cessé d'être marginale, et ça ne va pas s'arranger dans les années qui viennent.
Tu fais bien comme tu veux, mais par curiosité: pourquoi se focaliser sur Windows? Et d'ailleurs, quelle version de Windows?
Dernière édition par Petitagore le Lun 20 Nov 2017 - 10:19, édité 1 fois (Raison : balise foireuse)
Re: Apprendre la programmation en C.
.
Dernière édition par ortolan le Ven 22 Déc 2017 - 19:47, édité 1 fois
ortolan- Messages : 13579
Date d'inscription : 31/07/2016
Localisation : 404 Not Found
Re: Apprendre la programmation en C.
ortolan a écrit:95% du marché des particuliers quand même...
Au niveau mondial, peut-être, mais en France au moins j'ai de très sérieux doutes. Quand je fais des cours à des stagiaires, je ne vois sur les bureaux que: Mac Mac Mac Mac Mac, et quand par exception il y a un PC, le gars m'assure qu'il va acheter un Mac incessamment sous peu. Je prends beaucoup le train, et tout ce que je vois, c'est Mac, Mac, Mac, tablette, Mac, Mac, de temps à autre un portable Lenovo faisant tourner du Linux.
Il y a peut-être encore 95 % de Windows dans les machines de bureau, mais c'est en comptant tous les vieux tromblons en fin de vie que Mme Michu allume trois heures par semaine. Je comprends qu'on n'oublie pas Windows, mais de là à faire comme si on pouvait négliger Mac, il y a vraiment de la marge.
Re: Apprendre la programmation en C.
- Où l'on parle de stats sur les OS:
On parle bien de la même planète ?Petitagore a écrit:Au niveau mondial, peut-être, mais en France au moins j'ai de très sérieux doutes. Quand je fais des cours à des stagiaires, je ne vois sur les bureaux que: Mac Mac Mac Mac Mac, (...). Je prends beaucoup le train, et tout ce que je vois, c'est Mac, Mac, Mac, tablette, (...)
Attention aux biais de sélection pour tes stagiaires ! (Graphistes, etc.)
Parce qu'il suffit d'aller dans n'importe quel hypermarché, ou FNAC, pour voir plein de PC vendus avec un OS Microsoft.
Et puis les stats sont - à la louche - Windows 90% / MacOS 10% ! Et quelques poussières pour le reste (dont GNU/Linux).
http://www.numerama.com/tech/167666-windows-sous-la-barre-des-90-de-parts-de-marche-linux-encore-en-baisse.html
http://www.zdnet.fr/actualites/chiffres-cles-les-systemes-d-exploitation-sur-pc-39790131.htm
Bien sûr, toutes plateformes confondues, iOS et surtout Android prennent une place non-négligeable et qui ira croissant. Là aussi les proportions sont - à la louche - 10-15% et 85-90%.
http://www.zdnet.fr/actualites/chiffres-cles-les-os-pour-smartphones-39790245.htm
Re: Apprendre la programmation en C.
.
Dernière édition par ortolan le Ven 22 Déc 2017 - 19:47, édité 1 fois
ortolan- Messages : 13579
Date d'inscription : 31/07/2016
Localisation : 404 Not Found
Re: Apprendre la programmation en C.
Hello Stauk,
Pour éviter de polluer ton fil initial, je pense que la programmation C s'est vraiment très bien mais ce n'est que mon avis. Par contre, le C tout seul c'est chiant car tu vas te lier très rapidement à ta plateforme sur les couches hautes (GUI, fct OS, etc) et va te nécessiter des codes sources différents suivant ta plateforme. Et çà en terme de contrôle et de productivité... c'est lourd
Après tout dépend de la finalité de ton projet. Si tu veux faire partager tes applis (gracieusement ou non), il faut déterminer les termiaux cibles. Si tu veux être ambitieux, fais une appli cloud SaaS comme cela tu développes sur Linux/C pour le noyau et Java pour les GUI
Si c'est pour piloter une machine, le C tout seul fera très bien l'affaire.
L'important est de s'amusez en faisant propre sinon tu seras chauve sous peu. Mais je suis ton projet car j'aime le code
HS : Concernant les OS, la donne pourrait bien être chamboulé avec l'arrivée du Cloud Saas si la mayonaise prend. Par contre si le Saas stagne, Windows a de très beau jour devant lui . Par contre, je ne vois pas la Pomme gagnante car la pomme c'est souvent du BYOD et non de la stratégie d'entreprise.
Pour éviter de polluer ton fil initial, je pense que la programmation C s'est vraiment très bien mais ce n'est que mon avis. Par contre, le C tout seul c'est chiant car tu vas te lier très rapidement à ta plateforme sur les couches hautes (GUI, fct OS, etc) et va te nécessiter des codes sources différents suivant ta plateforme. Et çà en terme de contrôle et de productivité... c'est lourd
Après tout dépend de la finalité de ton projet. Si tu veux faire partager tes applis (gracieusement ou non), il faut déterminer les termiaux cibles. Si tu veux être ambitieux, fais une appli cloud SaaS comme cela tu développes sur Linux/C pour le noyau et Java pour les GUI
Si c'est pour piloter une machine, le C tout seul fera très bien l'affaire.
L'important est de s'amusez en faisant propre sinon tu seras chauve sous peu. Mais je suis ton projet car j'aime le code
HS : Concernant les OS, la donne pourrait bien être chamboulé avec l'arrivée du Cloud Saas si la mayonaise prend. Par contre si le Saas stagne, Windows a de très beau jour devant lui . Par contre, je ne vois pas la Pomme gagnante car la pomme c'est souvent du BYOD et non de la stratégie d'entreprise.
Dernière édition par Unefois le Lun 20 Nov 2017 - 12:09, édité 1 fois
Invité- Invité
Re: Apprendre la programmation en C.
allee pour le fun les neos-amiga en vue ,là au moins on codait en s"amusant
https://www.programmez.com/actualites/un-nouveau-amiga-fin-2017-26319
http://www.apollo-accelerators.com/
sinon vous prenez un vieux pc et vous balancer une distro linux dessus et vous apprenez le command line et là pour la programmation vous avez toutes les solutions libres à votre choix
si vous êtes vraiment geek vous vous baladerez avec un raspi dans votre poche, vous le branchez sur réseau et vous faite joujou avec le monde
voir mister robot, série us avec des conseillers prestigieux donc snowden
https://www.raspberrypi.org/
l'avantage de ce brol est sa très petite taille et le fait qu'on peut y embarquer un os linux cad qu'on peut y mettre ce qu'on veut , l'avenir en programmation c'est ça
portable , super high tech et plugable partout, vous pouvez au choix vous ballader avec vos docs mobiles, votre compilateur et prog préféré, vos connectiques, outils divers et interfacages préférés
c'est moche, ca coute 30 euros et ça rebute les néophytes
mais une fois pigé vous avez une boite de pandore dans la main
au delà j'aime bien le pc pour son coté bordel ambiant justement , vous pouvez y coder et plugger à peu pres n'importe quoi sur la carte mere avec le driver adapté, c'est une usine à gaz qui sert à tout faire
et si l'os w10 sucks en particulier vous pouvez toujours faire des dual boots ou plus
la machine idéale est un mix winbrol linux en 2017
en 2025 les chinois finiront bien par pondre leur propre os
je m'étonne qu'ils ne l'ait pas encore fait
sinon bien avant le pc et le mac je bidouillais sur amiga 500 puis 2000
https://www.amigafrance.com/amy-nouveau-amiga/
ce brol était très en avance sur son temps
j'espère que la neo version sera elle aussi en avance et vu la masse de passionnés et nostalgiques de l'amiga ..
c'était du linux avant linux et du mac avant mac.. et cela faisait du multimedia bien avant que le pc n'ait souris et carte son ou graphique
sinon j'attends comme tout le monde le next step en informatique
et je n'aime pas les smarts phone, ce next step là n'est pas cool du tout sauf pour le hack
mais l'intégration téléphone télé internet est prévue par microsoft depuis ... 1996 , là en 2017 on y est ..pire on n'a même presque plus de besoin de la partie hardware puisque tout est accessible via cloud décentralisés
t'as juste besoin d'un client que tu branches
du coup la programmation est dans la technologie réseau, la mise à disposition à une masse de petits clous comme dirait le dude dans the big lebowski , la mise à disposition donc d'une application partagée et en ligne
bcp n'achetent ni mac ni pc, zont juste besoin d'un smart ou d'une tablette ou plus tard d'un petite boite client avec claver enroulable et ou optique , qui sait via les montres connectées
le pc fixe perso est donc devenu un dinosaure ,mais ... ce dinosaure vous laisse une liberté que vous n'avez plus dans un monde cloud pur
vous n'avez même plus à installer le logiciel ou à avoir la boite , vous avez un abonnement à un logiciel préinstallé, cela signifie que vous devenez dépendants d'un fournisseur pour vos besoins informatiques
qui dénonce cela ?
moi je préfère l'autonomie du libre et l'anarchisme d'un mister robot
mieux encore.. vous fabriquer une clef usb perso avec os bootable et tous les outils nécessaires
mais vous aurez toujours besoin d'une plate forme de programmation quand même
maison mère et vaisseau d'attaque en gros
alle un autre extrait de cette série hardcore mais usant de quelques techniques de base
https://www.programmez.com/actualites/un-nouveau-amiga-fin-2017-26319
http://www.apollo-accelerators.com/
sinon vous prenez un vieux pc et vous balancer une distro linux dessus et vous apprenez le command line et là pour la programmation vous avez toutes les solutions libres à votre choix
si vous êtes vraiment geek vous vous baladerez avec un raspi dans votre poche, vous le branchez sur réseau et vous faite joujou avec le monde
voir mister robot, série us avec des conseillers prestigieux donc snowden
https://www.raspberrypi.org/
l'avantage de ce brol est sa très petite taille et le fait qu'on peut y embarquer un os linux cad qu'on peut y mettre ce qu'on veut , l'avenir en programmation c'est ça
portable , super high tech et plugable partout, vous pouvez au choix vous ballader avec vos docs mobiles, votre compilateur et prog préféré, vos connectiques, outils divers et interfacages préférés
c'est moche, ca coute 30 euros et ça rebute les néophytes
mais une fois pigé vous avez une boite de pandore dans la main
au delà j'aime bien le pc pour son coté bordel ambiant justement , vous pouvez y coder et plugger à peu pres n'importe quoi sur la carte mere avec le driver adapté, c'est une usine à gaz qui sert à tout faire
et si l'os w10 sucks en particulier vous pouvez toujours faire des dual boots ou plus
la machine idéale est un mix winbrol linux en 2017
en 2025 les chinois finiront bien par pondre leur propre os
je m'étonne qu'ils ne l'ait pas encore fait
sinon bien avant le pc et le mac je bidouillais sur amiga 500 puis 2000
https://www.amigafrance.com/amy-nouveau-amiga/
ce brol était très en avance sur son temps
j'espère que la neo version sera elle aussi en avance et vu la masse de passionnés et nostalgiques de l'amiga ..
c'était du linux avant linux et du mac avant mac.. et cela faisait du multimedia bien avant que le pc n'ait souris et carte son ou graphique
sinon j'attends comme tout le monde le next step en informatique
et je n'aime pas les smarts phone, ce next step là n'est pas cool du tout sauf pour le hack
mais l'intégration téléphone télé internet est prévue par microsoft depuis ... 1996 , là en 2017 on y est ..pire on n'a même presque plus de besoin de la partie hardware puisque tout est accessible via cloud décentralisés
t'as juste besoin d'un client que tu branches
du coup la programmation est dans la technologie réseau, la mise à disposition à une masse de petits clous comme dirait le dude dans the big lebowski , la mise à disposition donc d'une application partagée et en ligne
bcp n'achetent ni mac ni pc, zont juste besoin d'un smart ou d'une tablette ou plus tard d'un petite boite client avec claver enroulable et ou optique , qui sait via les montres connectées
le pc fixe perso est donc devenu un dinosaure ,mais ... ce dinosaure vous laisse une liberté que vous n'avez plus dans un monde cloud pur
vous n'avez même plus à installer le logiciel ou à avoir la boite , vous avez un abonnement à un logiciel préinstallé, cela signifie que vous devenez dépendants d'un fournisseur pour vos besoins informatiques
qui dénonce cela ?
moi je préfère l'autonomie du libre et l'anarchisme d'un mister robot
mieux encore.. vous fabriquer une clef usb perso avec os bootable et tous les outils nécessaires
mais vous aurez toujours besoin d'une plate forme de programmation quand même
maison mère et vaisseau d'attaque en gros
alle un autre extrait de cette série hardcore mais usant de quelques techniques de base
Invité- Invité
Re: Apprendre la programmation en C.
@ZebMcKey :
Mes PC tours sont mes Appel2 que je n'ai pas pu avoir étant môme dans les années 80.
On peut même faire d"un PC un oscillo tout à fait convenable et 5 minutes après sur le même PC c'est un studio d'enregistrement
Mes PC tours sont mes Appel2 que je n'ai pas pu avoir étant môme dans les années 80.
On peut même faire d"un PC un oscillo tout à fait convenable et 5 minutes après sur le même PC c'est un studio d'enregistrement
Invité- Invité
Re: Apprendre la programmation en C.
ortolan a écrit:Voilà, merci Philippe pour les stats. Je parlais bien du "PC des familles" (prolos, Mme Michu, ça me paraît un peu méprisant).
Il se peut. Cela dit, il y a clairement une informatique pour les utilisateurs qui n'y bitent rien, et une informatique pour ceux qui peuvent faire des incursions dans le code -- et ce sont ces derniers qui rédigent les librairies libres, les documentations, les tutoriels. Quand on pond soi-même du code, on a un peu tendance à se désintéresser totalement de la première catégorie, sauf si on veut leur vendre un produit fini. Mais on ne peut pas servir Dieu et Mammon: si on veut faire du bon code, on se fout un peu des machines merdiques, et si on veut vendre au grand public, on se fout un peu de faire du beau code.
Re: Apprendre la programmation en C.
ZebMcKay a écrit:en 2025 les chinois finiront bien par pondre leur propre os
je m'étonne qu'ils ne l'ait pas encore fait
Ils l'ont fait, et ça ne date pas d'hier. Seulement, plutôt que de réinventer la roue, ils ont pompé dans tout ce que le logiciel libre pouvait leur offrir, et en pratique je ne crois pas que ce soit très différent d'un Linux sinisé.
Ce qu'ils n'ont pas encore, fait, c'est de commercialiser des machines fonctionnant avec cet OS.
Re: Apprendre la programmation en C.
Pour windows, je me focalise sur ma config de Wine. Pour MacOs, je verrais plus tard, mais si je n'utilise rien d'exotique, ça sera de toute façon compatible.Pour ce qui est des stats de qui possède quelle machine équipée de quel système, je serais plus convaincu par une analyse statistique ou autre collecte de donnée, que par un pifomètrisme.Après faut pas oublier non plus que les usager des ordis ne sont pas cantonnés à la France, ni même aux US.
https://www.netmarketshare.com/operating-system-market-share.aspx?qprid=10&qpcustomd=0
Edit : Ah ouais, j'ai raté quelques messages entre temps.
@Unefois : en effet, le but est de séparer ce que je fais, des spécificités de l'environnement, dont je n'ai en général pas besoin, sauf en tant qu'abstraction.
https://www.netmarketshare.com/operating-system-market-share.aspx?qprid=10&qpcustomd=0
Edit : Ah ouais, j'ai raté quelques messages entre temps.
@Unefois : en effet, le but est de séparer ce que je fais, des spécificités de l'environnement, dont je n'ai en général pas besoin, sauf en tant qu'abstraction.
Dernière édition par Stauk le Lun 20 Nov 2017 - 12:32, édité 4 fois
Re: Apprendre la programmation en C.
pour le langage de prog , moi j'aimais bien le basic tout simplement pour des besoins simples, j'ai découvert le python dans le mooc début d'année, c'est assez cool mais demande un apprentissage assez long pour bien gérer les subtilités
pour les langages évolués, j'aime bien l'apl le seul qui m'interesse par son caractère symbolique
https://fr.wikipedia.org/wiki/APL_(langage)
pour de la progr professionnelle, en fait rien ne me plait en 2017
mais bon je ne suis plus aussi souple qu'avant je suppose
faudrait demander aux programmeurs pro en quoi ils codent en 2017
sauf php , java et html 5 ou autres en net
en database en sql ounon sql encore autre chose
en carto, graphisme toussa, pas de codage, utilisation de logiciels tout faits
en recherche souvent des packages libres ou pro existants
en fait il est plutot rare qu'on programme des solutions pro completes de zero
en management on utilise bizagi par exemple , très cool et complet
en logiciels boursiers les robots traders n'ont pas besoin de vous
etc
alors coder quoi exactement ?
une database, ca existe, un logiciel de mao , ca existe, un plug pour résoudre une équation complexe, ca existe déjà , un logiciel pour commander le robot de tonde de pelouse, cela existe aussi, un logiciel de navigation de sous marin ou de missile, ca existe aussi
c'est donc de la prog en hobby juste pour savoir si on peut, en relge générale si on veut concevoir un logiciel seul de zero c'est peu probable on a besoin d'une équipe de programmation ou chacun a sa compétence ciblée
et mieux même comme cela on reprend des idées de sautres, des bouts de codes fait par exemple en librairies histoire de ne pas refaire le monde
merde le module impression j'ai pas le temp de le coder, ben je reprend, intègre une biblio existante le faisant très bien depuis longtemps
maintenant sivous etes blindés en progr vous pouvez aussi faire évoluer, participer à des projets existants sur des logiciels libres et apporter votre génie logiciel
c'est le principe de r en statistique par exemple ou il existe un nombre incroyable de modules à charger avec des techniques stats invraisemblables qui coutent un pont dans les logiciels standards et zero centime en r
c'est moche, c'est petit mais ca fonctionne
maintenant vous pouvez révolutionner l'informatique en pondant un nouvel os qui par exemple soit entierement 3d à la source , l'effort est davantage dans l'interface client que dans l'interface machine dans ce cas
les éternelles fenetres .. devraient bientot prendre la porte pour des interfaces à la minority report et ncisla ou les éléments visuels à la lego sont balancables àla smart phone d'un univers à un autre
on ne tape plus rien on déplace des blocs qui donnent un résultat
cette programmation là est haut niveau , par exemple vous balancez la visu d'une database vers une autre et la fusion des données se fait dans le mouvement de glissement
codez ça pour voir... possible en plus, genre si les deux blocs se touchent alors prend le champ 1 du bloc 1 et fusionne le avec le champ 1 du bloc 2
sky is the limit
plus fun encore, ilne faudra bientot plus utiliser ses doigts mais juste son cerveau avec un casque qui reperera vos connexions neuronales et ou mouvements des yeux,
fusionne les deux database et trie moi les résultats sera transmis comme commande neuro aux serveurs cloud et le resultat sera meme affiché dans votre visualisateur intégré au casque genre pilote de jet
cyborg rulez , pas certain que cette informatique là me plaise
quoique vous rencontrez une femme dans la rue et ses coordonnées s'affichent sur votre écran
brave new world donc
pour les langages évolués, j'aime bien l'apl le seul qui m'interesse par son caractère symbolique
https://fr.wikipedia.org/wiki/APL_(langage)
pour de la progr professionnelle, en fait rien ne me plait en 2017
mais bon je ne suis plus aussi souple qu'avant je suppose
faudrait demander aux programmeurs pro en quoi ils codent en 2017
sauf php , java et html 5 ou autres en net
en database en sql ounon sql encore autre chose
en carto, graphisme toussa, pas de codage, utilisation de logiciels tout faits
en recherche souvent des packages libres ou pro existants
en fait il est plutot rare qu'on programme des solutions pro completes de zero
en management on utilise bizagi par exemple , très cool et complet
en logiciels boursiers les robots traders n'ont pas besoin de vous
etc
alors coder quoi exactement ?
une database, ca existe, un logiciel de mao , ca existe, un plug pour résoudre une équation complexe, ca existe déjà , un logiciel pour commander le robot de tonde de pelouse, cela existe aussi, un logiciel de navigation de sous marin ou de missile, ca existe aussi
c'est donc de la prog en hobby juste pour savoir si on peut, en relge générale si on veut concevoir un logiciel seul de zero c'est peu probable on a besoin d'une équipe de programmation ou chacun a sa compétence ciblée
et mieux même comme cela on reprend des idées de sautres, des bouts de codes fait par exemple en librairies histoire de ne pas refaire le monde
merde le module impression j'ai pas le temp de le coder, ben je reprend, intègre une biblio existante le faisant très bien depuis longtemps
maintenant sivous etes blindés en progr vous pouvez aussi faire évoluer, participer à des projets existants sur des logiciels libres et apporter votre génie logiciel
c'est le principe de r en statistique par exemple ou il existe un nombre incroyable de modules à charger avec des techniques stats invraisemblables qui coutent un pont dans les logiciels standards et zero centime en r
c'est moche, c'est petit mais ca fonctionne
maintenant vous pouvez révolutionner l'informatique en pondant un nouvel os qui par exemple soit entierement 3d à la source , l'effort est davantage dans l'interface client que dans l'interface machine dans ce cas
les éternelles fenetres .. devraient bientot prendre la porte pour des interfaces à la minority report et ncisla ou les éléments visuels à la lego sont balancables àla smart phone d'un univers à un autre
on ne tape plus rien on déplace des blocs qui donnent un résultat
cette programmation là est haut niveau , par exemple vous balancez la visu d'une database vers une autre et la fusion des données se fait dans le mouvement de glissement
codez ça pour voir... possible en plus, genre si les deux blocs se touchent alors prend le champ 1 du bloc 1 et fusionne le avec le champ 1 du bloc 2
sky is the limit
plus fun encore, ilne faudra bientot plus utiliser ses doigts mais juste son cerveau avec un casque qui reperera vos connexions neuronales et ou mouvements des yeux,
fusionne les deux database et trie moi les résultats sera transmis comme commande neuro aux serveurs cloud et le resultat sera meme affiché dans votre visualisateur intégré au casque genre pilote de jet
cyborg rulez , pas certain que cette informatique là me plaise
quoique vous rencontrez une femme dans la rue et ses coordonnées s'affichent sur votre écran
brave new world donc
Invité- Invité
Re: Apprendre la programmation en C.
.
Dernière édition par ortolan le Ven 22 Déc 2017 - 19:49, édité 2 fois
ortolan- Messages : 13579
Date d'inscription : 31/07/2016
Localisation : 404 Not Found
Re: Apprendre la programmation en C.
ZebMcKay a écrit:...
codez ça pour voir... possible en plus, genre si les deux blocs se touchent alors prend le champ 1 du bloc 1 et fusionne le avec le champ 1 du bloc 2
...
Ca c'est déjà fait avec le score du rapprochement
Invité- Invité
Re: Apprendre la programmation en C.
Stauk a écrit:Pour ce qui est des stats de qui possède quelle machine équipée de quel système, je serais plus convaincu par une analyse statistique ou autre collecte de donnée, que par un pifomètrisme.
Et tu as bien raison. Il n'en reste pas moins que le désintérêt des développeurs de librairies libres pour l'architecture Windows est de plus en plus flagrant, et ce n'est pas du tout le cas pour Mac OS; c'est quand même à prendre en compte quand on cherche des interlocuteurs sur les forums de discussion (je ne parle pas de ZC: il y en a d'autrement plus sérieux en la matière).
Après faut pas oublier non plus que les usager des ordis ne sont pas cantonnés à la France, ni même aux US.
Certes, mais symétriquement il ne faut pas oublier que le marché européen est spécifique, spécialement si tu cibles un public avec fort pouvoir d'achat.
Mais bon, j'arrête de me cacher derrière mon petit doigt: je trouve que Windows, c'est tellement de la merde que toute mauvaise raison permettant d'y échapper a plus de poids que les statistiques les mieux vérifiées. Bref, je suis de la plus entière mauvaise foi en la matière et j'ai fortement tendance à en être fier! Je te recommande juste de te méfier: l'exécration de Windows est un phénomène très très répandu chez les amoureux du bon code.
Re: Apprendre la programmation en C.
.
Dernière édition par ortolan le Ven 22 Déc 2017 - 19:49, édité 1 fois
ortolan- Messages : 13579
Date d'inscription : 31/07/2016
Localisation : 404 Not Found
Re: Apprendre la programmation en C.
ortolan a écrit:Là on tombe d'accord Windows bashing à fond !Petitagore a écrit:Windows, c'est tellement de la merde que toute mauvaise raison permettant d'y échapper a plus de poids que les statistiques les mieux vérifiées.
Là çà va vous occupper pendant un certain temps
Si vous mettez autant d'apllis supportées par Windowws sur votre OS préféré et vous obtiendrez un windaube (MauvaisFoix Inside)
Invité- Invité
Re: Apprendre la programmation en C.
Bon, on va lancer un mini-débat pour faire une petite pause dans le discours aride des discussions à propos du C.
Vous êtes plutôt big-endian, ou little-endian (essayez d'expliquer pourquoi siouplé si vous votez).
https://en.wikipedia.org/wiki/Endianness
Vous êtes plutôt big-endian, ou little-endian (essayez d'expliquer pourquoi siouplé si vous votez).
https://en.wikipedia.org/wiki/Endianness
Re: Apprendre la programmation en C.
Sinon si quelqu'un peut me filer un argument sur comment doivent être alignés les datas sur la plateforme X86, je veux bien prendre. 32 bits ? 128, 256, 512 ?
https://en.wikipedia.org/wiki/Data_structure_alignment
https://en.wikipedia.org/wiki/Data_structure_alignment
Re: Apprendre la programmation en C.
si on veut vraiment jouer
"Bi-endianness
Some architectures (including ARM versions 3 and above, PowerPC, Alpha, SPARC V9, MIPS, PA-RISC, SuperH SH-4 and IA-64) feature a setting which allows for switchable endianness in data fetches and stores, instruction fetches, or both. This feature can improve performance or simplify the logic of networking devices and software. The word bi-endian, when said of hardware, denotes the capability of the machine to compute or pass data in either endian format."
et
"many computer languages and computer language implementations handle data alignment automatically"
pourquoi se casser la tête du coup ? mmm ?
ce que je voulais "dire" pour l'avenir des interfaces c'est ca, si le code de fusion par proximité ou sympathie existe déjà suffit alors d"en pondre une interface graphique à la mode touch
trop cool ou pas.. je vous laisse aussi deviner les applications pratiques en sexe virtuel mdrrrrr
erm
oops
et
autre style
"Bi-endianness
Some architectures (including ARM versions 3 and above, PowerPC, Alpha, SPARC V9, MIPS, PA-RISC, SuperH SH-4 and IA-64) feature a setting which allows for switchable endianness in data fetches and stores, instruction fetches, or both. This feature can improve performance or simplify the logic of networking devices and software. The word bi-endian, when said of hardware, denotes the capability of the machine to compute or pass data in either endian format."
et
"many computer languages and computer language implementations handle data alignment automatically"
pourquoi se casser la tête du coup ? mmm ?
ce que je voulais "dire" pour l'avenir des interfaces c'est ca, si le code de fusion par proximité ou sympathie existe déjà suffit alors d"en pondre une interface graphique à la mode touch
trop cool ou pas.. je vous laisse aussi deviner les applications pratiques en sexe virtuel mdrrrrr
erm
oops
et
autre style
Invité- Invité
Re: Apprendre la programmation en C.
Là je n'ai plus la compétence sur les architetures de proc moderne pour donner une réponse ferme. voir du côté de developpez.com les experts des procs en question.
Mais là il faut regarder en détail comment les données sont acheminées de la Ram aux caches puis au registre pour bien maîtriser l'alignement et le temps d'instruction pour faire un MOVE aligné ou non.
Si tu veux minimiser le volume inutile lié aux padding essai de décrire tes structures de données en remplissant au mieux ta structure avec des zones alignés par construtions dans le dév.
En clair, les numériques en début de structure puis les chaînes.
Amusant mais une chaîne de 7 caractètes ne prends pas plus de place qu'une de 6 caractères sur certains compilo C
Mais là il faut regarder en détail comment les données sont acheminées de la Ram aux caches puis au registre pour bien maîtriser l'alignement et le temps d'instruction pour faire un MOVE aligné ou non.
Si tu veux minimiser le volume inutile lié aux padding essai de décrire tes structures de données en remplissant au mieux ta structure avec des zones alignés par construtions dans le dév.
En clair, les numériques en début de structure puis les chaînes.
Amusant mais une chaîne de 7 caractètes ne prends pas plus de place qu'une de 6 caractères sur certains compilo C
- Spoiler:
Invité- Invité
Re: Apprendre la programmation en C.
j'ai une machine Windows, je suis dans quelle catégories ?
Invité- Invité
Re: Apprendre la programmation en C.
.
Dernière édition par ortolan le Ven 22 Déc 2017 - 19:50, édité 1 fois
ortolan- Messages : 13579
Date d'inscription : 31/07/2016
Localisation : 404 Not Found
Re: Apprendre la programmation en C.
Je n'ai pas trouvé grand chose, sinon les docs imbitables à propos du processeur.
https://software.intel.com/en-us/forums/intel-isa-extensions/topic/299644
On va lui faire confiance hein ?
Donc un alignement sur multiples de 32 octets (256 bits).
https://software.intel.com/en-us/forums/intel-isa-extensions/topic/299644
There are significant performance advantages to being 32-byte aligned if you have 32-byte loads and stores, even for instructions that do not require alignment to behave correctly.
On va lui faire confiance hein ?
Donc un alignement sur multiples de 32 octets (256 bits).
Re: Apprendre la programmation en C.
- Endianness:
Un débat ? WTF ?!?Stauk a écrit:Bon, on va lancer un mini-débat pour faire une petite pause dans le discours aride des discussions à propos du C.
Vous êtes plutôt big-endian, ou little-endian (essayez d'expliquer pourquoi siouplé si vous votez).
https://en.wikipedia.org/wiki/Endianness
(Tu ne trouves pas que ce fil est déjà assez pollué comme ça ?)
Ben, ça dépend pour quelle architecture tu veux programmer (vu que tu veux faire du bas niveau).Stauk a écrit:Sinon si quelqu'un peut me filer un argument sur comment doivent être alignés les datas sur la plateforme X86, je veux bien prendre. 32 bits ? 128, 256, 512 ?
https://en.wikipedia.org/wiki/Data_structure_alignment
Le minimum est bien entendu le mot de ton processeur (donc 64 bits de nos jours).
Je ne suis pas (depuis fort longtemps) au courant de ce genre de détails, mais de ce que j'en comprends en fouillant rapido, ce serait :
- 128 bits pour le jeu d'instructions SSE2+
- 256 bits pour l'AVX
- 512 bits pour l'AVX-512
etc.
Re: Apprendre la programmation en C.
@philippe : ouais, l'autre lien date de 2008 ... donc on va dire 64 byte d'alignement (512 bits). Ca devient un peu ridicule, mais bon. Je pense que je vais seulement aligner les tableaux.
Re: Apprendre la programmation en C.
message censuré
Dernière édition par Roger le Dim 17 Déc 2017 - 1:57, édité 2 fois
Invité- Invité
Re: Apprendre la programmation en C.
Roger a écrit:
Commencer par programmer une version optimisée est l'erreur classique du débutant. Il vaut mieux commencer par un programme fonctionnel, modulaire, bref, un programme qui marche. Ensuite seulement on optimise. Il est également important de disposer d'options de compilation désactivant certaines optimisations pour que le programme puisse tourner sur le maximum de machines: si il faut le processeur machin-bidule avec tel jeu d'instruction à la mode, c'est mort. De nos jours, les machines sont tellement rapides et ont tellement de mémoire qu'on ne gagne rien à optimiser. Il y a même des optimisations qui ralentissent les programmes... Dans le temps, on mettait en cache les calculs car la mémoire était chère. Aujourd'hui, une telle stratégie plombe les applis à cause des latences d'accès à la mémoire et les fautes de cache: il est aujourd'hui plus efficace de recalculer au lieu de stocker en mémoire.
J'avoue que c'est toujours bien de le rappeler. D'habitude je le vois présenter comme une erreur classique qui concerne tout le monde, et pas seulement les débutants. Mais il y a des applications où une version non-optimisée peut être rapidement une source de galère. Néanmoins je n'ai jamais trouvé aucun argument pour défendre l'absence de version non optimisée, qui même si elle tourne sur une dimension réduite du problème, permet tout de même de Benchmarquer et vérifier la version qui elle va fonctionner sur des jeux de données un peu plus ambitieux. Combien la version qui va vite fait gagner par rapport à la version qui va lentement (ou économise de mémoire etc) ? La version qui va lentement doit en effet tourner sur un maximum de machines, avec un minimum d'effort, car comme elle n'a pas de contraintes, ça serait dommage autrement. Parfois on se rendra compte que la version qui va lentement est finalement utilisable (mais là peut résider le piège). Parfois on se rendra aussi compte que la version qui va lentement ne permet pas de traiter des jeux de données non triviaux de façon confortable, mais rarement.
Par contre l'homoingénieurus est naturellement enclin à n'avoir aucune envie de réaliser (et maintenir !) plusieurs versions. Et avoir les tests et l'ensemble de l'outillage qui va permettre de comparer les deux versions n'est probablement pas tout à fait trivial non plus. En vrai les logiciels pour être à peu prés au point doivent être réécrit 3 fois, et pouvoir tenir dans un seul cerveau humain. Les gros logiciels doivent être impérativement découpés en éléments simples qui correspondent à cette contrainte, et l'ensemble du système présenté en tant que collection d'éléments simples en interactions doit lui aussi obéir à cette règle (et récursivement s'il est encore plus complexe).
Sinon c'est la merde.
Heum. Ouais y a un cas où la question est plus ardue. Si ton composant est simple, mais utilisé par potentiellement l'ensemble de tous tes développements futurs. Là c'est compliqué. Quand la base est modifiée radicalement, ça peut vite demander du travail, voir demander de refaire tout ce qui en dépend. Pour le réécrire trois fois, il faut qu'il soit utilisé ... mais le fait qu'il soit utilisé, va contraindre énormément la possibilité de le re-écrire.
Re: Apprendre la programmation en C.
Petite page de publicité
https://alexgaynor.net/2017/nov/20/a-vulnerability-by-any-other-name/
(bien entendu c'est une publicité anti-C mais bon. Ca met un peu d'ambiance, et puis surtout c'est loin d'être faux).
https://alexgaynor.net/2017/nov/20/a-vulnerability-by-any-other-name/
(bien entendu c'est une publicité anti-C mais bon. Ca met un peu d'ambiance, et puis surtout c'est loin d'être faux).
Re: Apprendre la programmation en C.
message censuré
Dernière édition par Roger le Dim 17 Déc 2017 - 1:57, édité 1 fois
Invité- Invité
Re: Apprendre la programmation en C.
Roger a écrit:Stauk a écrit:Petite page de publicité
https://alexgaynor.net/2017/nov/20/a-vulnerability-by-any-other-name/
(bien entendu c'est une publicité anti-C mais bon. Ca met un peu d'ambiance, et puis surtout c'est loin d'être faux).
Le mec fait de la pub pour Rust. Mais il n'a pas réalisé que la sûreté des accès mémoire est un problème réglé depuis l'apparition du premier langage de programmation ou presque: LISP disposait en natif d'un ramasse-miette dès sa conception, en 1958. L'informatique, c'est le grand bon en arrière permanent, la victoires des incultes incompétents.
T'as fais un peu de sécurité informatique ?
Sarella- Messages : 256
Date d'inscription : 02/06/2016
Age : 36
Re: Apprendre la programmation en C.
Les ramasses miettes peinent un peu, encore de nos jours (2017). C'est excellent pour faire du prototypage rapide, mais par contre dans certains environnements, si tu as du temps réel, ou du temps réel CRITIQUE (genre y a un mec qui meurt à chaque fois que tu es en retard de 2 ms, ou une banque qui fait faillite), les ramasses miettes n'offrent pas toujours toutes les garanties qu'on aimerait avoir. Du moins c'est ce qu'il semblait ressortir sur les forums et autres il y a encore quelques mois.Roger a écrit: ramasse-miette
Re: Apprendre la programmation en C.
message censuré
Dernière édition par Roger le Dim 17 Déc 2017 - 1:57, édité 2 fois
Invité- Invité
Re: Apprendre la programmation en C.
Petitagore a écrit:ortolan a écrit:Voilà, merci Philippe pour les stats. Je parlais bien du "PC des familles" (prolos, Mme Michu, ça me paraît un peu méprisant).
Il se peut. Cela dit, il y a clairement une informatique pour les utilisateurs qui n'y bitent rien, et une informatique pour ceux qui peuvent faire des incursions dans le code -- et ce sont ces derniers qui rédigent les librairies libres, les documentations, les tutoriels. Quand on pond soi-même du code, on a un peu tendance à se désintéresser totalement de la première catégorie, sauf si on veut leur vendre un produit fini. Mais on ne peut pas servir Dieu et Mammon: si on veut faire du bon code, on se fout un peu des machines merdiques, et si on veut vendre au grand public, on se fout un peu de faire du beau code.
Les utilisateurs "qui n'y bitent rien" choisissent Mac ! Parce que c'est vendu (alors que c'est faux) comme un système "simple", "beau" et "stable". Mais quand ma sœur s'est équipée d'une imprimante Wifi, elle m'a appelé à la rescousse pour la faire fonctionner, ce que j'ai réussi à faire en n'y connaissant rien mais en farfouillant sur internet (et en devant patcher un programme en plus !).
Plus précisément, de ce que j'ai vu (plus de vingt ans d'informatique de près ou de loin), on achète Mac soit par fétichisme, soit parce qu'on n'y connaît rien, soit parce que tout le monde le fait et que c'est cher ...
On peut aujourd'hui tout faire avec un PC sous Windows, même ce qui était réservé auparavant aux professionnels de la MAO, de la PAO ou du graphisme (2D, 3D, photo). Mais c'est vrai, on constate que la plupart des professionnels sont en Mac. À mon avis, les habitudes y sont pour beaucoup car le budget n'est pas le même...
Quant à la prééminence de Mac dans le monde professionnel, effectivement c'est loin d'être le cas dans beaucoup de secteurs. Dans les différents services de l'administration que j'ai traversés, c'est Windows qui gagne haut la main. Linux arrive bien sûr dans les environnements techniques et scientifiques (facs de sciences, organismes de recherches, écoles d'ingénieurs), mais on y trouve encore aussi beaucoup de Windows.
Cette guéguerre Windows/Linux/Mac dure depuis que les marques existent. Elle est stérile comme toutes les guerres, en particulier comme celle qui agite ce sujet : "tel logiciel est le seul valable, les autres sont de la merde", et comme tout ce qui est du type "religieux". (Attention, je n'ai pas dit : "religion", hein !) Même combat par exemple pour les guéguerres des différents types d'alimentation. Le problème est toujours le même : une attitude absolutiste est toujours fausse ! On ne peut pas appliquer la même recette à tous, que ce soit en nutrition ou en programmation, pour la simple et bonne raison que les individus sont différents, et même si leurs besoins sont les mêmes en apparence, la façon de les satisfaire sera multiple. Au passage, c'est la clé pour comprendre le monde dans lequel nous vivons. Il existe cinquante mille langages de programmation et cinquante marques de shampoings. Nous vivons dans le monde de la multiplicité !
Mais pour en revenir aux OS ou aux langages de programmation, croire que l'un est meilleur que les autres est une erreur qui trouve sont origine dans la croyance que l'utilité absolue existe. Or, il n'existe qu'une utilité relative. Ce qui est utile à l'un, l'autre s'en fout. Et inversement et réciproquement. J'aime bien l'exemple de l'agriculteur et du bourgeois pour illustrer ce propos. L'agriculteur a un tracteur, et le bourgeois une Ferrari. Qui peut croire que "la Ferrari c'est mieux qu'un tracteur" ? Ce sont deux véhicules, ça roule, ça permet d'aller un point A à un point B, mais l'utilité n'est pas la même. (Certes, une Ferrari, ça doit bien labourer un champ sur quelques mètres, mais niveau solidité... !)
L'utilisateur lambda n'en a donc rien à faire que l'on puisse programmer comme un esthète une architecture Linux avec du Ocaml. Pour regarder Facebook, jouer à Tétris 2018 ou faire ses comptes après avoir regardé ses dernières photos ou un épisode de sa série préférée, il veut ce qui sera le plus simple pour lui. Et pour beaucoup, comme l'habit fait le moine, il veut en plus "un bel objet". "Chéri(e), tu vas être content(e), c'est un Mac !" Pour le gamer, un bon vieux PC sous windows survitaminé sera un must (et même pour ceux qui veulent un compromis entre puissance et prix : mon ordinateur principal est un PC de gamer acheté en 2011 et toujours dans la course niveau performance pour ce que je fais : programmation, MAO, photo, etc. Parfois ça rame, parfois ça plante, mais j'ai connu le même genre de problèmes avec Linux et Mac !). Pour un étudiant en informatique, Linux est souvent le choix parce que pour installer le moindre logiciel, il faut recompiler jusqu'aux entrailles la machine et c'est formateur. Mais aucun choix n'est bon pour tout le monde. Pas en 2017 en tout cas...
Idem pour les langages de programmation : on peut tout programmer en assembleur, mais étrangement, on ne le fait pas. Il y a des langages pour le Web, des langages pour le bas niveau, des langages pour la performance ou les sciences, etc. On ne choisit pas un langage avant de savoir ce que l'on fait, on choisit le langage après avoir décidé ce que l'on veut faire.
Par ailleurs, il ne faut pas se leurrer : apprendre n'importe quel langage, que ce soit le joyau du fonctionnel comme Ocaml ou une "vraie merde" comme PHP, ça peut certes se faire en quelques heures pour avoir les bases, mais avec ce bagage, on bidouille et c'est tout. Maîtriser "l'art de la programmation", ça ne viendra pas comme ça. Et maîtriser n'importe quel langage, fût-ce cette merdouille de PHP ou de Java, ça demande plusieurs années de pratique. Que ça plaise ou non aux esthètes . Alors le "mon langage, c'est le plus beau et les autres, y sont tous pourris", ça me fait toujours penser à cette citation de je ne sais plus qui (*) que je paraphraserai en : il y a plus de mauvais programmeurs que de mauvais langages (en proportion) .
(*) De mémoire : "Il y a plus de mauvais pianistes que de mauvais pianos"...
Re: Apprendre la programmation en C.
Alexandre, ce que tu dis est intéressant, et d'ailleurs je n'ai pas tellement l'impression que cela contredise celui de mes propos auquel tu réponds. Je m'inscris quand même totalement en faux contre ça:
Ca a pu être assez vrai dans les premiers temps (quand l'Union soviétique était encore debout), mais il y a largement plus d'une dizaine d'années que c'est de la blague, à moins qu'on cherche les ennuis en tenant absolument à faire tourner une distribution exotique mal maintenue. La raison pour laquelle les étudiants en informatique privilégient Linux, c'est que tous les compilateurs libres, toutes les librairies libres, tous les environnements de développement libres, etc... tournent dessus sans difficulté, sans bourse délier et sans demander la permission à personne.
En revanche, je souscris totalement à ça:
Je l'ai même déjà entendu sous la forme (un peu excessive quand même): "il n'y a pas de mauvais pianos, il n'y a que de mauvais pianistes". Il y a des machines pourries, des systèmes d'exploitation pourris, et des langages mal conçus; mais c'est vrai, il y a surtout des gens qui ne savent pas s'en servir.
Ou comme disait ma mère-grand (la vôtre aussi, j'imagine): les mauvais ouvriers ont toujours de mauvais outils.
Alexandre a écrit:Pour un étudiant en informatique, Linux est souvent le choix parce que pour installer le moindre logiciel, il faut recompiler jusqu'aux entrailles la machine et c'est formateur.
Ca a pu être assez vrai dans les premiers temps (quand l'Union soviétique était encore debout), mais il y a largement plus d'une dizaine d'années que c'est de la blague, à moins qu'on cherche les ennuis en tenant absolument à faire tourner une distribution exotique mal maintenue. La raison pour laquelle les étudiants en informatique privilégient Linux, c'est que tous les compilateurs libres, toutes les librairies libres, tous les environnements de développement libres, etc... tournent dessus sans difficulté, sans bourse délier et sans demander la permission à personne.
En revanche, je souscris totalement à ça:
Par ailleurs, il ne faut pas se leurrer : apprendre n'importe quel langage, que ce soit le joyau du fonctionnel comme Ocaml ou une "vraie merde" comme PHP, ça peut certes se faire en quelques heures pour avoir les bases, mais avec ce bagage, on bidouille et c'est tout. Maîtriser "l'art de la programmation", ça ne viendra pas comme ça. Et maîtriser n'importe quel langage, fût-ce cette merdouille de PHP ou de Java, ça demande plusieurs années de pratique. Que ça plaise ou non aux esthètes . Alors le "mon langage, c'est le plus beau et les autres, y sont tous pourris", ça me fait toujours penser à cette citation de je ne sais plus qui (*) que je paraphraserai en : il y a plus de mauvais programmeurs que de mauvais langages (en proportion) .
(*) De mémoire : "Il y a plus de mauvais pianistes que de mauvais pianos"...
Je l'ai même déjà entendu sous la forme (un peu excessive quand même): "il n'y a pas de mauvais pianos, il n'y a que de mauvais pianistes". Il y a des machines pourries, des systèmes d'exploitation pourris, et des langages mal conçus; mais c'est vrai, il y a surtout des gens qui ne savent pas s'en servir.
Ou comme disait ma mère-grand (la vôtre aussi, j'imagine): les mauvais ouvriers ont toujours de mauvais outils.
Re: Apprendre la programmation en C.
Roger a écrit:
Il y a toutes sortes de ramasses-miettes: interruptibles ou non, multi-threadés ou non, incrémentaux ou non, optimisants ou non, temps-réel ou non. Pour la programmation usuelle, les ramasses-miettes améliorent les performances: ils ne bloquent pas l'application lors de la libération de grosses structures de données, ils défragmentent la mémoire et relocalise les données, ce qui rend les gros caches des processeurs plus efficaces. Mais surtout, ils font totalement disparaître toutes les fuites mémoires, les déréférencements invalides et les failles comme les débordements de pile. Quand on programme des algorithmes complexes, la gestion mémoire devient vite un cauchemar.
Honnêtement je sais pas encore très bien pourquoi la gestion de la mémoire est un tel cauchemar. Il faudra que je creuse le sujet. Je sais qu'elle PEUT être un cauchemar, en tout cas dans ses effets. Mais quand à savoir s'il existe une manière de programmer qui évite ces écueils, c'est une question que je vais me poser. Pour les ramasses-miettes ça m'étonne un peu. Rust dans ses premières versions utilisait un ramasse miette, et c'est un des arguments qui lui permet d'être si populaire, de justement offrir de bonnes garanties, tout ayant fait le choix de ne pas proposer de ramasse miette dans sa version 1.0. C'est aussi un des trucs que j'ai vu reprocher à Go, son ramasse miette. Bon j'ai aussi entendu râler à propos de Java, mais on va dire que c'est un sujet tabou. Il faudrait que je fasse un peu le tour de la chose, mais en tout cas pour le peu que j'en perçois sur le plan théorique, ça ne semble pas trivial d'implémenter un bon ramasse miette, qu'on peut laisser gérer à sa guise en toute opacité.
Si tu as un lien à proposer sur un bon ramasse miette avec de supers garanties, je veux bien que tu le poste ici.
Re: Apprendre la programmation en C.
message censuré
Dernière édition par Roger le Dim 17 Déc 2017 - 1:58, édité 1 fois
Invité- Invité
Re: Apprendre la programmation en C.
Roger a écrit:Stauk a écrit:Les ramasses miettes peinent un peu, encore de nos jours (2017). C'est excellent pour faire du prototypage rapide, mais par contre dans certains environnements, si tu as du temps réel, ou du temps réel CRITIQUE (genre y a un mec qui meurt à chaque fois que tu es en retard de 2 ms, ou une banque qui fait faillite), les ramasses miettes n'offrent pas toujours toutes les garanties qu'on aimerait avoir. Du moins c'est ce qu'il semblait ressortir sur les forums et autres il y a encore quelques mois.
Pour le mec qui meurt, c'est pas de bol. La banque en faillite, en revanche...
Il y a toutes sortes de ramasses-miettes: interruptibles ou non, multi-threadés ou non, incrémentaux ou non, optimisants ou non, temps-réel ou non. Pour la programmation usuelle, les ramasses-miettes améliorent les performances: ils ne bloquent pas l'application lors de la libération de grosses structures de données, ils défragmentent la mémoire et relocalise les données, ce qui rend les gros caches des processeurs plus efficaces. Mais surtout, ils font totalement disparaître toutes les fuites mémoires, les déréférencements invalides et les failles comme les débordements de pile. Quand on programme des algorithmes complexes, la gestion mémoire devient vite un cauchemar.
Un programme temps réel n'est pas un programme qui va vite, mais un programme qui respecte des contraintes de temps strictes. En général, les systèmes d'exploitation temps réels sont plus lents que leurs homologues plus laxistes. Au niveau des structures de données, le temps-réel impose de bonnes complexités dans le pire des cas, alors que par ailleurs on pourrait privilégier une complexité moyenne encore meilleure. Par exemple, une appli temps-réel utilisera des arbres équilibrés au lieu de tables de hachages, pourtant plus rapides en moyenne. La méthode la plus aisée pour faire du temps réel avec un ramasse-miette est de garantir que ce dernier peut être désactivé à tout moment puis réactivé quand les contraintes temporelles sont moins critiques. De toute manière, le temps-réel est une condition qui demande des soins très particuliers et le ramasse-miette n'est pas le plus dramatique des problèmes: il y a des sources de latence bien plus gênantes et souvent liées au système lui-même.
Je vois pas comment un garbage collector peut éviter un stack overflow.
Les buffer overflow, oui, mais il te suffit de faire une récursion infini et tu l'as ton stack overflow, garbage collector ou pas.
Sarella- Messages : 256
Date d'inscription : 02/06/2016
Age : 36
Re: Apprendre la programmation en C.
@Sarella : il voulait peut être parler des buffer overflow. Mais cela dit, ça ne fait pas automatiquement partie des attributions d'un garbage collector d'éviter les buffer overflow. Ptet un excès d'enthousiasme.
Re: Apprendre la programmation en C.
Il ne s'agit pas de philosophie mais de pragmatisme ! L'agriculteur n'a que faire de savoir s'il est relativiste, physicaliste ou scientiste. Une belle voiture n'est pour lui d'aucune utilité au moment-même où il veut labourer son champ. L'utilité dépend de l'individu, de l'environnement, etc., bref est relative à un contexte. C'est un constat. Tant pis si ça heurte nos convictions philosophiques.Roger a écrit:Le relativisme n'est pas pertinent. L'informatique, ça n'est pas n'importe quoi. Il est évident que l'arithmétique en chiffres romains est bien moins bonne que celle en chiffres arabes. Il n'y a pas besoin de tergiverser bien longtemps: un niveau scolaire en calcul suffit pour s'en rendre compte. En informatique, c'est pareil. Sauf qu'en informatique, les professionnels sont très mal formés, complètement ignares de leur discipline et par là même incompétents. J'ai croisé des cas graves, du genre le développeur qui croit avoir programmé un logiciel qui trouve les fuites mémoires dans un code ou qui détecte les programmes qui bouclent... sauf que ce sont des problèmes indécidables, on a les preuves mathématiques de leur impossibilité. Ces mêmes ignorants t'expliquent ce qu'est un bon ou un mauvais langage selon qu'il est cool ou pas. Tout se vaut quand on ne sait pas faire la part des choses. Le relativisme est un symptôme d'incompétence, pas un fanal de liberté.
Et pour l'informatique, c'est la même chose. Si seuls des informaticiens ultra-compétents devaient programmer et ne programmer que dans des langages "selects", nous ne discuterions pas sur ce forum qui n'aurait jamais été créé (phpBB est en PHP, comme son nom l'indique). Il n'y aurait qu'une poignée de programmeurs sur Terre qui se feraient embaucher à coups de salaire de trader par des industriels qui leur feraient programmer autre chose que des forum pour internet (par exemple des logiciels pour lancer des fusées, piloter des engins, faire fonctionner les IRM, bref ce qui rapporte).
Les systèmes sont aujourd'hui tellement complexes que le zéro-défaut coûte des fortunes et est réservé à des projets ultra-exigents (par exemple, l'aéronautique, l'un des rares domaines où l'on a recruté un jour des spécialistes du Caml ). Beaucoup de logiciels sont donc bugués, mais on s'en fout. On n'a pas les mêmes exigences du zéro défaut dans tout ce qui contient de l'informatique parce qu'il y a un seuil de fiabilité au-delà duquel nous achetons, et l'économie fonctionne ainsi. On peut le regretter, trouver ça "mal", trépigner, ça ne changera rien au fait...
Bon courage pour le C en tout cas !
Re: Apprendre la programmation en C.
message censuré
Dernière édition par Roger le Dim 17 Déc 2017 - 1:58, édité 1 fois
Invité- Invité
Re: Apprendre la programmation en C.
Je ne sais pas si ça va t'intéresser :
http://pubs.opengroup.org/onlinepubs/9699919799/
http://pubs.opengroup.org/onlinepubs/9699919799/
chocolat- Messages : 144
Date d'inscription : 22/01/2014
Localisation : IDF
Re: Apprendre la programmation en C.
hello, si si, ça fait partie des choses qui concernent le sujetchocolat a écrit:Je ne sais pas si ça va t'intéresser :
http://pubs.opengroup.org/onlinepubs/9699919799/
Re: Apprendre la programmation en C.
Une page de vie informatique, avec aujourd'hui notre invité, Linus Torvald.
Alors, Linus, est ce que vous auriez un truc à partager avec nous ?
Alors, Linus, est ce que vous auriez un truc à partager avec nous ?
- N'essayez pas ce mode de communication dans l'open space d'une grande banque:
http://lkml.iu.edu/hypermail/linux/kernel/1711.2/01701.html
>
> This is why I introduced the fallback mode: with both kvm and sctp
> (ipv6) not noticed until late in the development cycle, I became much
> less satisfied it had gotten sufficient testing.
So honestly, this is the kind of completely unacceptable "security
person" behavior that we had with the original user access hardening
too, and made that much more painful than it ever should have been.
IT IS NOT ACCEPTABLE when security people set magical new rules, and
then make the kernel panic when those new rules are violated.
That is pure and utter bullshit. We've had more than a quarter century
_without_ those rules, you don't then suddenly walz in and say "oh,
everbody must do this, and if you haven't, we will kill the kernel".
The fact that you "introduced the fallback mode" late in that series
just shows HOW INCREDIBLY BROKEN the series started out.
Seriously.
As a security person, you need to repeat this mantra:
"security problems are just bugs"
and you need to _internalize_ it, instead of scoff at it.
The important part about "just bugs" is that you need to understand
that the patches you then introduce for things like hardening are
primarly for DEBUGGING.
I'm not at all interested in killing processes. The only process I'm
interested in is the _development_ process, where we find bugs and fix
them.
As long as you see your hardening efforts primarily as a "let me kill
the machine/process on bad behavior", I will stop taking those shit
patches.
I'm deadly serious about this.
Some security people have scoffed at me when I say that security
problems are primarily "just bugs".
Those security people are f*cking morons.
Because honestly, the kind of security person who doesn't accept that
security problems are primarily just bugs, I don't want to work with.
If you don't see your job as "debugging first", I'm simply not
interested.
So I think the hardening project needs to really take a good look at
itself in the mirror.
Because the primary focus should be "debugging". The primary focus
should be "let's make sure the kernel released in a year is better
than the one released today".
And the primary focus right now seems to be "let's kill things for
bugs". That's wrong.
And I'm _so_ not interested in that. It makes me go "no, I will not
pull that shit, it's not safe for me, and it's not safe for our
users".
So the hardening efforts should instead _start_ from the standpoint of
"let's warn about what looks dangerous, and maybe in a _year_ when
we've warned for a long time, and we are confident that we've actually
caught all the normal cases, _then_ we can start taking more drastic
measures".
See the difference?
Stop this idiotic "kill on sight, ask questions later".
Because it's wrong.
> I would agree it would be nice to get at least a subset of this in,
> though. Linus, what would make you most comfortable?
Right now, the biggest problem for me is that the whole thing makes me
uncomfortable, because I think the people involved are coming from a
completely unacceptable model to begin with.
And we had this exact issue with the _previous_ user mode access
hardening. People apparently didn't learn a goddamn thing.
Linus
Re: Apprendre la programmation en C.
C'est bien sûr faux, surtout dans l'aéronautique où ils ne veulent pas des langages de haut niveau, ni des méthodes formelles et autres outils de pointe. Ils les connaissent, ils savent qu'avec ces outils, leurs logiciels seraient de meilleur qualité, fonctionneraient mieux et coûteraient moins cher. Mais ils n'en veulent pas. Sont-ils crétins ? Bien sûr que non. Tout simplement, l'adoption de ces outils les forceraient à revoir toutes leurs méthodes et refonder leur chaîne hiérarchique: le chef de projet ne serait plus chef de projet, l'ingénieur ne serait plus ingénieur, etc. Ils veulent conserver leurs privilèges, voilà tout.
Tu n'arriveras pas à me convaincre. Je suis dans la position de celui qui a vu. Je sais ce qu'on apprend aux informaticiens, je sais ce qu'ils font une fois embauchés et je sais qui leur donnent des ordres. Ces gens sont des ignares, ils ne savent rien, ce sont de simples bricoleurs du dimanche bombardés développeurs. Les plus mauvais deviennent managers et font ensuite les choix stratégiques qui coûtent des milliards à la communauté. Les plus mauvais managers deviennent business angels et financent les équipes aux commandes des fondations Mozilla, de Google, ils font du PHP, du Go, de l'AutoIt, toutes ces merdes.
Pour l'utilisation d'Ocaml chez Airbus : L'analyseur statique ASTRÉE. Bien sûr que le Caml n'est pas utilisé dans tout ce qui est logiciel embarqué. On sait pourquoi (et sinon, on cherchera sur Google). Cet exemple était surtout ironique. Le caml n'est pas utilisé (ou de façon si discrète...) dans l'industrie. Seuls des universitaires et des chercheurs l'utilisent. Même dans l'éducation, il cède le pas à... Python (cf. le nombre de livres qui sortent depuis quelques années sur l'informatique en classes prépas : Python toute !). Bref, Caml est réservé aux "esthètes". Ici encore, c'est bien ou c'est mal, à vrai dire je ne sais pas (enfin si, je sais : ce n'est ni l'un ou l'autre, c'est fonction de son objectif, son besoin, son environnement... bref c'est relatif. Eh oui, le relativisme est décidément partout !).
Et pour terminer, je ne cherche à convaincre personne. Ni sur ce fil, ni sur aucun autre. Je ne fais que témoigner moi-aussi, et donner mon point de vue (car il ne s'agit toujours que de cela, relativisme oblige). Je lis l'avis des autres, et leur expérience est intéressante mais ne correspond pas toujours (pas souvent ?) à la mienne. Comme quoi le monde est décidément bien multiple...
Le couplet sur l'incompétence à la Dilbert est assez classique. La perfection n'étant pas de ce monde, il est toujours possible de le produire quels que soient les résultats déjà obtenus et la qualité des intervenants. Ici encore, ce n'est qu'un point de vue : voit-on le verre à moitié vide ou à moitié plein ?
Eh bien je le vois à moitié plein et donc mon point de vue est différent. Je vois d'énormes efforts qui ont été menés pour aboutir à quantité de résultats. Tout ne va pas comme sur des roulettes, et pourtant plein de choses parviennent à rouler tout de même. La preuve, comme je l'ai déjà signalé : ce forum où nous échangeons nos points de vue (mais nous ne débattons pas, il ne faut pas se leurrer non plus !), écrit dans la merdouille PhP qui donne du boulot à beaucoup de gens, même s'ils sont de piètres programmeurs... Et ni toi ni moi je pense (mais on peut se sentir une âme de Don Quichotte) n'y changera goutte...
Re: Apprendre la programmation en C.
@alexandre : Toi tu pourrais bien t'entendre avec ma compagne (Touches pas quand même) qui essaie d'expliquer qu'avant d'essayer de concevoir une Ferrari ou un Tracteur, il faut inventer la roue et que tout cela passe par des phases de créations de bouse ou de génie et de comprendre que la petite et la grande roue ont chacune un interêt, q'une surface molle ou dure c'est idem et que c'est un mixte de tout ce bazar qui fera que nous ferons un petit pas pour l'humanité, juste un petit pas. Car le grand pas c'est réservé à très peu d'entre nous.(Merci Alexandre de remettre un peu de bon sens ici bàs)
Moi je vais faire un grand plongeon, j'ai piscine
Moi je vais faire un grand plongeon, j'ai piscine
Invité- Invité
Re: Apprendre la programmation en C.
Alors ... où que j'en suis dans mon projet de faire du C ? Il y a deux points qui se dégagent :
- A/ Même si j'ai choisis le C comme langage, je veux quand même m'assurer une certaine confiance dans les aspects de reproductibilité des programmes que je vais écrire. Donc on est plus dans "je vais faire du C", mais "je vais faire du C de telle sorte que les programmes que j'écris seront sinon reproductibles [mêmes entrées produisent les mêmes sorties] tout au moins dotés d'une forte probabilité de l'être". Donc on est plus dans "avec quoi je programme ?", mais "comment je programme ?". Et c'est un sujet un peu complexe, bien qu' intéressant.
- B/ L'autre point, c'est qu'à force de me perdre dans des considérations théoriques, j'avance d'autant moins vite au niveau des programmes que je voudrais écrire. Sauf si on considère que les aides pour les écrire sont aussi une façon de les écrire, mais je préfère considérer que ce sont des aides. La logique voudrait que j'essaye de trouver ce qui existe comme pratiques (ou frameworks) qui correspondent à mon besoin. D'un autre coté chercher ce qui existe est parfois plus coûteux que de le réinventer, donc c'est toujours un choix difficile. Quand on réinvente, on peut mesurer l'avancement. Quand on cherche un truc qui n'existe pas, mesurer l'avancement est plus délicat.
Si je pousse la logique B jusqu'au bout, invariablement la conclusion est qu'il ne faut pas "utiliser C au mieux", mais "inventer un meilleure C". Sauf que ça prendrait trop de temps pour espérer pouvoir l'utiliser ensuite, à priori. Et c'est d'autant moins pertinent, que le fait de ne pas savoir utiliser C au mieux, laisse peu d'espoir d'être vraiment sagace pour proposer "un meilleur C".
Où commence le C, où commence le hardware, où commence la logique booléenne, où commence un programme, où commence la notion de fonction, et en quoi la notion de "programme" lui fait concurrence et vient la compléter, voici quelques unes des considérations qu'il semblent nécessaire de méditer, mais dont le fait de méditer beaucoup dessus, ne fait pas tellement avancer le schmilblick en tant que construction d'un projet montrable et utilisable.
- A/ Même si j'ai choisis le C comme langage, je veux quand même m'assurer une certaine confiance dans les aspects de reproductibilité des programmes que je vais écrire. Donc on est plus dans "je vais faire du C", mais "je vais faire du C de telle sorte que les programmes que j'écris seront sinon reproductibles [mêmes entrées produisent les mêmes sorties] tout au moins dotés d'une forte probabilité de l'être". Donc on est plus dans "avec quoi je programme ?", mais "comment je programme ?". Et c'est un sujet un peu complexe, bien qu' intéressant.
- B/ L'autre point, c'est qu'à force de me perdre dans des considérations théoriques, j'avance d'autant moins vite au niveau des programmes que je voudrais écrire. Sauf si on considère que les aides pour les écrire sont aussi une façon de les écrire, mais je préfère considérer que ce sont des aides. La logique voudrait que j'essaye de trouver ce qui existe comme pratiques (ou frameworks) qui correspondent à mon besoin. D'un autre coté chercher ce qui existe est parfois plus coûteux que de le réinventer, donc c'est toujours un choix difficile. Quand on réinvente, on peut mesurer l'avancement. Quand on cherche un truc qui n'existe pas, mesurer l'avancement est plus délicat.
Si je pousse la logique B jusqu'au bout, invariablement la conclusion est qu'il ne faut pas "utiliser C au mieux", mais "inventer un meilleure C". Sauf que ça prendrait trop de temps pour espérer pouvoir l'utiliser ensuite, à priori. Et c'est d'autant moins pertinent, que le fait de ne pas savoir utiliser C au mieux, laisse peu d'espoir d'être vraiment sagace pour proposer "un meilleur C".
Où commence le C, où commence le hardware, où commence la logique booléenne, où commence un programme, où commence la notion de fonction, et en quoi la notion de "programme" lui fait concurrence et vient la compléter, voici quelques unes des considérations qu'il semblent nécessaire de méditer, mais dont le fait de méditer beaucoup dessus, ne fait pas tellement avancer le schmilblick en tant que construction d'un projet montrable et utilisable.
Re: Apprendre la programmation en C.
Je perdrais moins de temps, si les gens mettaient des titres appropriés.
Le mec appelle sont article
Qu'est ce que l'article contient ? Des trucs et astuces, et des exemples pour écrire du code non sécurisé.
Pareil pour les livres ?
https://resources.sei.cmu.edu/asset_files/BookChapter/2005_009_001_52710.pdf
Au moins dans le livre, y a quand même des éléments susceptible d'aider :
http://www.informit.com/articles/article.aspx?p=2036582&seqNum=6
J'imagine que c'est contre les jeunes gens qui veulent mettre en pratique tous ces conseils, que Linus avait ranté (plus haut dans ce fil l'extrait du mail).
Personnellement je ne veux pas me défendre contre les gens malicieux pour le moment, mais plus me défendre contre moi même. Donc bon. De toute façon ça me semble quand même un peu léger tout ça, et on dépend parfois des outils, donc solutions pas très portables .
https://books.google.fr/books?id=GL8AeTCu1WAC&pg=PT180&lpg=PT180&dq=secure+array+access+for+c+programs&source=bl&ots=igEmDuIZYi&sig=uqaJUM3RbgOYsddCX2SAk5y7Cv0&hl=en&sa=X&ved=0ahUKEwipk7ixj9LXAhXCUhQKHYjZBOo4ChDoAQguMAE#v=onepage&q=secure%20array%20access%20for%20c%20programs&f=false
Okay, faut payer pour lire
https://link.springer.com/chapter/10.1007/3-540-36532-X_9
Mais comment je sais si ça vaut le coup de payer, si tu me dis pas ce qu'il y a dedans ?
Le mec appelle sont article
https://www.cprogramming.com/tutorial/secure.html
Writing Secure Code
Qu'est ce que l'article contient ? Des trucs et astuces, et des exemples pour écrire du code non sécurisé.
Pareil pour les livres ?
https://resources.sei.cmu.edu/asset_files/BookChapter/2005_009_001_52710.pdf
Au moins dans le livre, y a quand même des éléments susceptible d'aider :
Page 102 :
size_t __builtin_object_size(void *ptr, int type)
http://www.informit.com/articles/article.aspx?p=2036582&seqNum=6
J'imagine que c'est contre les jeunes gens qui veulent mettre en pratique tous ces conseils, que Linus avait ranté (plus haut dans ce fil l'extrait du mail).
Personnellement je ne veux pas me défendre contre les gens malicieux pour le moment, mais plus me défendre contre moi même. Donc bon. De toute façon ça me semble quand même un peu léger tout ça, et on dépend parfois des outils, donc solutions pas très portables .
https://books.google.fr/books?id=GL8AeTCu1WAC&pg=PT180&lpg=PT180&dq=secure+array+access+for+c+programs&source=bl&ots=igEmDuIZYi&sig=uqaJUM3RbgOYsddCX2SAk5y7Cv0&hl=en&sa=X&ved=0ahUKEwipk7ixj9LXAhXCUhQKHYjZBOo4ChDoAQguMAE#v=onepage&q=secure%20array%20access%20for%20c%20programs&f=false
Okay, faut payer pour lire
https://link.springer.com/chapter/10.1007/3-540-36532-X_9
Mais comment je sais si ça vaut le coup de payer, si tu me dis pas ce qu'il y a dedans ?
Re: Apprendre la programmation en C.
Les protections du Kernel Linux :
https://www.kernel.org/doc/Documentation/security/self-protection.txt
https://eklitzke.org/memory-protection-and-aslr
https://www.kernel.org/doc/Documentation/security/self-protection.txt
https://eklitzke.org/memory-protection-and-aslr
Page 2 sur 3 • 1, 2, 3
Sujets similaires
» La Programmation , Personne en parle ?
» Savoir apprendre, apprendre à apprendre ??
» Des passionnés de programmation ?
» Suis je fait pour la programmation
» Des gens qui aimeraient accompagner une débutante en programmation à travers un projet ?
» Savoir apprendre, apprendre à apprendre ??
» Des passionnés de programmation ?
» Suis je fait pour la programmation
» Des gens qui aimeraient accompagner une débutante en programmation à travers un projet ?
Page 2 sur 3
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum