OVH Cloud OVH Cloud

Pre-Lillehammer mailing

43 réponses
Avatar
Gabriel Dos Reis
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/#mailing2005-03

-- Gaby

10 réponses

1 2 3 4 5
Avatar
James Kanze
Gabriel Dos Reis wrote:
writes:


| À vrai
| dire, je crois que je supprimerais aussi les fonctions inline et
| les templates autre que exportés.


et tu offrirais un éditeur binaire et un clavier à deux touches à la
place ?


Je comprends pas. Je propose à imposer un niveau d'abstraction
plus élevé que le C++ actuel, où l'implémentation doit toujours
se trouver dans un fichier à part, et non dans l'en-tête, et tu
me parles de l'assembleur. (J'ai aussi dit que les compilateurs
n'étaient pas assez mûrs, parce qu'il y a bien des fois où
l'inline est nécessaire, pour des raisons de performance, parce
que les compilateurs courants ne savent pas le faire
automatiquement quand il le faut.)

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34

Avatar
Richard Delorme
Gabriel Dos Reis wrote:
writes:

| À vrai
| dire, je crois que je supprimerais aussi les fonctions inline et
| les templates autre que exportés.

et tu offrirais un éditeur binaire et un clavier à deux touches à la
place ?


Je comprends pas. Je propose à imposer un niveau d'abstraction
plus élevé que le C++ actuel, où l'implémentation doit toujours
se trouver dans un fichier à part, et non dans l'en-tête, et tu
me parles de l'assembleur. (J'ai aussi dit que les compilateurs
n'étaient pas assez mûrs, parce qu'il y a bien des fois où
l'inline est nécessaire, pour des raisons de performance, parce
que les compilateurs courants ne savent pas le faire
automatiquement quand il le faut.)


Une fois que l'en-tête ne contient plus de code, on peut aussi le
supprimer, non ? Avec quelques autres modifications, on obtient Java...

--
Richard


Avatar
Marc Boyer
Richard Delorme wrote:
Gabriel Dos Reis wrote:
writes:

| À vrai
| dire, je crois que je supprimerais aussi les fonctions inline et
| les templates autre que exportés.

et tu offrirais un éditeur binaire et un clavier à deux touches à la
place ?


Je comprends pas. Je propose à imposer un niveau d'abstraction
plus élevé que le C++ actuel, où l'implémentation doit toujours
se trouver dans un fichier à part, et non dans l'en-tête, et tu
me parles de l'assembleur. (J'ai aussi dit que les compilateurs
n'étaient pas assez mûrs, parce qu'il y a bien des fois où
l'inline est nécessaire, pour des raisons de performance, parce
que les compilateurs courants ne savent pas le faire
automatiquement quand il le faut.)


Une fois que l'en-tête ne contient plus de code, on peut aussi le
supprimer, non ? Avec quelques autres modifications, on obtient Java...


Sauf qu'il sert
1) d'interface au module (permet la compilation du code l'utilisant)
2) de documentation d'utilisation

Java a supprimé 1) en forçant la compilation d'une unité
avant de pouvoir l'utiliser ailleurs et 2) en imposant JavaDoc.

Est-ce que ce sont des bons choix ? Ca se discute...

Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.



Avatar
Gabriel Dos Reis
James Kanze writes:

| Gabriel Dos Reis wrote:
| > writes:
|
| > | À vrai
| > | dire, je crois que je supprimerais aussi les fonctions inline et
| > | les templates autre que exportés.
|
| > et tu offrirais un éditeur binaire et un clavier à deux touches à la
| > place ?
|
| Je comprends pas. Je propose à imposer un niveau d'abstraction
| plus élevé que le C++ actuel, où l'implémentation doit toujours
| se trouver dans un fichier à part, et non dans l'en-tête, et tu
| me parles de l'assembleur. (J'ai aussi dit que les compilateurs
| n'étaient pas assez mûrs, parce qu'il y a bien des fois où
| l'inline est nécessaire, pour des raisons de performance, parce
| que les compilateurs courants ne savent pas le faire
| automatiquement quand il le faut.)

Je reformule la question de manière directe : en quoi ces suppressions
imposent un niveau d'abstraction plus élévée ?

-- Gaby
Avatar
Gabriel Dos Reis
Richard Delorme writes:

