π
<-

Duktape: JavaScript sur TI-Nspire ! Exemples de maths...

:32tins: :32tinsktpb: :32tinsktpn: :32tinscas: :32tinstpkc: :32tinstpktpb: :32tinstp: :32tinscastp: :32tinscmc: :32tinscx: :32tinscxcas:

Duktape: JavaScript sur TI-Nspire ! Exemples de maths...

Unread postby Adriweb » 27 Jun 2015, 01:59






1) IntroductionGo to top

En 2013, Sami Vaarala a commencé à travailler sur Duktape, un moteur JavaScript engine axé sur la portabilité et une faible empreinte, avec une intégration aisée au sein d'autres programmes C/C++.
Entre autre, Duktape est utilisé en tant qu'interpreteur JS dans les appareils d'AllJoyn (https://allseenalliance.org) IoT (Internet of Things), dans l'Atomic Game Engine, etc.
Plusieurs mois après le port de MicroPython sur la plateforme Nspire, dont nous avons parlé plus tôt, un port de Duktape pour Nspire platform a été effectué par Legimet (d'après une suggestion de Lionel Debroux), et il s'avère que le travail initial pour le faire compiler a été remarquablement concis, preuve de code de qualité :) Il a cependant fallu un peu plus de code pour avoir une console etc. sur la calculatrice.
In 2013, Sami Vaarala started working on Duktape, a JavaScript engine focused on portability and a small footprint, with easy embeddability in other C/C++ programs.
Among other purposes, Duktape is used as the JS interpreter in AllJoyn (https://allseenalliance.org) IoT (Internet of Things) devices, the Atomic Game Engine, etc.
Six months after a port of MicroPython to the Nspire platform, which we covered earlier, a port of Duktape to the Nspire platform was performed by Legimet (on Lionel Debroux’s suggestion), and in fact the initial work to make it compile for it was remarkably concise, proof of good coding :) Though a bit more code had to be written to have a console etc. for the calculator.


Veuillez noter que Ndless est requis pour pouvoir profiter de Duktape. Veuillez bien suivre le tutorial... Mais attention, si vous avez une CX (CAS) avec un OS 4.0 (ou ultérieur), ce qui est le cas de toutes les machines CX (CAS) neuves récemment, Ndless n'y existant pas, vous pouvez continuer à envoyer un mail de protestation contre le verrouillage de la plate-forme à ti-cares@ti.com et en faveur de son ouverture... un modèle est proposé à la fin de la news précédente à propos de Micro Python.
Please note that Ndless is required to enjoy Duktape. Please follow the tutorial(s) ... But beware, if you have an Nspire CX (CAS) with OS 4.0 (or later), which is the case of all recent CX (CAS) devices, Ndless not existing for this OS, you can continue to send an email of protest against the locking of the platform to ti-cares@ti.com and wish for a more open view... a template is proposed at the end of the previous Micro Python news article.


2) Duktape exécute du code JavaScript
2) Duktape runs JavaScript code
Go to top

Enfin, du code "ECMAScript", techniquement, mais tout le monde connaît plutôt le terme "JavaScript".
Duktape gère l'ECMAScript 5.1 et implèmente même un très petit nombre de fonctionnalités du récent ECMAScript 6, aussi connu sous le nom d'Harmony.
Well, "ECMAScript" code, technically, but everyone rather knows the "JavaScript" term.
Duktape supports ECMAScript 5.1 and even implements very few features from the recently released ECMAScript 6, also known as Harmony.


Voici un exemple simple (Calcul de fibonacci(n)) écrit de la même façon dans les différentes langages désormais disponibles sur la TI-Nspire :
Here is a simple example (computing fibonacci(n)) written the same way in the different languages now available on the TI-Nspire:

Basic
Lua
Python
JavaScript
Code: Select all
Define fibo(n)
Func
  If (n <= 1) Then
    return n
  Else
    return fibo(n-1)+fibo(n-2)
  EndIf
EndFunc

fibo(30)
Code: Select all
function fibo(n)
  if (n <= 1) then
    return n
  else
    return fibo(n-1)+fibo(n-2)
  end
end

print(fibo(30))
Code: Select all
def fibo(n):
  if (n <= 1):
    return n
  else:
    return fibo(n-1)+fibo(n-2)

print(fibo(30))
Code: Select all
function fibo(n) {
  if (n <= 1) {
    return n;
  } else {
    return fibo(n-1)+fibo(n-2);
  }
}

print(fibo(30));

