Scriptol - Questions fréquemment posées

Le langage


Scriptol et PHP

Scriptol et C++

Interpréteur Scriptol

Les extensions

Outils

Marketing et avenir

 

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:

  1. Menu windows
  2. Panneau de configuration
  3. Système
  4. Onglet avancé
  5. Bouton "variables d'environnement".

Example avec bcc32:

PATH = %PATH%;c:\bcc55\bin\ 
ll

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:

  1. Le langage procédural,
  2. le langage orienté objet,
  3. 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.

Forum

Commander le port parallèle avec scriptol

08-07-2009 18:11:36

lapenduledargent

Bonjour, Un petit renseignement SVP, Avec scriptol compilé sous linux, y-a-t-il la possibilité de commander la lecture ou l'écriture du port // via (ioperm en c) ou par le fichier dev/port. Merci d'avance de votre réponse. Pierre
09-07-2009 20:28:20

webmaster

Bonjour Dans quel contexte?
10-07-2009 12:14:20

lapenduledargent

Bonjour, Création d'une interface graphique avec Scriptol
18-07-2009 20:34:41

webmaster

Cela dépend en fait uniquement des librairies que l'on va lier à l'application. Tout comme avec un programme écrit directement en C. La librairie standard du langage ne comporte pas de fonction pour ce faire. N'importe quelle librairie peut être incluse si l'on définit l'interface des fonctions.... Exemple: En c: void mafonction(int x) En Scriptol: extern void mafonction(int) /extern
19-07-2009 14:23:43

lapenduledargent

Merci du renseignement. C'est donc possible en scriptol. Je vais faire des tests. Bon weekend Pierre

Quels fichiers runtime sont à inclure pour distribuer mon application?

20-01-2007 14:59:56

e-mail

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.
21-01-2007 15:49:47

FAQ

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. Scriptol PHP utilise les fonctions et extensions de PHP, il n'y a rien à installer, sauf PHP!

Redéclaration: chaque langage OO devrait utiliser des espaces de noms

20-01-2007 15:01:28

e-mail

Si les utilisateurs ne peuvent pas réutiliser des identifieurs à l'intérieur des blocks, on risque de manquer d'identifieurs. En outre, une seule omission d'initialisation, suivie par l'utilisation de la variable, passe outre les contrôles d'affectation.
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
21-01-2007 15:48:47

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.