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

 


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

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

n°1263968
++fab
victime du syndrome IH
Posté le 11-12-2005 à 14:30:38  profilanswer
 

Reprise du message précédent :

el muchacho a écrit :

Je ne crois pas que ce soit un gros desavantage. L'heritage multiple est l'un des aspects les plus critiques du C++, et franchement, les (bonnes) occasions de bien les utiliser sont assez rares.


Pas de mon point de vue. sur les 3 principaux idiomes C++, 2 ont recours à l'héritage multiple : les policy classes (Alexandresu), et ...
 

el muchacho a écrit :

D utilise des interfaces comme en Java, et en plus, utilise les mixins, qui sont des templates avec lesquels on peut faire une sorte d'heritage multiple.


... les mixins, qui ne font pas parti du core langage, mais qui sont aisément faisable à partir d'héritage multiple virtuel.
 

el muchacho a écrit :

Regarde le paragraphe sur les fonctions et les delegates. J'ai explique.


 
Oui, j'ai regardé, mais je ne vois pas de révolution par rapport à l'utilisation de boost::lambda, boost::function, ou encore d'un foncteur locale à une fonction.
 

el muchacho a écrit :


J'ai pas vu ca, et sauf si on met un type par defaut, je ne vois pas comment ce serait possible. Mais effectivement, l'instantiation est obligatoire. C'est une restriction, mais quand meme largement moins moche que l'obligation de mettre les templates en .h en C++ actuellement, obligation qui a pour effet de multiplier les temps de compilation et casse la separation interface/implementation.


 
Et bien le C++ dispose déjà de l'instanciation explicite de template, que tu peux compiler et poser dans un .o. Après, pour avoir l'instanciation implicite - comme c'est le plus élégant - il faut rendre le code template visible pour pouvoir générer du code.  
 

el muchacho a écrit :


Les templates de D sont largement mieux foutus et plus generaux que ceux de C++, qui sont un ajout "tardif" au langage. La nouvelle norme fera elle aussi des ajouts tardifs. C'est mieux que rien, mais ca ne manquera pas de laisser le gout d'un langage bidouille de facon adhoc afin de ne pas trop casser l'existant, la ou D est parti directement sur des bases saines (et modernes) du point de vue de la norme, quitte a se casser la tete pour l'implementation.


 
Ben vu qu'il n'y pas d'instanciation implicite de template, et que le C++ dispose déjà de l'instanciation explicite, je vois pas en quoi D est supérieur. Si, éventuellement la possiblité de paramétrer n'importe quelle scope ... mais bon, c'est un avantage mineur par rapport à la restriction précédente.
Pour l'avenir, les templates C++ vont acquérir une puissance assez extra-ordinaire, notament grâce à l'inférence de type et la notion de "concept" pour définir le contrat que doit respecter un paramètre générique, et permettre au compilo de donner un message d'erreur clair.
 
Dans la pratique, à quoi sert ceci : template Foo( T : A ) {} ?
Est-ce à forcer T à implémenter l'interface de A ? Si oui, c'est cette problématique que les "concepts" vont résoudre plus élégament.
Autre chose, est-ce que l'averload de fonction template fonctionne de la meme maniere qu'en C++ ?
 

el muchacho a écrit :

Une facon simple de voir cela est de jeter un oeil a la STL et a un equivalent comme MinTL (pas tout-a-fait, mais relativement proche quand meme) en D. D'un cote on a un code proprement imbitable, de l'autre, un code encore hackable par un bon programmeur. Dans la prochaine version de C++, je n'ai pas de doute sur le fait que la STL restera imbitable.


enlève les __ en préfix, et c'est tout de suite moins imbitable :)
 

el muchacho a écrit :

Un autre avantage, ce sont les tableaux, dont la syntaxe est tellement plus agreable que les vector (surtout a n dimensions), et surtout les sous-tableaux.


un avantage à avoir les tableaux dans la partie SL, c'est la possibilité de paramétrer statiquement une classe, un algorithme, ... avec au choix un des conteneurs standards std::vector, std::deque, ou std::list.
 

el muchacho a écrit :

Enfin, je ne comprends pas que l'initialisation de variables/tableaux ne devienne une feature par defaut comme en D, quitte a la supprimer par un switch du compilo si c'est vraiment necessaire ou mettre un mot-cle adequat ( = void est bien choisi) si on ne veut absolument pas initialiser une variable.


contraintes de performances, chère au C++ :|

mood
Publicité
Posté le 11-12-2005 à 14:30:38  profilanswer
 