Note: ce code JavaScript là est plus lent que son équivalent Lua ou Python à cause d'un problème connu dans Duktape.
Mais même s'il est plus lent que le Lua ou le Python, il en demeure bien plus rapide que le TI-Basic intégré !
Note: this particular JavaScript code runs slower than Lua or Python due to a specific known issue in Duktape.
But still, while it is currently slower than the integrated Lua, it is much faster than the integrated TI-Basic!


3) Autres exemples
3) Other examples
Go to top

Un autre exemple classique est le tracé d'un Mandelbrot. Pour ceci, le TI-Basic n'est tout simplement pas capable de le faire, puisqu'il n'existe pas de moyens de contrôler des pixels sur un/l'écran graphique…. Mais Duktape peut le faire :D
Alors qu'une version Lua optimisée et une version Micro Python finissent le tracé (16 itérations) en environ 30 secondes, la version Duktape est plus lente, avec environ une minute au chrono. Note: Une version C, sans optimisation particulière, les ridiculise tous, en quelques secondes...
Another classic example is a Mandelbrot set plot. For that, TI-Basic is simply not capable of doing it since there is no way to control pixels from a/the graph screen :( It is however possible to do it with Duktape :D
While optimized Lua and Micro Python finish the plot (16 iterations) in about 30 seconds, Duktape's version is slower and takes about a minute. Note: A C version, without any specific optimization, blows them all out of the water, in a few seconds...


Voici quelques autres exemples en lien avec les maths:
Here are some other math-related examples:


Changement de base numérique
Numerical base conversion
Renvoie une liste des "chiffres" de l'écriture de n en base b / Returns list of the "figures" of the representation of n in the b base
Le chiffre de poids le plus fort est le plus à gauche / The most significant figure is leftmost

Show/Hide spoilerAfficher/Masquer le spoiler

Basic
Lua
Python
JavaScript
Code: Select all
Define baseb(n,b)=
Func
Local rep
{}->rep
While n>0
  augment({mod(n,base)},rep)->rep
  intdiv(n,base)->n
EndWhile
Return rep
EndFunc
Code: Select all
function baseb(n, b)
    local t = {}
    local tmp = 0
    while n > 0 do
        n, tmp = math.floor(n/b), n%b
        table.insert(t, 1, tmp)
    end
    return t
end
Code: Select all
def baseb(n, b):
    t = []
    while n > 0:
        n, tmp = divmod(n, b)
        t = [tmp] + t
    return t
Code: Select all
function baseb(n, b) {
    var t = [];
    while (n > 0) {
        t = [n%b] + t;
        n = Math.floor(n/b);
    }
    return t;
}


Calcul de Pi (algorithme du compte-goutte)
Compute Pi digits
Renvoie une chaîne contenant les n premières décimales de Pi / Returns a string containing the n first digits of Pi
Show/Hide spoilerAfficher/Masquer le spoiler

Basic
Lua
Python
JavaScript
Code: Select all
Define cpi(n)=
Func
Local a,b,a1,b1,a0,b0,s,p,q,d,d1
4->a:1->b
12->a1:4->b1
""->s
1->p:3->q
While n >= 0
  p+q->p: q+2->q
  a->a0: b->b0
  a1->a: b1->b
  p*a0+q*a1->a1
  p*b0+q*b1->b1
  intdiv(a,b)->d
  intdiv(a1,b1)->d1
  While d = d1 and n >= 0
    s & string(d)->s
    n-1->n
    10*mod(a,b)->a
    10*mod(a1,b1)->a1
    intdiv(a,b)->d
    intdiv(a1,b1)->d1
  EndWhile
EndWhile
Return left(s,1)&","&mid(s,2)
EndFunc
Code: Select all
local floor = math.floor

function cpi(n)
    -- Wrong starting from the 25th digit!
    -- Crashes TINCS if > 109
    local a, b, a1, b1 = 4, 1, 12, 4
    local s = ""
    local p, q = 1, 3
    while n >= 0 do
        p, q = p+q, q+2
        a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
        d, d1 = floor(a/b), floor(a1/b1)
        while d == d1 and n >= 0 do
            s = s .. d
            n = n-1
            a, a1 = 10*(a%b), 10*(a1%b1)
            d, d1 = floor(a/b), floor(a1/b1)
        end
    end
    return s:sub(1,1) .. "," .. s:sub(2)
end
Code: Select all
def cpi(N):
    a, b, a1, b1 = 4, 1, 12, 4
    s = ""
    p, q = 1, 3
    while N >= 0:
        p, q = p+q, q+2
        a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
        d, d1 = a//b, a1//b1
        while d == d1 and N >= 0:
            s += str(d)
            N -= 1
            a, a1 = 10*(a%b), 10*(a1%b1)
            d, d1 = a//b, a1//b1
    return s[0] + "," + s[1:]
Code: Select all
function cpi(n) {
    var floor = Math.floor;
    var a = 4, b = 1, a1 = 12, b1 = 4, a0, b0, d, d1;
    var s = "";
    var p = 1, q = 3;
    while (n >= 0) {
        p = p + q, q = q + 2;
        a0 = a1, b0 = b1;
        a1 = p*a+q*a1, b1 = p*b+q*b1;
        a = a0, b = b0;
        d = floor(a/b), d1 = floor(a1/b1);
        while (d == d1 && n >= 0) {
            s += d;
            n--;
            a = 10*(a%b), a1 = 10*(a1%b1);
            d = floor(a/b), d1 = floor(a1/b1);
        }
    }
    return s[0] + ',' + s.substr(1);
}


Liste des premiers nombres premiers (crible d'Eratosthène)
List of the first prime numbers (Eratostenes' sieve)
Renvoie la liste des nombres premiers inférieurs ou égaux à n par le crible d'Ératosthène / Returns the list of the prime numbers <= n using Eratostenes' sieve
Show/Hide spoilerAfficher/Masquer le spoiler

Basic
Lua
Python
JavaScript
Code: Select all
Define primes_list(n)=
Func
Local t,r,i,j
seq(when(i=1 or (mod(i,2)=0 and i>2),_,i),i,1,n)->t
floor(sqrt(n))->r
3->i
While i <= r
  If not(isvoid(t[i])) Then
    For j,i^2,n,i
      _->t[j]
    EndFor
  Endif
  i+2->i
EndWhile
Return delvoid(t)
EndFunc
Code: Select all
-- Modified from http://rosettacode.org
function primes_list(n)
    if n < 2 then return {} end
    local t = {false} -- init
    local max = math.sqrt(n)
    for i = 2, n do
        t[i] = true
    end
    for i = 2, max do
        if t[i] then
            for j = i*i, n, i do
                t[j] = false
            end
        end
    end
    local primes = {}
    for i = 2, n do
        if t[i] then
            primes[#primes+1] = i
        end
    end
    return primes
end
Code: Select all
# From http://rosettacode.org
def primes_upto(limit):
    is_prime = [False] * 2 + [True] * (limit - 1)
    for n in range(int(limit**0.5 + 1.5)):
        if is_prime[n]:
            for i in range(n*n, limit+1, n):
                is_prime[i] = False
    return [i for i, prime in enumerate(is_prime) if prime]
Code: Select all
function primes_list(n) {
    if (n < 2)
        return [];
    var t = [false, false];
    var max = Math.sqrt(n);
    for (var i = 2; i <= n; i++)
        t[i] = true;
        for (var i = 2; i <= max; i++)
            if (t[i])
                for (var j = i*i; j <= n; j+=i)
                    t[j] = false;
    return t.reduce(function(a, e, i) {
        if (e)
            a.push(i);
        return a;
    }, []);
}


4) Comparaison globale des langages disponibles
4) Overall comparison of available languages
Go to top












Nspire-Basic
Nspire-Lua
Micro Python
JavaScript (Duktape)
C / C++
Supporté officiellement par TI
OuiOui
(OS 3.x+ requis)
Non
(Ndless requis)
Non
(Ndless requis)
Non
(Ndless requis)
Répandu dans l'informatique en général
Non
(calculatrices TI seulement)
Oui (plugins)
Faiblement (standalone)
Très
(tous domaines)
Très
(souvent sur le Web)
Très
(tous domaines)
Intérêt potentiel de professeurs
BonMoyen +ElevéPlutôt élevéMoyen -
Vitesse d'exécution
BasseMoyenneMoyenne +Moyenne -La plus élevée
Commandes graphiques
NonOuiOuiOuiOui
Lecture du clavier
Non
(sauf popup d'input)
Oui
(une touche à la fois)
Non
(console pour le moment)
Oui
(une touche à la fois)
Oui
(multi-touches possible)
Lecture du touchpad
NonNon
(sauf clics)
Non
(pour le moment)
Non
(pour le moment)
Oui
Intégration au moteur de calcul & CAS
OuiOuiNon (*)Non (*)Non (*)
Editable directement sur calculatrice
OuiOui
(éditeurs tiers)
Oui
(console interactive
et éditeur tiers)
Oui
(console interactive
et éditeur tiers)
Non
(nécessiterait un compilateur)
Peut utiliser des fichiers externes
NonNonOuiOuiOui
Idéal pour apprendre à programmer
Oui
(algorithmes)
OuiOuiOuiMoyennement
(plus bas niveau, plus difficile)












Nspire-Basic
(Nspire-)Lua
Micro Python
JavaScript (Duktape)
C / C++
Official support by TI
YesYes
(OS 3.x+ required)
No
(Ndless required)
No
(Ndless required)
No
(Ndless required)
Widely used in general computer science
No
(TI calculators only)
Yes (plugins)
Low (standalone)
Very
(everywhere)
Very
(Web especially)
Very
(everywhere)
Potential interest for teachers
GoodAverage +HighHighAverage -
Execution speed
LowAverageAverage +Average -Highest
Graphical commands
NoYesYesYesYes
Keyboard input
No
(except input popup)
Yes
(single key at a time)
No
(console only for now)
Yes
(single key at a time)
Yes
(multiple keys at a time)
Touchpad reading
NoNo
(except clicks)
No
(for now)
No
(for now)
Yes
Integration to the built-in
computation engine & CAS
YesYesNo (*)No (*)No (*)
Direct calculator-side edit
YesYes
(third-party editors)
Yes
(interactive console
and third-party editors)
Yes
(interactive console
and third-party editors)
No
(would require a compiler)
Can use external files
NoNoYesYesYes
Good choice for a
first programming language
Yes
(algorithms)
YesYesYesMidly
(lower level, harder)
(*): intégration au CAS difficile à réaliser sans doc de TI, même s'il y a eu les PoC de Lionel Debroux et Excale.
(*): CAS integration is hard without documentation from TI, even if Lionel Debroux and Excale made PoC programs.


5) Et pour la suite...
5) What's next?
Go to top

  • Davantage de liasons ("bindings") avec l'OS, comme une API de graphique étendue, et l'accès à d'autres fonctionnalités de l'OS
  • debugage -- c'est géré depuis Duktape 1.2.0, mais il faut maintenant programmer la couche de transport et l'interface graphique
  • gestion du multi-ligne dans le "REPL" (la console, en gros)
  • gestion du JavaScript dans PyWrite
  • gestion de modules externes natifs (ce qui nécessiterait le support de bibliothèques partagées dans Ndless)
  • more OS bindings, such as an expanded graphics API and access to other OS features
  • debugging -- support was added in Duktape 1.2.0, but a debug transport and UI would have to be written
  • multiline support in the REPL
  • JavaScript support in PyWrite
  • support for external native modules (would require shared library support in Ndless)


6) Liens / Ressources
6) Links / Resources
Go to top



