Newsgroup: it.comp.hardware.palmari
Titolo: Una specie di monologo su Linux con un paio di domande.

Salve,
da un po' sto pensando di prendere uno smartphone. Finora ho sempre tenuto 
un "banale" cellulare e il mio fido Zaurus, e mi hanno servito entrambi 
molto bene. Purtroppo da quasi 2 anni non ci sono aggiornamenti di 
Angstrom per lo Zaurus, e seguendo le ml degli sviluppatori, sembra stiano 
abbandonando la piattaforma per dedicarsi ad altro, al punto che 
praticamente quasi nessun palmare viene piu` supportato.
Quindi mi sono guardato intorno e ho iniziato a valutare le alternative. 
Scartato il Nokia N800/N810 (anche qui non si intravedono sviluppi e non 
vorrei prendere hardware gia` "vecchio", visto anche il recente accordo 
con Intel per i MID), mi sono rimaste tre possibilita`: OpenMoko, Palm 
Pre, Android.
OpenMoko ho paura sia sul viale del tramonto: hanno licenziato il 90% 
delle persone, pubblicato tutto su Internet, stanno svendendo i vecchi 
modelli per l'uscita dell'ennesima release della componentistica (A7), e 
non trovo ancora informazioni chiare se hanno risolto o meno il bug 
hardware per cui se ti si scarica completamente la batteria lo devi 
mandare in riparazione o comprare la debug board.
In ogni caso mi da` poco affidamento.
Ho un prurito che mi spingerebbe verso il Pre, per via del fatto che e` 
Linux puro, che hanno pubblicato i sorgenti di quasi tutto, che stanno per 
pubblicare l'SDK e che l'hanno gia` jailbreakato e ci si possono 
installare applicazioni scritte in ogni linguaggio.
Mi blocca la tastiera che non mi piace per niente.
Rimane Android. Mi secca dover sviluppare in Java, ma sullo store ho gia` 
individuato 2-3 applicazioni che non mi dispiacciono, tra l'altro 
gratuite. :)
Ma ora viene il problema.
Per me sono fondamentali la tastiera hardware qwerty larga, 
l'espandibilita` e uno schermo ad alta risoluzione. Attualmente sullo 
Zaurus ho la prima, 8 GB di SDHC per la seconda (e volendo anche 16 GB di 
CF) e un magnifico schermo 640x480.
Guardando i modelli gia` usciti con Android, l'unico che si avvicina e` il 
primo, il G1, che ha tutto tranne lo schermo, che e` 320x480, meta` del 
mio. Sia l'HTC Magic che il nuovo Hero non hanno tastiera. Il modello in 
uscita avrebbe la tastiera hardware, ma ha uno schifosissimo 320x240 e non 
lo prendo nemmeno in considerazione.
Per di piu` l'Hero sembra abbia disattivato il collegamento allo store, e 
che le applicazioni si possano installare solo manualmente da scheda SD...
Il Samsung e` solo touch, niente tastiera.
Il Motorola Morrison sembra abbia la tastiera, ma non si sanno le 
specifiche (e ho paura sara` 320x240 anche lui)
E ora le domande. :)
Sapete di qualche modello di Android (dovrebbero uscirne una dozzina entro 
fine anno) che potrebbe implementare le caratteristiche suddette?
Il fantomatico "secondo modello" del Palm Pre potrebbe avere la tastiera 
sul lato lungo?
Preciso che non ho fretta e che non me ne frega niente della fotocamera, 
mentre il GPS mi interessa, e i giroscopi sono interessanti ma non 
fondamentali. :)
Grazie per avermi letto fin qui.
Bye.

 Per me sono fondamentali la tastiera hardware qwerty larga, 
Integrata?
Hai pensato ad una tastiera esterna?

 il mio fido Zaurus
continuo a giudicarlo un magnifico pezzo hardware penalizzato dalla mancanza
di un software all'altezza, purtroppo ho testato i porting sia di debian che 
di ubuntu
per questa piattaforma, e nessuno dei due riesce ad assicurare quel minimo 
di
stabilità ed efficienza che sarebbe necessaria per un sistema operativo.
Continuo a sperare che qualche gruppo di sviluppatori si svegli e adatti
una distro ad hoc (puppy sarebbe quella più appropriata) rendendosi
conto che la piattaforma merita ben altro che il prematuro abbandono.
Prova comunque a seguire il blog di Omegamoon oltre al forum di OESF,
entrambi potrebbero riservarci sorprese in merito. 

 gratuite. :)
Ma sei uno sviluppatore di software?
Perch� stavo vedendo questa specie di "coso" che sembra fatto apposta e
dovrebbe avere le caratteristiche che dici (non s� i giroscopi):
http://pianetapda.com/post/535/compulab-introduce-exeda-pda-enterprise-con-supporto-windows-mobile-windows-ce-android-e-an
Ps: se non ci ho capito niente scusa! 

 interessanti ma non fondamentali. :)
I giroscopi ed il GPS saranno utilizzati in una prossima release di Android 
per implementare a livello di o.s. alcune funzionii molto interessanti, tese 
a far "capire" al sw in che contesto operativo si trova il terminale e 
coseguentemente adattarlo al meglio (ad esempio, profilo suoneria alto se il 
device "capisce" che sei in auto data la lettura di velocit� del GPS).
-- 
Saluti. 



Potrei sopportare la mancanza di una tastiera hardware integrata se la 
tastiera onscreen fosse decente (quindi con un buon feedback e sul lato 
lungo) e le altre caratteristiche del telefono fossero ottime.
La tastiera esterna non la prenderei nemmeno in considerazione, se non per 
la presenza di un USB host a cui attaccare una vera tastiera per quelle 
2-3 volte che potrebbe servirmi. Ma prenderei uno smartphone quasi solo 
per non dover portare in giro sia il cel che lo Zaurus, quindi non mi va 
di portare in giro sia lo smartphone che la tastiera pieghevole (o altro).
Bye.

 entrambi potrebbero riservarci sorprese in merito.
Il blog di omegamoon lo seguo via feed e lo tengo d'occhio. Spero riesca a 
sistemare qualcosa per lo spitz quest'estate che sono curioso di 
provarlo. :)
I forum non riesco a sopportarli/seguirli. :/
Bye.

 
http://pianetapda.com/post/535/compulab-introduce-exeda-pda-enterprise-
con-supporto-windows-mobile-windows-ce-android-e-an
Che brutto! :)
Da quel che vedo e` piu` un palmare per uso industriale che uno smartphone.
Bye.

 interessanti
Posso chiederti dove trovi questo tipo di informazioni? C'e` un sito 
dedicato allo sviluppo di/su android o le raccatti in giro?
Grazie (anche a tutti gli altri) per le informazioni.
Bye.

 sia il cel che lo Zaurus,
Capisco perfettamente.
Android usa linux e tutto quello che vuoi ma a quanto ho visto devi 
comunque usare un layer specifico a-là-Maemo, io "a sensazione" ti direi 
il Pre, magari aspetta di poterne provare uno, devo dire che non credevo 
la tastiera virtuale su schermo potesse risultare comoda ma sull'iPod 
Touch mi trovo decisamente bene, se la uso in landscape poi... :-)
Il succo è che, come al soltio, ti conviene provare così vedi quale ti 
convince di più.

 dedicato allo sviluppo di/su android o le raccatti in giro?