n°1263985
Tamahome
⭐⭐⭐⭐⭐
Posté le 11-12-2005 à 15:38:22  profilanswer
 

mouais, prefere le C#

n°1264092
el muchach​o
Comfortably Numb
Posté le 11-12-2005 à 19:01:16  profilanswer
 

++fab a écrit :

Pas de mon point de vue. sur les 3 principaux idiomes C++, 2 ont recours à l'héritage multiple : les policy classes (Alexandresu), et ...
... les mixins, qui ne font pas parti du core langage, mais qui sont aisément faisable à partir d'héritage multiple virtuel.


Les policy classes et les mixins, c'est plus ou moins la même chose de mon point de vue.  

Citation :


Oui, j'ai regardé, mais je ne vois pas de révolution par rapport à l'utilisation de boost::lambda, boost::function, ou encore d'un foncteur locale à une fonction.


Je suis d'accord, mais tout le monde n'utilise pas Boost, quoi que tu en dises. En fait, peu de projets l'utilisent, pour diverses raisons.

Citation :


Et bien le C++ dispose déjà de l'instanciation explicite de template, que tu peux compiler et poser dans un .o. Après, pour avoir l'instanciation implicite - comme c'est le plus élégant - il faut rendre le code template visible pour pouvoir générer du code.  


Je ne vois pas ce que tu veux dire. Tu instancies ton template, oui, c'est normal. Mais pour rendre le code template visible, je ne vois pas comment faire autrement que de le mettre dans un .h, ce qui est très moche.

Citation :


Ben vu qu'il n'y pas d'instanciation implicite de template, et que le C++ dispose déjà de l'instanciation explicite, je vois pas en quoi D est supérieur. Si, éventuellement la possiblité de paramétrer n'importe quelle scope ... mais bon, c'est un avantage mineur par rapport à la restriction précédente.
Pour l'avenir, les templates C++ vont acquérir une puissance assez extra-ordinaire, notament grâce à l'inférence de type et la notion de "concept" pour définir le contrat que doit respecter un paramètre générique, et permettre au compilo de donner un message d'erreur clair.


Je n'ai tjrs pas compris ce que tu appelles instanciation implicite de template. Mais le contrat c'est ce que font déjà les templates de D, si je comprends bien ce que c'est.

Citation :


Dans la pratique, à quoi sert ceci : template Foo( T : A ) {} ?
Est-ce à forcer T à implémenter l'interface de A ? Si oui, c'est cette problématique que les "concepts" vont résoudre plus élégament.


Cela signifie que T doit être une classe dérivée de A.
De même template Foo( T : U[] , U*, V = char) {...} est un template qui doit prendre en params un pointeur de type U et un tableau du même type, et un autre paramètre qui est un char par défaut (donc omettable, donc implicite, si tu veux). On peut définir ainsi la signature du template (est-ce le contrat dont tu parles ?).
 
Et honnêtemnet, avec tout ce qu'ajoute la nouvelle norme, je crains qu'avant que les compilos n'implémentent correctement, il ne se passe à nouveau 10 ans alors que D fait la majorité de ces innovations dès aujourd'hui. La raison en est que C++ doit gérer la compatibilité avec l'existant, pas D.
 

Citation :


Autre chose, est-ce que l'averload de fonction template fonctionne de la meme maniere qu'en C++ ?


Honnêtement, j'ai pas regardé. Mais le scope d'un template D étant nettement plus large (on peut quasiment mettre un programme entier dans un template, et décider de le compiler avec des float ou des double, par exemple), j'imagine que ça n'est pas très différent d'un overload de fonction tout court.

Citation :


enlève les __ en préfix, et c'est tout de suite moins imbitable :)


euh...  :whistle:  

Citation :


un avantage à avoir les tableaux dans la partie SL, c'est la possibilité de paramétrer statiquement une classe, un algorithme, ... avec au choix un des conteneurs standards std::vector, std::deque, ou std::list.


Certes, c'est aussi le cas avec MinTL.

Citation :

contraintes de performances, chère au C++ :|


Je sais bien, mais c'est pas vraiment convaincant. Il y a 90% de chance que le bug abominable qui apparait au bout de 3 mois soit caché dans les 90% du code qui ne sont pas critiques au niveau perfs. Et quand il apparait, accroche-toi pour le reproduire et le débusquer.

Message cité 1 fois
Message édité par el muchacho le 11-12-2005 à 19:02:01

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1264126
++fab
victime du syndrome IH
Posté le 11-12-2005 à 20:33:35  profilanswer
 

Citation :

