Remote-Anything
Le coin technique

Home

English Deutsch Français

Accueil | Commander | Produits | FAQ | Ce que disent les Clients | Presse | Tarifs | La société | Support technique

De temps en temps TWD Industries reçoit des questions techniques. Des programmeurs nous demandent comment nous avons pu créer un produit qui a plus de fonctions que pcAnywhere (80 Mo) alors que RA fait seulement 80 Ko!

Voici comment nous avons fait:

 

RA a été créé par des ingénieurs qui ont travaillé pour les cinq premiers éditeurs de logiciels. Les choix faits pour l'architecture et la réalisation de RA ont été dictés par l'efficacité, pas par un manque d'expérience ou à cause d'alliances 'stratégiques' (cette sorte d'alliance qui fait que la dernière version de votre traitement de texte est si lente que vous êtes obligé d'acheter un nouveau PC tout les deux ans).

Nous avons simplement essayé de rendre RA (et le DS) aussi bon que possible, en partant de zéro.

       RA utilise des librairies seulement si le code source est disponible et portable.

       RA n'utilise pas les pilotes de bas-niveau ou les services de Windows.

       RA est écrit en C++ portable. Cela nous permet de travailler sur des versions Mac et Unix.
        La portabilité a des effets de bord intéressants qui rendent le code de RA:

             plus petit
             plus rapide
             plus fiable
             plus facile à maintenir et à améliorer

       L'optimisation est un art qui se perd mais nous avons essayé de faire RA petit et rapide.
        Nous avons appliqué les méthodes de bon-sens suivantes:

             le faire marcher (versions alpha)
             le faire marcher bien (versions beta et finales)
             le faire marcher rapidement (mises à jour gratuites)

       Nous avons considéré les utilisateurs de RA comme la source de feedback idéale.

Malgré nos efforts les plus soutenus, RA a des bugs. Lorsqu'un bug est trouvé, nous postons une version corrigée aussi vite que possible, la plupart du temps en quelques jours, parfois en quelques heures.

