François' biography

BONJOUR, logithèque collective

Mon implication dans ce projet est particulièrement soulignée ici. Mais le fait demeure que BONJOUR est une œuvre collective et que ce projet a eu plusieurs autres contributeurs.

Mon projet BONJOUR, officialisé en 1975 sur les Cybers de l'Université de Montréal, offrait un assez vaste éventail de logiciels complémentaires à ceux du constructeur. Il visait non seulement à fournir les outils, mais aussi à faire école au niveau de programmation, par la démonstration et le bon exemple qu'offraient les sources, toujours complètement disponibles.

1   Nature et but de la logithèque

J'ai appris, par la méthode dure, qu'il est difficile de développer un bon style de programmation ab nihilo, sans avoir d'exemple ou de modèle à suivre. Si la méthodologie et le style d'un programmeur sont un art personnel, l'examen et la comparaison de diverses approches et de divers styles facilitent grandement la croissance personnelle de tout un chacun.

Devant la pénurie évidente de modèles à suivre, pour les étudiants d'informatique en plein développement, j'ai jugé bon de mettre sur pied une logithèque pour combler cette lacune. Sans viser à une perfection innateignable, la logithèque a quand même pour objectif de rendre disponible les sources, documentations et binaires de programmes jugés « utiles » et « utilisables », fournis par un ensemble d'usagers dits contributeurs, en respectant quelques principes unificateurs pour la logithèque.

C'est ainsi qu'en 1975-09, après plusieurs mois de démarches, est né le projet BONJOUR. Parrainné par le département de Psychologie de l'Université de Montréal, ce projet est défini ainsi: « Développement et mise-au-point d'une collection d'utilitaires interactifs. Mise en bibliothèque, entretien et documentation de ces utilitaires. Les usages interactifs seront orientés vers le langage Pascal. »

Dans ce projet BONJOUR, j'ai eu les rôles suivants:

  • J'ai mis le projet sur pied, autant dans le sens administratif que dans le sens informatique. J'en suis le responsable et le promoteur.
  • En tant que titulaire du titre de « Concierge de BONJOUR », je suis chargé de m'assurer du caractère acceptable des programmes qui me sont soumis par les contributeurs, d'en installer les sources et la documentation, d'entretenir et sauvegarder les bibliothèques associées, de faciliter les communications et les contacts entre les contributeurs.
  • Je suis l'un des contributeurs les plus actifs de cette logithèque.

2   Taux d'utilisation et de popularité

La logithèque BONJOUR s'avère très utilisée, autant par les étudiants que par les chercheurs de l'Université de Montréal. Une extrapolation faite à partir de certaines statistiques nous laisse croire que, depuis sa création, cette logithèque a été appelée près d'un demi-million de fois.

J'ai été invité plus d'une fois, par le département d'Informatique et de Recherche Opérationnelle, à donner de courts exposés sur ce projet, à l'intérieur de cours réguliers du département. Les logiciels de ce projet ont servi d'outils et d'appuis à plusieurs travaux pratiques des étudiants et chercheurs de l'Université. Certains cours portant sur les systèmes d'exploitation ont accordé une part importante à la nature et à la structure de cette logithèque.

L'influence de la logithèque BONJOUR sur les habitudes de programmation et de structuration des logithèques, à l'Université de Montréal, est tout à fait notable. Il m'est quelquefois arrivé d'apercevoir des cas de mimétisme indubitable. Plusieurs programmes développés par des groupes de système ou de recherche tout-à-fait indépendants de BONJOUR possèdent des noms ou des séquences d'appel analogues ou fortement apparentées aux habitudes en vigueur dans la logithèque BONJOUR.

3   Quelques contributions personnelles

