PDA

View Full Version : Consiglio programmazione: Java o Android?


miracle1980
16-03-2011, 13:25
Salve ragazzi,

Vorrei iniziare un corso per programmare durante il mio tempo libero. Diciamo che il primo passo è soltanto pura curiosità, però non nascondo che magari in futuro vorrei\potrei utilizzare le mie conoscenze anche da un punto di vista lavorativo.

Voi cosa consigliate attualmente per maggiori ''sbocchi'' e facilità di apprendimento? Iniziare con Java oppure Android?

A pelle mi butterei più su Android perchè mi intriga maggiormente e penso che potrebbe avere una diffusione enorme....

cdimauro
16-03-2011, 13:33
http://mono-android.net/

miracle1980
16-03-2011, 13:36
Mmmmhhh quindi? :D

tomminno
16-03-2011, 13:40
Stai facendo un pò di confusione: Android è una piattaforma per dispositivi mobile, Java è un linguaggio di programmazione.
Android fornisce un SDK che utilizza Java per lo sviluppo di applicazioni, pertanto le scelte non si escludono a vicenda, anzi la conoscenza di Java è propedeutica all'apprendimento dello sviluppo di Android

tomminno
16-03-2011, 13:42
http://mono-android.net/

Non puoi consigliare una soluzione a pagamento quando la via ufficiale è pure gratuita! ;)
Dovendo imparare da 0, nel suo caso io partirei da Java.

pabloski
16-03-2011, 17:22
Voi cosa consigliate attualmente per maggiori ''sbocchi'' e facilità di apprendimento? Iniziare con Java oppure Android?

A pelle mi butterei più su Android perchè mi intriga maggiormente e penso che potrebbe avere una diffusione enorme....

Android usa Java come linguaggio di programmazione, quindi devi imparare Java prima di poter programmare con Android

Ti consiglio di scaricarti il tutorial che trovi qui http://www.informatica.uniroma2.it/upload/2009/LIS ( da Lezione_01.pdf a Lezione_08.pdf )

cdimauro
16-03-2011, 19:19
Non puoi consigliare una soluzione a pagamento quando la via ufficiale è pure gratuita! ;)
Dovendo imparare da 0, nel suo caso io partirei da Java.
Hai ragione. In effetti MonoDroid è più per un uso professionale e bisogna scucire un bel po' di soldi.
Android usa Java come linguaggio di programmazione, quindi devi imparare Java prima di poter programmare con Android
Questo non è esatto: puoi usare qualunque linguaggio di programmazione che giri sulla sua VM.

Se parliamo di supporto ufficiale, invece, c'è anche il C++, che è stato aggiunto da un po' di tempo (anche se, da quel che ho letto, è sconsigliabile).

pabloski
16-03-2011, 19:37
Questo non è esatto: puoi usare qualunque linguaggio di programmazione che giri sulla sua VM.

Se parliamo di supporto ufficiale, invece, c'è anche il C++, che è stato aggiunto da un po' di tempo (anche se, da quel che ho letto, è sconsigliabile).

infatti io parlo di metodo ufficiale consigliato e supportato da google

è fuorviante consigliargli altre cose quando il 99% degli sviluppatori android usa eclipse, java e l'android sdk

cdimauro
16-03-2011, 19:57
infatti io parlo di metodo ufficiale consigliato e supportato da google
Questo l'hai aggiunto adesso. :fagiano:
è fuorviante consigliargli altre cose quando il 99% degli sviluppatori android usa eclipse, java e l'android sdk
Sarebbe fuorviante nel caso in cui la soluzione proposta non fosse almeno altrettanto valida.

I giudizi non si possono dare sulla scorta di ciò che fa la maggior parte della gente, ma su una base tecnica, e tu dovresti saperlo, mio caro e affezionatissimo utilizzatore di Windows. :D

Freaxxx
16-03-2011, 20:00
Java è un linguaggio, Android è uno stack software.

pabloski
16-03-2011, 20:33
I giudizi non si possono dare sulla scorta di ciò che fa la maggior parte della gente, ma su una base tecnica, e tu dovresti saperlo, mio caro e affezionatissimo utilizzatore di Windows. :D

e infatti mono non ha nessun vantaggio tecnico rispetto a java nello sviluppo android