Have fun :D

Article by/par Adriweb & Legimet

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.9%
 
Posts: 14744
Images: 1119
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Duktape: JavaScript sur TI-Nspire ! Exemples de maths...

Unread postby Wistaro » 27 Jun 2015, 12:24

Excellente nouvelle !

Mais j'ai quelques petites questions:

~ Quand vous dites "éditeur tiers", duquel s'agit-il? Existe-t-il un bon IDE pour coder on-calc?

~ Le code en lui-même est-il exactement le même que le javascript exécuté par un navigateur web? Ayant des connaissances dans ce langage, j'aimerais bien les appliquer sur nspire (sinon je devrais apprendre un nouveau langage, ce qui ne me déplairais pas mais bon autant
réutiliser ses connaissances)

~ Le JS pourrait-il remplacer le LUA un jour ? Peut-on faire des aussi bons jeux/applications en JS qu'en LUA? (même si le LUA est plus rapide)


Merci !
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.4%
 
Posts: 3183
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: Duktape: JavaScript sur TI-Nspire ! Exemples de maths...

Unread postby Adriweb » 27 Jun 2015, 17:01

Wistaro wrote:Quand vous dites "éditeur tiers", duquel s'agit-il? Existe-t-il un bon IDE pour coder on-calc?

Le support du JS est en train de se rajouter à PyWrite. Mais sinon n'importe quel éditeur de texte pour Ndless fait l'affaire :)

