Tempo fa esisteva il Javelin un microcontrollore di parallax che veniva programmato in java quindi si si può, in teoria si possono programmare in tutti i linguaggi immaginabili solo che.
In ordine di velocità di esecuzione:
-codice macchina
-assembler
-C Ansi
-Basic
-linguaggi OOP
Più il linguaggio è d'alto livello più è avido di risorse.
La bontà comunque del compilatore sta nell'ottimizzare al massimo l'eseguibile,detto questo se il compilatore appunto è fatto bene bene non è detto che java giri male.
Poi di questa cosa bisogna vedere che librerie si trovano, etc...
Codice macchina e assembly sono la stessa cosa, il secondo altro non è che una codifica in alias facilmente memorizzabili e comprensibili per gli esseri umani dei codici esadecimali delle varie istruzioni, inoltre l'assembly consente l'uso di etichette per i salti e altre comodità che rendono più semplice la programmazione però alla fine ogni riga assembly viene tradotta nel corrispettivo codice macchina con rapporto 1:1.
DarkCoffee:
Davvero è possibile un microcontroller che supporti java-script?
Guarda che quel chip NON è un semplice microcontroller tipo Atmega328, è un chip con core ARM a 32 bit e 72 MHz
STM32 32-bit 72MHz ARM Cortex M3 CPU
La difficoltà dell'autore è stata nello scrivere un interprete Javascript ma non vedo molta difficoltà in questo se si hanno le conoscenze, dato che interpreti per Atmega328 esistono già (vedi Bitlash, Tinybasic) e rispetto a questo il chip usato ha molte più capacità.
uwefed:
Non capisco che senso abbia un interprete di Javascript senza un interprete HTML.
Ciao Uwe
Javascript controlla il microcontrollore, non ha nulla a che vedere con le pagine web
L'idea a me piace molto Javascript a mio avviso è molto più semplice ed immediato del classico Java (oop) ed offre strutture avanzate con il minimo dispendio di tempo in termini di stesura codice certo è che come detto stamane perdi un sacco di velocità, un conto è un PC un conto sono queste MCU che per quanto usino processori ARM con clock elevato risentono molto della pesantezza del codice...
per me perderesti tutto:
java è un linguaggio da compilare per il computer, così come il C, l'assembly (anche se in realtà più che una compilazione è una traduzione come ha detto astro), il c++ ecc...
mentre linguaggi quali l'html, javascript e css sono interpretati.
uwefed:
Non capisco che senso abbia un interprete di Javascript senza un interprete HTML.
Ciao Uwe
Javascript controlla il microcontrollore, non ha nulla a che vedere con le pagine web
L'idea a me piace molto Javascript a mio avviso è molto più semplice ed immediato del classico Java (oop) ed offre strutture avanzate con il minimo dispendio di tempo in termini di stesura codice certo è che come detto stamane perdi un sacco di velocità, un conto è un PC un conto sono queste MCU che per quanto usino processori ARM con clock elevato risentono molto della pesantezza del codice...
Allora esistono 2 linguaggi Javascript diversi?
Ciao Uwe
lock: @DarkCoffee
se vuoi io ho qui una anticaglia del 2001, erano gli anni in cui andava di moda eseguire java ovunque, anche su una macchina 8051 pompata a 40Mhz. Sotto e' un macinino ad 8bit, anche se ha la LAN integrata.
lock:
L'accrocchio pompato e' una virtual machine che si mangia il bytecode prodotto invocando javac, per java script serve un interprete, il problema si complica, e allora piuttosto che un interprete java io vedrei molto meglio un interprete python o Lua. Offrono entrambi piu' possibilita' con un linguaggio meno contorto.
Adoro Java, mi ha semplificato la vita all'università!
E' da poco che ho scoperto il mondo dei microcontroller e mi sto appassionando sempre più
Quindi all'inizio ho esultato per aver visto "espruino", dopo però, mi è venuto qualche dubbio.
Ed infatti, come si può leggere nei seguenti post, java è un linguaggio troppo pesante, anche senza essere completo di tutte le librerie.
Ma, essendo javascript un linguaggio interpretato, non è ancora più pesante di java stesso?
quel che mi chiedo è: su un microcontrollore quali vantaggi durante la scrittura può dare il binding dinamico o certi tipi di reflection, oltre ad appesantire di brutto l'ambiente di runtime?
secondo me può andare benissimo un linguaggio ad oggetti,ma dovrebbe essere parzialmente castrato..
Secondo me se deve essere castrato un linguaggio tanto vale usare quello più a basso livello.
Alla fine si cerca sempre di semplificarsi la vita, quando si deve sempre ritornare da "mamma" XD
uwefed:
Non capisco che senso abbia un interprete di Javascript senza un interprete HTML.
Ciao Uwe
Javascript controlla il microcontrollore, non ha nulla a che vedere con le pagine web
L'idea a me piace molto Javascript a mio avviso è molto più semplice ed immediato del classico Java (oop) ed offre strutture avanzate con il minimo dispendio di tempo in termini di stesura codice certo è che come detto stamane perdi un sacco di velocità, un conto è un PC un conto sono queste MCU che per quanto usino processori ARM con clock elevato risentono molto della pesantezza del codice...
Allora esistono 2 linguaggi Javascript diversi?
Ciao Uwe
Ni.
Non sono due linguaggi diversi, a quanto ho capito hanno adattato il javascript per essere usato come noi usiamo il wiring che tra l'altro è un linguaggio derivato da c e java.
Forse ho dato una risposta un poco vaga, Javascript e Java si somigliano ma non sono la stessa cosa...
DarkCoffee:
Secondo me se deve essere castrato un linguaggio tanto vale usare quello più a basso livello.
Alla fine si cerca sempre di semplificarsi la vita, quando si deve sempre ritornare da "mamma" XD
E' vero fino ad un certo punto, quando si cercano le prestazioni è così, vedi i driver delle schede video li scrivono in assembler o C ancora ora per farli veloci... però se ti devi mettere a creare applicazioni pesanti il più delle volte fai prima a migrare verso un hardware più prestante ed usare linguaggi ad alto livello, vedi la miriade di app che girano sopra a minipc arm o atom based (dallo smartphone, al navigatore al controllore industriale).
Se devi poi fare grafica ed un ambiente user friendly davvero complesso sei per il più delle volte costretto ad usare questi sistemi.
@DarkCoffe: perchè scusa?prendi per esempio arduino e il suo ambiente: fa uso di C++,ma alcune features non sono supportate...x es. il binding dinamico, oppure la possibilità di scegliere la dimensione di un array statico a runtime..
Non so quanto si somiglino java e javascript, ma io l'ho trovato molto simile al C, tranne ovviamente le "classi" e la dinamica dei tipi. Javascript è un linguaggio interpretato standard che non è legato al browser, cioè il fatto che si usi in HTML non vuol dire che non ci siano in giro interpreti standalone. Io l'ho usato tempo addietro con Qt ed è divertente eseguire codice C++ da script, scambiarsi oggetti ecc.
Io preferirei python perchè lo conosco e non è così lento come pensavo, ci ho fatto cose complesse in passato e non mi ha mai deluso, in più è facilmente espandibile scrivendo codice C, però su una piattaforma ATmega non vedo alternative al C, anche perchè ti scordi le shared library e tutte le cose che rendono speciale python.
Da recente in Qt è comparso QML e quindi non so se continueranno lo sviluppo dell' engine javascript, io spero di si perché si tratta di due linguaggi molto diversi tra loro, però ho usato solo javascript e mai QML.