Les policy classes et les mixins, c'est plus ou moins la même chose de mon point de vue.


 
Oui, c'est assez ressemblant. Les mixins sont compilés, et subissent la virtualité à toutes les sauces.
 

Citation :

Je ne vois pas ce que tu veux dire. Tu instancies ton template, oui, c'est normal. Mais pour rendre le code template visible, je ne vois pas comment faire autrement que de le mettre dans un .h, ce qui est très moche.


 
exemple concret :
 
$ cat foo.cpp

Code :
  1. #include "foo.tpp"
  2. template float foo<float>( float );
  3. template double foo<double>( double );
  4. template long double foo<long double>( long double );


 
$cat foo.hpp

Code :
  1. #ifndef FOO_HPP
  2. #define FOO_HPP
  3. template <class T>
  4. T foo( T );
  5. #endif


 
$cat foo.tpp

Code :
  1. #ifndef FOODEF_TPP
  2. #define FOODEF_TPP
  3. #include "foo.hpp"
  4. template <class T>
  5. T foo( T t )
  6. {
  7.     return ++t;
  8. }
  9. #endif


 
$cat main_foo.cpp

Code :
  1. #include "foo.hpp" // ou "foo.tpp" sans instanciation explicite
  2. #include <iostream>
  3. int main()
  4. {
  5.     std::cout << foo( 3.14L );
  6. }


 
g++ main_foo.cpp foo.cpp
 
Voila comment on fait pour ne pas mettre de code dans un .h. Mais bon, on ne peut pas toujours prévoir avec quels types font etre instancié nos templates, et le C++ prévoit alors l'instanciation automatique (implicite), qui nécessite en pratique la présence de code dans les headers.
 

Citation :

Je n'ai tjrs pas compris ce que tu appelles instanciation implicite de template. Mais le contrat c'est ce que font déjà les templates de D, si je comprends bien ce que c'est.


 

Citation :

De même template Foo( T : U[] , U*, V = char) {...} est un template qui doit prendre en params un pointeur de type U et un tableau du même type, et un autre paramètre qui est un char par défaut (donc omettable, donc implicite, si tu veux). On peut définir ainsi la signature du template (est-ce le contrat dont tu parles ?).


 
non, par exemple dans la précedente fonction T foo( T t ) { return ++t; }, T a pour contrat d'etre pré-incrémentable. Actuellement, si on appelle foo() avec un paramètre T qui ne supporte pas la pré-incrémentation, on a parfois un message d'erreur imbitable. Avec la notion de concepts qui va venir, ce problème va avoir sa solution.
Je pensais que l'équivalent en D, était T :A en obligeant ainsi T à fournir les services requis par A. Ce qui est bien moins souple que les concepts.
 

Citation :

Et honnêtemnet, avec tout ce qu'ajoute la nouvelle norme, je crains qu'avant que les compilos n'implémentent correctement, il ne se passe à nouveau 10 ans alors que D fait la majorité de ces innovations dès aujourd'hui. La raison en est que C++ doit gérer la compatibilité avec l'existant, pas D.


 
oui, va falloir patienter pour le C++, disons quatre-cinq ans ...
 

Citation :

Honnêtement, j'ai pas regardé. Mais le scope d'un template D étant nettement plus large (on peut quasiment mettre un programme entier dans un template, et décider de le compiler avec des float ou des double, par exemple), j'imagine que ça n'est pas très différent d'un overload de fonction tout court.


 
Vu que c'est la plus grande force du C++ (template combiné avec overload), je m'intérrogeais


Message édité par ++fab le 11-12-2005 à 20:41:21
n°1277774
el muchach​o
Comfortably Numb
Posté le 05-01-2006 à 20:03:05  profilanswer
 

A propos de C++0x prévu pour 2009, je lis ce commentaire
 

Citation :


 
Why do they want so many years to decide on so simple things that are other languages take for granted for more than 15 years now? Let's see what they have in store:
 
   1. the using declaration for making type aliases. First of all, template typedefs are there for the exact same reason. Secondly, C++ lacks the ability of making strong types out of other ones, templates or not; a feature present in Ada 83, for example. We programmers need the ability to define strong types out of anything, primitive, template or not.
   2. sequence constructors; what an utterly hopeless idea! it will introduce more problems than anyone ever thought. The correct thing would be to make the expression {2.3, 1.2, 6.7, 4.5}, and any expression contained in curly brackets, a composite literal! Just like an integer can be written as {0, 1, 0, 1 ... 1, 0, 0, 0, 1}, i.e. a sequence of bits, so should any other data structure. Array syntax would be more than enough for accessing the individual elements of a composite literal. For example: auto x = {1, 2, 3}; auto sum = x[0] + x[1] + x[2];
   3. template concepts; correct solution, but why they say it is difficult to implement? The problem with templates was that the type system was applied after template substitution. In fact, templates were little more than C macros. Languages that implement generics correctly (Haskell, Ml, Erlang, Ada, etc) have sold these problems many moons ago. Applying a type in compile time is nothing more than executing the program at compile time. Currently C++ templates are turing complete, so I just do not see 'big problems' with concepts.
   4. type deduction using the auto keyword. C++ already does type deduction, so where is the problem? And why should we wait 4 years for compilers to adopt those things?
   5. .
 
