Vai al contenuto

App in C?


Messaggi raccomandati

  • Admin

Ciao LAnna!

 

Il linguaggio principale per scrivere apps, come certamente saprai è Swift. A proposito di altri linguaggi ecco cosa dice Matthijs Hollemans, una specie di guru della programmazione iOS:

 

 

 

Swift is not the only option for making apps. Until recently, iPhone and iPad apps were programmed in Objective-C, which is an object-oriented extension of the tried-and-true C language. Because of its heritage, Objective-C has some rough edges and is not really up to the demands of modern developers. That’s why Apple created a new language.

Objective-C will still be around for a while but it’s obvious that the future of iOS development is Swift. All the cool kids are using it already.
C++ is another language that adds object-oriented programming to C. It is very powerful but as a beginning programmer you probably want to stay away from it. I only mention it because C++ can also be used to write iOS apps, and there is an unholy marriage of C++ and Objective-C named Objective-C++ that you may come across from time to time.
 
Ecco qui invece alcune risposte più tecniche alla tua domanda su Stack Overflow:
 
Link al commento
Condividi su altri siti

La risposta è sia si che no ti spiego il perchè.

 

Il linguaggio ufficiale Objective C è un ampliamento del C. Tutta la sintassi C funziona in Objective C.

Nello stesso tempo pensa a Objective C come se fosse una libreria per interfacce grafiche... è chiaro che a seconda del sistema dovrai impararne una diversa, quindi anche se sai il C (e puoi quindi progettare la tua app in C) dovrai poi studiarti "l'interfaccia grafica Objective C" per riuscire a fare un'app iOS effettiva (ho semplificato moltissimo ma il concetto è quello. usare solo C sarebbe come cercare di lavorare senza #import).

Di recente è inoltre stata ampliata l'offerta dei linguaggi utilizzabili. Infatti ora puoi intercambiare Objective C con Swift. Per ora non si sanno ancora le specifiche di swift (non si sa se sia un derivato di objective c ad esempio a livello di codice), ma sicuramente a livello di linguaggio è simile a molti altri linguaggi in circolazione come Java, C# e Objective C appunto... È quindi una delle possibilità offerte.

 

Per quanto riguarda il C++ infine lo puoi usare tranquillamente ma solo in accoppiata con Objective C. Swift infatti non comunica con il C++ a meno che non lo "filtri" attraverso una classe in Objective C.

 

Ci sono poi una serie di limiti ma a livello generale queste sono le regole.

 

I linguaggi ufficiali in questo periodo sono due, Objective C e Swift. Si pensa che prima o poi Apple abbandonerà Objective C per rendere Swift l'unico linguaggio, a livello pratico questo per ora non può accadere per tante ragioni (tra le quali il fatto che lo stesso OS X è scritto in Objective C e per ora non è possibile tradurre il 100% delle istruzioni dall'objective c allo swift). Tuttavia per creare nuove app è consigliabile farlo già in swift, visto e considerato che è più semplice, più mantenibile e nella sua versione definitiva dovrebbe anche essere più veloce.

 

PS. Per gli amministratori. Perchè rinominare questa sezione XCode? Vero che si parla in particolare di apple ma come c'è una sezione grafica (e non mi pare si chiami Aperture) e una sezione Editing video (che non si chiama final cut) non ha senso togliere la sezione Sviluppo in favore di una sezione XCode... anche perchè se magari uno vuole un consiglio su java o simili e non conosce il forum magari non posta neanche i suoi dubbi... non mi pare tra l'altro che rinominarla abbia favorito lo sviluppo di questa sezione.

Link al commento
Condividi su altri siti

Grazie ancora!

Rende benissimo il paragone con una GUI: se voglio scrivere in C un programma con GUI, devo utilizzare e quindi conoscere delle lib es qt etc,

così se voglio scrivere una app: mi serve una GUI, e nel caso di osx la "lib" è...era?! :)  Objective-c; giusto?

 

Ecco, Objective-C non lo trovo molto "comodo"  in quanto non sono abituata ai suoi costrutti, ho dato  un occhio a Swift (credevo fosse solo un framework!) e mi sembra invece molto più a me familiare!

 

Che sia sensato da subito imparare Swift, saltando Objective C?

A me non interessa pubblicare app, ma solo imparare!

 

Grazie ancora!
 

Link al commento
Condividi su altri siti

È proprio questo il motivo per il quale apple ha introdotto swift, molti si spaventavano di objective-c perchè è in effetti un linguaggio pensato in modo molto all'"antica", ostico da imparare e scomodo da usare anche se molto versatile.

