Swift of objective-C

Hoi allemaal!
Ik ben nieuw hier en heb een vraag voor jullie, ik zou graag als hobby beginnen met wat apps te ontwikkelen in samenwerking met vrienden en vriendinnen. Aangezien ik hieromtrent geen ervaring heb zou ik willen vragen of ik Swift of Objective-C zou moeten leren. Hoe zou ik hier het best mee kunnen beginnen? Moet ik eerst iemand met ervaring zoeken of is het mogelijk om dit als leek te leren (via het iBooks-boek Swift raak ik niet wijs). Heeft iemand hier ervaring mee? Alvast bedankt!

Tip: volg de gratis Stanford cursus “Swift” op iTunes U.

https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099

Swift… hartstikke hip en cool.

Je kan online verschillende video’s/cursussen vinden hoe je daar mee kunt beginnen. bijv. Lynda.com

Niet alleen hip en cool, het is de opvolger van Objective-C. Men is inmiddels al begonnen om de boel over te hevelen naar Swift. Buiten dat schijnt Swift ook wat makkelijker te zijn. Of het een goede taal is om mee te beginnen is dan weer vers 2. Wellicht dat een C# of Python handiger is om de kneepjes van het programmeren te leren. Daarna kun je dan wel overstappen naar iets als Swift. Tegenwoordig is er online veel lesmateriaal voor deze talen te vinden.

Leren programmeren is iets waar je moeite in moet steken en wat je echt moet willen, zoals al eerder aangeraden zou ik eerst met C# beginnen. Deze taal bestaat al wat langer en hier staat dan ook meer info van online (al zeg ik niet dat dat niet het geval bij swift is).

Als je 1 taal kent is het makkelijker en sneller om een andere te leren.

De vraag hoe moet ik hieraan beginnen is heel moeilijk te beantwoorden, ik heb hier zelf ook voorgestaan en heb in de eerste instantie veel boeken gekocht over programmeren. Vergeet niet dat de belangrijkste en beste manier om te leren programmeren, programmeren is. Door te doen leer je het het beste. Als je dus denkt de basis van C# (of eender andere taal) door te hebben, maak dan allemaal kleine programmaatjes, hoe simpel ze ook zijn, je leert erdoor. Op dit moment doe ik een HBO opleiding in de toegepaste informatica, en ik merk dat doordat ik al veel heb geprogrammeerd ik het veel makkelijker heb met o.a. swift :). Ik ga je express geen boek aanraden omdat je die makkelijk zelf kan vinden op bv. bol.com, verder verdiep je je misschien in de zoektocht hiernaar wat dieper in de verschillende talen en hun voor en nadelen. Probeer je verder ook niet te focussen op die taal wil ik leren en geen enkele andere, daar maak je het jezelf vaak moeilijk mee.

Ik heb vanuit het niets Visual Basic geleerd vanuit een boek uit de Dummies-serie en ben er door het te doen (en veel zoeken op internet) goed in geworden. Ik keek een middagje naar Swift en begreep dat het hetzelfde was, alleen met een andere syntax. Ik had de taal zo door.

Wat ik je aanraad is om met Python te beginnen, daar wat dingen in te maken voor de Mac of PC, en daarna aan Swift te beginnen. Swift is een nieuwe taal en maakt dus veel ontwikkelingen door. Door met Python te beginnen, leer je de basis en kan je daarna op de rijdende trein van Swift stappen.

Mijn mening:
Swift is de toekomst, maar naar nog lang niet geschikt voor productie.

Zelfs Apple lijkt er zo over te denken:
Apple Using Swift in iOS?

Apple denkt er zo helemaal niet over.
https://news.ycombinator.com/item?id=10923027

http://daringfireball.net/thetalkshow/139/federighi-gruber-transcript

“Niet alleen hip en cool, het is de opvolger van Objective-C”
Swift is geen opvolger van Objective-C maar wel gebaseerd op Objective-C in een stuk modernere jasje.

De opleiding van de LOI
https://www.loi.nl/p-5415-ios-developer-programmeren-voor-ios-met-objective-c
Is een gedegen cursus gebaseerd op Objective-C en iOS SDK.
Op de website staat vermeld wat er behandeld word en bestaat uit 2 boeken van c…a. 500 pagina’s.

Voordeel van zo’n cursus is is dat je gestructureerd gaat leren i.p.v. in het wilde weg.
Ik zou daarnaast zelf geen e-books kopen maar gewoon een echt boek (er zijn tal van boeken omtrent Objective-C/Swift/Core Data/Xcode)

Naast code kloppen heb je namelijk ook nog versie beheer, unit testing, code coverage wat eigenlijk weer onderwerpen op zichzelf zijn.
Nuttige filmpjes omtrent software ontwikkeling, aanrader:
https://www.youtube.com/watch?v=QHnLmvDxGTY&list=PL0t9k9FlHnTki4D06nfKTfO9aw0xaEIwx

