mercredi, octobre 08, 2008

Les pointeurs ...

Je m'amuse :
" 50% of the bugs that people run into today, coding with C# in our platform, and the same is true of Java for that matter, are probably null reference exceptions. If we had had a stronger type system that would allow you to say that ‘this parameter may never be null, and you compiler please check that at every call, by doing static analysis of the code’. (
The A-Z of Programming Languages: C# par le concepteur de c#)

Pourtant on a pondu des usines a gaz pour éviter les pointeurs et finalement les problèmes sont toujours la ... est-ce à dire que l'on a fait beaucoup de choses pour rien ?

allons plus loin, revenir à des choses plus simples ? (je n'ose l'imaginer !).

3 commentaires:

Christian Fauré a dit…

Tu en a trop dit ou pas assez :-)
Tu prône le retour massif au C et C++ ou tu invites à utiliser des langages de script qui sortent des logiques C#, Java ou ObjectiveC ?

bertails a dit…

En réalité, le problème est bien connu et déjà résolu. Ça s'appelle du "typage fort" et des langages très puissants en sont équipés, comme OCaml (la propriété a d'ailleurs été formellement prouvée dans le cas de ce langage).

Dans le cas général (comme Java ou C# ou encore C), on sait déjà qu'on ne peut pas résoudre le problème : c'est une question de conception, de typage et d'obligation d'initialisation des variables.

À noter : l'autre majorité des bugs est liée aux problèmes de transtypage (cast). Ce problème est simplement résolu en les interdisant, ce qui dans la pratique n'est pas un problème lorsque le système de type est assez évolué (cf. encore une fois OCaml).

Yves Marie PONDAVEN a dit…

Ce qu m'intéressait c'était que c'était quand même l'argument fort pour Java ... et que ca justifiait le garbage collector...

Je suis pour les langages de scripts comme php, python pour l'essentiel car souples, simples, performants pour la majorité du code que l'on a a produire.

Après rien n'interdit de faire du C++ ou Ocaml pour faire plaisir... sur des sujets particuliers qui necessitent de la performance, une fiabilité importante...

Microsoft a eut une bonne intuition au départ de .net en permettant d'utiliser plusieurs langages pour en avoir des simples, des plus complexes... pour avoir un langage adapté a ce que l'on fait mais l'idée a été tuée car personne n'accepte d'avoir 2 langages dans le SI... on prend donc un langage qui fait tout mais qui n'est ni sur, ni simple, ni performant......