Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Workstation di sviluppo crossplatform

21 views
Skip to first unread message

Gianpaolo Ingegneri

unread,
Apr 8, 2012, 7:03:59 AM4/8/12
to
Salve e buona Pasqua a tutto il newgroup. Ne approfitto per dire la mia
in tema di sviluppo software C++ e compatibilità crossplatform. Giusto
qualche dritta che potrebbe servire agli utenti nuovi ed anche ai
programmatori con anni di esperienza che intendono spostarsi su ampia scala.

-Computer

Prima di tutto occorre una buona workstation di lavoro. Per chi ha la
possibilità di lavorare da casa o da un proprio ufficio, consiglio di
acquistare un pc fisso da scrivania con ottima CPU a 64bit, scheda
grafica GeForce da 550 in su, 8 giga di memoria e almeno 1 tera di
spazio su harddisk + vari supporti per i backup. Per chi al contrario ha
la necessità di spostarsi parecchio, consiglio un portatile con
caratteristiche simili (magari scalate in base alle disponibilità
economiche) con display LCD da almeno 15,6" (evitate i 14") ed una
tastiera bella comoda (evitate i tasti condensati in poco spazio). Se
invece dovete stare fermi per dei periodi e spostarvi subito dopo, vi
consiglio di acquistare entrambi i computer, pc fisso e portatile, che
abbiano prestazioni quantomeno simili (evitate di farvi il fisso
mostruosamente potente ed il portatile scarso, lo dico perchè è un
errore che si commette di continuo). Se pensate che siano spese
ingiustificate credetemi, davvero, non lo sono per chi vuole essere
minimamente competitivo in questo tipo di mestiere. Se pensate che il
portatile ingombrante vi possa rendere scomodi durante i viaggi dove non
lavorerete, ebbene, compratevi anche un netbook o notebook, più si ha e
meglio è ;-) Non fate i tirchi altrimenti vi costerà caro in termini di
esperienza e professionalità.

Per scegliere una buona CPU, prima dell'acquisto vi consiglio di
consultare il seguente sito (almeno 6000 di mark):
http://www.cpubenchmark.net/

Mentre per la scheda grafica (almeno 1500 di mark):
http://www.videocardbenchmark.net

Chiedete sempre il consulto estemporaneo di tali siti per potervi fare
un'idea sulle performance. Non date retta ai commessi che sono abituati
ad utenti che usano il pc al massimo per navigare sul web o per
scaricarsi le foto fatte in crociera: voi non appartenete a quella
categoria! Di solito i commessi fanno i saccenti e sbuffano di fronte a
richieste di consulto sul web, ebbene in tal caso cambiate negozio
perchè non sono degni di fornirvi assistenza.

-Sistema operativo

Questo dipende dalle vostre necessità e da quanto vi trovere bene con
quel sistema operativo oppure no. Sappiate che oggi i sistemi operativi
sono così evoluti che in ambiente di sviluppo l'uno vale l'altro,
ovviamente se scegliamo tra quelli più supportati e recenti. Se volete
installarvi Windows, consiglio la versione 7 a 64 bit, mentre per Linux
tra i vari redhat, opensuse, ubuntu, etc, andate sul sicuro, però mi
raccomando: sempre installazioni a 64 bit perchè in questo modo avrete
la possibilità di coprire anche le compilazioni a 32 bit. Una cosa che
consiglio è quella di evitare le partizioni su harddisk per installare
più sistemi operativi sullo stesso computer, perchè oltre a rubarvi
tanto tempo di amministrazione vi ruberà spazio su harddisk ed oltre ad
essere scarsamente portabile è anche un inutile spreco di risorse.
Ebbene, oggi esistono le macchine virtuali per questo, dunque
installatevi uno o massimo due sistemi operativi sulla stessa macchina
(host) ed usate un programma per creare macchine virtuali sullo stesso
host così da potervici installare all'interno tutti i sistemi operativi
guest che vorrete. Ci sono diversi software per le Virtual Machine (VM),
tra cui l'ottimo VirtualBox della Oracle. Se siete preoccupati per le
performance, sappiate che le CPU più recenti supportano la
Virtualization Technology (VT) studiata appositamente per le macchine
virtuali e vi verrà richiesta per le VM a 64 bit (installate sempre a 64
bit). Di solito tale opzione è disattivata in partenza, in tal caso
andate su BIOS e attivatela perchè è davvero fondamentale. Noterete che
con un buon computer le performance delle macchine virtuali saranno
davvero ottime. Curare e fornire assistenza per tutti i sistemi
operativi vi renderà degli sviluppatori invidiabili anche sul posto di
lavoro.

