1.4.9 instable
Modérateur : xcasadmin
1.4.9 instable
J'ai mis en ligne des binaires instables (versions 1.4.9 linux debian, win64, mac) avec :
1/ un pre-interpreteur qui detecte de la syntaxe Python (de base uniquement, c'est pour le lycee), ainsi que quelques commandes issues du monde Python (par ex. range, randint, shuffle). Dans Xcas, on peut desormais choisir Python comme syntaxe.
2/ de nouvelles commandes d'optimisation ecrites par Luka Marohnic (documentees en anglais dans cascmd_en.tex)
Il y a surement des bugs a corriger avant d'en faire une version stable, mais je pense que le temps passe a implementer de la compatibilite Python n'est pas du temps perdu...
1/ un pre-interpreteur qui detecte de la syntaxe Python (de base uniquement, c'est pour le lycee), ainsi que quelques commandes issues du monde Python (par ex. range, randint, shuffle). Dans Xcas, on peut desormais choisir Python comme syntaxe.
2/ de nouvelles commandes d'optimisation ecrites par Luka Marohnic (documentees en anglais dans cascmd_en.tex)
Il y a surement des bugs a corriger avant d'en faire une version stable, mais je pense que le temps passe a implementer de la compatibilite Python n'est pas du temps perdu...
Re: 1.4.9 instable
Mise a jour. La compatibilite Python devrait etre un peu meilleure. J'ai aussi ajoute une optimisation pour les petites boucles "standards" (j variant de a a b avec a et b entiers). Et pour les germanistes, l'aide courte est disponible en allemand.
Re: 1.4.9 instable
Nouvelle mise a jour.
Re: 1.4.9 instable
Nouvelle mise a jour.
Correction d'un bug dans les optimisations pour les boucles. Le support de for/in devrait maintenant etre a nouveau compatible avec la syntaxe C, cela impose toutefois d'utiliser des crochets pour des definitions du genre [j^2 for j in range(100) if isprime(j)]
Il faudrait voir quelles sont les fonctions de la librairie standard Python qu'il serait bien d'avoir ou de rendre compatible (il me semble qu'il ne manque pas grand chose de ce qu'il y a sur http://python.lycee.free.fr).
Correction d'un bug dans les optimisations pour les boucles. Le support de for/in devrait maintenant etre a nouveau compatible avec la syntaxe C, cela impose toutefois d'utiliser des crochets pour des definitions du genre [j^2 for j in range(100) if isprime(j)]
Il faudrait voir quelles sont les fonctions de la librairie standard Python qu'il serait bien d'avoir ou de rendre compatible (il me semble qu'il ne manque pas grand chose de ce qu'il y a sur http://python.lycee.free.fr).
-
- Messages : 1137
- Inscription : dim. mai 20, 2007 7:09 am
- Localisation : Paris
- Contact :
Re: 1.4.9 instable
Je ne sais pas si c'est simple, mais proche de ce qui est implémenté:
Code : Tout sélectionner
4>> L:=[0,1,2,3,4,5,6,7,8,9]
[0,1,2,3,4,5,6,7,8,9]
// Time 0
15>> L[3:-1] // un de trop par rapport a python
[3,4,5,6,7,8,9]
// Time 0
16>> L[1:] // pas implemente
Re: 1.4.9 instable
Alors la je ne comprends pas la logique de python, il ne prennent pas en compte le dernier element du : ?? Ca me parait tellement anti-intuitif que je n'ai meme pas verifie. En fait, on ne peut pas acceder aux derniers elements de la liste avec la notation -1. Bon je vais quand meme le faire.
-
- Messages : 1137
- Inscription : dim. mai 20, 2007 7:09 am
- Localisation : Paris
- Contact :
Re: 1.4.9 instable
en python:
les range et slice sont ferme à gauche et ouvert a droite.
L[-1] donne bien le dernier element. par contre la syntaxe avec : est un slice donc ferme a gauche ouvert a droite. Il semble que l'on ait aussi le droit de deborder sans que ca donne d'erreur.
Code : Tout sélectionner
>>> L=[0,1,2,3,4,5,6,7,8,9]
>>> L[-1]
9
>>> L[1:]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> L[2:-0]
[]
>>> L[2:9]
[2, 3, 4, 5, 6, 7, 8]
>>> L[2:10]
[2, 3, 4, 5, 6, 7, 8, 9]
>>> L[10]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> L[2:100] # ca ne rale pas
[2, 3, 4, 5, 6, 7, 8, 9]
L[-1] donne bien le dernier element. par contre la syntaxe avec : est un slice donc ferme a gauche ouvert a droite. Il semble que l'on ait aussi le droit de deborder sans que ca donne d'erreur.
Re: 1.4.9 instable
oui mais tu dois connaitre la taille, or c'est justement l'interet d'utiliser le -1.
Re: 1.4.9 instable
Bon, j'ai corrige dans le source et mis a jour Xcas pour Firefox
-
- Messages : 1137
- Inscription : dim. mai 20, 2007 7:09 am
- Localisation : Paris
- Contact :
Re: 1.4.9 instable
en python c'est la syntaxe
qui donne de l'indice 1 jusque la fin. sous xcashtml elle n'a pas l'ai implementée mais c'est peut etre genant pour ton parser?
Code : Tout sélectionner
L[1:]
Code : Tout sélectionner
// Python-like syntax, check string delimiters "" and declare local variables.
Translated to Xcas as:
L[1..-1]
:;
Re: 1.4.9 instable
si, il faut juste que tu rajoutes un ; et n'importe quoi par exemple 1 pour voir le resultat (car je rajoute un :;)
Re: 1.4.9 instable
Mise a jour 1.4.9-5, j'ai aussi mis a jour les debian stables.
Re: 1.4.9 instable
1.4.9-7
Re: 1.4.9 instable
1.4.9-13
Re: 1.4.9 instable
1.4.9-15:
Ajoute une session exemple Mandelbrot.xws dans le menu Aide>Exemples>demo
Le programme correspondant illustre la possibilite de typer les variables, ce qui permettra ulterieurement de traduire efficacement un programme Xcas en module dynamique C++ lorsque la commande cpp sera au point.
On peut ainsi nettement accelerer les calculs sous linux en compilant le module giac_Mandelbrot.cpp (a recopier depuis /usr/share/giac/examples/Exemples/demo/, la commande compilation est en 1ere ligne et s'execute depuis le menu Tools, Compile d'emacs). Ce fichier a ete presque entierement auto-genere avec la commande cpp(Mandelbrot), j'ai juste modifie les initialisations de complex<double>.
Ajoute une session exemple Mandelbrot.xws dans le menu Aide>Exemples>demo
Le programme correspondant illustre la possibilite de typer les variables, ce qui permettra ulterieurement de traduire efficacement un programme Xcas en module dynamique C++ lorsque la commande cpp sera au point.
On peut ainsi nettement accelerer les calculs sous linux en compilant le module giac_Mandelbrot.cpp (a recopier depuis /usr/share/giac/examples/Exemples/demo/, la commande compilation est en 1ere ligne et s'execute depuis le menu Tools, Compile d'emacs). Ce fichier a ete presque entierement auto-genere avec la commande cpp(Mandelbrot), j'ai juste modifie les initialisations de complex<double>.