3/01/2014

Définition du langage collaboratif

Un langage collaboratif pour le développement d'applications numériques a été réalisé dans le cadre de l'initiative "Comme Un Olivier" visant à promouvoir l'économie collaborative.
Ce langage permet de simplifier la création de jeux d'instructions pour faciliter la manipulation de l'information numérique et la création de processus d'échanges entre les utilisateurs.
Il se nome CUOBasique et correspond à une syntaxe simple, légère et accessible. La conception a été réalisée pour la langue française. Néanmoins, une première déclinaison est en cours pour la langue anglaise. CUOBasique construit des programmes numériques dédiés su système d'information personnel.

Le langage collaboratif CUOBasique a pour objectif de favoriser l'échange et le partage entre les utilisateurs finaux, les créateurs de valeur économique, les graphistes et les développeurs. Il permet une approche collaborative à plusieurs niveaux et en fonction des besoins et des compétences de chacun :
  • Évolution des fonctionnalités de base ou du système. Création de fonctions complexes ou contraignantes. Cette approche est ouverte aux professionnels de l'informatique ou aux personnes expérimentées en  langage C.
  • Evolution des interfaces Homme/Machine. Création d'objets interactifs visuels ou vocaux. Cette approche est ouverte aux graphistes ou aux personnes expérimentés en HTML5/CSS3/Javascript.
  • Création d'application en langage CUOBasique. Approche ouverte aux créateurs de valeur économique désireux d'être autonome et possédant une première expérience comme la création d'un site WEB, d'un gestionnaire de contenu ou d'une application pour mobile.
  • Création de processus d'échanges. Approche ouverte aux utilisateurs finaux qui souhaitent formaliser et automatiser des processus personnels ou professionnels. Le code CUOBasique est alors généré automatiquement et peut être facilement modifié.
Sommaire


1 - Déclaration des jeux d'instructions



Les instructions sont rassemblées sous forme de bloques. L'ensemble de ces bloques sont rassemblés dans un fichier script. Après une compilation vers la machine virtuelle du systeme d'information personnel, le script devient un programme numérique.

TitreCommentaire
FonctionUne fonction est un recipient d'instructions qui accepte des paramètres d'entrés ainsi qu'une valeur de retour.

La fonction se nomme "AfficheMonTexte".
Elle accepte en paramètre une chaîne de caractère alphanumérique.
Elle retourne la valeur Retour de type Entier.

Fonction AfficheMonTexte (Message Comme Chaîne) Comme Entier 
Dimensionne Retour Comme Entier   Déclaration de la variable de retour
Retour = Affiche(Message)                    ' Appel à la fonction système
AfficheMonTexte = Retour                    ' Affectation de la variable de retour
Fin Fonction  

RoutineUne routine est un récipient autonome sans paramètre de retour qui s’exécute de façon asynchrone. Elle sert souvent à traiter des événements.

La routine se nomme "MonBouton_clic" et est associée au clic de la souris.

Routine MonBouton_clic
Affiche("L'utilisateur vient de cliquer sur l'objet qui se nomme 'MonBouton' ")
Fin Routine

PropriétésLes fonctions et les routines possèdent des propriétés qui conditionnent leur mode d’exécution.

Publique, elles sont visibles par tout le programme.
Privée, elles ne sont accessibles que pour l'objet dont elles dépendent.
Locale, elles s'exécutent strictement sur la machine locale.
Distribuée, elles peuvent se répartir sur d'autres machines du réseau et s’exécuter parallèlement.





2 - Déclaration des variables



Les variables permettent de stocker des valeurs en mémoire . Elle associe un nom et un type à une valeur. Dimensionner un espace mémoire en déclarant un nom permet de réserver un emplacement. 
            Dimensionne emplacement
Déclarer un type permet de reconnaître cet emplacement et de le traiter comme tel.
            Comme Chaîne 'Chaîne de caractère
Affecter une valeur permet d’utilisé cette mémoire.
            emplacement = "bonjour" 'emplacement vaut le mot bonjour

TitreCommentaire
EntierNombre pour une utilisation courante.
Dimensionne Nombre Comme Entier
Nombre = 1234

ChaîneChaîne de caractère alphanumérique.
Dimensionne Msg Comme Chaîne
Msg = "Bonjour à tous!"

