Domanda

Sto programmando in C, C ++, C # e alcune altre lingue per molti anni, principalmente per Windows e Linux ma anche piattaforme embedded. Di recente ho iniziato a fare un po 'di programmazione per iPhone come progetto secondario, quindi sto usando le piattaforme Apple per la prima volta dai miei giorni di Apple II. Mi chiedo cosa pensano gli altri sviluppatori che stanno arrivando su Mac OSX, Xcode e iPhone SDK. Ecco le mie impressioni, finora:

  • Mac OSX: molto confuso, tendo a finire con troppe finestre aperte e non so dove. Fortunatamente c'è la vista a volo d'uccello, senza di essa sarei perso. Almeno con la shell ci sono tutte le cose familiari che mi aiutano molto.

  • Xcode: non si sente bene come VisualStudio o Eclipse, i due ambienti con cui ho familiarità. Penso di potermi abituare, ma mi chiedo se Apple non starebbe meglio con Eclipse. Prima di trovare l'impostazione in cui tutte le finestre sono bloccate insieme l'ho odiato, ora posso tollerarlo.

  • iPhone SDK: strano davvero. Capisco il desiderio di Apple di controllare il loro ambiente, ma al giorno d'oggi sembra solo un po 'squallido e si stanno perdendo così tanto distruggendo la volontà degli sviluppatori.

  • Obiettivo-C: lo so da anni ma non l'ho nemmeno mai visto. La sintassi è scoraggiante, ma in realtà sono molto incuriosito dalla lingua. Penso che sia un'interessante terza tappa tra C ++ e C #, che mi piace molto. C'è qualche possibilità che Obj-C uscirà dalla sandbox del Mac a causa della crescita della popolarità della tecnologia Apple?

Curioso di leggere i tuoi pensieri,

Andrew

È stato utile?

Soluzione

Sono nella tua stessa barca (un po '). Sto sviluppando in C # da 7 anni, sin da .NET 1.0. Nelle ultime due settimane ho insegnato a me stesso Cocoa e Objective-C. Ecco le mie impressioni (nota per nota con la tua)

  • Concordato in quel disordine può essere un problema. Tendo ad usare gli Spaces pesantemente durante lo sviluppo in XCode (metto XCode in uno spazio, Interface Builder in un altro spazio, Instruments in un terzo spazio). Se non hai Leopard (e quindi nessuno spazio), usa Command-H per nascondere la finestra attiva. Usarlo tende a ripulire un po 'le cose (tuttavia sarebbe bello se si potesse comandare automagicamente la finestra corrente quando si fa il tab di comando su un'altra app).

  • Mi piace sempre più XCode. Odio Visual Studio: trovo che sia instabile, lento e bene, un po 'un IDE schifoso. Comparativamente ho trovato XCode veloce, stabile e mi piace come organizza e filtra i tuoi file. Non ho troppe scorciatoie sulle mie scorciatoie XCode, ma spero che ci sia un modo per passare rapidamente da una classe all'altra (simile alla scorciatoia ctrl + n in ReSharper). Intellisense potrebbe essere migliore per quanto riguarda la modalità di visualizzazione per l'utente, ma mi piace molto come essenzialmente crea un modello e puoi ctrl + / per passare all'argomento successivo in un messaggio.

  • Sto odiando la documentazione in XCode. Il sistema di aiuto fa schifo e per qualsiasi motivo mai trova quello che sto cercando. Finisco solo per cercare su tutto ciò che devo sapere ... Spero che migliorino la documentazione. Questa è la mia carne di manzo più grande in questo momento.

  • Non ancora del tutto, mentre sto esaminando l'intero framework Cocoa per desktop Mac. Finora mi piace davvero molto quello che vedo. Una cosa che dirò è che sarebbe bello se l'SDK di iPhone consentisse la raccolta dei rifiuti ...

  • Obiettivo-C - Non l'ho mai usato, questa è la mia prima incursione. All'inizio ero un po 'distratto dalla sintassi e dalle parentesi quadre per i messaggi, ma sta crescendo davvero su di me. È così veloce sfogliare un metodo e vedere i messaggi che quel metodo fa. Più lo uso, più Objective-C mi fa sentire bene ... comunque templating / generics sarebbe una gradita aggiunta al linguaggio.

Tutto sommato, la mia incursione nello sviluppo del Mac è stata piacevole e sono entusiasta di iniziare a lavorare (oggi! yay!) su alcuni progetti Mac / iPhone reali.

Altri suggerimenti