-Software di sviluppo C++

Di solito chi comincia a sviluppare come amatoriale usando dei software
professionali fa sempre una terribile confusione tra compilatore e IDE.
Ebbene, ciò che nella vostra professione vi permetterà di creare dei
software non è tanto l'ide sciccoso ma soprattutto il compilatore! ;-)
Se avete sempre programmato giochi in DirectX usando l'express della
microsoft ed il vostro concetto di ambiente di sviluppo si limita a
quello, sappiate che invece tra compilatori ed IDE esiste una scienza
enorme fatta di miriadi di applicazioni, per cui rendere un progetto
cross-platform e muoversi bene dal primo momento non è affatto facile:
anche la cose apparentemente più stupide potrebbero rubarvi delle ore di
tempo prezioso ;-)

Windows:
Se intendete sviluppare applicazioni windows a 64 bit, dovrete
inizialmente scaricarvi l'ultima versione del Microsoft Visual Studio
Express e completare il tutto con una successiva installazione del
Windows SDK, senza il quale non potrete fare compilazioni a 64 bit visto
che non sono nativamente supportate dal toolset fornito in dotazione con
il VS express! Come alternativa microsoft c'è anche l'ottimo mingw, da
usare con IDE come DevC++, Eclipse o CodeBlocks.

Linux:
Che parlo a fare? Gcc punto e basta :-) A volte dovrete installare il
g++, ma quello potrete farlo tranquillamente da bash. Per quanto
riguarda le librerie, oggi le distribuzioni permettono di includerle
direttamente con comandi da console, tipo zypper install per opensuse o
yum install per centos e così via, al limite ci sono sempre gli rpm o
potete ricompilare voi stessi :o) Una cosa che mi sento di sconsigliare
è l'utilizzo di librerie pseudo anonime e scarsamente supportate tra una
distribizione e l'altra, se avete dei clienti esigenti e poco pratici
questo potrebbe crearvi dei problemi. Magari questo argomento
richiederebbe un discorso più approfondito perchè l'inclusione delle
librerie giuste in un progetto cross-platform è davvero non solo una
scienza ma un'arte. Come IDE consiglio sempre l'ottimo eclipse oppure il
codeblocks, anche se per acquisire maggior esperienza un suggerimento
che mi sento di dare è quello di non fiondarvi subito sulle ide potenti
ma di farvi le ossa con i makefile (o meglio ancora CMake) e compilare i
progetti da bash, usando gli editor della distribuzione come kate o gedit.

MacOSX:
Beh, come per Linux anche qua si parla del compilatore fornito in
dotazione col sistema operativo ed utilizzato per lo sviluppo dello
stesso, cioè l'Xcode. Come IDE il discorso non cambia molto, tenendo a
precisare che finalmente col macosx c'è pure una bella ide in dotazione,
cioè l'Xcode IDE, anche se esistono una miriade di ide cross-platform
che nel corso della vostra carriera userete un po' in tutti i sistemi
operativi su cui andrete a lavorare.

-Altri consigli veloci

.Per evitare la perdita dei progetti più grossi o casini con i
collaboratori, iniziate a fare un uso costante dei repositories. Ce ne
sono diversi sulla piazza anche se l'SVN è il più famoso ed utilizzato.
Se necessario, fatevi un bel serverino da mettere online.

.Spesso in ambiente lavorativo è richesta una certa dimestichezza con il
lavoro da remoto e non è scontato che anche con anni di esperienza come
programmatori c++ voi la possediate. Per farvi le ossa, comprate uno
switch da accompagnare al NAT/router modem di casa per collegare più
computer ad internet creandovi così una LAN domestica. In questo modo
potrete accedere alle varie macchine con ip interni ed esterni, lavorare
da remoto, sbloccare porte e quant'altro. Anche una wifi in casa non
sarebbe male, occhio però alla sicurezza.

.Installate sempre un buon firewall ed un antivirus sulla vostra
piattaforma di sviluppo.