But what makes the most negative impression is the willingness to recognize that the programming language world has made huge steps in the last few years, and C++ is light years behind. Here are some of the negative points, in random order:
 
    * No garbage collection. Come on C++ guys! how many times have we got to beg for C++ having garbage collection? it's the easiest thing to do, and you can put it there as an option! no, the Boehm gc does not cut it, because it does not take advantage of type information, so it is much slower and much more complicated than what it needs to be. C++ designers, please stop telling us how garbage collection will mess up C++, because it will not! Microsoft already has managed C++, and then there is the programming language D which offers garbage collection! Of course gc goes hand-in-hand with strong and weak pointers.
    * the bias towards systems programming . Come on guys! in the world that Java is used for handheld devices, no one really cares about C++ being used in a few embedded controllers anyway. No one has used C++ for any major operating system, and no one has used C++ for any hardcore military project. Where is C++ used as for system programming? nowhere. C++ is mainly used in application programming, because of compatibility with C without an FFI.
    * the lack of import declarations. In the year 2006, we still have to duplicate code between header and source files, we still have to take care of includes, we still have to make decisions if we should place code in header files or in implementation files in order to make code inlined or not.
    * no static virtual methods. It is dead easy to do, and sometimes it is badly needed. For example, the pattern factory heavily depends on it.
    * no properties. For example, GUI libraries have 100s of widgets, yet we still have to write getFoo(), setFoo(), isFoo() etc. By using properties, code would be greatly simplified, and there would be no run-time overhead since properties is about syntactic sugar.
    * no variable argument lists in templates. Since the C++ language does not offer a way to write templates for a user-defined number of arguments, most frameworks have their own solution, one incompatible with each other, and very hard to maintain, using a rich palette of macro tricks, resulting in very slow compilation. Qt has signals and slots and requires the MOC compiler; GTK uses C signals and slots; and then we have stdsig++, boost signals, and lots of other frameworks. The D language has solved this with delegates.
    * No retrospection. If I wanted to make a GUI designer, for example, I would have to manually provide all the class and method information, or use macros and my own compiler (as Qt does)...but all I would be doing is duplicating the work that the compiler already does. Why can't I just query a class about its run-time structure, the methods it has, etc? there is no run-time overhead, and the provision of such information could be optional.
    * no standard GUI library. It requires lots of work, but basic GUI functionality should be there. Nothing spectacular, just the basic stuff (windows, menus, buttons, toolbars, etc) so we can easily write the most basic GUI applications. Stroustrup has said that "the C++ commitee will never agree on architecture". Well, they should put aside their egos and petit own interests and decide.
    * no way to get the size of an array allocated with operator new [] . Although the C++ standard dictates that the number of elements of an array is stored in the heap block (in order to use operator delete [], i.e. to know how many objects does the array contain), programmers are not allowed access to this information, for no particular reason. Besides being plain stupid, it requires wrapping up array functionality in templates (the std library does not contain such a template), and the number of elements exists in two places in memory.
    * No continuations. There is quite a big list of recursive algorithms that depend on not blowing the stack, and using continuations is the only way to achieve them. Yet, C++ denies such a facility, for no apparent reason.
    * No closures. It is quite frustrating to having to write a function far away from the place it is actually going to be used. It also stops GUI libraries from being simple. For example, I can not just define a button that closes a locally declared window. I have to declare the call that closes the window as a separate function, which means the window should be referenced globally.
    * No parameters-by-name function calls. Modern C++ components may have lots of parameters to be set in a constructor. For example, for a component that has 10 parameters, one has to declare 11 constructors. Using parameters-by-name, the programmer would not have to declare all those constructors. For example, a button with an optional bitmap would be constructed in one line of code, like this: new Button(parent = mainWindow, text = "hello world", bitmap = bitmap1, click = {mainWindow.close()});. Boost is going to have a library like that, but it is actually a non-thread-safe hack using macros.
    * No initialization of an object's fields at the point of their declaration. If a class has 10 fields, the same code that initializes those fields must either be repeated in every constructor, or the user should declare an initialize function that sets the fields to their default values. If, later, someone adds or removes some fields, then all the points of initialization should be changed.
    * No run-time substitution of a vtable's method pointers. C++ claims to be a "system's programming language", but the feature requested by most system programmers is the ability to modify the vtable of a class at run-time. This is a very important feature, because it allows to make objects that their behaviour depends on run-time parameters. For example, choosing the appropriate driver for a game. C++ denies this solution, forcing programmers to declare all the possible combinations at compile-time. This make it impossible, for example, to write an OpenGL driver in C++, where choices depend on lots of run-time parameters (user choices, video card capabilities, game engine capabilities, etc), forcing programmers to write vtables themselves in C fashion. There would be no run-time overhead for C++, since vtables exist, but yet C++ does not allow it.
    * No true message passing. The true benefits of object-orientation comes from message passing (see discussions about OO, Smalltalk and Simula). C++ does not have true message passing, like Java: it forces the programmer to declare an interface. The lack of true message passing forces library writers to write message maps manually (Microsoft's MFC, Borland's OWL, WxWidgets), all incompatible between themselves, and with various problems. Optional message passing would be of tremendous benefit, especially in GUI frameworks, where the host operating system might send thousands of different messages to an application (I am talking about Windows mainly here). Message passing would also be of tremendous benefit in rapid application development, where the programmer would not have to declare thousands of interfaces, as in modern C++/Java libraries.
 