Se sai un po' di C probabilmente non sarà molto complesso capirlo (diciamo che è complicato all'inizio), ma indubbiamente Swift è un linguaggio moderno e ben fatto.

 

Imparare Swift saltando Objective c? Sì può indubbiamente fare, swift è nato per essere utilizzabile come alternativa a objective-c.

Conviene? Beh, in realtà per adesso il problema principale di swift è che è ancora in sviluppo e in evoluzione continua (nel senso che per quest'anno difficilmente vedremo un linguaggio stabilissimo)... e non si sa ancora se quel che ha detto apple sulla velocità d'esecuzione sia del tutto vero o solo in parte (da alcuni test si direbbe di no ma probabilmente bisogna solo attendere un ottimizzazione, infatti con i mesi sta migliorando). Non si sanno neanche le specifiche del linguaggio (che prima o poi apple dovrebbe rilasciare).

Diciamo che c'è molta incertezza ma anche molto entusiasmo tra gli sviluppatori, indubbiamente è un linguaggio molto comodo e facile da imparare, che evita errori che possono rendere il codice lento e difficile da mantenere, nello stesso tempo Objective-c è ancora leggermente più versatile (in particolare per chi vuole utilizzare app con codice in C++).

 

Il mio consiglio? Impara prima Swift. Se poi vorrai hai sempre tempo a metterti ad imparare anche objective-c. Nel frattempo magari Swift migliorerà a tal punto che objective-c non lo userà più nessuno, oppure si delineranno meglio le cose che objective-c può fare meglio e a quel punto al posto di studiarti tutto potrai concentrarti solo su parti di codice.

Se Swift si rivelasse un linguaggio poco ottimizzato e poco utilizzato (ipotesi poco plausibile perchè anche restasse com'è ora sarebbe comunque un buon linguaggio) non sarebbe comunque uno spreco di tempo perchè avresti imparato un linguaggio ad oggetti moderno che ha preso ispirazione da java, c#, objective c (in pratica imparando swift ti troverai in vantaggio nell'imparare tutti questi linguaggi).

 

Un'ultima cosa, mi pare di aver capito che sai anche C++ quindi non dovresti aver problemi con la programmazione a oggetti, ma se avessi qualche dubbio imparare Swift è il modo migliore per toglierseli (visto che è un linguaggio ridotto all'osso ti puoi concentrare nel capire i costrutti).

Tra l'altro, anche solo imparando swift potresti tranquillamente pubblicare app già adesso.

Link al commento
Condividi su altri siti

  • Admin

Ciao LAnna, non c'è molto da aggiungere a quello che ha detto Lief, se non: prova dai!

 

Impara Swift con l'ottimo libro gratuito di Apple:

https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/

 

 

Impara Swift e Xcode insieme, con gli ottimi tutorial che trovi online, per esempio questo:

http://www.raywenderlich.com/store/ios-apprentice

(iscrivendoti alla loro newsletter avrai il primo capitolo gratuitamente)

 

 

E ricordati cosa dice Apple di Swift:

Swift is a successor to the C and Objective-C languages. It includes low-level primitives such as types, flow control, and operators. It also provides object-oriented features such as classes, protocols, and generics, giving Cocoa and Cocoa Touch developers the performance and power they demand. https://developer.apple.com/swift/ 
Link al commento
Condividi su altri siti

Grazie mille a tutti!

Ottimo mi metto su Swift, in caso poi mi toglierò il sassolino di conoscere anche l'objective-c, anche perché in realtà conosco Java ma poco C e C++ e mi piacerebbe impararli.

 

Il sito http://www.raywender.../ios-apprentice l'ho proprio individuato cercando info su swift, l'ho trovato ben fatto!

 

Grazie davvero e semmai alla prossima domanda?!

Ciao!

Link al commento
Condividi su altri siti

Grazie!

E' davvero interessante http://www.raywenderlich.com/store/ios-apprentice!, 

una cosa però non mi è chiara (sempre se non stia uscendo dal tema di questo 3d?):

che differenza c'è tra GLKit e SpriteKit?

 

più che altro mi pare presto per parlare di GLKit o Spritekit... prima dovresti imparare il linguaggio di base (swift nel tuo caso) poi passare agli utilizzi specifici.

