OVH Cloud OVH Cloud

a-t-on le choix ?

444 réponses
Avatar
Tom
Bonjour,

On voit souvent des "quel linux choisir ?", des "pourquoi linux ?" etc.
Mais finalement à devoir choisir entre la peste (du côté de chez MS) et
la grippe (notre bon vieux nunux), celà ne vous arrive pas le matin en
vous réveillant de vous dire que les programmes qui font fonctionner
votre machines ne sont que des bidouillages plus ou moins réussis ?

Regardez les codes sources d'un programme en C. Même le code d'un bon
programmeur n'est rempli que d'horreurs. Ce fameux "void" : c'est quoi
cette abomination de la programmation ? Il n'y a aucune sémantique
valable là derrière. D'ailleurs les types en C n'ont de type que le nom.
Comment se fait il qu'on puisse écrire dans la 11e case d'un tableau de
10 éléments. Ce langage surestime beaucoup les capacités des personnes
qui vont l'utiliser. Une telle chose ne doit pas être possible. Comment
imaginer que ce genre de choses peut être voulu par le programmeur ?
Je pense que vous avez déjà vu du JAVA. Mais c'est à gerber cet
emboîtement de new, cette masse colossale de classes à faire pour faire
trois fois rien ! J'ose même pas imaginer la quantité de calculs
inutiles faits par la machine pour gérer ces merdes. D'accord il y a de
l'optimisation, mais c'est loin d'être suffisant.
Dans le temps les programmes étaient bidouillés parce qu'il n'y avait
pas assez de mémoire : par exemple on utilisait une variable pour
stocker deux informations. Maintenant l'horreur est à l'autre extrême :
on a tellement de mémoire de disponible que l'on utilise trop. En C :
tant pis c'est perdu. Un trou de mémoire ? Tant que le pc doit pas
redémarrer toutes les heures à cause de ça on s'en fout. En JAVA : il y
a le ramasse miettes alors on peut bouffer de la mémoire : c'est pô grave.
Dès que les programmes ont commencé à ne plus rentrer sur une disquette
ils sont devenus beaucoup trop compliqués pour fonctionner correctement.
On en vient à une époque où on trouve acceptable un programme quand il a
moins de cent bugs alors que rien que le fait de consommer trop de
ressources fait que le programme n'est pas bon. Aujourd'hui on nous
parle de .NET et de merdouilles dans le genre. A quoi ça sert de se
lancer dans la création de langages qui se copient les uns les autres.
C, C++, JAVA, Pascal : c'est la même chose, la même façon de penser. Et
c'est une manière de penser qui pousse à faire des fautes.
Bref l'informatique ne va pas fort.

Tom

10 réponses

Avatar
Nicolas George
Tom , dans le message <422ec076$0$31363$, a
écrit :
Méthode B rules :-)
Le truc qui permet de démontrer qu'un programme respecte des
spécifications mais qui ne permet pas de démontrer qu'il ne les respecte
pas.


Et alors ? Dans la mesure où un programme qui ne respecte pas ses
spécifications n'est pas satisfaisant de toutes façons, ça va dans le bon
sens.

Avatar
Joe Cool
On Wed, 09 Mar 2005 15:42:12 +0100, Joe Cool wrote:


Aucun typage ne peut garantir dans le cas général d'un langage universel
qu'on adresse pas une cas inexistante d'un tableau.


Oh ! Pourtant le C c'est de la merde exactement pour cette raison.


La raison pour laquelle le C est de la merde est qu'il ne fait pas de
différence entre l'écriture dans une zone valide et l'écriture dans une
zone invalide ou inexistante.

Caml le fait, et n'autorise pas l'écriture d'une donnée dans une zone
non valide. On peut écrire a.(truc) <- machin, mais cette instruction
n'est exécutée que quand elle est valide.

Tout bon programmeur Caml, si il n'a pas prouvé la validité de son
algorithme, doit enrober son code d'un try...with pour traiter ce
cas.


Oh ! Et tout programmeur C qui testerait les bornes de son tableau
serait en fait un mauvais programmeur parce qu'il n'a forcément pas
prouvé la validité de son algorithme ? Finalement je ne vois aucune
différence sur ce point entre le C de merde et le Caml langage miracle.


Ce problème existe indépendamment de tout langage. Ce qui varie, c'est
la manière de gérer le problème : le C se contente de l'ignorer.

--
Joe Cool