As one can see, C++ has a lot of ground not covered yet. Many will say "don't use C++ then". Well, that argument is not acceptable, because C++ is the only widely accepted and portable language with the correct set of basic features. C++ is the only language, for example, that allows me to have stack based objects, thus saving resources and simplyfing programming. C++ is the only widely accepted language that allows direct usage of C libraries.
 
C++ could have been the dominant language, if it was not for the stubborness of the C++ committee to accept that programming languages are developed based on what the world needs, and not on what a few good men know.


 
C'est amusant comme la plupart des idées proposées correspondent à des fonctionnalités existantes de D.

Message cité 1 fois
Message édité par el muchacho le 05-01-2006 à 23:07:38

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1278036
blackgodde​ss
vive le troll !
Posté le 06-01-2006 à 10:39:08  profilanswer
 

el muchacho a écrit :

Je suis d'accord, mais tout le monde n'utilise pas Boost, quoi que tu en dises. En fait, peu de projets l'utilisent, pour diverses raisons.


 
Parce que beaucoup de projets utilisent D ?


---------------
-( BlackGoddess )-
n°1278342
++fab
victime du syndrome IH
Posté le 06-01-2006 à 18:38:47  profilanswer
 

el muchacho a écrit :

A propos de C++0x prévu pour 2009, je lis ce commentaire


 
au moins il attend quelquechose du C++ ! Mais dans le thread, quelqu'un lui a expliqué comment fonctionnait le WG21, et les contraintes qu'ils avait avec le code existant à ne pas casser ...
 

el muchacho a écrit :

C'est amusant comme la plupart des idées proposées correspondent à des fonctionnalités existantes de D.


 
Je suis en train de me demander si je ne vais pas expérimenter D pour essayer les futures nouveautés du C++, je me tate ...

n°1278589
el muchach​o
Comfortably Numb
Posté le 07-01-2006 à 10:34:39  profilanswer
 

blackgoddess a écrit :

Parce que beaucoup de projets utilisent D ?


Non mais dire que C++ fait ceci et cela parce qu'il suffit d'utiliser Boost, c'est un peu spécieux. Si on peut utiliser Boost, alors oui. Mais avec les messages d'erreur et la lenteur de compilation qui vont avec.

Citation :

Je suis en train de me demander si je ne vais pas expérimenter D pour essayer les futures nouveautés du C++, je me tate ...


Fais gaffe, t'es sur la mauvaise pente. ;)

Message cité 1 fois
Message édité par el muchacho le 07-01-2006 à 10:35:04

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1278717
++fab
victime du syndrome IH
Posté le 07-01-2006 à 14:52:41  profilanswer
 

el muchacho a écrit :

Non mais dire que C++ fait ceci et cela parce qu'il suffit d'utiliser Boost, c'est un peu spécieux. Si on peut utiliser Boost, alors oui. Mais avec les messages d'erreur et la lenteur de compilation qui vont avec.