Okay, in effetti ci sarebbe molto altro da aggiungere ma adesso devo
proprio scappare! Spero di avervi fornito degli spunti utili per
migliorare le vostre competenze di programmatori, quantomeno degli
spunti per potervi migliorare nella vostra professione. Ciao e ancora
auguri!

Maurus

unread,
Apr 14, 2012, 5:29:19 AM4/14/12
to
Il 08/04/2012 13.03, Gianpaolo Ingegneri ha scritto:
> Salve e buona Pasqua a tutto il newgroup. Ne approfitto per dire la mia
> in tema di sviluppo software C++ e compatibilità crossplatform. Giusto
> qualche dritta che potrebbe servire agli utenti nuovi ed anche ai
> programmatori con anni di esperienza che intendono spostarsi su ampia
> scala.
>
cut

Ottimo ed utilissimo post!
Complimenti.
Sarebbe da prendere come esempio per dimostrare che l'uso dei social
network sta uccidendo la grandissima utilità dei newsgroup.

Maurus

Gianpaolo Ingegneri

unread,
Apr 14, 2012, 8:28:46 AM4/14/12
to
Il 14/04/2012 11:29, Maurus ha scritto:
> Ottimo ed utilissimo post!
> Complimenti.
> Sarebbe da prendere come esempio per dimostrare che l'uso dei social
> network sta uccidendo la grandissima utilità dei newsgroup.
>
> Maurus

Grazie :D In effetti è vero, nei social network come Facebook c'è troppa
dispersione di informazioni, è più adatto a gente che deve pubblicare
foto di matrimoni e torte di compleanno. Fortunatamente ci sono ancora i
forum che non hanno subìto lo stesso fenomeno di allontanamento dei
newsgroups, anche se spesso non sono d'accordo con le politiche di
censura adottate in modo arbitrario dal tizio di turno che li gestisce.

E' un peccato che con il progresso tecnologico i gruppi di discussione
come questo siano andati scemando, mentre in realtà sarebbe dovuto
accadere l'esatto contrario. In effetti lo sviluppo di software è
diventato materia assai complessa e gli amatoriali sono tagliati fuori
dal mondo professionale. Ormai non possono più competere sul mercato se
non con progetti opensource che possono essere continuati da altri
programmatori senza alcuna pretesa da parte di potenziali clienti, che
appunto ne fanno un uso gratuito. Programmatori diventati miliardari dal
nulla e senza laurea come Bill Gates e Steve Jobs sono diventati delle
favolette della buona notte, già lo stesso Mark Zuckerberg è di Harward
e non ha costruito Facebook dal niente ma con una serie di contatti e
finanziamenti iniziali che non sono ancora del tutto noti, ormai alla
favola del tizio qualsiasi che sbuca dal niente con un software
innovativo e diventa ricchissimo non ci crede più nessuno, è diventato
un concetto quasi obsoleto per le stesse persone che ci hanno creduto in
passato.

E' difficile che il singolo individuo riesca a supportare i vari sistemi
operativi con tutte le miriadi di distribuzioni ed ormai il
cross-platform è diventato un requisito fondamentale. Certo dipende
anche dal tipo di applicazione però si rischia di dover competere sotto
altri punti di vista insostenibili per diversi motivi. Chi fa un
progetto cross-platform può abbassare la qualità per andare incontro
alla compatibilità, ma chi al contrario rinuncia a supportare altri
sistemi può farlo solo se mantiene una qualità mostruosa altrimenti è
schiacciato dai software concorrenti (faccio sempre l'esempio di Crysis,
ma potremmo dire anche Autocad). Dunque il singolo sviluppatore può solo
aprire progetti open sperando nelle donazioni o lavorare come dipendente
per le software house. L'abbattimento della libera professione ha creato
un fenomeno di privatizzazione delle informazioni ed una conseguente
morte dei gruppi di discussione. Spesso chi firma un contratto non può
neppure fiatare su ciò che sta facendo in azienda, per cui tanto vale
rilassarsi su di un social network e scrivere cavolate assieme agli
altri, si corrono pure meno rischi di perdere il posto di lavoro per via
di una involontaria fuga di informazioni. Di certo l'abbandono dei
gruppi di discussione è il sintomo di una sconfitta per questo tipo di
professione, di totale mancanza di entusiasmo e di aspettative.