se a ciò aggiungiamo che lui sta iniziando e hai bisogno di capire come funziona l'ambiente, mettergli in testa altre cose può essere solo motivo di confusione

dopo essersi ferrato su android, se vorrà, potrà decidere di seguire la strada di mono, ma partire da mono può solo dargli un'idea sbagliata sul funzionamento della piattaforma android

cdimauro
16-03-2011, 20:42
La piattaforma Android ha DUE SDK ufficiali, coi quali si programma in maniera diversa. Inoltre esiste una libreria che ha permesso di introdurre l'utilizzo di altri linguaggi (fra cui Python :D).

Inoltre la documentazione non mi sembra che sia eccelsa (vero, Tommo? :D).

Per cui di confusione ce n'è già abbastanza di suo.

Riguardo a Mono a me sembra che i vantaggi ci siano, eccome. Hai dato un'occhiata a quello che si può fare con MonoDroid? :cool:

Per il resto, e come già detto in riposta a tomminno, concordo: al momento per lui è meglio affidarsi all'SDK con Java.

pabloski
16-03-2011, 20:54
rimane il fatto che la strada più corta, stabile e sicura è java

tomminno
16-03-2011, 21:13
Se parliamo di supporto ufficiale, invece, c'è anche il C++, che è stato aggiunto da un po' di tempo (anche se, da quel che ho letto, è sconsigliabile).

Confido che presto avremo un porting Qt stabile :sofico:

cdimauro
16-03-2011, 21:38
Ma quella è soltanto 1/3 della torta. L'altra è la scarsa documentazione. E l'altra, purtroppo, è proprio il C++ come linguaggio, che non è che sia il massimo per sviluppare applicazioni di questo tipo.

@pabloski: non mi sembra di aver detto il contrario nei miei ultimi messaggi. ;)

miracle1980
16-03-2011, 21:49
Ok grazie per le delucidazioni.

Quindi mi consigliate partire da Java. Ho raccolto già un pò di materiale e vedrò di mettermi all'opera.

Qualcuno mi parlava anche di c# come base iniziale ma non so perchè mi ''intriga'' più Java...

pabloski
17-03-2011, 15:42
Ok grazie per le delucidazioni.

Quindi mi consigliate partire da Java. Ho raccolto già un pò di materiale e vedrò di mettermi all'opera.

Qualcuno mi parlava anche di c# come base iniziale ma non so perchè mi ''intriga'' più Java...

facciamo le dovute precisazioni

il metodo UFFICIALE di sviluppo per google android è usare il loro sdk e il linguaggio java

c# c'entra perchè c'è un port di mono ( che è la versione open o simil-open di .net ), ma si tratta di un framework non ufficiale

il senso di partire con java o meglio col framework ufficiale di google è che così puoi farti un'idea chiara di come, cosa e perchè si programma su android....successivamente potrai utilizzare quello che ti pare, ma partendo con una conoscenza precisa ed esatta dell'ambiente android

Freaxxx
17-03-2011, 16:09
io ti consiglierei di partire dal C, è come partire dall'assembly o poco più, è una strada lunga ma ti consente di capire e/o risolvere praticamente tutti i possibili errori che puoi incontrare scrivendo con linguaggi di più alto livello che, essendo ad alto livello per definizione, nascondono molto di quello che accade a basso livello, e solo conoscendo quello che accade a basso livello puoi cavartela dalle situazioni più complesse.

pabloski
17-03-2011, 16:14
io ti consiglierei di partire dal C, è come partire dall'assembly o poco più, è una strada lunga ma ti consente di capire e/o risolvere praticamente tutti i possibili errori che puoi incontrare scrivendo con linguaggi di più alto livello che, essendo ad alto livello per definizione, nascondono molto di quello che accade a basso livello, e solo conoscendo quello che accade a basso livello puoi cavartela dalle situazioni più complesse.

nel caso di android partire dal C rende il suo percorso molto molto più complesso del dovuto

google stessa sconsiglia l'uso del C e del native development kit a causa dell'eccessiva complessità, dell'impossibilità nell'usare le funzioni offerte dall'api android e della scarsa portabilità e compatibilità con le varie versioni dell'OS

ovviamente la libreria scritta in C va poi eseguita usando una classe java wrapper e jni