Tutte e due le cose :-)
Il link non ce l'ho sottomano (sono in giro adesso), appena lo ritrovo lo 
posto.
-- 
Saluti. 

 Bye.
premesso che non soo espertissimo so che deve uscire il
successore del nokia 810
per il resto ,a prescindere di tutto ci� che ti diranno gli
altri dai una occhiata a questo santo sito dove con la
maschera di scelta puoi trovare in poco tempo quello che ti
serve.
http://www.pdadb.net/index.php
tra l'altro mi pare me l'abbiano suggerita proprio qui
-- 
http://www.flickr.com/photos/76395844@N00/
http://blubrando.blogspot.com/


Ecco il link:
http://www.unwiredview.com/2009/05/21/google-wants-to-make-your-android-phone-much-smarter-with-accelerometer-and-other-sensors/
-- 
Saluti. 

 
http://www.pdadb.net/index.php
Molto interessante, grazie. Pero` il DB e` un po' scarsino, purtroppo. 
Mancano tutti i telefoni Android. E anche gli Zaurus.
Bye.

 gratuite. :)
http://developer.android.com/sdk/ndk/1.5_r1/index.html
-- 
TurboBlix



L'avevo visto, grazie. :)
Pero` con quello puoi fare solo librerie, a quanto sembra, e non 
eseguibili, che comunque vanno fatti in Java e lanciati sotto Dalvik.
Non e` un problema insormontabile, visto che per un esame sto studiando 
proprio Java, ma e` un linguaggio che non mi piace granche`, e se riuscivo 
ad evitarlo ero piu` contento. :)
Bye.

 ad evitarlo ero piu` contento. :)
Non amo Java, ma come tutti i linguaggi non si puï¿œ negare che abbia 
pregi e difetti.
-- 
TurboBlix

 granche`, e se riuscivo ad evitarlo ero piu` contento. :)
Beh, questa � una posizione che meriterebbe due paroline di spiegazione in 
pi� da parte tua.
-- 
Saluti. 

 in più da parte tua.