Sono d'accordo con i tuoi sentimenti. Arrivare dagli strumenti di sviluppo Microsoft (ed eclissi) su XCode è piuttosto duro. XCode sembra semplicemente ... incompiuto per alcuni aspetti. Certamente non ha lo smalto che mi aspetto da VS ed Eclipse.

L'SDK è simile, in gran parte è scarsamente documentato e ci sono molti buchi in cui sai che qualcosa dovrebbe essere, ma non lo è. Cercare di controllare attentamente la riproduzione di file audio / video è un esempio.

Objective-C, tuttavia, è eccezionale. Mi piace molto il linguaggio, nonostante le sue stranezze e idiosincrasie (i messaggi a null non sono un'eccezione di runtime? Davvero?) Una volta che i tuoi occhi C ++ si abituano alla sintassi, la messaggistica anonima liberamente digitata finisce per essere davvero bella da giocare con (se un po 'pericoloso e soggetto a RTE.)

Voglio davvero saltare e iniziare a sviluppare anche app per iPhone. Ho fatto un po 'di sviluppo per Motorola, Blackberry e Windows Mobile, che erano tutti fantastici e orientali, con una buona documentazione, facile accesso e installazione di SDK. Finora, penso che Apple stia diventando un po 'elitaria nel fatto che sembra che il loro ambiente di sviluppo sia disponibile solo su un Mac. Inoltre, non mi piacciono molto i loro concetti di licenza. Se vuoi essere in grado di pubblicare effettivamente app, devi esaminarle e hanno l'ultima parola su se puoi o no o se la tua app è considerata accettabile per essere eseguita sul loro prodotto superiore. Sono convinto che stiano rendendo più difficile per la comunità open source mantenere e produrre applicazioni o per il neofita iPhone, come me, persino iniziare a scrivere app per i prodotti. Ci sono molte cose brutte su Microsoft, ma devo dire che portano le loro API e SDK molto prima che i loro prodotti arrivino sul mercato e incoraggiano davvero i programmatori di tutti i livelli a scavare e ad essere coinvolti nella scrittura di app per i loro framework e sistemi operativi.

Ho lavorato su alcune piccole app per iPhone e sono solo stupito che non includano i componenti del framework che consentono agli sviluppatori di accedere facilmente ai servizi Web SOAP. Qualcun altro che lavora in un ambiente IT aziendale sente dolore?

Personalmente penso che la documentazione sia molto buona a questo punto. Su qualsiasi classe Obiettivo C puoi fare clic su doubleClick per visualizzare la documentazione relativa a quel termine e se ci sono progetti di esempio che utilizzano quella particolare classe elencata (almeno per molte classi specifiche di iPhone).

Cerca anche di attivare Research Assistant quando inizi per la prima volta e attiva Code Sense (non pensare che sia attivo per impostazione predefinita). La combinazione di XCode + Interface Builder è abbastanza potente quando ci si abitua, e francamente in pochi decenni non ho mai usato un builder di interfaccia migliore in termini di funzionamento dell'integrazione con il codice o della capacità di progettare interfacce che si ridimensionano in modo intelligente senza un sacco di lavoro extra.