Mais d'autres fois, RA ne fonctionnait pas bien sur l'une des douzaines de versions 32-Bit de Windows:
(ajoutez les 'services packs', les versions d'Internet Explorer et des applications MS qui modifient le système comme Office ou IIS et vous finirez avec plus de 400 plate formes différentes. Ô joie...)

2007  - Windows Vista (8 versions planifiée sous ce nom)
2003  - Windows 2003 Server
2002  - Windows XP Media Center
2002  - Windows XP Tablet
2001  - Windows XP                             (new GUI)
2000  - Windows Millennium - 4.90.3000
2000  - Windows 2000
1999  - Windows 98SE - 4.10.2222 A
1998  - Windows 98 - 4.10.1998
1997  - Windows NT Server
1996  - Windows NT4                           (new GUI)
1996  - Windows 95 OSR2.5 IE4 - 4.00.950C
1996  - Windows 95 OSR2.1 USB - 4.00.950B + USB
1996  - Windows 95 OSR2 FAT32 - 4.00.950B
1996  - Windows CE                             (hand-held PCs)
1996  - Windows 95 SP1 - 4.00.950a
1995  - Windows 95 - 4.00.950            (new GUI)
1995  - Windows NT3.5.1
1994  - Windows NT3.5
1993  - Windows NT3.1                        (NT introduced)
1993  - Windows for Workgroups 3.11   (free 3.1 upgrade)
1993  - Windows 3.11                           (free 3.1 upgrade)
1992  - Windows for Workgroups 3.1     (network support)
1992  - Windows 3.1    (bug fix)
1990  - Windows 3.0    (more stable version)

1987  - Windows/386   (multi-application)
1987  - Windows 2.0    (overlaping windows)
1985  - Windows 1.0    (development began in 1981)
1981  - Licensed MS-DOS to IBM (and PC-clone vendors)
1980  - Got QDOS (DR CP/M cloned in 6 weeks) for $50,000
1975  - Microsoft founded

De 1995 à 2003 Microsoft
a vendu 8 versions de Windows.
Cela fait une version par an.

La plupart du temps, le problème venait des versions différentes et incompatibles des DLL de Windows. Les DLL de Windows DLL sont un sujet très frustrant. De plus, les utilisateurs ne le comprennent pas. Pour eux, comme Windows n'est pas planté, c'est votre programme qui a un bug, pas Windows.

Ils ne peuvent simplement pas imaginer la vérité: "Windows" n'est pas une plate-forme mais plutôt une poignée de systèmes d'exploitation écrits par des équipes différentes qui parfois ont essayé de maintenir la compatibilité. Cela n'est pas visible pour l'utilisateur, mais, pour un programmeur, même la façon d'écrire un programme change suivant la version de Windows que vous comptez utiliser. L'API Windows offre des fonctions qui, quand elles sont disponibles sur toutes les versions de Windows (un cas assez rare), ne fonctionnent pas de la même manière sur les différentes versions de Windows.

Elles peuvent fonctionner, ne pas fonctionner, donner des résultats différents ou simplement planter votre application ou le système. Parfois, elles obligent le programmeur à leur fournir des valeurs différentes afin de les faire fonctionner normalement. Elles peuvent également empêcher votre application d'être lancée, même si vous ne faites pas usage de la fonction en question (vous devez détecter au départ quelle version de Windows est utilisée, et vérifier si toutes les fonctions que vous voulez utiliser sont disponibles). 

Certains appels ne fonctionnent plus après un Service Pack, un patch ou l'installation d'un autre logiciel, ou leur comportement peut changer. Cela rend très difficile de créer des programmes "fiables" parce que ce qui fonctionne aujourd'hui peut ne plus marcher demain -sur la même machine et avec la même version de Windows!

RA et le DS évitent d'ajouter au problème en utilisant un fichier exécutable unique par programme. Pas de DLL, ni de hooks système ou de pilotes bas-niveau, donc pas de conflits.

De plus, l'API Windows n'est pas correctement documenté. Cette documentation contient des erreurs et des informations manquantes. Certaines fonctions sont documentées mais pas implémentées dans le compilateur C++ de Microsoft -ou l'inverse. Quand vous écrivez un programme pour Windows, vous devez faire avec les bugs:

       que vous pouvez créer (ils sont faciles à trouver et à corriger)
       du compilateur (difficiles à trouver et faciles à contourner, en ré-écrivant des fonctions)
       de la documentation de Microsoft (vous finissez avec votre propre version du MSDN)
       de toutes les différentes versions de Windows (difficile à isoler, à identifier et à résoudre)

La plupart des bugs de Windows sont difficiles à isoler parce qu'ils ne sont actifs que sur une ou deux des 16 versions 32-Bit de Windows. Un programmeur ne peut pas tester chaque nouvelle ligne de code sur 16 PC. Les programmeurs ne vivent pas assez longtemps pour cela. Un ingénieur de qualité peut faire ce travail mais personne n'est en mesure de vérifier toutes les fonctions d'un programme sur 400 PC comme il serait nécessaire de la faire pour être raisonnablement sûr que le programme est 'stable' sur une plate-forme aussi diverse que Windows.

Pas convaincu? Voyez par vous-même. Voici un extrait du code source de Microsoft Office Visual Basic:
(authentique)

//  Function:   RunCommandEx
//  Synopsis:   runs the given command in the current session, more robust
// than RunCommand
//  Arguments:  none
//  Returns:    S_OK if success
//  History:    October 3, 2000 - created [name withheld to protect the guilty]
HRESULT RunCommandEx(LPCWSTR szCmdLine) {
     DWORD dwTry = 0;
     HRESULT hResult = S_OK;

     // try run command 3 times at most
     while (dwTry<4) {
          hResult = RunCommand(szCmdLine);
          if (hResult!=E_FAIL) {
               // we succeeded
               break;
          }
          dwTry++;
     }
     if (dwTry==4) {
          ATLTRACE(L"COuld start the command even we tried 4 times\n");
          ASSERT(FALSE);
     }
     return hResult;
}

Robuste? Sûr? Propre? Utile? Hmm... pas vraiment.

Qu'en pensent les développeurs chez Microsoft? Un mémo interne destiné à Bill Gates le 21 février 1997 nous le dit sans détours :

"L'API Windows est si large, si profonde, et si fonctionelle que la plupart des éditeurs de logiciels seraient fous de ne pas l'utiliser. Et elle est si profondément intégrée dans le code source d'un grand nombre d'applications Windows que les faire migrer sur un système d'exploitation different génèrerait d'énormes coûts. C'est le coût de cette migration qui a donné aux clents la patience de rester avec Windows malgré toutes nos erreus, nos pilotes bugués, notre TCO (coût de possession total) élevé, notre manque d'une vision séduisante parfois, et un grand nombre d'autres difficultés. Les clients évaluent constamment d'autres plate-formes d'ordinateurs de bureau, mais cela représenterait tellement de travail de changer qu'ils espèrent juste que nous améliorerons Windows plutôt que de les forcer à migrer. En bref, sans la franchise exclusive appelée Windows API, nous serions morts depuis longtemps." 

- Aaron Contorer, chef du développement en C++ chez Microsoft

Pourquoi Windows est-elle si frustrante -même pour les employés de Microsoft? Microsoft n'a jamais essayé de commercialiser de la technologie, ce qu'ils ont fait c'est appliquer à toute l'informatique une taxe très élevée. Aujourd'hui,
Microsoft est si riche que même les gouvernements sont  incapables de faire appliquer les décisions de justice contre elle.

Le bon-sens suggère d'écrire du code pour une seule version de Windows. Mais avec une nouvelle version majeure (incompatible) de Windows tout les ans votre programme n'aurait aucune chance d'être un succès commercial. Comme l'a dit John Walker, fondateur et CEO d'Autodesk: "If you want to enter the Gates, you have to pay the Bill". Encore et encore, chaque année.

S'il vous plait aidez-nous. Lorsque vous avez un problème avec RA, lisez le manuel et les FAQ, et ne pensez pas que nous détestons Microsoft si nous disons qu'il s'agit d'un bug de Windows. C'est seulement un fait technique, pas une astuce que nous utilisons quand RA ne fonctionne pas comme prévu. Tout le monde doit admettre que Microsoft a été un contributeur majeur de l'industrie du logiciel -que vous aimiez la façon dont ils l'ont fait ou pas.

A TWD Industries, nous essayons juste de faire de ce monde un monde meilleur -pour tout le monde.

Accueil | Commander | Produits | FAQ | Ce que disent les clients

*

Presse | Tarifs | La société | Nous Contacter


Copyright © 1998-2007 TWD Industries SAS
Tous droits réservés