RéelNombre pour une utilisation mathématique.
Dimensionne Pi Comme Réel
Pi = 3,141592

ComplexeNombre complexe pour des calculs mathématiques.
Dimensionne z Comme Complexe
z.réel = 2
z.imaginaire = 3
ou
z = (2, 3)


GéographiqueNombre pour le calcul géodésique.
Dimensionne Position Comme Géodésique
'Pour la ville de Paris
Position. latitude = 48.887090   '48°53'13.5"N
Position. longitude = 2.335260  '2°20'06.9"E
Position. altitude = 0
ou
Position = (48.887090, 2.335260, 0)

ObjetPermet aux utilisateurs de référencer un objet interne ou externe de façon dynamique.
Dimensionne MonComposant Comme Objet
MonComposant  = Nouveau Bouton

ContrôleObjet d’interface prédéfini par le système comme un bouton, un label, un champ un texte ou une liste déroulante.
MonEcran.MonLabel.Titre = "Bonjour"

ConstantePermet aux utilisateurs de déclarer des valeur prédéfini et de les stocker dans le jeu d'instruction.
Constante MA_CONSTANTE = 1

StructurePermet aux utilisateurs de créer des structures de données.
Structure MaStructure
          Nombre Comme Entier
           Msg Comme Chaîne
           Pi Comme Réel
Fin Structure 

DiversPermet aux utilisateurs de déclarer des variables par anticipation et dont le type est affecté lors de son exécution.
Dimensionne Compteur Comme Divers
Compteur =  FaireStatistique("CommeUnOlivier.net")

TableauPermet aux utilisateurs de déclarer des tableaux à plusieurs dimensions.
Dimensionne TabNombre(1 à 10) Comme Entier     'Une dimension
Dimensionne TabChaine(10,10,10) Comme Chaîne 'Trois dimensions
Dimensionne TabStruct(10) Comme MaStructure    'Tableau de structure

PropriétésLes variables possèdent des propriétés qui conditionnent leur mode de fonctionnement.
Globale, elles sont visibles par tout le programme.
Locale, elles sont visibles seulement par la fonction ou la routine.
Distribuée, elles peuvent se répartir sur d'autres machines du réseau pour accompagner les fonctions ou les routines qui s’exécutent en mode parallèle.



3 - Syntaxe de base



La formalisation d'un jeu d'instruction passe par une syntaxe basique. Elle est simple mais doit être rigoureusement appliquée pour que la transformation des instructions en langage machine puisse se réaliser.

TitreCommentaire
OpérateursUn opérateur permet une interaction entre deux variables et renvoi un résultat.
         Résultat Variable-1 opérateur Variable-2
Les opérateurs de concaténation
        + 'Résultat  = Variable-1 + Variable-2
        & 'Résultat  = Variable-1 & Variable-2
Les opérateurs de comparaisons
         <    Inférieur à
         <=  Inférieur ou égale à
         >    Supérieur
         >=  Supérieur ou égale à
         =    Égale
         <>  Différent
Les opérateurs arithmétiques
        +    Addition
        -    Soustraction
        *    Multiplication
        /    Division
        ^    Élever à la puissance
        Mod    Modulo - divise et retourne le reste      
Les opérateurs logiques
       ET    Conjonction logique
       OU   Disjonction logique
       xOU  Exclusion logique

ConditionsElle permettent d'évaluer une expression pour rendre conditionnelle l'exécution d'un jeu d'instruction.
Si Variable-1 > 100 ET Variable-2 > 100 Alors
       Affiche("Condition 1")
SinonSi Variable-1 < Variable-2 Alors
       Affiche("Condition 2")
Sinon
       Affiche("Condition 3")
Fin Si

BouclesElle permettent l'exécution d'un jeu d'instruction tant que les conditions sont vraies.

Boucle Pour - Suivant :
Dimensionne Compteur Comme Entier
Pour Compteur = 1 à 5
       Affiche("Valeur Compteur =" + Compteur )
Suivant Compteur 

Boucle TantQue:
Dimensionne Compteur Comme Entier
TantQue (Compteur <= 5)
       Compteur = Compteur +1
      Affiche("Valeur Compteur =" + Compteur )
Fin TantQue

CasIl permet l'exécution d'un jeu d'instruction en fonction de la valeur d'une expression.

