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
Tom
C'est justement parce que quelqu'un a dit "ADA, c'est moisi", que le
problème a surgi. Dépassement de capacité dans un registre, ADA
travaillant sur 6 bits, le C sur 8 et boum... Le C ne sait pas
gérer une exception...


Ils ont tenté avec le C++. Mais va dire à des gens qui font des
if ((machin = bidule()) == 0)
que ce n'est pas gérer des erreurs correctement. Surtout que parfois
c'est 0 parfois -1, etc.

Tom

Avatar
Joe Cool
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.


Les attaques ad hominem commencent à pulluler. Ce n'est pas sérieux.

--
Joe Cool

Avatar
Joe Cool

Un typage *est* une preuve.


Qui ne sert à rien. Lire p.ex. :
http://mindview.net/WebLog/log-0025
« In fact, what we need is

*Strong testing, not strong typing.*
»


Bien sûr, une preuve ça ne sert à rien.

Quand je doit démontrer un truc sur les entiers, je me dis à quoi bon me
fatiquer à faire une preuve qui ne sert à rien : je vais la tester sur
les 8 premiers entiers, c'est bien suffisant.

1 est premier
3 est premier
5 est premier
7 est premier
donc tous les entiers impairs sont premiers

--
Joe Cool


Avatar
JustMe
Joe Cool avait énoncé :
Et dérécursiver ca n'est pas modifier un comportement ? lol


Non, car ça ne modifie pas la complexité, ni la sémantique du calcul.


Ah ?

mmm....


Avatar
Tom
Un typage *est* une preuve.
Qui ne sert à rien. Lire p.ex. :

http://mindview.net/WebLog/log-0025
« In fact, what we need is

*Strong testing, not strong typing.*
»
Donc ce Bruce Eckel c'est *LA* référence si j'ai bien compris. Un seul

blanc bec se pointe comme ça (avec des exemple en Java, j'apprécie) et
piétine les travaux sur les lambda-calculs typés. Non mais faut vérifier
ses sources parfois.

Cherche "isomorphisme de Curry-Howard" sur Google. C'est très
instructif. Si tu as des notions de lambda-calcul tu verras que le type
d'un terme (donc d'un programme) est une preuve mathématique. Un
programme correctement typé correspond à une preuve.
Ca ne vérifie pas forcément la spécification, mais au moins que ce qui
est écrit est un programme, ce qui élimine beaucoup d'erreurs.

Tom


Avatar
JKB
Le 09-03-2005, à propos de
Re: a-t-on le choix ?,
Tom écrivait dans fr.comp.os.linux.debats :
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



Merci de corriger. Ça fonctionne sous x86. Tous les contributeurs
sont les bienvenus.

JKB


Avatar
Joe Cool
Un typage est dit statique quand le type des données est décidé au
moment de la compilation.


Et donc ? En C, c'est encore mieux, le type des données est décidé
*avant* la compilation, ce qui, du reste, permet de comprendre ce qu'on
manipule. En quoi est-ce un avantage (c'était ma question, au cas où tu
n'aurais pas compris) ?


La machine vérifie le type et le devine en observant la manière dont le
programme utilise ses données. On évite les erreurs de typage dues au
programmeur et on certifie que le programme ne peut en aucun cas générer
d'erreur d'exécution : un programme typé statiquement ne peut pas planter.

Un typage *est* une preuve.


Preuve de quoi ? De la cohérence des types ? De la correction du
programme (ce qui est en générale ce qu'on appelle preuve, et qui est
très difficile à faire automatiquement puisque la machine est incapable
de deviner ce qu'on veut faire, et à même beaucoup de mal à comprendre
quand on lui explique), certainement pas. En même temps, ça
m'arrangerait, comme tout mes programmes C sont correctement typés, ça
prouverait qu'ils sont corrects.


Non car le système de type du C est incohérent. Le système de typage de
caml génère pour chaque programme la preuve qu'il utilise ses données de
manière cohérente : il génère la preuve que le programme ne peut pas
planter. Du moins si il plante, ce n'est pas de sa faute mais celle du
système d'exploitation ou du matériel.

Alors quand tu racontes ce genre de choses, tu m'excuseras,
mais tu me fais doucement rigoler. Je pense que la seule chose que tu
prouves c'est que tu ne sais pas (mais alors vraiment pas) du tout de
quoi tu parles.


Ignorance, quand tu nous tiens.


Tu parles pour toi ?


Non, je parle pour quelqu'un d'autre.

--
Joe Cool



Avatar
Tom
Et donc ? En C, c'est encore mieux, le type des données est décidé
*avant* la compilation, ce qui, du reste, permet de comprendre ce qu'on
manipule. En quoi est-ce un avantage (c'était ma question, au cas où tu
n'aurais pas compris) ?


Il n'y a pas de types en C bon sang ! Un char, un int, un void c'est la
même chose. Quand il n'y a qu'un type c'est qu'il n'y a pas de type.

Tiens, c'est vrai. Apparemment au prix de certaines contorsions. Bon,
passons. Vu mon expérience de la programmation objet, j'aurais pu me
passer de donner un exemple pareil.


Les objets sont des abominations. L'objet est une extension propre à
Objective Caml en ce qui concerne Caml.

En même temps, ça m'arrangerait, comme tout mes programmes C sont
correctement typés, ça prouverait qu'ils sont corrects.


Ils ne sont pas typés. n-ième édition.


Tu parles pour toi ?


Ca c'est de l'argument. Je vais essayer de me rappeler de ce que je
dissais à la maternelle dans de telles situations.

Tom

Avatar
JustMe
Joe Cool avait écrit le 09/03/2005 :
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.


Les attaques ad hominem commencent à pulluler. Ce n'est pas sérieux.


Vous confondez "défis" et "attaque".


Avatar
Tom
Oui, et? Tu compares Dijkstra à Einstein?


Dijkstra est l'un des plus grands informaticiens ayant existé. Et je ne
vois pas pourquoi on devrait comparer Dijkstra à Einstein. Ils ne
travaillaient pas dans le même domaine.

Tom