Avatar
Joe Cool
Parce que vous savez faire un OS en C vous. Montrez-nous le donc.


http://www.systella.fr/~bertrand/freevms

Ça ira ?


Lien mort.

--
Joe Cool


Avatar
Nicolas George
Tom , dans le message <422ed68b$0$26587$, a
écrit :
C'estpas parce qu'on ne la voit pas qu'elle n'existe pas.


Non, c'est parce qu'elle n'existe pas qu'on ne la voit pas. La nuance est
subtile, mais elle est fondamentale en logique.

Avatar
Tom
Le problème c'est que ça compile. Toi, là, tu vérifies à l'exécution
que ça marche (ou pas). Pas très efficace, Tom ne serait pas très
content de ta façon de programmer quelque peu hasardeuse.


Il n'y a rien de hasardeux, ce comportement est défini par Caml. Il
suffit de lire la doc pour savoir qu'on peut récupérer l'exception et
continuer le programme.

Tom

Avatar
Tom
Aucun typage ne peut garantir dans le cas général d'un langage universel
qu'on adresse pas une cas inexistante d'un tableau.
Oh ! Pourtant le C c'est de la merde exactement pour cette raison.

Le C *permet* l'écriture dans cette fameuse case, alors que Caml ne le

permet pas.

Tout bon programmeur Caml, si il n'a pas prouvé la validité de son
algorithme, doit enrober son code d'un try...with pour traiter ce
cas.
Oh ! Et tout programmeur C qui testerait les bornes de son tableau

serait en fait un mauvais programmeur parce qu'il n'a forcément pas
prouvé la validité de son algorithme ? Finalement je ne vois aucune
différence sur ce point entre le C de merde et le Caml langage miracle.
Ce teste permettra de valider l'algorithme avec un prouveur : c'est une

correction. Le problème c'est que c'est le programmeur qui doit y
penser. En Caml c'est l'interpréteur qui gère. En clair : en C ce
comportement n'est pas défini, en Caml : oui.

Tom


Avatar
Tom
http://www.systella.fr/~bertrand/freevms


Je met la bonne adresse, pour ceux qui s'arrêteront à la page 404
pointée par le précédent lien. Perso je testerais bien mais je n'ai pas
de VAX sous la main.

http://www.systella.fr/~bertrand/FreeVMS/index.html

Tom

Avatar
Nicolas George
Tom , dans le message <422ec2f5$0$17145$, a
écrit :
Moi j'appelle ça indécis.


Tu appelles ça comme tu veux, mais si tu ne parles pas la même langue que le
reste du monde, il ne faut pas t'étonner qu'on ne te comprenne pas et qu'on
te contredise.

De plus c'est quoi cette erreur de segmentation : à l'exécution
de la compilation (quel super compilateur) ou à l'exécution du programme


C'est quoi cette distinction à la con ?

Permettez moi de vomir. Beuaaaaaaaaaaa
Ah ça va mieux. Non mais. Tester un programme pour voir si il est
valide. C'est bien digne d'un programmeur en C.


Eh bien vas-y, montre-nous comme tu es fort : choisis ton langage, fais un
programme qui serve vraiment à quelque chose dans la vraie vie (un
traitement de texte, un navigateur web, un serveur de news, un système de
comptabilité), et prouve qu'il fonctionne.

On va bien rire, tiens.

Avatar
Tom
Il y a beaucoup d'activités qui existent uniquement pour servir de gagne
pain à leurs pratiquants. En général ce sont ceux qui crient le plus fort
pour prétendre que leur machin est indispensable et qu'on ne pourrait pas vivre
sans. Par exemple, pour plaire à Tougard, les employés du fisc sont
certainement convaincus que sans eux la fraude serait totalement généralisée
et que l'état ne pourrait pas vivre. Le seul problème est que l'impôt qu'ils
contrôlent rapporte moins que ce qu'ils coutent. Je te laisse le soin de
raisonner par analogie pour le cas qui t'intéresse - mais j'ai peur que
le raisonnement par analogie ne bénéficie pas de l'onction de messieurs les
logiciens.


Je ne suis pas là pour faire un procès aux logiciens. Et je ne crois pas
qu'ils travaillent moins que d'autres.

Tom

Avatar
Nicolas George
Tom , dans le message <422ef56e$0$31860$, a
écrit :
"I chose to develop my own model for C using a structural operational
semantics."

Déjà il fait son propre C


Il faudrait apprendre à lire, il y a marqué « my own model for C », pas « my
own C ».