Maurus

unread,
Apr 14, 2012, 9:36:19 AM4/14/12
to
Il 14/04/2012 14.28, Gianpaolo Ingegneri ha scritto:
>
> E' difficile che il singolo individuo riesca a supportare i vari sistemi
> operativi con tutte le miriadi di distribuzioni ed ormai il
> cross-platform è diventato un requisito fondamentale. Certo dipende
> anche dal tipo di applicazione però si rischia di dover competere sotto
> altri punti di vista insostenibili per diversi motivi. Chi fa un
> progetto cross-platform può abbassare la qualità per andare incontro
> alla compatibilità, ma chi al contrario rinuncia a supportare altri
> sistemi può farlo solo se mantiene una qualità mostruosa altrimenti è
> schiacciato dai software concorrenti (faccio sempre l'esempio di Crysis,
> ma potremmo dire anche Autocad). Dunque il singolo sviluppatore può solo
> aprire progetti open sperando nelle donazioni o lavorare come dipendente
> per le software house. L'abbattimento della libera professione ha creato
> un fenomeno di privatizzazione delle informazioni ed una conseguente
> morte dei gruppi di discussione. Spesso chi firma un contratto non può
> neppure fiatare su ciò che sta facendo in azienda, per cui tanto vale
> rilassarsi su di un social network e scrivere cavolate assieme agli
> altri, si corrono pure meno rischi di perdere il posto di lavoro per via
> di una involontaria fuga di informazioni. Di certo l'abbandono dei
> gruppi di discussione è il sintomo di una sconfitta per questo tipo di
> professione, di totale mancanza di entusiasmo e di aspettative.

Visto che ti trovo molto preparato su complessi argomenti ti faccio una
domanda su un'altra piattaforma che "sembra" non essere ancora stata
monopolizzata dalle grandi aziende.
Tu pensi che ci sia spazio per "noi" singoli progettisti software per
fare un'applicazione un minimo lucrosa su piattaforma Android?

Ho letto su un ng che un softwarista si licenziò dalla sua azienda
perchè non aveva più tempo per gestire le sue applicazioni su Iphone o
Ipad che gli permettevano di guadagnare più del suo stipendio.

Sarà stato tutto vero?!

Maurus

Gianpaolo Ingegneri

unread,
Apr 14, 2012, 12:25:39 PM4/14/12
to

> Visto che ti trovo molto preparato su complessi argomenti ti faccio una
> domanda su un'altra piattaforma che "sembra" non essere ancora stata
> monopolizzata dalle grandi aziende.
> Tu pensi che ci sia spazio per "noi" singoli progettisti software per
> fare un'applicazione un minimo lucrosa su piattaforma Android?