Quand on/je dit utiliser Boost, ça sous entend (ou peut vouloir dire) utiliser l'expressivité du core C++ à des fins de design de bibliothèques, moyenant un certain savoir-faire. Boost peut etre vue comme une aide dans ce sens la.
 

el muchacho a écrit :

Fais gaffe, t'es sur la mauvaise pente. ;)


L'absence d'ebuild pour gdc sous gentoo me sert de frein moteur ...

Message cité 1 fois
Message édité par ++fab le 07-01-2006 à 14:53:32
n°1278719
el muchach​o
Comfortably Numb
Posté le 07-01-2006 à 14:56:03  profilanswer
 
mood
Publicité
Posté le 07-01-2006 à 14:56:03  profilanswer
 

n°1278739
push
/dev/random
Posté le 07-01-2006 à 15:35:42  profilanswer
 

++fab a écrit :

L'absence d'ebuild pour gdc sous gentoo me sert de frein moteur ...


http://bugs.gentoo.org/show_bug.cgi?id=48136
http://bugs.gentoo.org/show_bug.cgi?id=46806
 
dev-lang/gdc-0.17-r1    text/plain   2006-01-07 05:24 PST
 
 [:the_max]


Message édité par push le 07-01-2006 à 15:51:11
n°1278789
++fab
victime du syndrome IH
Posté le 07-01-2006 à 17:51:25  profilanswer
 

rien trouvé sur packages.gentoo.org, ni pour gdc, ni pour dmd. Et j'ai rien dans mon portage, je suis à jour d'hier.

n°1278823
push
/dev/random
Posté le 07-01-2006 à 19:18:12  profilanswer
 

bein vi, malheureusement c'est toujours pas présent dans les packages officiels, mais y sont présent sur le bugzilla, tu rajoutes l'ebuild manuellement si tu y tiens vraiment. http://bugs.gentoo.org/attachment.cgi?id=76443 pour gdc dev-lang/gdc-0.17-r1
http://bugs.gentoo.org/attachment.cgi?id=56499 pour dev-lang/dmd/dmd-0.121.ebuild
 
Bizarre qu'il n'ait pas mis l'extension .ebuild pour le fichier gdc

n°1278991
el muchach​o
Comfortably Numb
Posté le 08-01-2006 à 11:16:24  profilanswer
 

Moi, je n'ai que la version compilee windoze de dmd, mais la Linux doit fonctionner a peu pres a l'identique, je pense. dmd n'est pas libre, le source n'est pas livre, mais c'est le compilo de reference du langage, plus a jour que gdc.
Il faut dl le package dmd ET dmc car les compilateurs C et D de Digital Mars partagent le meme back-end. Avec ca, tu peux dl la MinTL (un equivalent de la STL).


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1279065
++fab
victime du syndrome IH
Posté le 08-01-2006 à 13:32:23  profilanswer
 

dmd-0.121, ça a l'air d'etre une blague :o
tu utilises quelle version ?

n°1279161
oliviermdv​y
Posté le 08-01-2006 à 17:00:13  profilanswer
 

Le problème est que tant qu'il n'y aura pas de compilateur grand public ou pour les pro avec environnement de dev ce langage aura bien du mal à se developper.

n°1279168
el muchach​o
Comfortably Numb
Posté le 08-01-2006 à 17:21:23  profilanswer
 

++fab a écrit :

dmd-0.121, ça a l'air d'etre une blague :o
tu utilises quelle version ?


La dernière.
 
OlivierMDVY > un compilo grand public, il y en a un, mais sinon, ce que tu dis est vrai.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1279181
++fab
victime du syndrome IH
Posté le 08-01-2006 à 18:11:42  profilanswer
 

ça a l'air d'etre la 0.142 la derniere. auto marche mieux on dirait.
 
Question de novice :
Y a t'il des controles d'accès pour les classes ?
 

Code :
  1. class Foo
  2. {
  3. private:
  4.     int i;
  5. };


 
et j'ai allegrement accès à i !
Les spécificateurs d'acces ont l'air d'etre ignoré ??? (aussi bien avec dmd qu'avec gdc)

n°1279194
push
/dev/random
Posté le 08-01-2006 à 18:44:27  profilanswer
 

oliviermdvy a écrit :

Le problème est que tant qu'il n'y aura pas de compilateur grand public ou pour les pro avec environnement de dev ce langage aura bien du mal à se developper.


Certains y travaillent http://www.dsource.org/projects/eclipseD/

n°1279252
el muchach​o
Comfortably Numb
Posté le 08-01-2006 à 21:02:21  profilanswer
 