Sia spritekit che Glkit sono comunque dei framework, in particolare Spritekit serve per i videogiochi 2d, mentre GLkit gestisce più facilmente le open GL... Se vuoi specializzarti sui videogiochi ti consiglio comunque di dare un'occhiata a Unity3d, che è un engine grafico completo molto ben fatto e gratuito... vero che funziona solo con c# e javascript ma usa solo scripting quindi è molto semplice da usare e da molte soddisfazioni anche per giochi molto elaborati, è inoltre compatibile con mac e xcode ma ti permette ugualmente di esportare i giochi per quasi tutte le piattaforme esistenti permettendoti di fare videogiochi multi-piattaforma che girano sia su computer (windows,mac, linux) sia su mobile (ios, android, windows phone) e addirittura (con le licenze giuste) su console... diciamo che il proncipale vantaggio è poter codificare una volta e avere il proprio videogioco ovunque cosa che con xcode non è possibile.

Link al commento
Condividi su altri siti

Grazie davvero per ciò che mi insegnate,

Per le dettagliate spiegazioni!

Si è presto per le OpenGL e spritekit ma era solo una curiosità che volevo capire.Tanto da avere un quadro una visione di insieme dell'ambiente OS X!

Ne avrei un'altra:

Si potrebbe "usare" i framework di Cocoa col c senza dover usare obiettive c o swift?

(Comunque userei swift! ) dato che vorrei imparare il c mi sarebbe piaciuto farlo in ambiente OS X.

Unity! Ne sento tanto parlare,ero convinta fosse solo per Android.

Interessantissimo quello che mi hai spiegato invece:

È opensource? I sorgenti sono disponibili? ... Sono un po' curiosa!

Link al commento
Condividi su altri siti

Ne avrei un'altra:

Si potrebbe "usare" i framework di Cocoa col c senza dover usare obiettive c o swift?

(Comunque userei swift! ) dato che vorrei imparare il c mi sarebbe piaciuto farlo in ambiente OS X.

 

 

Allora, la risposta è NI!

 

Cocoa è costituita da molti "mattoni" che vanno a comporre l'intero framework.

Alcuni di questi (diversi a dire il vero) sono scritti in puro C ma molte, molte altre, quelle di più alto livello e con le quali ti interfacci nel 90% dei tempo (se non per applicativi particolari) sono scritte in Objective-C e pertanto potrai usarle solo impiegando l'Objective-C (o il Swift).

 

Io sinceramente ti sconsiglio di impararti in maniera approfondita il C. Fidati, è un linguaggio ostico, procedurale, e del tutto estraneo ai concetti della programmazione ad oggetti.

Se posso darti un consiglio impara bene lo Swift, poi buttati sul Cocoa (che è un universo enorme!) e solo quando ti ritroverai a dover sbattere la testa su certe parti del Cocoa che richiedono una conoscenza più approfondita del C allora approfondisci l'argomento.

 

Farlo prima ti provocherebbe solo dei grossi mal di testa e una marea di confusione.

Link al commento
Condividi su altri siti

Unity! Ne sento tanto parlare,ero convinta fosse solo per Android.

Interessantissimo quello che mi hai spiegato invece:

È opensource? I sorgenti sono disponibili? ... Sono un po' curiosa!

 

ti confondi. Unity desktop è un'interfaccia di ubuntu.

Unity3d http://unity3d.com/è un programma gratuito e a pagamento, grafic engine, closed source ma molto ben fatto (un po' come se fosse Unreal).

Link al commento
Condividi su altri siti

Che sciema, grazie mille!

Ma è possibile usarlo anche con java?

no, ma usa c # che se provi a vederlo un po' è quasi java. poi è solo scripting, molto semplice, ci sono una serie di metodi e si usano moltissimo quelli (anche se ne puoi definire altri tu).

 

 

Grazie! Ma essendo l'obj c scritto in c non è possibile usarle anche col c?

 

teoricamente è possibile, ma in pratica non conviene. è come cercare di riscrivere le librerie di base.

puoi servirti di librerie scritte in c dentro objective c ma, anche se in teoria è possibile, in pratica non conviene usare c all'interno del tuo codice principale

 

se vuoi cimentarti nell'impresa

qui hanno detto come si potrebbe fare con un esempio concreto te lo posto perchè è illuminante (mi era venuto lo stesso dubbio tempo fa):

http://stackoverflow.com/questions/10289890/how-to-write-ios-app-purely-in-c

 

il commento sotto il codice dice:

Brilliant! This is the best illustration of why not to write your app purely in C :):):)

e anche:

Great. So in order to avoid learning Objective-C (which I think was the gist of the question) you now have to learn the implementation details and C-level API of the Objective-C runtime.

 

praticamente conviene impararsi Objective-C (e/o Swift naturalmente)

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...