Intendi per il fatto che non mi piace Java?
In due parole: logorroico e sovraingegnerizzato.
Se vuoi scendo nei dettagli. :)
Bye.

 Se vuoi scendo nei dettagli. :)
Vai ! :-)
-- 
Saluti. 

 Vai ! :-)
OK. :)
Premetto che non ho intenzione di offendere nessuno o di dire che e` un 
linguaggio schifoso. Questi sono i motivi per cui A ME non piace e 
preferisco altro.
Premetto anche che sto studiando l'1.4/1.5. Non so se abbiano corretto 
alcune cose con la 1.6.
Partiamo dalla dichiarazione delle variabili:
String a = new String();
Perche` devo scrivere due volte String?
In PHP: $a = "";
In Python: a = "";
In Vala (che si ispira a C#, quindi penso sia uguale):
var a = new String();
Ma finche` sono corte non c'e` problema. Quando usi i namespace inizia il 
dramma:
javax.swing.JFrame f = new javax.swing.jFrame()
E, parlando di swing e namespace. Perche' se sto usando swing devo 
importare anche awt? Perche` se hanno i namespace, i componenti awt si 
chiamano Frame e quelli swing JFrame per evitare il name clash?
A questo punto i namespace non servono a niente, visto anche che uno dei 
piu` famosi libri di Java (Thinking in Java), per tutti gli esempi fa un 
bel minestrone del namespace globale all'inizio di ogni script:
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import com.bruceeckel.*;
Il colmo, per me, e` stata la gestione dei file. Sono sicuro che 
sbagliero` l'ordine, ma per aprire un file di testo da leggere riga per 
riga e` qualcosa tipo
BufferedReader f = new BufferedReader(new FileReader(nomefile));
In PHP: $f = file(nomefile);
Per scriverlo ancora peggio:
PrintWriter f = new PrintWriter(new BufferedWriter(new FileWriter
(nomefile)));
Per non parlare delle altre 20-25 classi associate alla gestione dei file 
(InputStream*, OutputStream*, *Writer, *Reader, ecc. ecc.)
Orientato agli oggetti... Ho una ArrayList al, voglio ordinarla, non basta 
al.sort(), devo scrivere
Collections.sort(al);
Sarebbe bastato un microwrapper nella classe ArrayList, qualcosa tipo
public ArrayList sort() {
 return Collections.sort(this);
}
Omogeneita`: ho un ArrayList al e una HashMap hm. Per sapere quanta roba 
c'e` dentro devo scrivere al.length() e hm.size(). Non andava meglio size
() o length() per entrambi?
So gia` che in PHP e` ancora peggio, ma mi aspettavo che almeno nelle 
funzioni implementate dallo stesso produttore (Sun) ci fosse un po' di 
accordo tra i programmatori.
Poi odio con tutto il cuore i metodi multipli. Se voglio fare una funzione 
di una classe immagine che me la ridimensiona e me la salva su disco, in 
PHP posso fare:
function resize($x=0, $y=0, $filename="")
{
 if ($x==0 && $y==0) { $x=640; $y=480; }
 else {
  if ($x==0) { // calcola x per mantenere il ratio corretto }
  elseif ($y==0) { // idem per y }
 }
 // fai il resize
 if ($filename != "") {
  // salva thumbnail nel file
 }
}
In Java devo fare n metodi quasi uguali, solo con i parametri diversi: uno 
senza parametri, uno con solo x, uno con solo y (indistinguibile dal 
precedente), uno con x e y, uno con solo il nomefile, uno con solo x e il 
nomefile, uno con solo y e il nomefile (indistinguibile dal precedente, se 
non cambiando l'ordine).
E ogni volta che li richiamo devo stare a controllare il tipo dei 
parametri che gli passo e l'ordine, e cercare nel sorgente o nella 
documentazione il metodo con quella firma.
Oltre al fatto che si duplica codice.
Il metodo migliore, in questo caso, e` quello di python, in cui si possono 
anche specificare, in chiamata, i campi, e li puoi mettere nell'ordine che 
vuoi:
img.resize(x=320, filename="pippo.jpg", y=240)
Questo e` quello che mi viene in mente ora, ma sono sicuro che mi sto 
dimenticando qualcosa.
Piu` leggo il Thinking In Java e piu` rimango inorridito... :)
Bye.

 Piu` leggo il Thinking In Java e piu` rimango inorridito... :)
Pi� in generale penso che tu stia sbagliando quasi del tutto l'approccio ad 
un liguaggio ad oggetti.
Un buon libro, dal giusto approccio didattico su Java � "Java 2 I 
fondamenti" di Cay S. Horstmann. Thinking in Java � da prendere come seconda 
lettura, dal momento che suppone gi� una conoscenza di un certo tipo del 
linguaggio.
-- 
Saluti. 

 ad un liguaggio ad oggetti.
No, no. :)
A oggetti ci programmo da 6-7 anni in diversi linguaggi (appunto i gia` 
citati PHP, Python, Vala). E` che alcune cose di Java sembrano proprio 
pensate procedurali e poi infilate a forza ad oggetti nel linguaggio.
So che e` fortemente tipizzato, ed e` un'altra cosa che non mi piace 
particolarmente, visto che poi con casting e introspezione si fanno delle 
porcate peggio di quelli non fortemente tipizzati.
Anche Vala e` fortemente tipizzato, ma li` se istanzi subito non devi 
scrivere due volte il nome del tipo, come ho detto.
Se AWT usa swing per i fatti suoi, perche` devo essere io a importare 
awt. Non se lo puo` importare swing da solo?
Per i namespace, in Python, per esempio, e` molto piu` intelligente. Si 
farebbe una cosa del tipo
import javax.swing as swing;
swing.Frame f = new swing.Frame();
In modo da non ingombrare il namespace globale.
Insomma, non mi piace perche`, secondo me, e` cresciuto male. Magari era 
nato bene, ma poi sembra ci abbiano costruito sopra castelli di carte che 
rischiano di cadere da un momento all'altro.
Bye.

 Piu` leggo il Thinking In Java e piu` rimango inorridito... :)
Se questo è quello che non ti piace di java allora devi abbandonare
qualsiasi linguaggio di programmazione moderno.
L'unica cosa per cui a me non piace Java è essenzialmente perchè è
pesante.
Ciao
Fritz


Ma cosi devi scrivere 4 volte swing e 2 volte Frame :-)
In C# faresti:
using javax.swing;
Frame f = new Frame();
ancora più semplice.
Ciao
Fritz

 Frame f = new Frame();
