# Pick (système d'exploitation)

Pick (du nom de son inventeur, Dick Pick) est un système d'exploitation multi-utilisateur, en temps partagé et à mémoire virtuelle. Il comprend un Système de gestion de base de données « multivaluée » (SGBDR MV), et un interpréteur du langage de programmation Basic, le Basic Pick.
Il est principalement orienté vers les applications de gestion. Initialement développé pour des mini-ordinateurs, il s'est diffusé sur les micro-ordinateurs et les grands systèmes. Les évolutions commerciales du système Pick ont vu subsister le SGBDR MV et le Basic au détriment du système d'exploitation.

## Histoire

En 1965, la compagnie TRW gagne un contrat avec l'armée américaine pour créer un système permettant la gestion de la configuration des composants de l'hélicoptère Cheyenne de Lockheed. Ce projet est confié aux programmeurs Don Nelson et Dick Pick. En 1968, le système de récupération de données est nommé GIM (Generalized Information Management), et implémenté sur un IBM 360. Il dispose alors de la plupart des fonctionnalités du langage de Pick (connu aujourd'hui sous le nom d'ENGLISH). Le langage d'extraction de données est nommé GIRLS (Generalized Information Retrieval Language System). TRW essaye vainement de breveter toutes les fonctionnalités de GIM, GIRLS et DM-512. L'armée américaine fait passer dans le domaine public toutes les fonctionnalités développées par TRW pour les hélicoptères Cheyenne. Richard Pick crée alors la compagnie Syscom pour poursuivre ses recherches.
En 1970, la société Microdata s'intéresse aux travaux de Pick et acquiert les droits des systèmes Pick. En 1973, Microdata livre un système nommé « Reality Operating System » sur un MICRO 1600. REALITY est distribué à travers le monde et notamment par le distributeur britannique CMC qui fusionne en 1976 avec Microdata. En France, le constructeur Intertechnique, à l'origine équipementier aéronautique, achète en 1975 la licence du système d'exploitation Pick, dont il conserve l'exclusivité en Europe (à l'exception du Royaume-Uni), jusqu'en 1984.
Sur l'implémentation Microdata, le langage principal pour le développement d'applications est du Databasic, sorte de BASIC comportant des extensions pour interagir directement avec les bases de données écrites par Charles Bachman (Turing Award 1973), sans surcouche logicielle ni donc les problèmes de coordination afférents. Un système « PROC » servait à exécuter les fichiers de commandes. Le langage ENGLISH permettait la recherche et le « reporting » de données, mais non les mises à jour. Destiné à l'exploitation et non à l'administration, il ne permet ni toutes les manipulations de données multivaluées à 3 dimensions, ni de réaliser les opérations traditionnelles de bases de données relationnelles comme les jointures, car des redéfinitions sophistiquées de champs dans le dictionnaire de données permettent de réaliser des jointures par l'exécution d'une recherche dans un autre fichier. Le système inclut un spouleur. Un éditeur de texte simple est fourni, utilisé et utilisable juste pour la maintenance, et ne pouvant pas verrouiller les enregistrements. La plupart des applications sont donc écrites avec d'autres outils comme Batch, RPL, ou le compilateur BASIC pour s'assurer de la validation des données et garantir le verrouillage des enregistrements.
À la suite de la faillite de Syscom en 1971, Richard Pick fonde « Pick & Associates » en 1972, renommée ensuite « Pick Systems », actuellement « Raining Data ». En 1977, Microdata poursuit Pick en justice pour vol de secrets de fabrication. La justice statue que Richard Pick n'avait pas le droit d'utiliser les noms REALITY et ENGLISH, et que Microdata n'avait pas le droit d'utiliser le mot PICK. Dans le même temps, Richard Pick accorde des licences du désormais « système Pick » à de nombreux constructeurs et vendeurs qui en produisent différentes variantes. Le véritable nom étant SGBDR MV, et Pick étant la marque du premier SGBDR MV. Il en existe plusieurs implémentations en logiciel libre sous la licence publique générale GNU (Maverick, openQM, Winter).
La base de données vendue par Raining Data est connue comme « D3 », et celle anciennement vendue par IBM (aujourd'hui Rocket Software) sous le nom « U2 » est également connue comme UniData et Universe, aujourd'hui distribuée par VMARK FRANCE.
Richard Pick décède d'une attaque cérébrale en octobre 1994.

## Principes

Une base de données Pick suit une décomposition hiérarchique en comptes, avec des fichiers, des enregistrements, des champs, des sous-champs et des sous-sous-champs. Historiquement, les enregistrements sont appelés « items », les champs « attributs », les sous-champs « valeurs » ou « multivaleurs » (d'où le nom actuel de « base de données multivaluée ») et les sous-sous-champs « sous-valeurs ». Les champs, sous-champs et sous-sous-champs sont tous de longueur variable et repérés par des délimiteurs spéciaux (caractère de codes 254, 253 et 252). Tout fichier, enregistrement ou champ peut ainsi contenir plusieurs entités du niveau inférieur. Un programme source BASIC par exemple n'est sous Pick rien d'autre qu'un enregistrement dont chaque attribut constitue une ligne.
Chaque fichier peut contenir une ou plusieurs parties « data » (données) et une partie « dict » (dictionnaire), qui précise comment interpréter les données. Chaque compte possède un « maître dictionnaire » (« md »), qui recense et définit tous les fichiers, mais aussi toutes les commandes (procédures ou programmes), éléments du langage de requête, etc., accessibles depuis ce compte. Un système de « synonymes » (pointeur Q) permet notamment d'accéder depuis un compte donné à des éléments d'un autre compte.
L'adressage à l'intérieur d'un fichier se fait au moyen d'une fonction de hachage (hash coding), basée sur l'espace primaire et le modulo couramment attribués au fichier, avec application d'un algorithme à la clé de l'enregistrement, et gestion de chaînages de partitions (pages mémoire) lorsque nécessaire.
Aujourd'hui encore, les bases de données Pick fonctionnent sur le principe de machine virtuelle. De nombreux applicatifs fonctionnant sous cette base de données s'appuient sur l'utilisation d'un émulateur de terminal.