Et pourquoi pas de l'objet dans nos chers kernel Linux ? [ C++ ] - Débats - Linux et OS Alternatifs
Marsh Posté le 30-01-2004 à 10:03:50
Super connue, mais je peux pas m'en empêcher ...
Interview de Bjarne Stroustrup, créateur du langage C++ :
Citation : Interviewer : Cela fait quelques années maintenant que vous avez changé le monde de la conception logicielle, qu'est-ce cela vous fait en regardant en arrière ? |
NB: c'est une fausse interview ...
Marsh Posté le 30-01-2004 à 10:07:17
non, ce n'est pas ridicule
on en parle ici :
http://lkml.org/lkml/2003/10/11/3
Marsh Posté le 30-01-2004 à 11:56:39
jvois pas trop l'interet de refaire linux en objet, a la rigueur un autre kernel qui serait compatible.
de plus (et surtout) je trouve perso que g++ a encore trop de prob avec le c++ pour faire une truc vraiment propre (template et héritage multiple notament) sans compter les problèmes de perfs et de mémoire prise.
Kit a refaire le kernel dans un autre langage, il y a peut etre d'autres langages objets plus interessant.
D'un autre coté c'est vrai que ca simplifierait surement l'écriture, mais bon linux propose déjà de nombreuses couches d'abstraction pour simplifier le travail.
Marsh Posté le 30-01-2004 à 12:17:05
J'ai pas le recul pour juger de quoi que ce soit, mais y'a eu une news sur kernel trap qui en parlait, ici : http://kerneltrap.org/node/view/2067
Il y a une citation de Linus Torvalds :
|
@++
Marsh Posté le 30-01-2004 à 12:24:16
ganjo a écrit : jvois pas trop l'interet de refaire linux en objet, a la rigueur un autre kernel qui serait compatible. |
tu parles de perf et tu t'inquiètes même pas du temps que ça peut prendre de traverser toutes ces couches d'abstraction ? On a l'impression quand on voit toute ces couches que les devel ont essayé de faire de l'objet avec du C
pb : il n'en a pas les avantages, c'est pénible à maintenir, etc ...
et je vois pas en quoi écrire les drivers en c++ poserait un pb de performance, je ne parle pas ici de réécrire tout le kernel
en plus on parle depuis un moment de faire une interface pour que les drivers proprio puissent se greffer plus facilement, chose à laquelle linus est opposé, mais ça serait plus simple à implémenter en objet, en créant une interface qui serait implémenter par les drivers proprio
Marsh Posté le 30-01-2004 à 12:28:09
Evadream -jbd- a écrit : J'ai pas le recul pour juger de quoi que ce soit, mais y'a eu une news sur kernel trap qui en parlait, ici : http://kerneltrap.org/node/view/2067
|
la gestion des exceptions est cassée en c++ ?
Marsh Posté le 30-01-2004 à 12:31:30
udok a écrit : oui, pourquoi pas ? |
dis moi t as deja codé en C ??
t as deja ouvert un kernel Linux ou Unix ??
Marsh Posté le 30-01-2004 à 12:36:21
j'attends que taz passe sur ce sujet qu'on rigole 2 minutes
Marsh Posté le 30-01-2004 à 12:37:17
ça sent le troll de compet' donc
Marsh Posté le 30-01-2004 à 12:38:19
ouais je pense niveau perf cest pas comparable, je parle pas des choses basiques, mais des trucs specifique c++ comme les template, ou encore l'héritage ou les exceptions.
Les couches d'abstraction ne prennent tant de temps que ça, après tout c'est juste des fcts qui regroupent a peine plus que se qu'on aurait été obligé d'écrire, la baisse de perf est plutot minime. De plus meme en c++, les 2 desavantages seraient cumulés : c++ et couche d'abstraction.
Marsh Posté le 30-01-2004 à 12:47:53
ReplyMarsh Posté le 30-01-2004 à 12:48:33
tomate77 a écrit : |
oui, justement ... tu as déjà fait de l'objet ? tu sais à quoi ça sert ?
Marsh Posté le 30-01-2004 à 12:49:12
ah non, pas taz, on a jamais vu un intégriste pareil !
Marsh Posté le 30-01-2004 à 12:52:40
ganjo a écrit : ouais je pense niveau perf cest pas comparable, je parle pas des choses basiques, mais des trucs specifique c++ comme les template, ou encore l'héritage ou les exceptions. |
mais l'un des grand intéret de l'objet c'est justement de pouvoir poser simplement une couche d'abstraction hein
les exceptions sont justement bien plus propre et surement aussi rapide que les messages d'erreurs, et si on a besoin de communiquer par envoie de message, rien n'empeche de le faire : c++ apporte des trucs, mais n'en enleve pas (à par les défauts)
reste les templates, mais je suis pas sur de leur utiliter ici (pas obliger d'utiliser ce qui sert pas)
Marsh Posté le 30-01-2004 à 13:03:59
black_lord a écrit : j'attends que taz passe sur ce sujet qu'on rigole 2 minutes |
Marsh Posté le 30-01-2004 à 13:04:41
tomate77 a écrit : |
mOI OUI? ET LARGEMENT PLUS QUE TOI? ET JE CONFIRMS; sORS UN PEU DE TA GROTTE /O
Marsh Posté le 30-01-2004 à 13:05:57
udok a écrit : |
Ca marche pas, l'ABI C++ est cassée a chaque nouvelle version de gcc, tu introduirais encrore plus d'incompatibilité qu'aujourd'hui.
Marsh Posté le 30-01-2004 à 13:06:28
udok a écrit : |
oue j ai meme refais un compilo si tu veux tout savoir
Marsh Posté le 30-01-2004 à 13:07:10
kadreg a écrit : |
les caps cai mal
Marsh Posté le 30-01-2004 à 13:07:54
je crois que le prolème c'est qu'à la création de linux, le c++ était encore en mouvement, et qu'écrire un compilateur c++ est infiniment plus compliqué que d'écrire un compilateur C, ce qui fait qu'on a des compilateurs C à peu près partout. enfin, c'est un choix
Marsh Posté le 30-01-2004 à 13:08:19
kadreg a écrit : |
ils essaient de simuler, avec toutes ces couches, le comportement natif d'un langage objet et tu maintiens que, dans ces circonstances, le C est plus facile à maintenir que du C++ ?
Marsh Posté le 30-01-2004 à 13:08:24
tomate77 a écrit : les caps cai mal |
j'ai des problèmes de cla
Marsh Posté le 30-01-2004 à 13:08:47
ReplyMarsh Posté le 30-01-2004 à 13:09:59
udok a écrit : |
Non, je suis d'accord avec toi. C'est plus simple d'utiliser un langage supportant directement les paradigmes objets que d'essayer de se les émuler à la mano. De la même façon que faire du C++ reflexif, ça fait mal au cul lorsque l'on a utilisé des langages l'intégrant directement.
Marsh Posté le 30-01-2004 à 13:13:23
pour les couches d'abstraction d'accord, mais il faut bien les ecrires, faire des interfaces... se qui rajoute toujours du code. Pour les exceptions, je ne suis pas daccord avec toi, perso je trouve ça laid (mais tout est question de gout) et de part le macanisme meme, je ne vois pas comment ça pourrait etre plus rapide, bien sur ca permet de tester tout un bout de code plutot que de verifier le retour de chaque fct.
Bon comme tu dis on peut bien melanger le meilleur des 2 mondes, mais pour moi cest se qui est de plus laid en c++, c'est davoir du C au milieu, jpense que ca ne peut que brouiller les developpeurs tiers.
En effet on peut trouver des moyens de se passer des templates, mais bon ca obligerait de se passer des conteneurs, string et cie (quoique ca ne serait pas plus mal, vu la lenteur de certains d'entre eux).
De plus je pense vraiment qu'auncun compilo est au point la dessus, leur gestion mémoire est souvent douteuse et rend le debug souvent hardu.
Bref vous l'aurez compris je suis pas fan du C++, meme si jaime pourtant beaucoup certains langages objets : ocaml, squeak(samlltalk), ruby...
D'un autre coté certains kernel sont codés en c++ et fonctionne très bien (BeOS notament je crois)
Marsh Posté le 30-01-2004 à 13:16:06
kadreg a écrit : |
et c'est typique au compilateur g++ ou c'est l'abi qui n'est pas bonne ?
Marsh Posté le 30-01-2004 à 13:39:39
udok a écrit : |
Non, c'est g++ qui fait la nouille
Marsh Posté le 30-01-2004 à 13:42:20
Les vrais OS sont codés en assembleur, le seul langage proche de la machine, donc vraiment optimisé.
Coder un OS en C/C++, c'est comme faire une page Web avec Dreamweaver.
Marsh Posté le 30-01-2004 à 13:43:58
Docteur_Canard a écrit : Les vrais OS sont codés en assembleur, le seul langage proche de la machine, donc vraiment optimisé. |
T'es un champion toi
Marsh Posté le 30-01-2004 à 13:47:37
Docteur_Canard a écrit : Les vrais OS sont codés en assembleur |
Linux n'est pas un vrai OS
Windows 95 est un vrai OS
Marsh Posté le 30-01-2004 à 13:51:13
tsss, l'assembleur trop loin de la machine encore, les vrais de vrai ils ecrivent directement en hexa leur binaire
Marsh Posté le 30-01-2004 à 13:51:50
ganjo a écrit : tsss, l'assembleur trop loin de la machine encore, les vrais de vrai ils ecrivent directement en hexa leur binaire |
moi j code en binaire
Marsh Posté le 30-01-2004 à 14:03:26
1) Performances: à condition d'éviter les fonctions vraiment objet (= virtual), je ne vois pas le problème.
2) Utilité: ça permet d'utiliser les objets (encapsulation des données privées), les exceptions (utile ?), les templates (très utile !), les const, les références, etc.
3) Portabilité: à part pour Linux-Embeded, je ne vois pas le problème
4) Probabilité que ça arrive: = 0, mais je ne sais pas pourquoi.
Marsh Posté le 30-01-2004 à 14:13:39
De l'objet en pétant le mécanisme de redéfinition, je vois pas l'intêret. Déjà que ce mot clef virtual est une merde sans nom
Marsh Posté le 30-01-2004 à 14:32:00
kadreg a écrit : De l'objet en pétant le mécanisme de redéfinition, je vois pas l'intêret. Déjà que ce mot clef virtual est une merde sans nom |
1) Pour avoir des struct avec des champs "private", et cacher les détails de telle ou telle implémentation de l'interface publique. Particulière utile pour le support multi-architectures.
2) Pour avoir des valeurs par défaut
3) Pour faire "io->write()" sur une instance de "BlockIO" dont on sait qu'elle contient en privé ce dont elle a besoin, sans être obligé de faire "write(&io, &myStructQuiVaBien, &MonVoidEtoile, ...)"
4) Pour surcharger le "=" en rajoutant les tests qui vont bien:
Code :
|
5) Pour utiliser les templates
6) Pour faire du typage fort sur les fonctions qu'on passe en "void *" (cf la page de Bjarne Sroustrup)
7) Etc.
Marsh Posté le 30-01-2004 à 14:33:48
Docteur_Canard a écrit : Les vrais OS sont codés en assembleur, le seul langage proche de la machine, donc vraiment optimisé. |
Harko
Marsh Posté le 30-01-2004 à 14:40:02
glacote a écrit : |
ben faudrait un compilo qui fonctionne déjà !
Marsh Posté le 30-01-2004 à 15:55:49
glacote a écrit : |
Ce sont exclusivements de paradigmes non Objets, puisque Ada83, pourtant bien procédural, avait toutes ces notions (sauf la surcharges des opérateurs, mais c'est pas lié à l'objet non plus).
Marsh Posté le 30-01-2004 à 09:51:08
oui, pourquoi pas ?
on utilise du C depuis des lustres, avec les pb que celà comporte (lenteur de programmation, difficile à maintenir, etc ...)
évidemment pour tout ce qui est bas niveau, l'assembleur et le C reste de rigueur.
mais pour tout ce qui est driver, implémentation de protocole réseau etc ... ça permettrait de faire un code bien plus propre, plus facile à maintenir, plus rigoureux (devra repecter les interfaces proposer)
un langage a besoin de temps pour murrir, mais maintenant, le C++ est un langage aboutit, avec norme ISO et tout ce qu'il faut, largement utilisé de par le monde
alors pourquoi pas ? de nombreux développeurs ont l'air de vouloir ça en tout cas, mais ça ne semble pas être au gout de la haute hiérarchie
---------------
Non au projet de loi DADVSI ! (droits d'auteurs)