++fab a écrit :

ça a l'air d'etre la 0.142 la derniere. auto marche mieux on dirait.
 
Question de novice :
Y a t'il des controles d'accès pour les classes ?
 

Code :
  1. class Foo
  2. {
  3. private:
  4.     int i;
  5. };


 
et j'ai allegrement accès à i !
Les spécificateurs d'acces ont l'air d'etre ignoré ??? (aussi bien avec dmd qu'avec gdc)


Etonnant, j'ai pas essayé. Tu peux faire voir ton code ?


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1279278
++fab
victime du syndrome IH
Posté le 08-01-2006 à 21:37:27  profilanswer
 

tout connement ça :
 

Code :
  1. private import std.stdio;
  2. class Foo
  3. {
  4. private:
  5.     int x;
  6. };
  7. int main()
  8. {
  9.     auto foo = new Foo;
  10.     foo.x = 4;
  11.     writefln( foo.x );
  12.     return 0;
  13. }

n°1279304
el muchach​o
Comfortably Numb
Posté le 08-01-2006 à 22:43:09  profilanswer
 

La réponse se trouve ici :
"Not a bug. You can access private stuff within the same module. It's D's solution to friendship."
Donc private n'est effectif qu'en dehors d'un module (grosso modo un fichier source .d). Il faut donc écrire une classe par module, à la Java, ou si on veut coupler 2 classes, il faut les écrire dans le même module (si ce n'est pas mieux de les imbriquer), ou alors leur donner l'attribut package, qui étend la visibilité à un package.
 
Il y a eu un débat sur ce choix dans la mailing-list  
http://www.digitalmars.com/d/archi [...] 23420.html

Message cité 1 fois
Message édité par el muchacho le 08-01-2006 à 23:06:35

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1279309
chrisbk
-
Posté le 08-01-2006 à 22:49:03  profilanswer
 

[:le kneu]

n°1279310
chrisbk
-
Posté le 08-01-2006 à 22:49:19  profilanswer
 

c'est aussi moche que le protected de java [:le kneu]

n°1279312
el muchach​o
Comfortably Numb
Posté le 08-01-2006 à 22:55:20  profilanswer
 

Ben de toute façon, il n'y a pas de solution très jolie, tous ces choix, comme le friend de C++, servent à casser l'encapsulation.Quelques fois, c'est nécessaire, ou du moins pratique.[:spamafote]
Après, le degré de finesse auquel on étend ce "friend" est clairement affaire de goût : d'un coté,a vec des "friend" explicites, on obtient une grande finesse dans les droits d'accès, de l'autre, avec la règle retenue, on considère que l'auteur du module sait ce qu'il fait et on lui donne plus de liberté.
Pour préciser :
"package, private, protected and public are all the same as in Java, with  
the important difference that everything is visible to the module,  
regardless of the specifier.. there's also "export" that allows access  
to other executables, like in DLLs (if I got the doc right :)"
http://www.digitalmars.com/drn-bin [...] rs.D/23474
 
Le débat du lien précédent est intéressant.

Message cité 1 fois
Message édité par el muchacho le 08-01-2006 à 23:07:05

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1279325
++fab
victime du syndrome IH
Posté le 08-01-2006 à 23:06:41  profilanswer
 

el muchacho a écrit :

La réponse se trouve ici :
"Not a bug. You can access private stuff within the same module. It's D's solution to friendship."
Donc private n'est effectif qu'en dehors d'un module (grosso modo un fichier source .d). Il faut donc écrire une classe par module, à la Java, ou si on veut coupler 2 classes, il faut les écrire dans le même module (si ce n'est pas mieux de les imbriquer), ou alors leur donner l'attribut package, qui étend la visibilité à un package.
 
Il y a eu un débat sur ce choix dans la mailing-list  
http://www.digitalmars.com/drn-bin [...] rs.D/23420


 
OK merci.

n°1279329
++fab
victime du syndrome IH
Posté le 08-01-2006 à 23:12:29  profilanswer
 

el muchacho a écrit :

Ben de toute façon, il n'y a pas de solution très jolie, tous ces choix, comme le friend de C++, servent à casser l'encapsulation.Quelques fois, c'est nécessaire, ou du moins pratique.[:spamafote]


Stroustrup: "I have never been able to see the recurring assertions that friend declaration "violates encapsulation" as anything but a combination of ignorance and confusion with non-C++ terminology"

Citation :