Je suis l'auteur des programmes et progiciels mentionnés dans les sections qui suivent. Ils ne couvrent pas nécessairement tous les domaines des applications offerts par la logithèque BONJOUR, mais uniquement ceux dont je me suis plus personnellement occupés.

  • Interfaces entre l'utilisateur et la logithèque

    L'utilisateur dispose d'un appel spécial BONJOUR, installé dans le système d'exploitation de l'ordinateur, qui établit l'environnement de la logithèque, salue l'utilisateur (par son prénom!) et appelle un « éditeur » standard. Un certain nombre de programmes et de procédures (ATTSYS, RETSYS) facilitent l'accès aux divers fichiers de la logithèque.

    La documentation est accessible via quelques programmes spécialisés (SECOURS, DEPUIS). Tous les programmes et procédures sont documentés dans un français correct, avec un jeu de caractères admettant majuscules, minuscules et accents (ce qui est peu banal sur le système CYBER-173).

    Chacun des programmes admettant des options peut prendre des valeurs par défaut différentes d'un usager à l'autre, les programmes peuvent communiquer entre eux et d'une session travail à l'autre par un mécanisme de variables globales à tous les programmes (OPT, BVAR, BVARPC, BONJVAR).

  • Système de messagerie

    Le système de boîte postale ou de messagerie, (MD), que j'ai conçu et perfectionné, en collaboration, de 1976 jusqu'en 1979, s'est avéré très populaire parmi les usagers du Centre de Calcul. Il permettait à tout usager d'émettre et de recevoir du courrier de façon asynchrone, ce courrier étant emmagasiné sur disque dans l'intérim.

    L'expérience acquise avec ce système aura permis à l'équipe-système du Centre de Calcul une meilleure analyse et spécification de son propre système de messagerie (M, MU), en 1979.

  • Conciergerie et statistiques

    Plusieurs programmes ont été écrits pour répondre à des besoins précis de l'entretien de la logithèque, tels l'installation des nouveaux programmes ou des nouveaux progiciels (CONCIER, CBINST, BAPTISE, PASCLAS, CBCAPS, COMPIL), la sauvegarde et l'archivage de la logithèque (CONCIER, ARC, ARCLIST, LAZB, LAZBDIR, LAZI, SAUVE, REPLACE).

    Les statistiques d'utilisation de la logithèque sont disponibles grâce à la collaboration de l'équipe d'exploitation du Centre de Calcul, qui m'extrait automatiquement de la comptabilité du système tout ce qui concerne ma logithèque BONJOUR. Avec un ensemble approprié de programmes (CONCIER, CBSTAT, NPSTAT, SB, SBPREP, SBTRIE, SBLIST, BJSTATS), je suis en mesure de connaître non seulement la fréquence d'usage de chacun de programmes de la logithèque, en fonction du temps, mais aussi de savoir les options d'emploi les plus fréquemment utilisées de chacun de ces programmes ainsi que les utilisateurs les plus fidèles de ces options. Une banque de données, automatiquement constituée, permet à tout utilisateur d'interroger interactivement ces statistiques.

  • Système de références de la logithèque

    Au fur et à mesure de la croissance de la logithèque, il m'est devenu presque impossible d'en retenir toutes les ramifications de mémoire. Pour mon propre usage autant que pour en augmenter l'utilité, j'ai développé un système permettant d'établir une vaste table de références pour la logithèque entière, vue comme un tout. Les programmes, procédures et fonctions, les documents, les jeux d'installation et autres fichiers accessoires sont globalement analysés pour y découvrir les éléments significatifs: noms d'entrée, de programme, de procédure, de fonction, de sous-routine, de macro, de bloc commun, d'ident, de document etc..., et pour construire toutes les références croisées à ces éléments significatifs.

    Divers utilitaires permettent ensuite de corriger, modifier, imprimer et même consulter interactivement cette vaste table (CONREF, DEFREF, FICREF, IMPREF, REFREF, SUPREF).

  • Autour du langage Pascal et de l'assembleur COMPASS

    Quelques bibliothèques de macros (MACTEXT, ASCTEXT, CHATEXT, FORTEXT, PASTEXT, TEXTE) me permettent de simplifier la programmation en assembleur, notamment pour l'utilisation de quelques instructions élémentaires « manquantes » du CYBER-173, pour la manipulation de l'ASCII, le traitement de champs regroupés en plex, la communication avec FORTRAN ou Pascal. Je désire mentionner que la communication avec Pascal est simplifiée, par l'usage de ces bibliothèques de macros, à un point tel qu'il n'est plus nécessaire au programmeur de procédures en assembleur de connaître la structure imposée de la pile par le système Pascal.

    Plusieurs lacunes dans l'implantation courante du langage Pascal sont comblées par des progiciels spécialisés, tels l'allocation dynamique de la mémoire (ALLOUER, TRANCHE), l'arithmétique arrondie (ARR), la récupération en cas d'erreur (RECOUVR, REP), les usages interactifs (INT, QUESTIO), les pointeurs sur des fichiers (PFICH).

    La fréquence d'emploi d'autres progiciels explique leur intégration à la logithèque, tels le traitement de chaîne de caractères et les conversions externes (FORML, FORMH, LON, CHA, ASC, GEN, BNG, CAF, DPC, TEL), le traitement de champs et de fractions de mots (CHATEXT, OP), le traitement des tableaux virtuels paginés (PAG, DIC), l'analyse lexicale (LEX), l'adressage dispersé (hash coding) (MOD, DIS).

  • Traitement des fichiers de caractères

    Plusieurs programmes s'occupent spécifiquement des textes, ou fichiers de caractères, soit pour les présenter proprement sur une imprimante (LISTE), pour les afficher efficacement sur divers terminaux (QPG, VT52, VC404, LA36, LA34), les comparer intelligemment entre eux, de façon performante et efficace (COMP), les translitérer dans d'autres codes ou changer leurs formats (KROBANG, GENCOP, GPM, EDP, REFORM, ASCII, DISPLAY, BANGDIS, DISBANG).

    Certains autres programmes facilitent l'emploi de programmes éditeurs, pour des textes destinés à la publication (LIS, DOCPROS, PROSINV, COSBANG, COSTIMP).

  • Traitement de fichiers généraux

    Quelques programmes ont été écrits pour combler certaines lacunes du système d'exploitation (ou du Centre de Calcul) quant aux outils de traitement des fichiers généraux, plus spécialement dans le domaine des inventaires des fichiers (FIC, LISTEFP, FP, ARC, ARCLIST), des opérations d'ouverture et de fermeture (FP), des tris (CHA, ASC, TRI), des copies (COPIE), de l'examen des contenus (RIO, RIT, RIX, VIDE, ZAP), des binaires chargeables (BAPTISE, CBCAPS, BIN, BINVIDE), des fichiers en format-Lib (LIB, LI, LISTLIB, LSTLIB, SYSJOUR, LIBUP, UPLIB).

  • Outils de mise-au-point

    Au cours des années, j'ai développé plusieurs outils pour faciliter la mise-au-point de programmes assembleurs (BUG), de fichiers (ZAP) ou de programmes écrits en Pascal (FILOU).

    Le système FILOU de mise-au-point de programmes Pascal comprend plusieurs facettes, qui s'ajoutent aux routines de base (FILOUI, FILNON, FILPAS). Je dispose ainsi d'instruments de mesure de la performance des divers éléments constitutifs d'un programme (FILEFF, EFFORTS), d'outils de filature, à la trace, en interactif (FILTRA) ou en différé (TRADIFF), de mécanismes de localistion de procédure fautive (FIL), d'un interface dialogué de mise-au-point symbolique (FILOU).

  • Autres interfaces avec le système d'exploitation

    La logithèque BONJOUR comprend aussi plusieurs interfaces avec diverses facettes du système d'exploitation.

    J'ai quelques progiciels qui communiquent avec les variables du CYBER Control Language (PCCL, R1VIDE), les paramètres comptables de l'utilisateur (IOTIME, USA), les paramètres du chargeur (GLOB, GLOBAL).

    Un ensemble de procédures permet de suspendre l'exécution courante d'un programme, faire exécuter une succession de programmes complets pour éventuellement poursuivre l'exécution interrompue du programme à la suite de son point de suspension (EXCFICH, CCL, CCLFIN).

  • Arithmétique et jeux

    Plusieurs progiciels s'occupent de divers problèmes arithmétiques, tels l'arithmétique sur les dates et les heures (DAT), l'arithmétique récurrente (Sterling, Euler, Newton) (PE), l'arithmétique entière, modulaire et rationnelle en précision totale (GE, GM, GR), l'arithmétique complexe (NC).

    J'ai fabriqué plusieurs programmes exploratoires de différents jeux, sous la forme d'arbitre, d'analyseur ou de joueur. Mentionnons les jeux de master mind (MOO), de pousse (POUSSE), d'échecs (QPG), de go (GOBAN, GOTRA1, GOTRA2, KORSCHx), de fantasy role playing (GOULE).