Home
Accesso / Registrazione
 di 

Android app quand'è che conviene/bisogna utilizzare codice nativo?

8 risposte [Ultimo post]
ritratto di divivoma
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
4 settimane 6 giorni fa
Utente dal: 02/03/2011
Messaggi: 212

Ciao a tutti,
Scrivendo in una delle recenti pubblicazioni del nostro benamato sito :) mi sono ritrovato a discutere su questo topic:
Ultimamente l'NDK di Android è arrivata ad un punto avanzato tale da essere in grado di offrire ai programmatori la possibilità di scrivere applicazioni per android che utilizzassero il codice nativo (C/assembler)..

La domanda è questa.. quand'è che conviene optare per tale scelta? Qualcuno ha un esempio pratico da mostrare in modo tale da far vedere quali sono gl'incrementi delle prestazioni oppure casi di incompatibilità risolta da tale approccio?

Grazie,

Marco

ritratto di lucagiuliodori
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
5 ore 10 min fa
Utente dal: 21/03/2011
Messaggi: 191
Premetto che non ho mai

Premetto che non ho mai scritto applicazioni per Android e quindi tanto meno mi sono messo a spulciare le varie librerie e quindi verificarne il loro funzionamento su hardware.

Da sviluppatore di codice per microcontrollori però ho avuto modo di imbattermi anche io in questa domanda: quando è più conveniente scrivere il codice utilizzando codice nativo o meno?!
La scrittura del codice direttamente in C o in Assembler, senza utilizzare librerie già implementate (o modificare quelle esistenti), solitamente la pratico quando ho delle funzioni particolari da implementare che, o non sono state implementate o richiedono di "spremere" il microcontrollore fino alla fine, oppure quando, come dici tu, si hanno problemi di compatibilità o malfunzionamenti.
Solitamente è da preferire la stesura del codice con librerie già implementate in quanto si risparmia tempo e si è sicuri del loro funzionamento ma se questa strada non ci porta ai risultati dovuti è necessario utilizzare l'implementazione in codice nativo.

Sicuramente parlare di microcontrollori e di dispositivi Embedded non è la stessa cosa (anche se ultimamente i due mondi si toccano) ma credo che per questo argomento le strade da intraprendere sono simili.

Facci sapere.

ritratto di divivoma
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
4 settimane 6 giorni fa
Utente dal: 02/03/2011
Messaggi: 212
Già..credo che in futuro

Già..credo che in futuro anche i micro controllori saranno molto più potenti..soprattutto con l'avvento dei nuovi processi tecnologici (l'ultimo mi pare sia a 28nm..)..ma la legge di Moore dov'è finita ?? :)