Dimensionne Compteur Comme Entier
Sélection Cas Compteur 
       Cas 1
               Affiche("Valeur = 1"  )
       Cas 2
               Affiche("Valeur = 2"  )
       Cas 3
               Affiche("Valeur = 3"  )
       Cas 4
               Affiche("Valeur = 4"  )
       Cas 5
               Affiche("Valeur = 5"  )
Fin Sélection 

SautSaut inconditionnel vers un label d'un jeu d'instruction.

Affiche("Valeur = 1"  )
Aller à Branche
Affiche("Valeur = 2"  )
Affiche("Valeur = 3"  )
Affiche("Valeur = 4"  )
Branche :
Affiche("Valeur = 5"  )

MathématiquesFonctions trigonométriques et hyperboliques
    Acos      arc cosinus
    Asin       arc sinus
    Atan       arc tangente
    Atan2     arc tangente
    Cos        cosinus
    CosH     cosinus hyperbolique
    Sin         sinus
    CinH      sinus hyperbolique
    Tan        tangente
    TanH     tangente hyperbolique

Fonctions exponentielles et logarithmiques
    Exp      exponentielle
    Exp2p  étant donné x, trouve n et p tels que x = n * 2p
    Exp      multiplie un nombre par une puissance entière de 2
    Log      logarithme
    Log10  logarithme décimal

Fonctions complémentaires
    Plafond     entier le plus proche par les valeurs supérieures
    Abs           valeur absolue
    Étage        entier le plus proche par les valeurs inférieures
    Racine2    racine carrée


Opérations de base



Le langage CUOBasique fournit un certain nombre de fonction prédéfinies et réalisées par les développeurs en langage C. De plus, les fonctions libres et open sources réalisées en langage CUOBasique par les utilisateurs ou les graphistes sont disponibles sous forme d'APIs.

TitreCommentaire
SystèmeFourniture de l'ensemble des fonctions évolués pour la gestion des périphériques, la sécurité, les langues, le calcul mathématique, les formats de données, des dates,etc.

RéseauxFourniture de l'ensemble des fonctions évolués pour la gestion des réseau TCP/IP et les protocoles de communication comme HTTP, IMAP, SNMP, FTP, M2M, etc.

FichiersFourniture de l'ensemble des fonctions évolués pour la manipulation des répertoires, des fichiers et des formats associés comme le binaire, le texte, XML, JSON, etc.

APIsBibliothèque de fonctions réalisées en langage CUOBasique par d'autres utilisateurs.



4 - Définition des interfaces homme machine



Le langage CUOBasique fournit des objets graphiques prédéfinies et réalisés par les graphistes et les développeurs en langage C.

TitreCommentaire
ObjetsUne quarantaine d'objets visuels ou vocaux sont disponibles comme le bouton,  l'images, la liste déroulante, l'arborescence, la vidéo, la reconnaissance vocale, etc. Des objets pour le design, la modélisation et le code sont également disponibles pour construire son propre studio de développement.

PropriétésLes propriétés sont des variables qui caractérisent les spécificités de l'objet comme le titre, les couleurs, les formes, les positions haut, bas, longueur, largeur, etc.
Par exemple, pour la propriété Source de l'objet vidéo qui contient le film.
MonEcran.MaVideo.Source = "MonAniversaire.mp4"

ÉvénementsLes événements sont des routines qui caractérisent les déclencheurs et l'état de l'objet comme la souris, le glisser-déposer, etc.
Routine MaVideo_clic
Affiche("L'utilisateur vient de cliquer sur l'objet Vidéo")
Fin Routine

MéthodesLes méthodes sont des routines qui caractérisent le comportement de l'objet comme son mouvement, son ordre, son déplacement, ses actions spécifiques, etc.
MaVideo.Joue 'Action qui lance la vidéo
MaVideo.Stop 'Action qui arrête la vidéo





5 - Manipulation de l'information



Le langage CUOBasique s'appuie sur une logique de métadonnées organisées en matrices informationnelles. Chaque élément est identique. Il peut contenir d'autres éléments. Chaque élément peut posséder des attributs et des opérations.
CUOBasique fournit les facilités suivantes:
  • la manipulation des données structurées issues des bases de données relationnelles comme SQL
  • La manipulation des données non-structurées issues des documents ou de contenus spécifiques comme NoSQL
  • L'analyse statistique sur de grandes masses de données comme le Langage R ou GNU Octave