Si è vero, è l'alternativa che non ho elencato perchè in fondo non mi
piace tantissimo. C'è gente che si fa i soldi con apps per sistemi
operativi smartphone perchè sostanzialmente non ci sono le stesse
pretese delle applicazioni per pc Windows/Linux ed inoltre la gente
comune è disposta a pagare ;-) Il problema di queste applicazioni è che
serve un piccolo team di grafici e designer per poterle rendere
presentabili e poterle vendere perchè poi tra tasse e licenze perdi più
della metà del ricavato. Chi ha un team esperto può farlo, perchè no,
anche se ci sarebbero tutti i problemi legati al moderno mercato
consumer fatto di assistenze sporadiche ad utenti che pagano un
quattrino e continui update da presentare. Diventa un lavoro a tempo
pieno e devi decidere se lavorare per queste cose e non come dipendente
per un'azienda, una scelta abbastanza pericolosa perchè anche se ti fai
un bel po' soldi adesso può darsi che tra 1 anno siano state spazzate
completamente via da qualcos'altro mentre bene o male con un'azienda hai
più garanzie di lavorare sempre e prendere una quota fissa al mese.
Comunque non sono più un singolo progettista perchè lavoro (sempre come
programmatore), anche se sto continuando a fare dei software per conto
mio (che non c'entrano niente col lavoro) e continuo a coltivare questa
passione in parallelo. Prima credevo che si potevano fare molti soldi
vendendo del software per conto proprio ma adesso mi sono reso conto che
è un massacro e ci sono troppi rischi, di tutti i tipi, te ne potrei
elencare una marea. Molto meglio il lavoro fisso + opensource sporadico,
magari diventi famoso e ti fai un pacco di soldi con le donazioni senza
neppure volerlo ed anche se non accade hai sempre fatto un progetto che
ti fa curriculum di lavoro come esperienza nel mondo opensource.

> Ho letto su un ng che un softwarista si licenziò dalla sua azienda
> perchè non aveva più tempo per gestire le sue applicazioni su Iphone o
> Ipad che gli permettevano di guadagnare più del suo stipendio.
>
> Sarà stato tutto vero?!

Si, secondo me è vero, però come dicevo prima sono scelte rischiose. Per
dirne una più clamorosa e che non c'entra niente con la programmazione,
un certo Nostalgia Critic ha iniziato facendo video-recensioni
deficienti dei film del passato ed ha guadagnato talmente tanti soldi
con le donazioni da licenziarsi dal lavoro. Beh, nel suo caso aveva
senso perchè si è fatto centinaia di migliaia di dollari (tipo 200 mila
pari forse a 10 anni del suo vecchio lavoro) per non parlare del fatto
che queste web celebrities guadagnano sempre da tutti i lati, tipo il
video game nerd che con una donazione si è fatto 325 mila dollari per un
film che probabilmente gli costerà 10 mila dollari più migliaia di
dollari al mese che ricava con i visitatori online. Arrivati a questo
punto, consiglio a tutti i programmatori di lasciar perdere i lavori
individuali e di formarsi in team di sviluppo iniziando con progetti
opensource e costruendosi una certa fama perchè, come è stato scritto
qualche messaggio fa, la fama ha portato 2.7 milioni di dollari di
donazioni per un'avventura grafica punta e clicca stile day of tentacle.

http://www.kickstarter.com/projects/66710809/double-fine-adventure

Cose che ti fanno riflettere su come impiegare meglio il tuo tempo ;-)

Gianpaolo Ingegneri

unread,
Apr 14, 2012, 12:27:25 PM4/14/12
to

> 2.7 milioni di dollari

Ooops, erano 3.3 milioni di dollari :-)

Turbo

unread,
Apr 15, 2012, 5:25:55 AM4/15/12
to

Non a caso si chiama "rischio d'impresa" :)
Non tutti sono disposti a correrlo, d'altra parte però se ti va bene
puoi campare molto ma molto dignitosamente rispetto a fare il dipendente :)
Al contrario se ti va male, hai buttato via tempo e soldi (ma ne hai
guadagnato comunque in esperienza).

Gianpaolo Ingegneri

unread,
Apr 15, 2012, 9:12:44 AM4/15/12
to

> Non a caso si chiama "rischio d'impresa" :)
> Non tutti sono disposti a correrlo, d'altra parte però se ti va bene
> puoi campare molto ma molto dignitosamente rispetto a fare il dipendente :)
> Al contrario se ti va male, hai buttato via tempo e soldi (ma ne hai
> guadagnato comunque in esperienza).

Il problema è che quel tipo di esperienza è spesso incompatibile con le
competenze richieste in azienda. Chi vende sul web è abituato a
sviluppare per un mercato consumer mentre in azienda si sviluppano dei
progetti enormi a livello di codice per un mercato di grandi compagnie
che acquistano. Inoltre l'esperienza che fai da solo non è certificata
da un contratto di lavoro per cui se cerchi un posto che richiede
precedenti esperienze lavorative, anche se sei il bill gates del mondo
open, non puoi scrivere nulla sotto quella voce. La verità è che spesso
le aziende cercano tecnici e come tecnico non ti puoi formare se non sul
posto di lavoro, per questo motivo vengono richiesti 2 o 3 anni di
precedenti esperienze lavorative, perchè le aziende non ne vogliono
sapere di neolaureati che non sanno dove mettere le mani o peggio ancora
di sviluppatori autonomi con poca pratica perchè hanno vivacchiato sui
blog o sulle app per smartphone fino a 35 anni. Il lavoro da dipendente
non sarà molto retribuito però in compenso ti da le precedenti
esperienze lavorative che puoi usare in futuro per trovare dei lavori
che saranno retribuiti meglio, o magari l'esperienza tecnica per poterti
mettere in proprio e guadagnare dei soldi veri con grosse clientele
anche all'estero.

