Scriptol - Questions fréquemment posées
Le langage
- Redéclaration: chaque langage OO devrait utiliser des espaces de noms locaux
- Comment passer du code soit à PHP ou en C++
- Puis-je appeler le constructeur de la classe de base dans la classe héritée?
Scriptol et PHP
- Scriptol peut-il compiler mes scripts PHP?
- Peut-on utiliser Scriptol comme outil de conversion?
- PHP: Les variables de formulaires ne sont pas reconnées
- Convertir PHP en C++
- Comment utiliser les objets PHP dans Scriptol
- Comment utiliser Scriptol et MySQL?
- La compilation du code C++ produit un tas de messages d'erreurs
- Mon programme ne peut être compilé
- C++ est sensible à la casse
- Mon programme ne fonctionne pas
Interpréteur Scriptol
Les extensions
- Peut-on utiliser OpenGL et Glue avec Scriptol
- Quel runtime est requis pour distribuer mon application?
Outils
Marketing et avenir
- Le compilateur Scriptol restera-t-il gratuit?
- Quand la version .NET sera-t'elle disponible?
- Le compilateur Scriptol est-il fini?
Puis-je appeler le constructeur de la classe de base dans la classe héritée?
J'hérite la classe Car de la classe Vehicle, par exemple. Puis-je appeler le constructeur de Vehicle à partir de celui de Car? Je fais cela en Java.
Java dispose du mot-clé "super" pour appeler le constructeur
d'une classe à partir d'une class héritée.
Il n'y a pas d'équivalent en Scriptol. Si vous appelez le constructeur
de la superclasse, cela crée une nouvelle instance de celle-ci.
Mais vous pouvez assigner les attributs de la classe de base dans le constructeur
de la classe héritée ce qui est équvalent au "super"
de Java.
Une instruction super a été ajoutée dans Scriptol 2 en 2014. Cela permet de passer des paramètres au constructor de la classe héritée.
Le code C++ de mon programme n'est pas compilé
Quand j'invoque solc, j'obtiens les erreurs
suivantes, aussi bien à la compilation qu'à l'édition
de liens:
"Commande non valide".
Il vous faut vérifier que le compilateur C++ est accessible.
Taper:
bcc32 ou
gcc -v ou
cl /?
Si la version s'affiche, l'installation est correcte, sinon le programme
doit être rendu accessible, pour cela il faut l'ajouter à
la variable d'environnement PATH de Windows:
- Menu windows
- Panneau de configuration
- Système
- Onglet avancé
- Bouton "variables d'environnement".
Example avec bcc32:
PATH = %PATH%;c:\bcc55\bin\
Scriptol compile en PHP ou C++ mais C++ produit un tas de messages d'erreurs.
J'essaie depuis 2 jours de faire fonctionner vos compilateurs
Scriptol que j'ai installé. J'ai aussi téléchargé
BCC 5.5.
Je peux compiler les programmes Scriptol en .CPP ou .PHP, mais je ne peux
les faire fonctionner, même les simples démos incluses dans l'archive.
Il semble qu'il leur faille une quantité de librairies, de fichiers
d'en-têtes, etc... pour fonctionner. BCC produit un tas de messages
d'erreurs, principalement parcequ'il ne trouve les fichiers inclus comme math.h,
iostream.h qui appellent d'autres fichiers introuvables.
J'ai un projet à écrire mais je passe deux fois plus de temps
avec les outils que si j'avais fait le travail à la main!
Je passe aussi deux fois plus de temps avec les programmes et bibliothèques
externes, que sur le compilateur Scriptol lui-même. Il semble que le
compilateur Borland ou l'interpréteur PHP ne soient pas complètement
installés.
Pour savoir si PHP est installé, taper juste:
php -v
Mais pour le compilateur C++, ce n'est pas si facile. Il y a deux fichiers de configuration, bcc32.cfg et ilink32.cfg dans le répertoire bcc55\bin, qui contiennent les chemins du compilateur et fichiers à inclure. Il y a aussi win32.cfg à la racine bcc55.
Pouvons-nous utiliser Scriptol comme outil de conversion?
Si les codeurs PHP pouvaient compiler PHP, grâce à un outil de conversion, ce serait vraiment bien. Mais c'est différent s'il faut pour cela réecrire un script, ou seulement le modifier, après conversion.
Actuellement, Scriptol compile un source scriptol en PHP ou C++. Inutile
de réécrire quoi que ce soit. Pour le code PHP déja écrit,
il faut l'inclure dans le code Scriptol.
Mais pour compiler PHP en binaire, il faudrait un compilateur spécialisé,
cela existe.
C++ est sensible à la casse
Vous dites dans le manuel que C++ n'est pas sensible à la casse, mais mon compilateur fait le différence entre "var" et "VAR" par exemple.
L'éditeur de lien C++ peut être sensible à la casse ou non, selon la configuration. J'utilise le mode qui fonctionnera toujours, quelle que soit la configuration, à la fois en C++ et en PHP qui est aussi sensible ou non selon les cas, ainsi les sources sont portables.
Comment passer du code, doit à C++, soit à PHP?
Pour inclure du code soit en C++ ou en PHP, il faut utiliser
les balise ~~ pour insérer ce code, lequel sera traité
par le compilateur C++ ou l'interpréteur PHP.
Les lignes qui commencent par # sont des directives C++. Ce sont
des commentaires en PHP et elles sont ignorées.
Ainsi, le code en exemple ci-dessous, inclut un fichier C++ non
utilisée en PHP et un code conditionnel ignor´ en
C++ mais reconnu en PHP qui ignore la condition.
~~ #include "header.hpp" #if 0 echo "this is PHP code\n"; #endif ~~
Mais c'est inutile avec Scriptol 2. Vous pouvez inclure du code pour le fichier cible selon l'extension du fichier:
include "forcpp.hpp" // inclus seulement dans le code C++ include "forphp.php" // inclus seulement dans le code PHP
Mon programme ne fonctionne pas
J'ai une installation complète, avec serveur Apache, mais mon programme Scriptol PHP affiche une erreur. Voila le code:
<sol include("button.php"); ?>
Quand on a l'habitude d'un langage classique, ce genre de problème est fréquent. En effet, "include" est un mot-clé en Scriptol, il faudrait écrire:
require("button.php"); ou include_once("button.php").
Puis-je utiliser l'interpréteur en CGI?
C'est effectivement possible.
Puis-je utiliser OpenGL et Glue avec Scriptol?
Avec le compilateur en PHP, il faudrait une extension à PHP.
Avec le compilateur en C++, on peut utiliser OpenGL comme avec tout
programme C++.
Il faut ajouter la bibliothèque dans solc.ini ou créer
un fichier de configuration propre au programme.
Pas encore intégré à
l'interpréteur, mais cela sera possible car il est extensible.
Scriptol peut-il compiler mes scripts PHP?
Scriptol peut seulement compiler des sources Scriptol en PHP ou en binaire. Les scripts PHP peuvent seulement être inclus dans un programme Scriptol.
Comment utiliser des objets PHP avec Scriptol?
J'utilise un objet PHP avec 5 méthodes. Si je place l'objet dans un VAR, le programme fonctionne parfaitement, mais un tas de messages d'erreurs sont affichés.
Il faut déclarer la classe PHP externe, ses attributs et méthodes. Ce serait d'ailleurs recommandé de le faire avec les fonctions aussi. Exemple:
extern class xxxx int attribute void fun(int) .... return /class /extern
Puis déclarer l'objet PHP et l'assigner avec null si la classe n'est pas reconnue par l'interpréteur PHP:
xxxx myobject = null
PHP: les variables de formulaires ne sont pas reconnues
Quand je compile une page HTML contenant du code Scriptol, les variables HTML de formulaires ne sont pas prises en compte par le code PHP généré.
Si vous avez installé PHP avant la version 4.3 puis une version plus
récente sans mettre à jour php.ini, il faut faire le modification.
Le drapeau suivant doit être positionné (Il est Off par défaut
depuis PHP 4.2):
register_globals = On
Quels fichiers runtime sont à inclure pour distribuer mon application?
Voila ce que je pense: très bon langage, il
peut faire des .exe, il fournit des capacités d'interface graphique...
aussi je peux produire des applications sympas avec lui.
Mais quand je la distribue, quel runtime est requis?
Pour mon type de travail, il n'est pas acceptable de dire à l'utilisateur:
"Il vous faut installer et configurer PHP d'abord". Donc GTK et
.NET dans le futur ne m'intéressent pas.
Si votre programme est lié seulement à des librairies statique
(extension lib), rien de plus que l'exécutable est requis.
Sauf si vous compilez avec Visual C++, qui nécessite gcms.dll, mais
cela sera supprimé bientôt.
Par contre les librairies dynamques, en .dll ou .so sous Linux doivent être
incluses.
Utiliser Visual Studio
Scriptol fonctionne-t'il avec Visual Studio?
Il est possible d'ajouter le compilateur comme outil externe.
Convertir PHP en C++
Je voudrais convertir mes programmes PHP en binaire. Comme la syntaxe de PHP est proche de celle de C++, pourquoi utiliser Scriptol plutôt que convertir directement les sources?
Apprendre Scriptol est une question d'heures. Mais pour qu'un programme PHP ne devienne un binaire exécutable, à moins d'utiliser un compilateur PHP commercial (sans doute limité), il vous faut aussi convertir les bibliothèques PHP ce qui est une question d'années (PHP est né en 1995 et continue de se développer).
Le compilateur Scriptol restera-t'il gratuit?
Scriptol restera gratuit et pour toujours. La bibliothèque est open source et disponible sur GitHub. Je préférerai plutôt vendre des tee-shirts Scriptol que le rendre payant ;)
Comment convertir le manuel en PDF?
Charger juste le fichier HTML dans LibreOffice et exporter en PDF.
Le compilateur Scriptol est-il considéré comme terminé?
Il y a trois niveaux dans le langage de programmation:
- Le langage procédural,
- le langage orienté objet,
- la programmation réactive.
Et d'autres capacités qui sont envisagées ou en cours
de développement.
Les deux premiers niveaux sont achevés.
Le troisième est implémenté dans le compilateur JavaScript.
Quand la version .NET sera-t-elle disponible?
Il n'y a pas de projet dans un future proche pour une version .NET du langage. Une version WebAssembly sera mise en chantier dès que wasm sera disponible en production.
Ceci dit, chacun est libre de réaliser une version du compilateur pour n'importe quelle plateforme.
Commander le port parallèle avec scriptol
lapenduledargent
webmaster
lapenduledargent
webmaster
lapenduledargent
Quels fichiers runtime sont à inclure pour distribuer mon application?
FAQ
Redéclaration: chaque langage OO devrait utiliser des espaces de noms
for(int i=0;i<5;i++) { } int i; while(i < 5) { // do something here }Chaque langage OO implément des espaces de noms locaux aux niveaux de blocs
FAQ
Voila deux exemples de ce que Scriptol
permet ou non:
Exemple 1 (NON PERMIS)
int i for x in a int i = 5 // mauvais print i * x /for
Exemple 2 (PERMIS)
int i for x in a int j = 5 print j * x /for for x in b int j = 50 print j * x /for
Scriptol ne permet pas de réutiliser un identifieur, pour différentes choses à l'intérieur d'un bloc. On peut le faire pour des blocs successifs. Cela supprime une source de confusion.
Ne craignez pas un manque d'identifieurs: avec deux lettres ou chiffres on peut déjà en créer plus de 1000.