Newsgroup: it.comp.macintosh
Titolo: Objective-C: ma sono io che comincio ad essere obsoleto...

...oppure è proprio un linguaggio particolarmente ostico?
E' vero che sono un po' arrugginito, ma il linguaggio C e il C++
posso dire di conoscerli abbastanza bene, così come altre forme di
linguaggi di programmazione object-oriented, ma la sintassi del
linguaggio Objective-C mi sembra particolarmente arzigogolata.
Oppure sono semplicemente le guide che si trovano nella sterminata
reference Apple Developer ad essere poco chiare.
Non so, forse ho solo bisogno di incoraggiamento... :-(


Ostico… a me pare orribile…. tutto il mondo che per chiamare un metodo 
usa <oggetto>.<metodo> e lui [oggetto metodo] per non parlare poi del 
modo di passare i parametri…
Io ti incoraggio nel senso che superata la prima difficoltà poi si 
viaggia bene ma appena lo molli per fare altre e ci ritorni dopo un po… 
lo maledici.
 
-- 
Saluti
 
Max
 

 lo maledici.
 
Io lo sto usando ora e lo trovo di una pulizia notevole, finché non 
cominci a innestare dieci chiamate una dentro l'altra. Ma comunque puoi 
evitare con variabili locali.
 
-- 
Andrea
 

 Non so, forse ho solo bisogno di incoraggiamento.
 
Non sono tanto esperto da dare consigli, da quello che ho visto 
migliora dopo un po'.
 
 
-- 
Andrea
 

Non so, forse ho solo bisogno di incoraggiamento... :-(
 
Ti hanno semplicemente cacciato in gola lo stello linguaggio che Jobs
imponeva col Next.
 
Dovrebbero semplificare la sintassi in una prossima revisione, ma in
generale fa cagare.
 
Essendo un superset del C puoi continuare a sviluppare in C/C++ usando
ObjectC al minimo.
-- 
Living in Barbaropoli
http://www.barbaropoli.com
 

 ObjectC al minimo.
 
Con Cocoa?
Lo chiedo perché il linguaggio in sé non è un gran problema, se non ti 
piace objC ne usi un altro. Ma se sta usando Cocoa allora objC gli 
conviene.
 
Tra l'altro non è che C++ sia particolarmente bello o pulito.
 
-- 
Andrea
 

Tra l'altro non � che C++ sia particolarmente bello o pulito.
 
Con Cocoa inteso come sviluppo di applicazioni per OS X magari C++ non
conviene, ma se il target e' iOS, magari un pensiero a C++ ce lo farei
anche se non e' pulito.



 
Ho sempre pensato che la sintassi di objective-C sia frutto di qualche 
serata a base di sbronze di birra avariata. L'impatto � effettivamente 
un po' brusco ma se hai gi� un'esperienza consolidata di programmazione 
dopo qualche giorno di uso continuativo ti sembrer� di conoscerlo da sempre.
 
Io ai tempi m'ero preso un libro che dedicava i primi capitoli al solo 
linguaggio decontestualizzato dal suo utilizzo con l'sdk di iOS che s'� 
rivelato molto utile. Partire a razzo a sviluppare una app � IMHO una 
pessima idea. Le guide dell'sdk di Apple sono focalizzate solo sull'uso 
dello stesso e sorvolano su tanti dettagli non molto intuitivi che sono 
propri del linguaggio (e quindi considerati acquisiti) e non di iOS.
 
Nei primi esperimenti magari augurerai una morte atroce a chi ha 
chiamato "protocolli" quelle che potresti conoscere come interfacce (e 
interfacce quelle che somigliano tanto a delle classi) e forse ti 
domanderai perch� i + e i - che potrebbe venirti in mente che in uml 
rappresentano membri pubblici e privati - qui marcano quelli statici e 
quelli di istanza... poi ci farai l'abitudine e tirerai dritto.
 
-- 
r--r--r--

 farai l'abitudine e tirerai dritto
 
Qui l'ignoranza mi ha dato un bel vantaggio.
 
-- 
Andrea
 

 ...oppure � proprio un linguaggio particolarmente ostico?
 
Molto probabilmente con i linguaggi deve scattare anche una certa
simpatia e affinita'. Tanto per dirti io sono anni che cerco di impormi
di usare il Python ma alla fin fine devo dire che non mi piace mentre
amo molto l'Objective-C.
Dell'Obj-C mi piace molto l'enorme semplicita'.
Io la vera difficolta' la vedo nell'uso dei frameworks ma questa e' una
cosa comune a tutti i linguaggi.
Forse la maggior particolarita' dell'accoppiata Obj-C+Cocoa e' l'uso
della delegazione. Non ho ben capito come sia nata ma alla fin fine ci
si abitua anche a questa.
Ammetto pero' di non essere un programmatore e quindi mi limito a
scrivere piccoli programmi, principalmente di calcolo numerico e
gestione dei files. Ho visto che con un po' di pazienza si riesce
veramente a risalire a tutte le informazioni che servono. La
documentazione Apple e' veramente buona e di facile consultazione.
Poi quello che trovo veramente fantastico e' la facilita' con cui si
costruiscono le interfacce grafiche e soprattutto il fatto che ti
vengono generate in automatico Outlets e Actions (il bello e' che ci
pensa XCode ad aggiungere la proprieta' weak. Non devi neanche fare lo
sforzo di immaginarlo). Bello anche il concetto di Bindings. Insomma a
me sembra che sia veramente un ottimo sistema. Bisogna solo avere un po'
di pazienza e abituarsi un po' alla prolissita' del linguaggio (meno
male che c'e' il completamento automatico).
 
Io, principalmente, ho studiato l'Objective-C sul libro del Kochan:
"Programming in Objective-C" (ho sia la seconda che la quinta edizione.
A breve esce la sesta. Se devi prenderlo forse vale la pena aspettarla.
Oltre ad aver aggiornato ad ARC ha anche inserito tutti i vari literal e
la notazione col punto che alleggeriscono parecchio il codice).
Poi ho preso: "Cocoa Programming for Mac OS X" ma ne ho letto ancora
poco. Non lo trovo molto coinvolgente come il Kochan.
Mi e' piaciuto molto di piu': "Cocoa With Objective-C" anche se devo
ammettere che certe volte e' forse fin troppo sintetico (pero' l'ho
letto qualche anno fa. Non me lo ricordo proprio bene).
Ho appena comprato anche il libro: "Objective-C 2.0 per iOS e OS X" di
Andrea Picchi ma accidenti col passaggio ad ARC si e' dimenticato di
togliere molti riferimenti alla gestione manuale della memoria e si
trovano indicazioni di [pool drain] e varie che possono veramente
confondere (Un po' mi scoccia. Sono sempre 30 euro nella versione
digitale).
 
Ho poi seguito i corsi video di Simon Allardice:
http://www.lynda.com/Simon-Allardice/21-1.html
 
sia su Objective-C che Cocoa.
Quello sul linguaggio non mi e' piaciuto ma quello su Cocoa e' veramente
fatto bene, peccato che sia solo un corso minimale e tante cose non
vengono affrontate.
Spero che pubblichi un corso intermedio o avanzato.
 
Comunque, nel complesso: Kochan (per Objective-C + Foundation) +
Allardice (per Cocoa o meglio per AppKit) permettono veramente di
entrare molto facilmente nel mondo Apple.
 
Comunque, qualsiasi testo tu decida di prendere assicurati che sia
aggiornato con ARC (forse non l'ho detto ma si tratta della gestione
automatica del reference counting per la gestione della memoria).
 
P.S.
Non ho parlato di Core Data perche' questo per me e' un argomento
ostico.
 
-- 
Ciao da Francesco B.

 
 
cosi fugo la mia ignoranza sulle reference weak e strong.
 
-- 
Andrea
 

 che impone qualcosa mi danno l'idea di un velato attacco retorico.
 
Il principale linguaggio di sviluppo del sistema non è un dettaglio da poco, e Jobs sicuramente se ne è occupato. Viste le fondamenta di NextStep il runtime ObjC doveva (almeno inizialmente) rimanere, ma nulla proibiva di affiancare a ObjC (inteso come linguaggio) qualcosa di più maneggevole e conosciuto che usasse il runtime di ObjC.
 
Probabilmente è l'ennesima scelta che rientra nella filosofia del "walled garden"
 
m.

 Respect.
 
Aspetta. Ho detto che ho letto, mica che ho capito tutto :-)


 Non so, forse ho solo bisogno di incoraggiamento... :-(
 
hai probabilmente bisogno di cambiare leggermente paradigmi
 
il c++ pur essendo object oriented e' un linguaggio statico ove tutto
avviene al momento di compilare (e, a ben vedere, mi pare ben piu'
arzigogolato nella sintassi... o quantomeno sterminato!)
 
l'objc deriva da smalltalk che e' quanto di piu' dinamico possa esistere
ed e' piu' affine come modo di pensare ad altri linguaggi dinamici che
permettono "introspezione" quali python e ruby 
 
mi sbaglio o anche questi ultimi 2 non son tra i tuoi favoriti?
 
oltre al gia' citato kochan introduttivi anche
 
http://tinyurl.com/p7tlak8
 
 
http://tinyurl.com/pzrnvk8
 
 
se invece vuoi dare un occhio alla libreria
 
http://tinyurl.com/p84usk5
 
 
o anche il datato ma ben strutturato (e piu' completo)
 
http://tinyurl.com/ncw992y
 
 
questo invece per capire il modo di pensare
 
http://tinyurl.com/nv8q6l5
 
 
interessante anche
 
http://tinyurl.com/qa4ts7g
 
 
 
 

 Parli del linguaggio o di Cocoa?
 
Forse il punto è proprio questo, ancora non mi è chiaro dove finisce il 
linguaggio e dove comincia il framework (che a lume di naso sembra 
sterminato).

 permettono "introspezione" quali python e ruby
 
Tra l'altro Programming Paradigms usava proprio Smalltalk o 
pseudo-Smalltalk IIRC (almeno la parte che lessi).
 
-- 
Andrea
 

 anche se non e' pulito.
 
Motivo? ObjC++ non ti basta?
 
-- 
Mirko
http://www.lynapp.com
 
 

Motivo? ObjC++ non ti basta?
 
E' un superset del C++. Magari devi fare il porting di un gioco che
hai scritto in C++ e Object  C++ potrebbe essere usato come "colla"
per usare librerie C++.
 
O magari non ti piace la sintassi.



il linguaggio finisce a 
 
[foo bar];
 
e qualche @ qua e la'
 
per il resto e' C 
 
il resto e' framework

 Funziona proprio come un preprocessore.
 
si mi sono espresso molto male, per trovare retain cycles a runtime si
usano altri strumeni (leak)
 
ARC funziona esattamente cosi e, cosa da non disprezzare e'
perfettamente compatibile con pezzi di codice scritti 
 
di fatto pero', al;men o dal poco che l'ho usato, i suggerimenti a
compile time di ARC prevedono *un botto* di possibili problemi
 
tutto clang e' estremamente "pedante" e pieno di buoni consigli, ci se
ne accorge usandolo per compilare la roba open che di solito passava
senza warnings dentro al gcc


 che gia' sai)
 
ma forse dipende da quello che gia sai?
 
anche il cinese, per me, e' una lingia molto astrusa...