Freaxxx
17-03-2011, 16:22
nel caso di android partire dal C rende il suo percorso molto molto più complesso del dovuto

google stessa sconsiglia l'uso del C e del native development kit a causa dell'eccessiva complessità, dell'impossibilità nell'usare le funzioni offerte dall'api android e della scarsa portabilità e compatibilità con le varie versioni dell'OS

ovviamente la libreria scritta in C va poi eseguita usando una classe java wrapper e jni

infatti non ho mica detto che è semplice, ma di sicuro è la via o una delle pochissime vie, che ti forma come programmatore a tutti gli effetti e non come "scimmiottatore" di tastiere.

eventualmente cercasse qualche SDK che usi il C nativamente c'è quello per BADA, e devo dire che l'SDK per BADA è avanti a quello per Android, che è al limite dell'usabilità.

PGI-Bis
17-03-2011, 16:22
Questi thread sono aritmeticamente meravigliosi.

Problema: scegliere uno dei due elementi dell'insieme di piattaforme { Java, Android }

Risposte:

C,
C++,
Mono,
Python,
C#

Non vorrei essere nei panni di quel povero disgraziato che, fermandovi per strada, avesse l'ardire di chiedervi che ora sia. Apriti cielo. :D

Freaxxx
17-03-2011, 16:25
Questi thread sono aritmeticamente meravigliosi.

Problema: scegliere uno dei due elementi dell'insieme di piattaforme { Java, Android }

Risposte:

C,
C++,
Mono,
Python,
C#

Non vorrei essere nei panni di quel povero disgraziato che, fermandovi per strada, avesse l'ardire di chiedervi che ora sia. Apriti cielo. :D

:D

siamo per la semina e la coltura lenta e accorta delle piante, perché poi si possano raccogliere ottimi frutti :O

http://www.newsfood.com/data/iNodes/2009/12/29/20091229165636-45e66c7e/Standards/400x.jpg

cdimauro
17-03-2011, 17:34
infatti non ho mica detto che è semplice, ma di sicuro è la via o una delle pochissime vie, che ti forma come programmatore a tutti gli effetti e non come "scimmiottatore" di tastiere.
Fammi capire: la differenza fra un "programmatore" e uno "scimmiottatore di tastiere" (magari una scimmia di Heddington) sta nel conoscere o meno il C?

Freaxxx
17-03-2011, 17:41
Fammi capire: la differenza fra un "programmatore" e uno "scimmiottatore di tastiere" (magari una scimmia di Heddington) sta nel conoscere o meno il C?

se leggi bene il post si capisce perfettamente quello che voglio dire, un linguaggio di basso livello ti prepara e completa alcune lacune che i linguaggi di alto livello coprono con il loro livello di astrazione.

cdimauro
17-03-2011, 18:23
Questo è diverso da quello che avevi scritto prima, ed è condivisibile in astratto.

Giusto per essere chiari: non serve conoscere dettagli di basso livello per risolvere problemi, a meno che il particolare problema non lo richiesta.

Per cui continua a sfuggirmi la differenza fra programmatori e scimmiottatori. Sempre che ne esista una definizione...

Freaxxx
17-03-2011, 18:39
Questo è diverso da quello che avevi scritto prima, ed è condivisibile in astratto.

Giusto per essere chiari: non serve conoscere dettagli di basso livello per risolvere problemi, a meno che il particolare problema non lo richiesta.

Per cui continua a sfuggirmi la differenza fra programmatori e scimmiottatori. Sempre che ne esista una definizione...

credo che sia un buon precetto non seguire le mode del momento quando si vuole gettare le basi per qualcosa; oggi va di moda, ad esempio, non fare la fase di testing di un prodotto software, tipicamente la si lascia fare all'utente finale, detto in parole povere, e se poi conviene a chi ha creato il software, dietro segnalazione e pressing dell'utente, si tappa la falla, altrimenti io programmatore in linguaggio X mi convinco che ho fatto il miglior software al mondo e il bug rimane una semplice citazione nel sistema di tracking del progetto.

se non consideri la fase di testing e progettazione è ovvio che consideri inutile quanto ho scritto.

cdimauro
17-03-2011, 19:53
Questo non c'entra nulla con quello che avevi scritto prima. Non credo ci sia bisogno di copia & incollarlo...