| > Gabriel Dos Reis wrote:
| > > writes:
| > > | À vrai
| > > | dire, je crois que je supprimerais aussi les fonctions inline et
| > > | les templates autre que exportés.
| > > et tu offrirais un éditeur binaire et un clavier à deux touches à
| > la
| > > place ?
| > Je comprends pas. Je propose à imposer un niveau d'abstraction
| > plus élevé que le C++ actuel, où l'implémentation doit toujours
| > se trouver dans un fichier à part, et non dans l'en-tête, et tu
| > me parles de l'assembleur. (J'ai aussi dit que les compilateurs
| > n'étaient pas assez mûrs, parce qu'il y a bien des fois où
| > l'inline est nécessaire, pour des raisons de performance, parce
| > que les compilateurs courants ne savent pas le faire
| > automatiquement quand il le faut.)
|
| Une fois que l'en-tête ne contient plus de code, on peut aussi le
| supprimer, non ? Avec quelques autres modifications, on obtient Java...

En fait, j'aimerais comprendre pourquoi il pense qu'un template est
forcément exporté.

--
Gabriel Dos Reis

Texas A&M University -- Department of Computer Science
301, Bright Building -- College Station, TX 77843-3112
Avatar
Gabriel Dos Reis
Marc Boyer writes:

| Richard Delorme wrote:
| >> Gabriel Dos Reis wrote:
| >> > writes:
| >>
| >> > | À vrai
| >> > | dire, je crois que je supprimerais aussi les fonctions inline et
| >> > | les templates autre que exportés.
| >>
| >> > et tu offrirais un éditeur binaire et un clavier à deux touches à la
| >> > place ?
| >>
| >> Je comprends pas. Je propose à imposer un niveau d'abstraction
| >> plus élevé que le C++ actuel, où l'implémentation doit toujours
| >> se trouver dans un fichier à part, et non dans l'en-tête, et tu
| >> me parles de l'assembleur. (J'ai aussi dit que les compilateurs
| >> n'étaient pas assez mûrs, parce qu'il y a bien des fois où
| >> l'inline est nécessaire, pour des raisons de performance, parce
| >> que les compilateurs courants ne savent pas le faire
| >> automatiquement quand il le faut.)
| >
| > Une fois que l'en-tête ne contient plus de code, on peut aussi le
| > supprimer, non ? Avec quelques autres modifications, on obtient Java...
|
| Sauf qu'il sert
| 1) d'interface au module (permet la compilation du code l'utilisant)
| 2) de documentation d'utilisation
|
| Java a supprimé 1) en forçant la compilation d'une unité
| avant de pouvoir l'utiliser ailleurs et 2) en imposant JavaDoc.

oui mais personne ne m'a expliqué ces suppressions imposent un niveau
d'abstraction plus élevé.

|
| Est-ce que ce sont des bons choix ? Ca se discute...

Comme chez Jean-Luc ?

-- Gaby
Avatar
James Kanze
Richard Delorme wrote:

Gabriel Dos Reis wrote:
writes:




|
| À vrai dire, je crois que je supprimerais aussi les
| fonctions inline et les templates autre que exportés.




et tu offrirais un éditeur binaire et un clavier à deux
touches à la place ?




Je comprends pas. Je propose à imposer un niveau
d'abstraction plus élevé que le C++ actuel, où
l'implémentation doit toujours se trouver dans un fichier à
part, et non dans l'en-tête, et tu me parles de l'assembleur.
(J'ai aussi dit que les compilateurs n'étaient pas assez
mûrs, parce qu'il y a bien des fois où l'inline est
nécessaire, pour des raisons de performance, parce que les
compilateurs courants ne savent pas le faire automatiquement
quand il le faut.)



Une fois que l'en-tête ne contient plus de code, on peut aussi
le supprimer, non ? Avec quelques autres modifications, on
obtient Java...


Par code, j'entendais du code exécutable. Des détails de
l'implémentation, quoi. Je le considère essentiel que la
définition de la classe, ou au moins la partie « publique » dont
se sert le code client, soi dans un fichier séparé du fichier
(ou des fichiers) qui contient les détails de l'implémentation.

Je me suis exprimé plus d'une fois sur cet aspect de Java, que
je considère comme un défaut assez grave, au moins si on compte
implémenter de grands projets (avec plusieurs dizaines de
développeurs).

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34



Avatar
James Kanze
Gabriel Dos Reis wrote:
Marc Boyer writes:


| > Une fois que l'en-tête ne contient plus de code, on peut
| > aussi le supprimer, non ? Avec quelques autres
| > modifications, on obtient Java...
| Sauf qu'il sert
| 1) d'interface au module (permet la compilation du code l'utilisant)
| 2) de documentation d'utilisation