Comunque, in realtà volevo chiederti una cosa.. ma secondo te riuscire a portare l'interfaccia grafica di android su i sistemi di gestione di impianti basati su microcontrollori, non sarebbe una nuova soluzione di mercato (riuscendo a limitare i costi ovviamente) ?
Immaginati ad esempio di poter realizzare il pannello delle ascensori con una bella interfaccia grafica android :) (forse esiste già ?? non lo so :( )..quindi mettiamo che tu hai già tutto il tuo bel codice scritto in C o Assembly..
Il passo successivo sarebbe quello di inglobare tale codice in modo opportuno tramite le JNI di android..compilare (o cross compilare) per la tua architettura e ottenere quindi il tuo eseguibile su Android..

Ovviamente il problema sarebbe quello di riuscire ad avere un OS Android minimale in grado di gestire soltanto il minimo che ci serve..chissà se magari un giorno si riusciranno a fondere queste due tipologie di programmazione e soprattutto il mondo Android su microcontrollori!
Cosa ne pensi? Credi che sia fattibile viste le attuali memorie che hanno a disposizione i microcontrollori attuali?

ritratto di lucagiuliodori
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
5 ore 10 min fa
Utente dal: 21/03/2011
Messaggi: 191
Guarda penso che è una realtà

Guarda penso che è una realtà molto vicina: per quanto riguarda i microcontrollori della microchip ad esempio hanno già un sistema operativo loro (non ricordo il nome) ma è ancora poco usato e credo che sarà presto sostituito da un sistema operativo open source come Android anche perchè le potenze di calcolo dei microcontrollori sono sempre più elevate e simili a quelle dei processori dei pc, basta pensare che il PC32 della Microchip ha il set i istruzione MIPS, lo stesso usato negli intel.

Quest'anno sono stato al master microchip e già si parla di Android, credo che a breve ci sarà la possibilità di usare Android nei sistemi Embedded.

Problema avere un OS Android minimale da mettere sui microcontrollori?! se conosco bene Microchip te lo forniranno loro gratuitamente e completamente configurabile, è solo questione di tempo.

ritratto di divivoma
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
4 settimane 6 giorni fa
Utente dal: 02/03/2011
Messaggi: 212
..fantastico!

Wow...che dire...se è cosi veramente allora sarebbe fantastico...!
Si fonderanno praticamente due mondi..i quali però avranno sempre e comunque specifiche diverse in quanto resta comunque che per i microc la capacità di elaborazione resta "limitata", se ovviamente dall'altro lato ci mettiamo le capacità di calcolo di PowerPC, multimedial processor e chi più ne ha più ne metta!

Ad ogni modo voglio informarmi su questa cosa...magari freescale sta facendo lo stesso anche per il suo Kinetis Mxx non credi? Se ci riuscirebbe attirerebbe l'attenzione di molti clienti e ovviamente anche quella dei suoi competitors...aggiudicandosi una bella fetta di mercato anche per quanto riguarda i micro controllori..!

Ne vedremo delle belle..tienimi aggiornato su Microchip..io lavoro piu su piattaforme freescale.. quindi dovrebbero arrivarmi notizie prima su quel fronte li!

Ciao

ritratto di lucagiuliodori
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
5 ore 10 min fa
Utente dal: 21/03/2011
Messaggi: 191
Si le mie sono tutte

Si le mie sono tutte intuizioni, non so darti certezze, a vedendo l'andamento credo che presto ci arriveremo.

Anzi, secondo me piano piano le differenze sostanziali tra microcontrollori (di fascia alta chiaro) e microprocessori si assottiglieranno sempre di più fino a collimare in dispositivi che si faranno concorrenza tra loro.

Visto l'andamento del mercato credo che anche freescale, come altre case costruttrici di microcontrollori, arriveranno ad avere sistemi operativi del tipo "chiavi in mano", pronti per essere programmati sui microcontrollori.

Ok, ci teniamo aggiornati.

Ciao!

ritratto di vijay deep bhatt
Offline
Titolo: User+
Utente+
Ultima visita:
2 anni 39 settimane fa
Utente dal: 14/09/2011
Messaggi: 16
I miei amici lavorano in

I miei amici lavorano in Sa*****g di rendere le applicazioni Android. Secondo loro il supporto nativo C è utile come al solito solo quando si deve fare qualche calcolo ad alte prestazioni. altrimenti nessuno si preoccupa veramente usando il vero potere di usare la lingua c. invece con una migliore biblioteche virtuali macchine con maggiori funzionalità sono utilizzati direttamente.
comunque con processori migliore e più veloce il fascino di fare buoni algoritmi è perso da tempo :~(

ritratto di divivoma
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
4 settimane 6 giorni fa
Utente dal: 02/03/2011
Messaggi: 212
già hai proprio

già hai proprio ragione...ormai il time to market riduce i programmatori a l'efficacia più che l'efficienza...questo ovviamente non toglie il fatto che si possa magari in futuro trovare un modo per inglobare entrambe le cose tramite l'utilizzo di un compilatore più "smart"...magari ci si riesce chi lo sà..

Ad ogni modo concordo su cià che hai detto... chissà magari un giorno proverò quest'aspetto proprio sulla mia pelle !

Ciao e grazie

ritratto di lucagiuliodori
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
5 ore 10 min fa
Utente dal: 21/03/2011
Messaggi: 191
Su questo hai ragione, si

Su questo hai ragione, si tende sempre ad utilizzare codice di alto livello in quanto i processori sono sempre più performanti, senza tenere presenti tutte quelle piccole tecniche di programmazione che vengono usate in C.

Secondo me qualche progetto scritto in assembler fa sempre bene all'elasticità mentale dei programmatori, altrimenti si rischia di perdere il "contatto con l'hardware" rischiando di arrivare a livelli di astrattismo troppo elevati.

C'è anche da dire però che ognuno ha il suo lavoro ed è più portato più per certe cose piuttosto che per altre: pensare di realizzare un software per PC scritto interamente in C o peggio ancora in assembler si rischia di diventare matti, come di controparte scrivere un software per microcontrollori con un linguaggio ad oggetti come il C++ o Java non è possibile in termini di funzionalità e spazio sul micro.

Insomma è vero che talvolta i livelli di astrattismo sono tali da far perdere la bellezza dello scrivere un codice ben fatto ma di controparte alle volte c'è l'esigenza (per motivi di complessità e di tempo) di dover usare programmazioni più di alto livello.

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 12 utenti e 61 visitatori collegati.

Ultimi Commenti