(#116)
Pas du tout. Plusieurs petits programmes qui allouent chacun très peu de mémoire = le treshold de GC sera rarement ou jamais dépassé = il y aura pas ou très peu de GC. Un gros programme qui alloue beaucoup de mémoire = le treshold sera dépassé à plusieurs reprises = il y aura beaucoup de GC. C'est l'existance du treshold (de la borne inférieure en dessous de laquelle il n'y a pas de GC) qui fait qu'il n'y a pas proportionnalité.
N'importe quoi!
Les routines qui n'allouent PAS de mémoire n'allouent PAS de mémoire! => ZERO allocation.
De toute façon il est évident que le temps consommé par les GC est proportionnel à la quantité d'allocations, et que si on veut le comptabiliser, c'est un temps constant à rajouter à la durée d'une allocation.
TIGCC est un cas bien particulier.
Il y a donc plein de cas bien particuliers, en C.
Rien ne remplace le C!
Le Caml *peut* remplacer le C dans la plus grande partie des applications.
Et même si quelque chose remplaçait le C, ça serait le C++ ou peut-être le Java, mais certainement pas le CAML.
lol!
En suivant ton propre raisonnement, comme Caml est nettement (!) plus efficace que C++ et que Java, comme c'est un langage objet et qu'il offre donc toutes leurs possibiltés, il faut SUPPRIMER C++ et Java au profit de Caml
f(a)+f(b) est nettement plus naturel.
Dogme.
En lisant (f a)+(f b), on dirait presque du LISP.
Il y a une lointaine parentée (langages fonctionnels)
(f a b c) est de la syntaxe LISP (notation polonaise préfixée et entourée de parenthèses)!
Mais bien sûr la parenthèse extérieure est stupide.
f a b c est très bien.
Arrête de mentir! CAML n'a pas les mêmes performances que le C!!! Dans le bench,
Va vite prendre de la juvamine!
Et quand bien même tu refuse de l'admettre pour le C, c'est une évidence flagrante pour C++ et java que Caml est un langage plus puissant sur tous les plans. Tout ce qui est programmé dans ces langages pourrait (devrait, selon le raisonnement kevin) être fait en Caml, et serait ainsi plus efficace.
Et j'ai déjà montré pourquoi ça sera encore pire pour des programmes réels.
Tu n'as rien montré du tout.
Non, c'est toi qui es d'extrêmement mauvaise foi à continuer de renier le fait que GCC bat Ocaml en vitesse et en consommation de mémoire (en temps d'exécution), alors que le bench que toi, tu m'as indiqué, montre le contraire!
En mémoire consommée, je n'ai jamais dit le contraire, même si la différence est sans importance.
En vitesse, ils sont à égalité. Allez, pour te faire plaisir, j'admets le 0.13%
Non. Un langage trop abstrait dégrade les performances.
Dogme de la religion Koflerienne.
Contre-exemple du dogme : Caml.
et je trouve que le C est plus lisible.
Parce que tu as mauvais goût
L'erreur est justement de faire le compte de l'abstraction. L'abstraction n'est pas un but, c'est juste un moyen d'obtenir de la lisibilité et de la portabilité. Le C est déjà très lisible et très portable, donc ce n'est pas la peine d'aller plus loin en abstraction.
Quoique tu en penses, l'abstraction est un but en soi. Sans abstraction, l'informatique serait restée à l'âge de pierre.
Ce que tu penses, c'est qu'on est allé assez loin et qu'on peut se permettre de stopper le progrès. des gens comme toi existaient ils y a 10 ans, 20 ans, 30 ans, 40 ans. Heureusement, on ne les a pas écouté.
Et je ne vois pas du tout pourquoi on ne programmerait pas un Athlon de la même manière qu'un 8086.
He bien c'est grave, voilà tout.
Ça donnerait des programmes bien plus efficaces que le bloatware qu'on voit de nos jours.
Ca donnerait des programmes bien moins efficaces. Mais tu as raison, retournons tous à l'assembleur, le plus puissant des langages!
Arrête de nier les faits!
A qui le dis tu.
Le fait que tu ne saches pas distinguer entre une généralisation injustifiée et un fait est très inquiétant!
A qui le dis tu.
( « Un langage trop abstrait dégrade les performances. » )
Si. Si ça marche correctement, ce n'est pas dangereux.
Le fait que ça marche correctement n'a rien à faire avec le fait que c'est dangereux. Dans un mois, Bob modifiera son code et il ne trouvera pas l'erreur dans ce merdier.
Ce ne sont pas du tout des problèmes insolubles! Pour le problème d'effets de bord, il suffit d'écrire des macros protégés contre les effets de bord:
http://tigcc.ticalc.org/doc/gnuexts.html#SEC63
Il n'existe pas de problèmes insolubles de toute façon.
Il n'existe que des problèmes.
Ceci en est un.
Ce n'est pas "terriblement porc", c'est souvent très pratique, et de toute façon, toute autre définition n'aurait pas de sens, donc ce n'est pas ambigü, et il n'y a donc aucune raison pratique de ne pas l'accepter.
C'est terriblement porc, sans aucun conteste possible, et il faut être fou pour programmer comme ça.
Carrément pas. Il faut commencer à lire la fonction en entier pour pouvoir
Non, le plus souvent juste le début suffit. Ou regarder les motifs de filtrage. Le type y est transparent.
Si, parce que tu dis que "Caml est plus efficace que les mathématiques".
En bref, tu m'imposes des opinions pour pouvoir ensuite les réfuter.
lamentable.
Thèse de Church-Turing: le lambda-calcul (de Church) est strictement équivalent à la machine de Turing. En d'autres mots, les langages fonctionnels sont strictement équivalents en expressivité aux langages impératifs. Aucun contre-exemple connu. Donc ce n'est pas un "paradigme mathématique ou logique plus puissant".
Church

Mais ton erreur est dans ta vision de l' « équivalence », qui n'a en fait rien de canonique ni d'immédiat.
(Z/pZ)* est isomorphe à Z/(p-1)Z, mais l'isomorphisme est incalculable sans énumérer tous les éléments (heureusement, sinon toute la cryptographie s'effondrerait). Même si les deux groupes sont les mêmes, la vision est différente et l'un doit être privilégié sur l'autre dans certaines situations.
De même, les langages fonctionnels ont beaux être équivalents aux impératifs (c'est à dire que l'on peut faire la même chose), ils sont plus en phase avec l'algorithmie (forcément, puisqu'ils sont issus de recherches d'informatique théorique...) et sont plus puissants.
Non, c'est le souci de clarté et de non-ambigüité qui y pousse.
Le souci de clarté et de non-ambiguité est exacerbé par le fait que les priorités sont bizarres et que le langage est naturellement ambigu.
Il y a forcément des priorités qui peuvent surprendre.
Oui.
Encore que... en cherchant un peu, je n'en trouve pas du tout, mais admettons...
Toujours est il que ça n'a rien à voir avec le C.
Désolé, mais je ne te crois pas, là. Rien que par le fait qu'on vient d'un autre langage de programmation où les priorités sont différentes de manière subtile, on peut être surpris par les priorités d'un langage (même si ce dernier n'y est pour rien).
Bon, d'accord, quelqu'un qui a pris des mauvaises habitudes de C aura besoin d'un peu (pas beaucoup) de pratique pour désapprendre ce qu'il a appris. (En fait il aura surtout du mal à se mettre à la rigueur)
As-tu déjà essayé gcc -ansi -pedantic?
Est ce que « gcc -ansi -pedantic » est « le C » ?
Mais la notation utilisée dans pratiquement tout le reste des Mathématiques est plus courante, donc son emploi serait nettement plus logique.
certainement pas.
La théorie ZF est complètement stupide pour un ordinateur! Le lambda calcul est beaucoup plus logique.
ZF qui sert pour les mathématiques courantes a été inventée alors que les ordinateurs n'existaient pas, ce qui n'est pas le cas du lambda-calcul qui a été au contraire développé *pour* l'informatique.