TitreCommentaire
VerbesLe verbe Sélectionner
SÉLECTIONNE nom, prénom, âge, anniversaire DE client  
Sélection d'un ensemble d’occurrences contenues dans le récipient nommé client

Le verbe Insérer
INSÈRE DANS client (nom, prénom) VALEUR ("Moulin","Jean)
Insertion d'une occurrence dans le récipient nommé client avec pour le champ nom la valeur "Moulin" et pour le champ prénom la valeur "Jean"

Le verbe Modifier
MODIFIE client AVEC prénom = "Pierre" DONT nom = "Moulin" 
Modification du champ prénom avec la valeur "Pierre" pour les occurrences du récipient nommé client dont le champ nom est égale à "Moulin"

Le Verbe Effacer
EFFACE client DONT nom = "Moulin" 
Effacement des occurrences du récipient nommé client dont le champ nom est égale à "Moulin"

Le verbe Créer
CRÉER MATRICE MaBasedeDonnées AVEC _MODÈLECRM
CRÉER RÉCIPIENT Enfant (nom Comme chaîne, prénom Comme chaîne, âge Comme Entier)
CRÉER INDEX UNIQUE MonIndex SUR client.nom

Le Verbe Transformer
TRANSFORMER RÉCIPIENT client
                             AJOUTE COLONNE adresse Comme chaîne,
                             AJOUTE COLONNE ville Comme chaîne

Le Verbe Supprimer
SUPPRIMER INDEX MonIndex

AgrégationsL’agrégation Compte
SÉLECTIONNE Compte(*) DE client  DONT prénom = "Jean" 
Calcul le nombre d’occurrences contenues dans le récipient nommé client dont le champ prénom contient "Jean"

L’agrégation Moyenne
SÉLECTIONNE Moyenne(âge) DE client  
Calcul la moyenne d'âge des occurrences contenues dans le récipient nommé client.

L’agrégation Maximum
SÉLECTIONNE Maximum(âge) DE client  
Calcul la plus âgée des occurrences contenues dans le récipient nommé client.

L’agrégation Minimum
SÉLECTIONNE Minimum(âge) DE client  
Calcul la plus jeune des occurrences contenues dans le récipient nommé client.

Les agrégations "Système"
Les fonctions offertes par le système peuvent être intégrées dans les requêtes.
SÉLECTIONNE Majuscule(nom) DE client  
Transformera les résultats des valeurs du champ nom en majuscule

Les agrégations "APIs"
Les fonctions réalisées en langage CUOBasique peuvent être intégrées dans les requêtes.
SÉLECTIONNE FormerLaDate(anniversaire, "US") DE client  
Transformera les résultats des valeurs du champ anniversaire au format de la date utilisée au États Unis.

Requête

Exemples de Requêtes

SÉLECTIONNE nom, prénom, âge DE client  
DONT âge ENTRE 20 ET 25 'âge compris entre 20 et 25 ans
ET âge <> 22                            'âge est différent de 22 ans
ET nom COMME "M*"           'le nom commence par M

SÉLECTIONNE nom, prénom, âge DE client  
DONT anniversaire.mois ENTRE ET 8 'date compris entre mai et août
TRI PAR nom ASCendant , 'Trier dans l'ordre ascendant du nom
                 âge DEScendant 'Trier des plus jeunes aux plus âgés

MODIFIE client AVEC prénom = "Pierre" 
DONT nom = "Moulin"  
AVEC SYNCHRONISATION  'synchronisation avec les autres matrices distribuées sur le réseau

Analyse

Une approche mathématique est parfois nécessaire pour comprendre une situation ou un phénomène. Ces fonctions s'appuient souvent sur une grande masse de données.
Par exemple, pour réaliser des prévisions climatiques, il est nécessaire de compiler des mesures de températures sur plusieurs dizaines d'années et concernant plusieurs lieux géographiques. Chaque élément de la matrice informationnelle peut être assimilé à un vecteur pour faciliter le traitement mathématique statistique et probabiliste approprié.







Aucun commentaire :

Enregistrer un commentaire

Utilisez ce formulaire pour commenter ou me contacter directement.