Après, le degré de finesse auquel on étend ce "friend" est clairement affaire de goût : d'un coté,a vec des "friend" explicites, on obtient une grande finesse dans les droits d'accès, de l'autre, avec la règle retenue, on considère que l'auteur du module sait ce qu'il fait et on lui donne plus de liberté.


Ce qui ne casse pas l'encapsulation, au contraire.

n°1279332
el muchach​o
Comfortably Numb
Posté le 08-01-2006 à 23:19:28  profilanswer
 

++fab a écrit :

Stroustrup: "I have never been able to see the recurring assertions that friend declaration "violates encapsulation" as anything but a combination of ignorance and confusion with non-C++ terminology"


Ah ben si Stroustrup le dit. :sleep:


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1279334
push
/dev/random
Posté le 08-01-2006 à 23:26:27  profilanswer
 

el muchacho> un viol c'est quand l'autre y veut pas non ?  [:fande--]

n°1279336
++fab
victime du syndrome IH
Posté le 08-01-2006 à 23:31:38  profilanswer
 

rape me ... my friend

n°1281107
chrisbk
-
Posté le 11-01-2006 à 09:17:31  profilanswer
 

el muchacho a écrit :

Ah ben si Stroustrup le dit. :sleep:


 
ouais enfin des private pas private, je trouve ca moche. Friend on est pas obligé de l'utiliser, alors que ca machin la, si
 
et c'est nul [:nul]

n°1312510
BenO
Profil: Chercheur
Posté le 23-02-2006 à 18:01:45  profilanswer
 

BumP :D vive le D :o
 
j'en ferrais si il y avait un IDE potable :/

n°1312609
karlkox
Posté le 23-02-2006 à 20:17:48  profilanswer
 

Il y a un frontend pour gcc, partant de la, n'importe quelle ide supportant gcc peut être utilisé.

n°1312684
BenO
Profil: Chercheur
Posté le 23-02-2006 à 22:00:09  profilanswer
 

à voir le degré d'intégration :p genre pour avoir de l'autocomplétion ^^
du debug :O etcc ...

n°1312691
el muchach​o
Comfortably Numb
Posté le 23-02-2006 à 22:06:44  profilanswer
 

Compte tenu de sa simplicité syntaxique, D devrait en principe pouvoir bénéficier d'IDE et d'outils d'une puissance similaire à celle des nombeux outils pour Java. Mais pour cela, il faudrait que le langage soit adopté et supporté commercialement.


Message édité par el muchacho le 23-02-2006 à 22:46:40
n°1312700
el muchach​o
Comfortably Numb
Posté le 23-02-2006 à 22:25:29  profilanswer
 

Pour repousser les limites des templates de D, un gars de la mailing-list s'est fixé comme but de réaliser un moteur de regex templatisé. Faire cela avec les templates C++ est du domaine de la science-fiction.
 
Un tel moteur de regexp permettrait de compiler des regexp en natif, ce qui permet d'imaginer une rapidité supérieure aux moteurs de regexp actuels, et des applis comme du log réseau en temps réel avec des perfs comparables à celles d'un parser écrit à la main...

n°1312702
chrisbk
-
Posté le 23-02-2006 à 22:32:16  profilanswer
 

[:el g] ok, rien de nouveau sous le soleil, un langage a VM ayant des chance de finir compilé "en natif", suffit de faire un parseur de regexp qui genere du bytecode / IL quoi [:moule_bite] et on me souffle que ...

n°1312708
el muchach​o
Comfortably Numb
Posté le 23-02-2006 à 22:39:44  profilanswer
 

Premier jet ici : http://www.digitalmars.com/drn-bin [...] rs.D/34126
 
chrisbk, tu sors. :o

n°1312710
BenO
Profil: Chercheur
Posté le 23-02-2006 à 22:45:52  profilanswer
 

c'est un boss Don Clugston   :love:  
j'ai bien aimé son "fastest delegates en c++"
http://www.codeproject.com/cpp/FastDelegate.asp ^^

n°1312717
chrisbk
-
Posté le 23-02-2006 à 23:12:43  profilanswer
 

BenO a écrit :

c'est un boss Don Clugston   :love:  
j'ai bien aimé son "fastest delegates en c++"
http://www.codeproject.com/cpp/FastDelegate.asp ^^


 
Peuh [:thalis]
 
http://forum.hardware.fr/hardwaref [...] 0082-1.htm
 
moi aussi chui un boss alors [:el g]

n°1312723
BenO
Profil: Chercheur
Posté le 23-02-2006 à 23:22:26  profilanswer
 

lui ca marche partouze xD et ya plus de code nah :O

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-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)