Wistaro wrote:Le code en lui-même est-il exactement le même que le javascript exécuté par un navigateur web? Ayant des connaissances dans ce langage, j'aimerais bien les appliquer sur nspire (sinon je devrais apprendre un nouveau langage, ce qui ne me déplairais pas mais bon autant réutiliser ses connaissances)

Le langage en lui même, oui, ça reste du JavaScript, sauf qu'il n'y a bien sûr pas tout l'API relatif au DOM... puisqu'il n'y a pas de DOM à gérer sur la calculatrice.

Wistaro wrote:Le JS pourrait-il remplacer le LUA un jour ? Peut-on faire des aussi bons jeux/applications en JS qu'en LUA? (même si le LUA est plus rapide)

Je doute qu'il y ait un intérêt à remplacer le Lua - ce dernier est déjà plutôt bien établi, et pour le moment plus rapide. Par ailleurs, comme c'est TI qui le supporte officiellement, ils ont la capacité de le faire intéragir avec l'OS facilement... contrairement à Legimet, pour qui c'est bien plus complexe de créer ces fameux OS bindings ;)
Mais, oui, vu que la gestion du keypad est là et qu'une API graphique est aussi disponible, il est parfaitement possible de déjà réaliser des jeux/applications.

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.9%
 
Posts: 14744
Images: 1119
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Duktape: JavaScript sur TI-Nspire ! Exemples de maths...

