SourceForge.net Logo
11 Juin, 2006
© GPL
FractalWikiFR - ProWikiCentre
Plan De Route Programmeurs

EnConstruction. Cette page donne aux personnes intéressées un aperçu général pour programmer le ProWikiScript ou comprendre ses aspects de mise en oeuvre.

Information Générale

Le ProWikiScript est un morceau relativement petit de logiciel, disons en-dessous de 20 000 lignes de code Perl (ou 0.5 MB de source).

Bien que Perl soit un outil de programmation génial, nous avons toujours ressenti qu'à un certain stade, nous pourrions vouloir traduire le programme vers un langage plus efficace, navivement compilé comme le C ou le D. C'est la raison pour laquelle tout est maintenu concentré et que le nombre de modules importés en Perl est maintenu au minimum.

C'est aussi la raison essentielle, bien que le code ProWiki soit très orienté objet et supporte différents formats d'héritage (par exemple : les pages héritent des propriétés de leurs ancêtres), pour laquelle le code Perl en lui-même n'utilise pas les fonctionalités OO pour l'implémentation. Il ne nous a jamais semblé avoir suffisamment d'avantages à en tirer comparé aux conséquences de nous enfermer dans le langage.

Tous les symboles importants (noms de fonction, variables globales) sont uniques. En une simple recherche à travers le ProWikiScript vous avez l'endroit de la définition et tous les endroits d'utilisation. Imaginez le ProWikiScript comme une base de données que vous pouvez accéder par la recherche. Comparé au code typique OO, il n'y a pas de construtions de syntaxe "->write(...)" qui obtien sa signification à partir d'un contexte.

Progrmmation Idépendante du Langage

Le ProWikiScript utilise un "langage indépendant de la programmation" dans le style TheLop (avec quelques exceptions). Il est très général pour ce type de programmation que ce que vous puissiez faire soit exprimé par un appel de fonction unique parce que vous n'avez pas besoin de créer d'objets (implémentation d'objets) avant que vous ne les utilisiez.

En résumé, cela veut dire :

  • Les parties (mots) des noms de fonction sont un vocabulaire contrôlé, c'est à dire que tout ce qui est en rapport avec l'Unicode aura "Unicode" dans son nom.
  • Les noms de fonction reflètent leurs sens, c'est à dire que FileAppStr("filename","some text\n"); ajoutera ("App") une chaîne ("Str") à un fichier ("File"). Ce peut être considéré comme isomorphique pour un fichier OO appendString.
  • Les fontctions reflètent leurs paramètres et leurs valeurs en retour c'est à dire $size=PageRetSize("FrontPage"); renvoie ("Ret") la longueur de la page en bits ("Size") d'un nom de page donné ("Page").
TheLop est fondé sur une pensée OO et plus tranformationnelle. Ceci veut dire qu'un wiki, un serveur, une base de données, une chaîne, une flèche ou un fichier (et bien d'autres objets dans le vrai monde) sont considérés comme des objets, qu'ils soient gérés par une référence formelle d'objet, une référence symbolique (comme un nom de fichier), une clé primaire (comme dans une base de données) ou même implicitement (cad quand l'objet est unique).

Le Système de Stockage

ProWiki utilise des fichiers normaux pour stocker les données wiki, aucune base de données n'est nécessaire. Accéder à un contenu de page est tout aussi efficace qu'accéder à un fichier brut. Il n'y a pas de différence technique : un contenu de page est un fichier brut.

Pour un accès rapide d'une façon comme dans une base de données, certaines données sont cachées dans différents fichiers log. Pour donner un exemple : l'index de page est lu à partir du fichier PageLog qui contient les événements pour "page creation" et "page deletion". Par conséquent ActionIndex peut être très rapide parce qu'il ne fait qu'un simple processus d'un petit fichier au lieu de faire ses calculs sur l'ensemble des enregistrements de la base de données.

Bien sûr, il y a beaucoup d'aspects de "database vs. filesystem" et les deux systèmes ont leurs avantages. Actuellement le FileSystem sert très bien ProWiki et seuls les problèmes de dimensionnement (si un client voulait vraiment gérer un million de pages dans un wiki unique) créerait un besoin pour une interface de base de données.

Lignes de Conduite pour la Programmation

Au moment de contribuer sur le code, merci de :

  • faire des symboles généraux en casse ChatMot et d'utiliser le vocabulaire contrôlé
  • faire des symboles locaux soit en bas de casse ou au mon démarrant par une lettre bas de casse
  • utiliser 2 niveaux de caractères pour l'indentation
  • écrire toutes les logiques et boucles en utilisant des accolades
  • écrire du code simple (éviter les constructions profondément imbriquées)
  • écrire des structures de données imples (éviter les hashes ou les flèches imbriquées)
  • écrire du colde fonctionnant bien et de bon sens (sans optimisations compliquées)

Détails


LangueFrançaise PageTranslation ProWiki:ProgrammersRoadMap DossierProgrammation DossierPointsDeDépart