Sono nuovo nella programmazione di iPhone e anche in XCode, dopo molti anni di programmazione su molte piattaforme e la mia impressione è piuttosto vicina alla tua (con alcune differenze):

  • Mac OSX: sono passato da Windows circa 2 anni fa (come esperimento) e sono rimasto :) - Non credo che tornerò indietro. Avere una base Unix è molto bello e adoro la GUI appariscente + Mi piace la semplicità di base dell'interfaccia. Mi ci sono voluti circa 2 mesi per abituarmi, ma non riesco a immaginare di tornarci. Odio il layout della tastiera del MacBook e alcune limitazioni della tastiera di OSX. È divertente come un'azienda così orgogliosa delle sue intuizioni sull'usabilità possa prendere una serie di decisioni così pessime. Forse i migliori esempi non hanno una scorciatoia da tastiera del menu di scelta rapida (clic con il tasto destro) e il fatto che sono necessari due tasti per eseguire attività come Home, End, PgUp, ecc. Il mio consiglio principale è di dedicare del tempo all'apprendimento di altrettante tastiere scorciatoie il più possibile. Consiglio anche di installare & amp; utilizzando le seguenti app di terze parti che hanno notevolmente migliorato la mia esperienza con il Mac: Quicksilver , Path Finder , 1Password , Things , TextMate , Text Wrangler & amp; Trasmetti .

  • Xcode: sono totalmente d'accordo con te. Penso che XCode sia piuttosto primitivo . Lo confronto con IntelliJ IDEA con cui lavoro molto e sembra che Apple sia bloccata da almeno 7 anni in passato:

    • la navigazione del codice è così primitiva con troppe finestre che rimbalzano intorno
    • devi usare sempre il mouse
    • il modello è molto limitato e si basa su concetti macro ingenui senza alcuna relazione con il contesto o l'ambito
    • il refactoring è limitato a poche semplici azioni
    • non puoi nemmeno facilmente svolgere compiti banali come ignorare un metodo
    • Il senso del codice è bello, ma avrebbe potuto essere molto meglio se avesse capito di scrivere ...

    La grande ironia è che i seri sviluppatori Mac non capiscono nemmeno che hanno un problema ... Sono così abituati al disordine che devono affrontare che non riescono a immaginare un mondo migliore ... Invece di aiutarti, XCode continua a intromettersi. Posso trovare dozzine di esempi su come fa schifo questo ambiente, rispetto ai moderni IDE Java (Eclipse, IntelliJ), ma credo che sia una perdita di tempo - sembra che Apple sia troppo orgogliosa per imparare dagli altri ... che è divertente se si considera il fatto che gli inventori di Java non erano timidi di impara da Objective-C . Il mio unico consiglio (anche a me stesso) è di fare un respiro profondo ogni volta che apri XCode e che sono più abituati a questo ambiente.

  • iPhone SDK: è anche peggio - abbiamo preso in considerazione il porting la nostra app mobile per iPhone un paio di mesi fa, ma abbiamo deciso di non preoccuparci perché eravamo preoccupati che Apple potesse rifiutarlo dall'App Store e non si può sapere in anticipo (hanno respinto un'app alquanto simile in passato perché troppo vicina ad iTunes!)

  • Obj-C: trovo abbastanza carino Objective-C e dopo qualche giorno ti abitui alla sintassi scomoda della messaggistica, ma ragazzo mi manca la garbage collection ... Dobbiamo occuparmi di allocazioni di memoria e rilasci un po 'come tornare indietro nel tempo ai miei primi giorni in C / C ++. Sto appena iniziando a imparare le sfumature di questa lingua, ma finora mi piace quello che ho trovato. Ci sono alcuni suggerimenti sparsi sul web sulle migliori pratiche di Obj-C che non puoi trovare nei documenti ufficiali e ho imparato molto da loro (vedi ad esempio la seguente discussione qui su StackOver )

Anche io provengo da un background C # e lavoro con l'SDK di iPhone dalla beta 2. Sono pienamente d'accordo con cranley sul fatto che VS sia un po 'goffo rispetto a Xcode. Xcode è MODO diverso e totalmente estraneo quando inizi a usarlo. Così è stato VS anche se in passato. Una volta che ti avvicini alla curva di apprendimento, è un'esperienza meravigliosa. Le app che sto sviluppando utilizzano il lato server C # (servizio Web) e odio assolutamente dover passare a VS per scrivere il codice del servizio Web da Xcode. Obj-C è anche abbastanza divertente da usare una volta appreso come funziona meglio: delegati (molto diversi dai delegati .NET), messaggi, categorie e tutte le altre stranezze presenti.

Ho fatto alcune programmazioni Java e Flex prima di .NET e ho sempre odiato i documenti .NET rispetto ai documenti Java. Semplicemente non lo tagliano. Ho trovato personalmente i documenti di Xcodes e il sistema di ricerca incredibili. Esistono innumerevoli guide PDF collegate ai documenti che hanno tonnellate di codice di esempio. Pensaci: l'SDK per iPhone è uscito dalla versione beta da circa 2 mesi. I documenti mostrano un livello di maturità di molti anni. E sì, è perché Obj-C esiste da circa un anno e le strutture sono simili.

Nel complesso, il problema più grande che ho riscontrato è che ci sono MOLTI sviluppatori .NET che saltano sul carrozzone di iPhone e provano a usare Obj-C come se fosse C # o VB. Non riescono a leggere i documenti base di Obj-C e tanto meno i documenti di iPhone e poi si sentono molto frustrati e alla fine falliscono. I forum di discussione sono pieni di questo scenario. La programmazione per iPhone non è facile. Imparare una nuova lingua non è facile. Ci vuole tempo e molto try.fail.try. Non è .NET quindi perdi quella mentalità prima ancora di iniziare e le cose saranno meravigliose.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top