Unread postby parisse » 27 Jun 2015, 19:14

Tres interessant, je suis curieux de savoir si on peut faire tourner giac.js (compile en javascript par emscripten) avec ce moteur javascript, et a quelle vitesse. Ca permettrait de remplacer un Non par un Oui dans le tableau :-)
Javascript est un langage de script qui meriterait d'etre plus mis en avant en France. Ca fait 2 mois que je m'y suis mis pour developper une interface HTML5 a giac.js, et je l'apprecie (alors que certains aspects de Python me rebutent comme l'indentation), il faut aussi dire que pour les choses simples. la syntaxe est vraiment tres proche de celle de C (et de Xcas).
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Duktape: JavaScript sur TI-Nspire ! Exemples de maths...

Unread postby Lionel Debroux » 27 Jun 2015, 20:21

JS est plus bordélique que Python, et la façon de réaliser l'héritage objet n'est pas classique, bien que du sucre syntaxique ait été ajouté en ES6. Il y a des recoins sombres, comme en Perl ou en C++, par exemple. Mais JS est assez productif...
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.3%
 
Posts: 6865
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: Duktape: JavaScript sur TI-Nspire ! Exemples de maths...

Unread postby parisse » 28 Jun 2015, 07:01

Pour moi JS et Python sont d'abord des langages de script, faire de la POO avec me parait peu pertinent, mieux vaut faire du C++ ou autre. JS a aussi un avantage sur Python, c'est la vitesse d'execution qui se rapproche de code compile natif avec des navigateurs modernes (par exemple giac.js ne met que 2 fois plus de temps pour factoriser 2^128+1 par rapport a du code natif). C'est le langage des navigateurs, pas besoin d'installer quoi que ce soit pour executer du JS.
Apres, je ne pretends pas que JS a toutes les qualites, juste qu'il me semble qu'il meriterait une place plus importante dans l'enseignement en France.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Duktape: JavaScript sur TI-Nspire ! Exemples de maths...

Unread postby Lionel Debroux » 28 Jun 2015, 07:38

L'héritage est quand même pratique pour avoir des objets et leurs instances qui se comportent de façon uniforme, bien au-delà de ce que fournit le langage: par exemple, au-delà de la paire constructeur+destructeur, les concepts de la programmation à composants font souvent ressortir des interfaces comme "cycle de vie", possédant des méthodes d'initialisation+désinitialisation, démarrage+arrêt, méthode de configuration à froid (voire de reconfiguration à chaud, très difficile dans le cas général).

Le Global Interpreter Lock de Python coûte cher en performance et en parallélisme, ouais.