@gijs735

Begin dan meteen bij C, bijna elke taal is hierop gebaseerd (structs, templates/vectors, datatypes, pointers (ook daar heb je in Swift soms mee te maken UnsafePointers/memory)).
Swift + Xcode is toch een stuk completer dan Visual Studio met C#
Er is zat informatie omtrent Swift (of je maakt een vertaal slag van Objective-C code naar Swift wat niet heel ingewikkeld is)

Nope, die links bevestigen wat ik al schreef :slight_smile:

Het is de toekomst maar nog niet geschikt voor productie.

Het ontbreken van een 32-bit OSX runtime (gaat er ook niet komen) is niet het probleem want OSX 10.6 vereist al een 64-bit CPU.

Het wachten is op het vastleggen van de ABI en de standard library (Swift 3.0 Q4 2016?), de runtime libraries kunnen dan verhuizen naar het OS i.p.v. deze met elke app mee te sturen zoals dat nu nog nodig is.

Zie:
Swift project is larger than I expect
Swift Application size – an unexpected pitfall of Swift

[quote=defores url=http://www.onemorething.nl/community/topic/swift-of-objective-c/#post-2931465 time=1454359429]“Niet alleen hip en cool, het is de opvolger van Objective-C”
Swift is geen opvolger van Objective-C maar wel gebaseerd op Objective-C in een stuk modernere jasje.
[/quote]
Stuur Apple even een mailtje dat ze hebben staan liegen op de keynote, dat de officiële website swift.org poep praat:

[quote]
Fast. Swift is intended as a replacement for C-based languages (C, C++, and Objective-C). As such, Swift must be comparable to those languages in performance for most tasks. Performance must also be predictable and consistent, not just fast in short bursts that require clean-up later. There are lots of languages with novel features — being fast is rare.[/quote]

En dat ook hun eigen developer site diezelfde poep weer herhaald:

Zoals Apple tijdens de keynote heeft gezegd en zoals het op de websites wordt herhaald: Swift is de opvolger van Objective-C. Punt.

Dat op dit moment nog niet alles in Swift zit hebben ze bij de keynote ook aangegeven. Swift is nog nieuw en er moet nog het nodige aan gebeuren. Daarom is het nu ook open source gemaakt en is nog lang niet alles in Swift geschreven. Er zijn nog veel situaties waarbij Objective-C de enige mogelijkheid of de beste optie is. Dat zal nog enige tijd zo blijven maar uiteindelijk zal Apple Objective-C gaan uitfaseren.

Apple heeft tijdens diezelfde keynote ook aangegeven dat Swift gemaakt is om het allemaal eenvoudiger te maken eveneens als het oplossen van diverse andere problemen die er zijn met Objective-C. Objective-C is behoorlijk gedateerd en dat los je niet zomaar op, opnieuw beginnen is haast makkelijker (en dat heeft men dan ook gedaan). Als je ontwikkelaars voor je platformen (Swift en Objective-C zijn niet beperkt tot iOS!) wilt winnen zul je een makkelijk en fijn te gebruiken programmeertaal moeten hebben met dito tools. Apple laat met Swift zien dat ze die boodschap hebben begrepen. Dat gecombineerd met het feit dat het uiteindelijk toch Objective-C gaat vervangen is reden genoeg om juist met Swift te beginnen ipv Objective-C.

Maar nogmaals, het is maar de vraag of Swift een taal is voor de beginnende programmeur. C# is iets wat veelvuldig op menig MBO en HBO instelling wordt gebruikt om mensen het programmeren bij te brengen. Idem voor iets als Python waarbij je natuurlijk ook de Raspberry Pi Foundation hebt die ICT en programmeren in het basis- en middelbaar onderwijs loopt te promoten. Daar vindt je veel tutorials en overige zaken omtrent Python.

@bitsflew: dat zijn allemaal zeer gedateerde posts uit 2014. Inmiddels zitten we op een veel nieuwere versie van Swift en is er ook het nodige veranderd (het operating system en de app store kennen tegenwoordig App Thinning om maar eens iets te noemen). Het is nog maar de vraag in hoeverre de kritiek nu nog opgaat. Let daar dus wel even op.

"Swift is intended as a replacement for C-based languages "
Er staat dus ook niet dat het ook the replacement is.

Je kiest niet een taal om te leren omdat je het makkelijk vind.
Je pakt bijvoorbeeld C omdat bijna elke taal hierop gebaseerd is en dus ook alle basis kennis bevat.
Je gaat ook niet in het wilde weg leren via tutorials op internet! je koopt een gekwalificeerd boek die je gestructureerd aan het leren zet.

@iep
Beide links nog steeds actueel en dat heeft alles te maken met de nog niet gestandaardiseerde ABI (milestone voor Swift 3.0)
Het gevolg is dat de Swift frameworks nog niet in het OS zitten, en je de benodigde dylibs als resource moet meesturen met elke Swift app.

App-thinning wijzigt daar niets aan!

Als je helemaal nog geen enkele programmeerkennis hebt is de genoemde Stanford cursus waarschijnlijk iets te hoog gegrepen. Wel een prima keuze voor als je dat al wel hebt.

[quote=TheBigZ url=http://www.onemorething.nl/community/topic/swift-of-objective-c/#post-2925648 time=1453048251]Tip: volg de gratis Stanford cursus “Swift” op iTunes U.

https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099
[/quote]

@TheBigZ,

Dat is ongeveer gelijk als ik van voetbal overstap op basketbal en de spelregels ga overslaan.
Het gaat om de details die je gaat mislopen omdat het nooit behandeld is omdat je ze hebt overgeslagen.

De topicstarter heeft verder niks meer laten horen; ik ben bang dat al onze goede bedoelingen weinig opgeleverd hebben voor deze TS.

[quote=defores url=http://www.onemorething.nl/community/topic/swift-of-objective-c/#post-2934120 time=1455102095]"Swift is intended as a replacement for C-based languages "
Er staat dus ook niet dat het ook the replacement is.
[/quote]
Pak het Engels woordenboek er eens bij en iemand die wel kan lezen. Het woord “replacement” is Engels voor “vervanger” en het woord “intended” betekent hier “bedoeld”. Kortom, Swift is ontwikkelt om de C-based talen zoals Objective-C te vervangen. Het is wel degelijk de opvolger van Objective-C. Dat ze meer dan alleen Objective-C willen vervangen blijkt ook uit de grootsheid waarmee ze het aanpakken. Het is open source, ze willen allerlei algemene dingen gaan implementeren, zorgen dat het op diverse platformen werkt, enz. Dat doe je niet voor een taaltje naast Objective-C. De investeringen zitten allemaal in Swift, niet in Objective-C. Dat zit nu meer in maintenance mode totdat Swift daadwerkelijk alle Objective-C code kan vervangen.

Als je het moet leren kies je iets wat je goed en makkelijk de basics van het programmeren aanleert. Pas daarna kun je bekijken of je een andere taal kiest omdat de rest die gebruikt, je bestaande software moet aanpassen en dus die taal moet gebruiken, omdat je het leuk lijkt, omdat het de betere keus is vanuit technisch oogpunt, enz.

Exact en dus begin je bij de basis en pak je een taal die zich juist goed leent om aan te leren ipv meteen in het diepe te springen door 1 van de moeilijksten te nemen. C# en Python worden om die redenen veelvuldig in het onderwijs gebruikt. Talen als C en C++ worden alleen gebruikt voor de gevorderden. C/C++ wordt aanzienlijk eenvoudiger wanneer je al een basis hebt. En al helemaal wanneer je het OOP wil aanleren want dat kun je niet met C/C++ (OOP in C++ is een lachertje vergeleken met de rest).

Begin liever met iets simpels wanneer je iets wil leren. Dat is een stuk makkelijker vol te houden en ook veel leuker dan wanneer je meteen aan het zweten komt. Je kunt daarna wel opschalen naar de moeilijkere materie.

@bitsflew: thanks, wel goed om dat er even bij te hebben.

@TheBigZ: ach, voor het archief :slight_smile:

Begin liever met iets simpels wanneer je iets wil leren. Dat is een stuk makkelijker vol te houden en ook veel leuker dan wanneer je meteen aan het zweten komt. Je kunt daarna wel opschalen naar de moeilijkere materie.

Ik weet niet in hoeverre je bekend bent met software ontwikkeling.

  • C is niet moeilijk; het is een kwestie van de basis leren begrijpen;
  • C wordt niet alleen door gevorderden gebruikt, het is een van de meest gebruikte ontwikkel talen;
  • in mijn opleiding werd gewoon let gegeven in C;

Dit is nu exact de reden waarom ik zeg begin met C omdat je anders dit soort opmerkingen krijgt.
Ik raad je nog eens aan om het youtube filmpje van Uncle Bob Martin te bekijken om wat deuren te openen.

Bij C moet je veel meer dingen weten alleen zijn alle onderwerpen op zich simpeler. Hogere programmeertalen automatiseren veel triviale aspecten van het programmeren. Hierdoor blijven de belangrijke taken over van het programmeren voor de programmeur. Zoals Dijkstra zei, hoe verder een hogere programmeertaal groeit, hoe verder de vereiste van de intellect meegroeit. Hierdoor bereiken hogere programmeertalen het omgekeerde waarvoor ze bedoeld zijn. Uiteraard zijn ze wel uitermate goed inzetbaar omdat je hetzelfde bereikt met veel minder code; de efficiëntie groeit ook mee. Daarom wordt juist C geleerd op scholen omdat het alle aspecten van het programmeren aan de programmeur over laat maar wel op een hele simpele manier.