| Java a supprimé 1) en forçant la compilation d'une unité
| avant de pouvoir l'utiliser ailleurs et 2) en imposant JavaDoc.


oui mais personne ne m'a expliqué ces suppressions imposent un
niveau d'abstraction plus élevé.


Peut-être parce que c'est l'inverse qui est vrai. Garder
l'interface publique dans un fichier complétement séparé des
détails de l'implémentation favorise un niveau d'abstraction
plus élevé.

Et pour revenir au point du départ, ce que j'aurais voulu
supprimer du C++, c'était des fonctions inline et
l'implémentation des templates dans les fichiers en-têtes. Je ne
sais pas comment on y est arrivé au Java -- Java va complétement
à l'autre extrème, avec aucune séparation quoique ce soit de
l'implémentation et de la spécification/interface/contrat
(choisis le mot qui te convient).

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34

Avatar
James Kanze
Gabriel Dos Reis wrote:
James Kanze writes:


| Gabriel Dos Reis wrote:
| > writes:


| > | À vrai dire, je crois que je supprimerais aussi les
| > | fonctions inline et les templates autre que exportés.


| > et tu offrirais un éditeur binaire et un clavier à deux
| > touches à la place ?


| Je comprends pas. Je propose à imposer un niveau
| d'abstraction plus élevé que le C++ actuel, où
| l'implémentation doit toujours se trouver dans un fichier à
| part, et non dans l'en-tête, et tu me parles de
| l'assembleur. (J'ai aussi dit que les compilateurs n'étaient
| pas assez mûrs, parce qu'il y a bien des fois où l'inline
| est nécessaire, pour des raisons de performance, parce que
| les compilateurs courants ne savent pas le faire
| automatiquement quand il le faut.)


Je reformule la question de manière directe : en quoi ces
suppressions imposent un niveau d'abstraction plus élévée ?


Elles réduisent le couplage entre ce que voit le code client et
l'implémentation.

D'un certain point de vu, évidemment, on n'a pas besoin des
suppressions, parce qu'on n'est pas obligé à se servir de ces
fonctionnalités pour commencer. (Seulement, évidemment, dans le
cas des templates non-exportés, il faut bien se servir d'un
compilateur qui supporte export, ce qui n'est pas le cas de tout
le monde.) Mais si on ne doit pas s'en servir, pourquoi est-ce
qu'il faut les supporter.

Mais comme d'habitude, tu as choisi aussi de prendre une phrase
hors contexte. J'avais bien dit par la suite que dans la
pratique, on ne pouvait pas se passer de ces fonctionalités
aujourd'hui, à cause des faiblesses des compilateurs actuels.

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34

Avatar
Gabriel Dos Reis
James Kanze writes:

| Gabriel Dos Reis wrote:
| > Marc Boyer writes:
|
| > | > Une fois que l'en-tête ne contient plus de code, on peut
| > | > aussi le supprimer, non ? Avec quelques autres
| > | > modifications, on obtient Java...
| > | Sauf qu'il sert
| > | 1) d'interface au module (permet la compilation du code l'utilisant)
| > | 2) de documentation d'utilisation
|
| > | Java a supprimé 1) en forçant la compilation d'une unité
| > | avant de pouvoir l'utiliser ailleurs et 2) en imposant JavaDoc.
|
| > oui mais personne ne m'a expliqué ces suppressions imposent un
| > niveau d'abstraction plus élevé.
|
| Peut-être parce que c'est l'inverse qui est vrai. Garder

Ce n'est pas parce que personne n'a expliqué quelque chose qu'il est
vrai ou sa négation est vrai -- je comprends bien que la manipulation
quotiediene des bits pourrait pousser à un raisonnement binaire, mais
il faudrait raison garder.

| l'interface publique dans un fichier complétement séparé des
| détails de l'implémentation favorise un niveau d'abstraction
| plus élevé.

tant qu'il n'y a pas de notion linguistisque d'interface publique, je
ne vois pas comment supprimer « inline » et « templates non exportés
» élève le niveau d'abstraction.

| Et pour revenir au point du départ, ce que j'aurais voulu
| supprimer du C++, c'était des fonctions inline et
| l'implémentation des templates dans les fichiers en-têtes. Je ne

et comme le langage ne fait pas de distinction entre « fichiers
d'en-êtes » et le reste peux-tu expliquer comment la suppersion de ces
choses élève le niveau d'abstraction ?

-- Gaby
1 2 3 4 5