Je suis d'accord sur la rapidité du JS si on peut écrire / générer de l'asm.js (et bientôt WebAssembly), et naturellement, sur le fait qu'il n'y ait rien à installer.
Mais dans mon post précédent, je voulais signifier, de façon pas assez détaillée, que je suis partagé sur l'utilisation plus large du JS pour l'enseignement. Il y a déjà beaucoup trop d'informaticiens du monde réel qui produisent du code qui pose de gros problèmes de maintenabilité et de sécurité, à cause de:
* paresse: c'est une tendance naturelle des êtres humains, et surtout des informaticiens !
* méconnaissance: sauf exception, les cursus d'informatique n'apprennent pas les bonnes pratiques de sécurité, en particulier;
* manque de temps: même si de nos jours la plupart des cursus donnent des infos de génie logiciel, dans le monde réel, on a hélas rarement le temps de mettre en pratique des choses pourtant indispensables (sans même parler de pouvoir faire les choses dans l'ordre qu'il faudrait, sans interférence contre-productive du marketing et du management), et on perd du temps et de l'argent.
Ca fait bientôt 4 mois qu'au boulot, notre petite équipe fait du code JS vraiment n'importe comment pour la maintenabilité et la sécurité, par manque de temps. J'ai mis en place les concepts sus-mentionnés de programmation à composants partout où je pouvais dans les classes du backend, avec l'accord de l'architecte que j'avais également convaincu sur le précédent projet, mais c'est très, très loin d'être suffisant.

Or, il est plus facile d'apprendre à utiliser un langage permissif et avec des recoins sombres dangereux en pratique (JS, PHP) après un langage un peu carré (Pascal, ou peut-être les langages récents type Go) que le contraire.
Dans le même ordre d'idées, il est plus facile pour un bon programmeur assembleur CISC de devenir un bon programmeur assembleur RISC (il faut, au premier ordre, découper les instructions puissantes en instructions simples), qu'à un bon programmeur RISC de devenir un bon programmeur CISC (resynthétiser des instructions complexes alors qu'on a été formaté à tout découper en instructions triviales pour processeur idiot).
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.3%
 
Posts: 6865
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: Duktape: JavaScript sur TI-Nspire ! Exemples de maths...

Unread postby Nemhardy » 28 Jun 2015, 13:58

Chouette nouvelle ! C'est super que la palette de langages disponibles sur calculatrices et relativement "classiques" dans le monde de l'informatique s'élargisse ainsi ! :)
Encore une fois ça montre que le verrouillage des machines est vraiment idiot, en tout cas dans ces proportions là...

(En plus, comme dit, effectivement Duktape a l'air bien léger au niveau de ce qu'il demande pour tourner ! Quand je vois ça, je me dis qu'un portage sur Prizm semble tout à fait envisageable, enfin théoriquement (même si les performances ne seront peut-être pas son principal atout, ça peut être un petit projet sympa à essayer, pour de petits scripts !). Après on se rappellera que le fossé séparant la théorie de la pratique est toujours plus grand en pratique qu'en théorie, mais bon, je m'y pencherais bien pendant les vacances, ne serait-ce que pour tenter le truc !)
Je maintiens le portage d'Eigenmath pour les Casio monochromes, n'hésitez pas à y jeter un œil si ça vous intéresse ! :p
User avatar
NemhardyPremium
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 48%
 
Posts: 45
Joined: 28 Dec 2014, 22:06
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Duktape: JavaScript sur TI-Nspire ! Exemples de maths...

Unread postby parisse » 28 Jun 2015, 15:32

Lionel Debroux wrote:Mais dans mon post précédent, je voulais signifier, de façon pas assez détaillée, que je suis partagé sur l'utilisation plus large du JS pour l'enseignement. Il y a déjà beaucoup trop d'informaticiens du monde réel qui produisent du code qui pose de gros problèmes de maintenabilité et de sécurité...

Il y a disons deux types de programmeurs: ceux dont c'est le metier et qui doivent manipuler des concepts comme la POO, etc., et les autres, qui constituent la tres grande majorite (voire l'ecrasante majorite si on pense aux concepts de securite). Les premiers n'auront aucun mal a decouvrir JS si on ne leur enseigne pas donc ce n'est pas grave, par contre je pense que les seconds vont rester sur le langage qu'on leur a enseigne ou celui que leur copain/collegue leur a montre. Pour ceux-la, ne pas connaitre JS me parait dommage, car cela ouvre il me semble nettement plus de connectivite.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Duktape: JavaScript sur TI-Nspire ! Exemples de maths...

Unread postby Adriweb » 29 Mar 2017, 12:31

Je viens de voir ceci: https://github.com/socraticorg/mathsteps .
Ca fait des simplifications (et un peu de résolution) d'expressions avec affichage d'étapes.

Bon, c'est fait en JS, mais je doute que ce soit facilement adaptable vers Duktape... :P Enfin bref, ça reste rigolo.

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.9%
 
Posts: 14744
Images: 1119
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb


Return to News TI-Nspire

Who is online

Users browsing this forum: ClaudeBot [spider] and 14 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
627 utilisateurs:
>614 invités
>4 membres
>9 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)