Esattamente come in Java. Identico.
Bye.

 me non piace Java è essenzialmente perchè è pesante.
Ormai e` pesante solo per la RAM, perche` come prestazioni, in genere, tra 
ottimizzazioni e JIT non e` da buttar via.
Il problema, secondo me, e` appunto che e` costruito su strati e strati di 
codice legacy, e istanzia decine e decine di oggetti anche per le cose 
piu` semplici. Da cui l'occupazione enorme di RAM.
Bye.

 Lo String era un esempio per fare presto a scrivere.
Nel caso specifico di oggetti String di Java ci sono due ragioni, una 
generale ed una specifica.
Quella generale � che Java usa internamente la riflessione e che molte 
scelte apparentemente strane sono dettate dal fatto che, in realt�, si 
tratta di implementazioni di pattern della GoF.
Quella specifica � che un oggetto String di Java � immutabile, per ragioni 
di prestazioni (e per la precisione String � implementata come un pattern 
flyweight).
Infine, la filosofia di Java � di essere fortemente tipizzato: var a non 
dice nulla sulla tipizzazione, String a invece si.
-- 
Saluti. 

 ottimizzazioni e JIT non e` da buttar via.
No no, è pesante e basta, vuoi che ti misuro il tempo di avvio di una
qualsiasi apllicazione di controllo di Oracle fatte in Java da diversi
anni? Quando partono, perchè a volte le richiami non parte una mazza e
se controlli i processi ti ritrovi il jrew.exe in memoria, devo
killarlo e riavviare l'applicazione e a quel punto forse parte.
Ciao
Fritz

 quell'oggetto
Si`, ma il C non ha i namespace, quindi sei forzato a includere tutto nel 
globale. In C++ non ho ancora mai programmato, ma spero abbiano gestito 
meglio la cosa.
 
Ti consiglio comunque di provare un linguaggio dinamico (Python, PHP, 
Ruby, ...), perche` apre la mente a molte possibilita` che con i linguaggi 
statici non ti accorgi di poter avere.
Ti faccio un esempio: Non serve avere setter e getter per le proprieta`. 
Se vuoi puoi avere tutte le proprieta` pubbliche e puoi privatizzarne 
qualcuna in seguito senza rifattorizzare il codice. In PHP e` una cosa tipo
public $pippo;
che diventa:
private $_pippo;
public function __get($var) {
 if ($var == "pippo") {
  return $this->_pippo;
 } else {
  throw new Exception("Variabile sconosciuta");
 }
}
Naturalmente, al posto del return, puoi fare tutti i controlli e le 
elaborazioni che vuoi.
Una cosa del genere la fa anche Vala, anche se con una sintassi diversa, e 
penso sia presa da C# (ma non ho mai programmato in C#)
Ma direi di chiudere. Siamo abbondantemente OT. :)
Bye.