Ricordo ancora le discussioni folli di blogger che vantavano 2 mila euro
al mese guadagnati con gli advert sui siti che recensivano film o roba
simile, cose che per il loro lucro rischiavano di chiudere il mese dopo
(come i siti che sono caduti dopo la chiusura di megavideo). Che caspita
di curriculum possono mai esibire per trovare un lavoro decente?
Purtroppo è anche in questo modo che si crea la disoccupazione.

Enrico Colombini

unread,
Apr 15, 2012, 11:10:01 AM4/15/12
to
On 14/04/2012 15.36, Maurus wrote:
> Tu pensi che ci sia spazio per "noi" singoli progettisti software per
> fare un'applicazione un minimo lucrosa su piattaforma Android?

Un po' di spazio forse c'e' ancora, ma come gia' successo per iPhone si
sta sovraffollando (con tutte le ovvie conseguenze).

--
.Erix.

Enrico Colombini

unread,
Apr 15, 2012, 11:12:17 AM4/15/12
to
On 14/04/2012 18.25, Gianpaolo Ingegneri wrote:
> Arrivati a questo punto, consiglio a tutti i programmatori di lasciar
> perdere i lavori individuali e di formarsi in team di sviluppo iniziando
> con progetti opensource e costruendosi una certa fama perchè, come è
> stato scritto qualche messaggio fa, la fama ha portato 2.7 milioni di
> dollari di donazioni per un'avventura grafica punta e clicca stile day
> of tentacle.

Era pero' un caso eccezionale: non era esattamente l'ultimo arrivato e
non veniva dall'open source. E' un po' come se Ferdinand Porsche avesse
chiesto delle donazioni per un nuovo progetto automobilistico :-)

--
.Erix.

Enrico Colombini

unread,
Apr 15, 2012, 11:13:29 AM4/15/12
to
On 15/04/2012 11.25, Turbo wrote:
> Al contrario se ti va male, hai buttato via tempo e soldi (ma ne hai
> guadagnato comunque in esperienza).

D'altra parte, dopo qualche anno l'esperienza diventa obsoleta e rischi
di ritrovarti al punto di partenza (esperienza personale).

--
.Erix.

Gianpaolo Ingegneri

unread,
Apr 15, 2012, 5:02:42 PM4/15/12
to

> Era pero' un caso eccezionale: non era esattamente l'ultimo arrivato e
> non veniva dall'open source. E' un po' come se Ferdinand Porsche avesse
> chiesto delle donazioni per un nuovo progetto automobilistico :-)

Hai detto bene, non era l'ultimo arrivato però la sua fama risaliva a
quando si poteva farla in quel modo (mai detto facesse parte del mondo
open). Oggi se non si ha un team di sviluppo molto forte non si può fare
nulla per cui ai consiglio singoli programmatori di realizzarsi con
delle idee originali che nascono nel mondo open e magari potrebbero
finire in qualche progetto commerciale. Credo che uno sviluppatore debba
capire come non farsi del male in caso di mancato successo del progetto,
per cui se cominci da giovane e fai esperienza, puoi anche lavorare come
dipendente e fare qualche progettino opensource che ti ruba molto meno
tempo e ti fa rischiare di meno. Una volta fatta l'esperienza e le
giuste conoscenze sul posto di lavoro è possibile spostarsi su qualcosa
di più intraprendente. La cosa brutta è che io vedo sul web tanto
talento sprecato per via di tanti progetti che nascono per passione e
non hanno alcuna esperienza a sostegno delle idee che vi stanno alla
base. Oggi non serve più essere dei 18enni con talento, voglia e
capacità perchè il mondo dell'informatica è diventato così complesso che
se non hai una preparazione pratica e tecnica a sostegno delle tue
capacità rischi di sprecare tempo e salute senza aver ottenuto nulla di
concreto. L'età media per sfondare secondo me si è spostata a 30 anni
circa, dopo gli studi universitari ed anni di esperienza nel settore,
mentre prima bastava solo del talento e tanta voglia di fare.
Sicuramente un 18enne ha più voglia di veder girare della grafica
stratosferica con XNA invece di fare lunghe sessioni di analisi sulla
consistenza del software.
0 new messages