Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1787 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7  8  9  10
Auteur Sujet :

[Langage D]C++ + Java + Python = D

n°2139611
gilou
Modérateur
Modzilla
Posté le 28-04-2012 à 11:25:19  profilanswer
 

Reprise du message précédent :

Je pense que c'est à ceci que cela se réfère:

Citation :

Thanks! I will add a page with graphical explanation on the website when  
I have some time. But in short all fibers are currently living in the  
same thread. Each fiber is registered with one or multiple events inside  
of the event driver (libevent based currently). As soon as an event  
arrives, the corresponding fiber is resumed. The fiber will then simply  
do conceptually this for every blocking operation:
 
blockingOperation(){
 requestOperation();
 while( !operationFinished() ) yield();
}


sur le modèle, comme le postait quelqu'un sur reddit

Citation :

looks a lot like Go's http serving code

(bon, il y a surement aussi pas mal de diffs)
A+,


Message édité par gilou le 28-04-2012 à 11:39:08

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le 28-04-2012 à 11:25:19  profilanswer
 

n°2139617
deadalnix
Posté le 28-04-2012 à 12:32:52  profilanswer
 

el muchacho a écrit :

En tout cas, si ce serveur Web est aussi performant qu'il le dit, cela confirme que D est un langage idéal pour les applis serveur. On a déjà l'interface web des newsgroups qui est une belle démonstration de rapidité (surtout que le serveur est partagé). Avant les jeux, je pense que c'est dans ce créneau que D peut s'imposer le plus facilement. Là où Java règne, D peut faire la même chose, en plus rapide, et avec une utilisation plus modérée de la mémoire.


 
Ça vient surtout des fibres (les fibres, c'est bon, mangez-en).

n°2139986
el muchach​o
Comfortably Numb
Posté le 01-05-2012 à 20:44:59  profilanswer
 

deadalnix a écrit :

 

Ça vient surtout des fibres (les fibres, c'est bon, mangez-en).

 

OK, ce sont des greenlets/coroutines, en fait.

 

La conf du gars qui a écrit ça m'a fait comprendre qu'en fait, je connaissais vraiment rien aux coroutines malgré un peu d'utilisation en Python.
Leur utilisation pour remplacer une machine d'état, j'avais jamais imaginé. [:bien][:bien][:bien]


Message édité par el muchacho le 02-05-2012 à 11:41:17

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2140727
gilou
Modérateur
Modzilla
Posté le 04-05-2012 à 13:42:21  profilanswer
 

Je n'ai pas vu derelict figurer dans ce topic, pourtant, c'est un module de fort utile.
http://www.dsource.org/projects/derelict

Citation :

Welcome to Derelict
Derelict is a collection of D bindings to C shared (dynamic) libraries which are useful for multimedia applications, with a heavy bias toward game development-related libraries.
 
Features
 
Derelict supports some useful features for project development, including:
 
Cross-Platform Consistency - No matter which platform you release on, Derelict loads shared libraries manually at runtime and throws an exception when the library, or any symbol in the library, fails to load. This gives you complete control over how to handle the case of a missing shared library. You can fall back to a different code path, give your users a helpful error message, or take any action you want. Regardless, you have consistent behavior across multiple platforms.
Selective Symbol Loading - This feature allows you to override exceptions thrown by Derelict when a shared library symbol fails to load. It is a goal of the project that each Derelict package be updated from time-to-time to load the latest version of each library. Often, new library versions include new functions. If a user has an older version of the library installed, one that is missing the new function symbols, Derelict will notice and throw an exception. By making use of Selective Symbol Loading, you can override this behavior and allow the older library version to load successfully.
 
Derelict2
 
Work on a revamped Derelict is well under way. Some benefits of this new version:
 
support for D1, D2, Phobos, and Tango
streamlined package hierarchy
a configurable make-based build system intended to replace the dependency on build tools
easier addition of Derelict modules to the import path
a much improved OpenGL extension management interface in DerelictGL
a redesigned loading mechanism, making it easier to implement and maintain packages
If you are interested in helping get Derelict2 ready for prime time, I would love your help! We need testers on Windows and Linux, as well as someone to get it ported to Mac. Progress is slow, but steady. More hands involved can help speed it up.


Tombé dessus en cherchant des bindings D pour SDL.
 
A+,


Message édité par gilou le 04-05-2012 à 13:42:42

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2140962
deadalnix
Posté le 06-05-2012 à 12:31:41  profilanswer
 

Damned, faire plier Walter, c'est vraiment difficile !
 
http://d.puremagic.com/issues/show_bug.cgi?id=6857

n°2140970
gilou
Modérateur
Modzilla
Posté le 06-05-2012 à 15:27:24  profilanswer
 

Dans ce cas la, il suffirait peut être d'étendre le langage des contrats avec un "static in" (probleme solved, it just needs to be implemented :whistle: ) pour choisir le type de vérification a la compilation/dynamique...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2140972
el muchach​o
Comfortably Numb
Posté le 06-05-2012 à 15:33:05  profilanswer
 

deadalnix a écrit :

Damned, faire plier Walter, c'est vraiment difficile !
 
http://d.puremagic.com/issues/show_bug.cgi?id=6857


T'as intérêt à avoir des arguments bien rodés, ouais. :D


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2140974
gilou
Modérateur
Modzilla
Posté le 06-05-2012 à 15:41:36  profilanswer
 

Surtout que Walter ne fait qu'appliquer les règles de B Meyer clairement définies pp 47-48 du document que deadalnix a trouvé, http://se.ethz.ch/~meyer/publicati [...] ntract.pdf :D
(Mais en fait en relisant a deux fois, deadalnix a peut être raison, en fait le cas dont il parle n'est pas explicitement mentionné)
EDIT: je viens de finir de lire le débat. deadalnix  wins!  [:never let me down]  
A+,


Message édité par gilou le 06-05-2012 à 15:49:51

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2140977
gilou
Modérateur
Modzilla
Posté le 06-05-2012 à 16:05:12  profilanswer
 

En y repensant, il y a un truc pas net:
 

Citation :

It is stated (quoting myself) that :
« fizzbuzzB(B b) {
    b.foo(); // (A.foo OR B.foo)'s in contract is valid
} »

Pourquoi (A.foo OR B.foo) et pas simplement B.foo, puisqu'on travaille avec des objets B.
Est-ce que ça a un sens d’appeler fizzbuzzB(b) sans erreur sur un B b qui ne vérifie pas B.foo, mais seulement A.foo?
Bon, je peux comprendre qu'on agisse ainsi au cas ou on n'a pas de contraintes de contrat supplémentaires dans B et qu'on veut "hériter" de celles de A, mais ne devrait-on pas plutôt avoir (A.foo AND B.foo)'s in contract is valid. Ou bien quelque chose du style "Si B a des contraintes explicites elles doivent être vérifiées, sinon celles de A doivent être vérifiées".
 
A+,


Message édité par gilou le 06-05-2012 à 16:23:09

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2141019
deadalnix
Posté le 06-05-2012 à 19:59:00  profilanswer
 

Lorsque tu surcharges une méthode, elle doit être covariante avec la méthode surchargée.
 
C'est à dire que tout appel vers des fonctions qui est valide sur une object de type A doit aussi l'être sur un object de type B, mais B peut étendre les appel possibles par rapport à A.
 
En d'autres termes, tout appel valide sur un object de type A doit être valide sur un object de type B. Ceci implique qu'une précondition ne peut qu'étendre ce qu'accepte une méthode, et pas restreindre.
 
Or, sans mettre un ou entre les précondition, le contract sur B peut réduire ce que B.foo accepte comme entrée valide. Ceci serait une violation des principes de base de la programmation orientée objet.
 
D'un point de vue plus pratique, B.foo doit quoi qu'il arrive supporter les entrée qui valident le contrat de A, donc il n'y a pas lieu d'empêcher cela dans le cas ou le type est connu.

mood
Publicité
Posté le 06-05-2012 à 19:59:00  profilanswer
 

n°2141034
gilou
Modérateur
Modzilla
Posté le 06-05-2012 à 20:21:46  profilanswer
 

Citation :

B.foo doit quoi qu'il arrive supporter les entrée qui valident le contrat de A

Si le contrat est validé avant de faire l'appel, je vois pourquoi en effet.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2141035
deadalnix
Posté le 06-05-2012 à 20:23:35  profilanswer
 

Les préconditions sont vérifiées avant l'appel. Les postconditions après. Au contraire, les postconditions doivent toutes êtres respectées. Et de façon polymorphiques car ce contrat exprime des contrainte pour la fonction appelée, et non la fonction appelante.


Message édité par deadalnix le 06-05-2012 à 20:24:53
n°2141579
el muchach​o
Comfortably Numb
Posté le 09-05-2012 à 16:07:14  profilanswer
 

C'est dingue le boulot qu'il abat, Kenji Hara. Le nombre de bugs qu'il corrige. [:bien][:bien][:bien]


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2141664
deadalnix
Posté le 09-05-2012 à 21:01:03  profilanswer
 

Haha, j'ai une seconde entrée dans http://erdani.com/tdpl/errata/ (j'en ai soumis bien plus, mais d'autres sont passé avant moi :D).
 
Et yep, Kenji Hara est un bon gars :D Walter aussi hein, faut pas déconner.
 
Par contre, coté druntime j'ai deux pull request qui datent de Matusalem qui moisissent et Alex Rønne Peterson en a 6 ! Ça a plus de mal à mouliner de ce coté.
 
Sinon, un article sur les Voldemort types : http://www.drdobbs.com/blogs/cpp/232901591
 
Même si avec l'UFCS le dernier exemple serait plus élégant sous la forme :
 

Code :
  1. writeln(generator(5).take(10));


Message édité par deadalnix le 09-05-2012 à 21:02:02
n°2141675
el muchach​o
Comfortably Numb
Posté le 09-05-2012 à 22:40:48  profilanswer
 

Nan mais Walter, il est hors catégorie. :o

 

Lien sans avoir à s'inscrire: http://www.drdobbs.com/article/pri [...] onName=cpp

 

Et

Code :
  1. int count;
  2.     foreach (n; generator(5)) {
  3.         writeln(n);
  4.         if (++count == 10)
  5.         break;
  6.     }


peut aussi être simplifié en:

Code :
  1. foreach (count, n; generator(5)) {
  2.         writeln(n);
  3.         if (count == 10)
  4.         break;
  5.     }


J'ai pas capté grand chose aux Voldemort types, je dois dire. [:petrus75]
Ca m'a l'air sympa et tout, mais c'est pas très clair dans ma tête. Sur reddit, y'en a qui disent que ça n'a rien de nouveau et qu'on peut faire la même chose depuis longtemps en C++ :??:

 

En tout cas, plus ça va, plus on se rapproche de la simplicité de la syntaxe de Python.


Message édité par el muchacho le 09-05-2012 à 23:08:41

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2141871
deadalnix
Posté le 10-05-2012 à 21:22:56  profilanswer
 

J'essaye de faire du lobbying pour que tous les statements deviennent des expressions (éventuellement de type void) et que les comma expression soient deprecated pour être recyclées en tuples. Si les tuples ignorent les expressions de type void et s'auto unpack, ça ne casserait même pas beaucoup de codes.
 
Ça ouvre des portes comme :
 
int, int foo();
 
(int a, int b) = foo();
 
Et ça simplifierait grandement aussi les AST macros (en chantier depuis l'an 40).

n°2141876
deadalnix
Posté le 10-05-2012 à 22:06:18  profilanswer
 

http://javascriptweblog.wordpress. [...] -fat-city/
 
Javascript veut copier notre syntaxe pour les closures :D
 
On ferait bien de copier la leur pour les named expressions, mais ça nécessite encore les modifs citées plus haut, sans quoi l'AST va devenir infernal.

n°2141879
gilou
Modérateur
Modzilla
Posté le 10-05-2012 à 23:15:35  profilanswer
 

deadalnix a écrit :

J'essaye de faire du lobbying pour que tous les statements deviennent des expressions (éventuellement de type void) et que les comma expression soient deprecated pour être recyclées en tuples. Si les tuples ignorent les expressions de type void et s'auto unpack, ça ne casserait même pas beaucoup de codes.
 
Ça ouvre des portes comme :
 
int, int foo();
 
(int a, int b) = foo();

 
Et ça simplifierait grandement aussi les AST macros (en chantier depuis l'an 40).

La on est exactement sur la même longueur d'onde.
Perso, ça me gênerais pas d'avoir plutôt (int, int) foo(); mais bon, pourquoi pas int, int foo();
l'essentiel étant qu'on autorise (a, b) = foo(); mais pas (comme en go, ce qui me parait un nid a problèmes) a, b = foo();
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2141881
el muchach​o
Comfortably Numb
Posté le 10-05-2012 à 23:22:08  profilanswer
 

gilou a écrit :

La on est exactement sur la même longueur d'onde.
Perso, ça me gênerais pas d'avoir plutôt (int, int) foo(); mais bon, pourquoi pas int, int foo();
l'essentiel étant qu'on autorise (a, b) = foo(); mais pas (comme en go, ce qui me parait un nid a problèmes) a, b = foo();

 

A+,


Pourquoi est-ce un nid à problèmes, à partir du moment ou l'opérateur comma est deprecated ?

 

En fait, le tuple pourrait être implémenté comme une struct passée sur la pile, non ?

 

Du coup, je verrais bien quelque chose comme:

 
Code :
  1. struct Bar {
  2.    int result;
  3.    string err;
  4. }
  5. Bar bar;
  6. Bar foo() {
  7.    return {42, "baz"};
  8. }
  9. bar  = foo();
 

avec les syntaxes suivantes autorisées:
 

Code :
  1. {int, string} foo() {
  2.    return {42, "baz"};
  3. }
  4. //
  5. {result, error} = foo();
  6. // automatic unpacking
  7. result, error = foo();
 


Avec les tuples, j'ai l'impression que D aurait toutes les constructions pour pouvoir porter du code Python idiomatique facilement. Ca donne une bonne indication de la puissance du langage.
edit: ah oui l'introspection est très limitée, par contre, mais en dehors de ça, c'est impressionnant.

Message cité 2 fois
Message édité par el muchacho le 10-05-2012 à 23:59:25

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2141882
deadalnix
Posté le 10-05-2012 à 23:53:48  profilanswer
 

el muchacho a écrit :


Pourquoi est-ce un nid à problèmes, à partir du moment ou l'opérateur comma est deprecated ?


 
C'est pas clair parce que ça dépend de la précédence des opérateurs. En fonction ça peut être ou bien une assignation de tuple, ou bien un erreur de type :
 
int a, int b = foo(); => (int a, int b) = foo(); ou bien int a, (int b = foo());
 
Le second est valide aussi grammaticalement, mais b n'a pas le bon type. Si on et auto pour éviter ladite erreur, ça donne :
 
int a, (auto b = foo()); qui évalue à un tuple de 3 entiers. Maintenant sans les parenthèses, int a, auto b = foo(); On a un tuple de 2 ou trois entiers la ?
 
En fait, la sémantique du tout dépend de la précédence entre « , » et « = », et c'est facilement ambigu pour l'humain (pas pour le parser).

n°2141883
deadalnix
Posté le 10-05-2012 à 23:54:51  profilanswer
 

el muchacho a écrit :

edit: ah oui l'introspection est très limitée, par contre, mais en dehors de ça, c'est impressionnant.


 
Si ça peut te consoler, je travaille sur les AST macro depuis un moment déjà.

n°2141884
el muchach​o
Comfortably Numb
Posté le 10-05-2012 à 23:57:09  profilanswer
 

Merci.
Tiens, j'ai édité mon post.
Que penses-tu de ma proposition ?
En gros, le tuple est une struct, et on autorise quelques syntaxes supplémentaires.

Message cité 1 fois
Message édité par el muchacho le 11-05-2012 à 00:18:42

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2141885
deadalnix
Posté le 11-05-2012 à 00:01:47  profilanswer
 

el muchacho a écrit :

Tiens, j'ai édité mon post.
Que penses-tu de ma proposition ?
En gros, le tuple est une struct, et on autorise quelques syntaxes supplémentaires.


 
Transformer les statement en expression et recycler la virgule est plsu clean. Ta proposition en peut pas se faire sans transformer les statement en expression, par contre ne nécessite pas de reprendre la virgule.
 
À mon avis c'est moins bien car ça introduit une nouvelle syntaxe, et que par ailleurs, la virgule est déjà utilisée pour exprimer des tuples (les paramètres des fonction qu'on appelle, qu'est ce que c'est hein ?? D'ailleurs, les comma expression en marchent pas dans ce cas).
 
EDIT: par contre, yep, c'est un truc du genre que le compilo va générer à la fin.


Message édité par deadalnix le 11-05-2012 à 00:04:54
n°2141886
el muchach​o
Comfortably Numb
Posté le 11-05-2012 à 00:07:56  profilanswer
 

J'ai pas compris la transformation statement --> expression. :??: (je ne suis pas un spécialiste des langages)

 
Citation :


À mon avis c'est moins bien car ça introduit une nouvelle syntaxe, et que par ailleurs, la virgule est déjà utilisée pour exprimer des tuples (les paramètres des fonction qu'on appelle, qu'est ce que c'est hein ?? D'ailleurs, les comma expression en marchent pas dans ce cas).


C'est pas faux, mais si on part la-dessus, on se ferme la porte d'une évolution possible (en 2020) vers les paramètres nommés.
edit: en fait, si on considère que le tuple des paramètres de la fonction est une structure, on est pas loin des paramètres nommés

 


Ma proposition a plusieurs avantages à mes yeux:
 - on n'introduit pas un nouveau type d'objet "tuple", une struct fait l'affaire, conceptuellement, on est en terrain connu,
 - la syntaxe me parait claire,
 - il n'y a même plus besoin de déprécier l'opérateur comma, mais tu as raison, le déprécier permet d'éviter les ambiguités que tu as données.

Message cité 1 fois
Message édité par el muchacho le 11-05-2012 à 09:10:23

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2141890
gilou
Modérateur
Modzilla
Posté le 11-05-2012 à 02:44:35  profilanswer
 

deadalnix a écrit :

C'est pas clair parce que ça dépend de la précédence des opérateurs. En fonction ça peut être ou bien une assignation de tuple, ou bien un erreur de type :


Voila. Ne pas mettre les parenthèses, c'est le genre de choses qui est plus source de problème par suite d'une faute de frappe pas évidente à la relecture, qu'elle n'apporte de bénéfices en nb de signes tapés.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2141980
deadalnix
Posté le 11-05-2012 à 13:54:50  profilanswer
 

el muchacho a écrit :

- on n'introduit pas un nouveau type d'objet "tuple", une struct fait l'affaire, conceptuellement, on est en terrain connu, [/quote]
 
Le tuple existe déjà en D. Sa syntaxe est horrible, mais ce n'est pas une notion nouvelle.
 
[quotemsg=2141886,263,101896]
 - la syntaxe me parait claire,
 - il n'y a même plus besoin de déprécier l'opérateur comma, mais tu as raison, le déprécier permet d'éviter les ambiguités que tu as données.


 
Déprécier l'opérateur comma est de tout façon nécessaire. C'est une source d'erreur importante.

n°2142321
Malkav
Posté le 14-05-2012 à 14:47:24  profilanswer
 

Juste pour signaler un post au sujet de D (& Go) sur Dr Dobbs:
 
http://www.drdobbs.com/cpp/232901652


---------------
Mes feedbacks * Ma galerie photo
n°2143519
deadalnix
Posté le 24-05-2012 à 10:41:21  profilanswer
 
n°2144050
deadalnix
Posté le 30-05-2012 à 12:10:10  profilanswer
 

http://klickverbot.at/blog/2012/05/purity-in-d/
 
Un très bon article pour expliquer la notion de pureté en D, qui est un peu différente de celle que l'on trouve dans d'autres langages.

n°2145213
deadalnix
Posté le 09-06-2012 à 16:41:53  profilanswer
 

Alors, tout le monde à fuis le topic ?
 
En tout cas, linux-fr parle de D : http://linuxfr.org/news/le-langage-d--2

n°2145273
BenO
Profil: Chercheur
Posté le 10-06-2012 à 20:43:14  profilanswer
 

Il commence à faire chaud :o on passe à la bière.


---------------
Python Python Python
n°2145394
el muchach​o
Comfortably Numb
Posté le 11-06-2012 à 23:13:49  profilanswer
 

deadalnix a écrit :

Alors, tout le monde à fuis le topic ?

 

En tout cas, linux-fr parle de D : http://linuxfr.org/news/le-langage-d--2


Pas terrible, le tutoriel. On ne peut pas dire qu'il donne envie de découvrir le langage.


Message édité par el muchacho le 11-06-2012 à 23:16:47

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2145410
deadalnix
Posté le 12-06-2012 à 09:06:24  profilanswer
 

Qu'est ce que tu aurais fait différemment ?

n°2145584
el muchach​o
Comfortably Numb
Posté le 12-06-2012 à 20:39:24  profilanswer
 

Ben vu l'espace limité, j'aurais présenté les features les plus intéressantes du langage, plutôt que les boucles, dont tout le monde se fout, via quelques exemples commentés.


Message édité par el muchacho le 12-06-2012 à 20:39:58

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2145592
deadalnix
Posté le 12-06-2012 à 20:55:34  profilanswer
 

Je ne sais pas trop quel est le public de linuxfr. Si c'est des débutants, ils risquent de ne pas comprendre.
 
Sinon c'est une bonne approche.

n°2145602
el muchach​o
Comfortably Numb
Posté le 12-06-2012 à 22:52:16  profilanswer
 

size_t partout, on se demande pourquoi, @safe pure nothrow introduit dès le début (pourquoi ?) et non expliqué, puis un exemple avec des types paramétrés qui sort d'on ne sait où et qui ne marche qu'avec des nombres, et ensuite il fait un paragraphe sur if... then... else [:pingouino] ... en fait cette news est une catastrophe.
Même l'exemple de foreach est foireux, et ne montre pas l'intérêt de l'inférence de type par rapport à la syntaxe Java par ex.


Message édité par el muchacho le 12-06-2012 à 22:59:15

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2145633
Joel F
Real men use unique_ptr
Posté le 13-06-2012 à 09:28:11  profilanswer
 

linuxfr aussi faut pas s'attendre à du pulitzer

n°2149417
el muchach​o
Comfortably Numb
Posté le 15-07-2012 à 21:17:43  profilanswer
 

deadalnix, j'ai pas trop saisi, c'est quoi la débâcle avec const ?


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2149532
deadalnix
Posté le 16-07-2012 à 17:33:37  profilanswer
 

Bon, c'est un peu compliqué.
 
D const est différent de const en C ou C++. Il est transitif, ce qui impose que tout ce qui est atteint à travers quelque chose de const est const. Cela est fait pour répondre à diverses problématique liée au multithreading et à la programmation fonctionnelle, je ne vais pas revenir la dessus, le pourquoi n'est pas important ici, si ce n'est de savoir que c'est justifié.
 
La classe Object défini des fonction comme opEquals (qui sert à tester si deux object sont égaux). La grande question est de savoir si cette fonction doit être const ou non.
 
Si cette méthode n'est pas const, alors on ne peut tester l'égalité d'objects const ou immutables, ce qui est somme toute un problème.
 
Mais si on la définit const, alors d'autres soucis se présente (par exemple, il devient impossible de mettre les résultat en cache car const est transitif).
 
Ces méthodes sont nécessaires pour certaines fonctions de base du langage, par exemple les tableau associatifs.
 
Au final, ces méthodes vont être virées d'object (quel sens peut de toute façon avoir if(new FtpConnection(xxx) > new mployee("bob" )) ? ) et le problème va être résolu grâce à la sainte puissance des templates.
 
En pratique, cela casse très peu de code et a donc été jugé acceptable.
 
Cela a créé un autre sujet, qui est à mon sens important, c'est le fait qu'il faille un système de release plus complexe que l'actuel, pour permettre de supporter l'ancienne façon de faire pendant un temps.

n°2149577
el muchach​o
Comfortably Numb
Posté le 16-07-2012 à 22:17:09  profilanswer
 

OK, merci, j'ai lu tout ça. La solution retenue, c'est effectivement de virer les 4 méthodes opEquals, hashCode, opCmp et je ne sais plus quoi d'autre (toString() ?) de Object.
Ceci dit, si opCmp n'a pas de sens dans le cas général (elle devrait avoir un sens dans le cas d'objets implémentant l'interface Comparable), opEquals et hashCode ont tjrs un sens sur Object. C'est pourquoi l'idée d'une superclasse RawObject ne me parait a priori pas stupide.
Une partie des classes dériverait de RawObject tandis qu'une autre dériverait d'Object (qui lui-même dérive de RawObject).


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2149580
gilou
Modérateur
Modzilla
Posté le 16-07-2012 à 22:49:21  profilanswer
 

Smalltalk, welcome back! :D
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8  9  10

Aller à :
Ajouter une réponse
 

Sujets relatifs
Upload en JAVA[Java] Architecture pipes-filters
[java] Tracer un rectangle en temps réel[Java] Aide sur projet avec interface graphique ( Pas des fenêtres)
[JAVA] Empecher la saisie dans une jtableimpossible d'éxécuter un programme en java !!!
programmation jeux java sur samsung Z300Envoyer des fichiers sur un FTP depuis un programme Java...
[java] Agrandir le contenu d'une tab en même temps que la tab[Java] Les hint
Plus de sujets relatifs à : [Langage D]C++ + Java + Python = D


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR