16 berichten aan het bekijken - 1 tot 16 (van in totaal 16)
  • Q:
    Bijdrager
    Yoeri

    Objective-c: Hoe te beginnen?

    Hoi hoi,
    Ik wil me graag verdiepen in objective-c. Nu weet ik dat het erg moeilijk is om direct met objective-c te beginnen en dat het makkelijker is als je eerst een basis hebt.
    Deze basis zoek ik dus. Mijn vraag is: Wat is beter, C of C++?

    Yoeri’

    Bijdrager
    Wiki Post

    Hoe maakt men een wiki van een topic als dit? Wiki-achtige-programmeren-wat-nu informatie is handig om ergens klaar te hebben staan..

    Bijdrager
    filenox

    Handleiding & vergelijking met C++

    Als je wilt gaan programmeren moet je leren om dingen op te zoeken, veel succes.

    Bijdrager
    KingAchille

    Stanford University heeft zeer goede podcasts staan bij iTunes U (bij iPhone Application Development staan er een paar!)

    Bijdrager
    Swisi

    Heb deze ook gedownload, uitleg is wel duidelijk… mits je software hebt.
    Maar, uiteindelijk heb ik er maar 2 bekeken!:p

    Bijdrager
    Yoeri

    Wat een verschrikkelijk slecht antwoord Filenox.
    Dat is totaal geen antwoord op mijn vraag.
    Ik wil weten wat een betere bas legt voor objective-c. Wordt daar niet echt duidelijker van.

    Bijdrager
    johnkeates

    Als je nog geen programmeur bent kan je beter eerst met simpele dingen beginnen.
    Bijvoorbeeld eerst een scripttaal, dan simpel C / CLI, en dan pas iets meer (ObjC met GUI bijv.).

    Je zou het zo kunnen doen:

    1. HTML / JavaScript & PHP
    2. C
    3. Java / C++ / Mono (.net) [ kan je weglaten, maar juist dit laat je nieuwe programmeerstijlen proberen ]
    4. Obj-C

    Objective-C is moeilijker dan ‘even wat maken’, je moet eerst programmeer princiepes kennen, en weten wat je kan verwachten. Een goed programma schrijven en ontwikkelen kan meer dan een jaar kosten, met als resultaat een app waarvan andere mensen zeggen: “Oh, het doet alleen maar dat?”

    Met punt 1. kan je redelijk snel dingen als interface, MVC en programma-denken leren, met 2. kan je ‘echte’ programma’s leren schrijven, en zien hoe je moet compileren (handmatig) en libraries moet vinden en gebruiken. Om het dan niet te moeilijk te maken kan je dan eerst CLI-only leren. Dingen als gcc en a.out moeten geen ‘onbekenden’ meer zijn, misschien dat je automake/autoconf gaat gebruiken, of Mac Os X-only style gaat en Xcode het vuile werk laat opknappen. Als je daar wat mee kan, dan kan je met 3. leren hoe je complexer en hoger werkt, en meer externe tools betrekt bij het bouwen van een programma.
    Met punt 4. begin je pas echt OSX-specifiek te programmeren.

    Een pad als dit is de beste manier om auto-didactisch een goede programmeur te leren worden, en een brede kennis te hebben van zowel front-ends als back-ends. Stel dat je een cursus ObjC met Xcode gaat leren en na 10 lessen een programma kan schrijven, dan heb je nog steeds geen flauw idee wat er gebeurt, en wat wat doet en waarom het werkt. Je weet hoe je domweg code kan kloppen, maar iets nieuws maken is vrijwel onmogelijk met dat type ‘kennis’ wat je er aan overhoudt.

    Als je wil leren programmeren, ga er dan van uit dat je het eerste jaar van welke taal dan ook niks nuttigs uit kan poepen, het wordt allemaal brij die al bestaat, inefficient is en vol met bugs zit. M.a.w., programmeren kost tijd, het leren kost nog meer tijd.

    Bijdrager
    Yoeri

    @Johnkeates.

    Hartstikke bedankt! Daar heb ik nou wat aan. Kan al HTML en een klein beetje PHP dus zal morgen eens kijken naar C. Bedankt.:)

    Bijdrager
    Pieterr

    Mijn vraag is: Wat is beter, C of C++?

    Als dat de vraag is, is het antwoord C (om Objective-C te leren).
    Maar misschien kun je gewoon eerst eens beginnen met deze tutorial: Become An Xcoder.

    Zoals door de anderen al aangegeven speelt ook een rol wat precies je doel is. Wil je echt leren programmeren, of wil je zo snel mogelijk een iPhone/iPad applicatie maken?

    Bijdrager
    silvercircle

    Als je geen problemen hebt met Engels, dan raad ik het boek “Programming in Objective -C 2.0” of de voorganger aan.ISBN13:978-0-321-56615-7 ISBN-10:0-321-56615-7
    Hiermee leer je ineens Objective-C en er wordt niet verondersteld dat je al kunt programmeren in C.
    Het kost zo’n 50$. Ik vind het wel een degelijke basis om de taal te leren.
    Je raakt dan ook vertrouwd met Xcode.

    Nu is het wel zo dat je daarna toch ook best ergens in een of andere bib een boek over c of c++ uitleent om hiermee vertrouwd te raken. Ook op het internet vindt je hier ongetwijfeld veel goede bronnen.
    Maar het boek “Programming in Objective-C 2.0” zou ik toch aanschaffen om altijd bij me te hebben.

    Eenmaal je dit onder de knie hebt, dan kan je genoeg info vinden om te beginnen met Cocoa.
    Ook hierover vind je vrij veel boeken, goede maar ook minder goede.
    Cocoa is in principe niet meer of minder dan het toepassen van Objective-C natuurlijk, dus een goede basis is onontbeerlijk.

    En alhoewel JohnKeates min of meer gelijk heeft, zal je toch zeer snel echt kunnen programmeren en zinvolle dingen schrijven. Maar het begin is zoals altijd moeilijk.
    Met Objective-C kan je vlug applicaties schrijven maar je weet inderdaad niet meer wat er allemaal achter zit. Vraag is of je dat steeds moet weten? Het hangt er een beetje vanaf wat je wilt bereiken en hoever je wilt gaan.

    Veel succes!

    Bijdrager
    johnkeates

    Geen punt. Het beste is om iets heeeeeel simpels te doen wat geen kennis van C vergt, maar alleen laat zien dat je plaintext+gcc kan gebruiken om een binary te maken (die altijd a.out heet zonder settings bij gcc).

    Ik heb er zelf een begin mee gemaakt, maar het neemt veel tijd in beslag en zonder veel constante ‘training’ van jezelf & internet schiet het niet heel snel op;)

    Kan je overweg met Unix / Linux via de Command Line Interface? (CLI) Als je de basisprinciepes van “computeren via Terminal.app” kent kom je ook al een heel eind, om dat die interface vooral developer-gericht was bij het ontstaan. Het aan elkaar rijgen van meerdere dingen (procedural programmeren) is een simpel basisprinciepe; bijv.

     cat bestand.xml | grep "<eenofanderelement>" | wc -l 

    dat geeft het aantal <eenofanderelement>-en in bestand.xml weer. Als je dan zou programmeren maak je eerst de inhoud van een bestand beschikbaar aan je programma, dan laat je een zoektocht beginnen maar een bepaald gegeven, en dan zorg je dat elke keer als dat gegeven gevonden wordt een teller telt. Dat is natuurlijk vrij basaal en kan ook heel goed met php, maar het punt is niet het programmeren, maar de overeenkomsten tussen CLI en programmeer princiepes. De CLI is standaard procedural (alles na elkaar doen en gegevens doorgeven) maar is bijv. ook object-oriented te krijgen (dingen hoeven niet na elkaar, je kan dingen voorbereiden zonder ze dingen te laten doen, en later er naar refereren of delen [properties/methods e.d.] er van).

    Je zou als je al wat PHP kan eens kunnen kijken naar de basis van object-oriented programmeren, als je dat een beetje kan kom je een heel eind qua denk patronen als je dan C of Obj-C wil proberen.

    Als je PHP al ‘goed genoeg’ kent, en direct C wil oefenen, probeer dan eens een paar simpele dingen van:

    http://web.ift.uib.no/Fysisk/Teori/KURS/OTHER/c-all.html
    (index link) http://web.ift.uib.no/Fysisk/Teori/KURS/OTHER/newzealand.html

    Er staat dan wel 1993, maar tussen toen en nu is voor C niet zo heel veel anders geworden.
    Er staat ook een belangrijk stukje:

    <br />
    'C' is not a computer language for rank beginners. Start with<br />
    an interpretive language and proceed to a compiled language<br />
    which has an extensive error message vocabulary and run-time<br />
    checking facilities. In the interests of speed of execution 'C'<br />
    does very little to protect you from yourself!<br />
     

    Verder is het plain text, get used to it;) het is de beste methode om te werken, als je basis wil leren kan je het beste gewoon heel simpel doen, plain text, gcc, verder niks. Als je meteen een PDF of youtube les pakt en xcode doet en direct buildsystems en platform specifics leert heb je een stuk minder aan je kennis die je dan op doet terwijl het even veel moeite kost om het op de ‘simplistische’ manier te leren, waarna je je kennis op nagenoeg alles kan toepassen. C werkt met bijna alles (diverse besturingssystemen zoals MacOS, Mac OS X, GNU/Linux, BSD, Symbian, Windows, Windows Mobile, deels op Android, op microcontrollers en embedded computers), hier en daar zijn wat tweaks en unieke functies, maar die kan je doorgaans vermijden. (behalve platform-specifics zoals GUI’s – echte portable GUI’s zijn er niet)

    Als je je een maandje of twee verdiept in C, de ‘echte’ computer wereld (open source, irc, c, GNU, low-level applications, cli) heb je voldoende geleerd om in te schatten wat je wil kunnen en hoe je dat leert kunnen. Zodra de syntax een beetje bekend begint te worden kan je de code van open source programma’s lezen en daaruit ideen op doen. Ik zeg open source, om dat closed source natuurlijk niet te lezen is;) Daarom zijn er veel mensen pro-open source, om dat je dan iets met het programma kan, net als met bijv. PHP, daar kan je altijd bij en lekker mee werken zonder dat je problemen krijgt. C is net zo, maar dan alleen in open source vorm. Dat betekent niet dat alles open source MOET zijn, sommige software is anders niet winstgevend, maar het maakt de algemeen beschikbare kennis veel groter.

    Nog een kleine tip, programmeer engels. Variabelen nederlandse namen geven, of functies, is niet echt ‘universeel’. Het grootste deel van de programmeer wereld is engels, en dat is maar goed ook, want alleen dingen die een beetje uniform zijn kan je goed samen gebruiken, als je dingen gaat mixen krijg je een onbegrijpelijke bende, en dat wil je vast niet;)

    – spel/tik enz. fouten voorbehouden, schud het allemaal even uit m’n mouw! –

    Bijdrager
    johnkeates

    Wat silvercircle zegt is grotendeels correct, en dat boek is zeken een aanrader, maar ‘weten wat er achter zit’ is zeker wel belangrijk, misschien niet met alles (stel dat je een database aanspreekt, dan is het niet heel belangrijk dat je precies weet hoe het protocol er uit ziet als je gewoon en library gebruikt), maar als je gewoon alleen high-top-level programmeert en er gaat iets mis om dat op een lager niveau iets mis gaat, zal het heel moeilijk worden om er achter te komen hoe je dat gaat oplossen als je niet weet hoe het in elkaar steekt. Platform-specifieke dingen of Obj-C-specifieke dingen hoef je natuurlijk niet uit te pluizen, maar als je met C begint en een beetje door hebt hoe dingen werken, dan kan je daar met hogere functies (dus van die grote jongens waar je een klein beetje data aan geeft en je meteen alles precies zoals je het wil terug krijgt) meer mee doen dan als je alleen maar weet dat je bij bepaalde input een bepaalde output kan verwachten. Als je niet weet wat wat is, en dingen grotendeels black-boxes zijn zou je bijvoorbeeld misschien heel veel moeite kunnen doen om iets simpels te verrichten dat vrij simpel low-level te doen is. Misschien dat er bijvoorbeeld 100 functies zijn om bepaalde letters uit een string te filteren, dan ga je die niet opstapelen door een voor een die op je string toe te passen, maar dan kan je met de juiste kennis gewoon een eigen functie maken die alle letters in een keer filtert. (hoewel dit meer over regexes gaat is het punt wel valide)

    Als je alleen maar een business model gezien hebt, snel geld wil, en niet te veel tijd wil steken in kennis vergaren, dan kan je het beste inderdaad precies doen wat silvercircle post, je neemt het boek, leert dingen te maken, maakt ze, en laat het geld binnen komen. De problemen die je dan tegen komt qua programmeren zijn niet onoverkombaar, en zullen vast geen flinke performance-penalty betekenen, je product zal nog steeds het product zijn dat je in gedachten had. (maar dan krijg je dus wel windows-achtige praktijken ;))

    Bijdrager
    e.abrahamse

    Als echte beginner is het belangrijk dat je object georiënteerd programmeren in je hoofd en vingers krijgt. Daarnaast is het voor het programmeren voor OSX en iOS essentieel dat je je het MVC (model-view-controller) concept eigen maakt. Voor OSX en iOS is Objective C de enige toekomstzekere route. In Objective C kun je overigens ook C++ code compileren.

    Van Apress is er een verfrissend boek verschenen dat je misschien als eerste kennismaking met OOP en Objective C kunt gebruiken. Dit boek heet „Objective C for absolute beginners” en geeft je een goed overzicht in wat er nodig en mogelijk is. Wat Objective C betreft zou ik niet te lichtzinnig te werk gaan. Om een goede programmeur te worden is inzicht in de materie van OOP en MVC een eerste vereiste. Hierin zitten al vele (verborgen) uurtjes werk. JohnKeates heeft helemaal gelijk dat programmeren veel meer vaardigheden vereist dan alleen code inkloppen. Programmeren is als goed muziek maken. Dat leer je alleen met veel luisteren en uren lang oefenen.

    Het zou zonde zijn als je bij je eerste pogingen al het spoor bijster bent en je motivatie verliest. Vooral als je nog niet weet voor welke OS (OSX of iOS) je „gaat”, legt het bovenstaande boek een gemakkelijk te begrijpen en gedegen ondergrond. Het leert je als programmeur vanuit het perspectief van gebruikers te denken en richt alle aandacht op de factoren van jouw applicatie tot een succes maken.

    Het boek van Kochan „Programming in Objective C” is een echte klassieker en vereist bovengenoemd inzicht en -ervaring. Dit is in mijn ogen een volgende stap als je een OS keuze hebt gemaakt en al een aantal eenvoudige applicaties werkend hebt.

    Bijdrager
    Yost
    Bijdrager
    dj bazzie wazzie

    Hoi hoi,
    Ik wil me graag verdiepen in objective-c. Nu weet ik dat het erg moeilijk is om direct met objective-c te beginnen en dat het makkelijker is als je eerst een basis hebt.
    Deze basis zoek ik dus. Mijn vraag is: Wat is beter, C of C++?
    Yoeri\’

    De belangrijkste basis voor een goed programma is de denkwijze van de programmeur. Elke programmeur begint procedureel te programmeren en gaat dan steeds een stapje verder totdat hij zelf objecten aan het schrijven is en zijn eigen script- of programmeertaal omtovert in een OOP. Gezien je kiest voor het programmeren voor een compiler in plaats van een interpreter zou ik talen als Java, PHP of Applescript niet aanraden om mee te beginnen maar zou ik eerder beginnen met een taal als C. C is authentiek maar ook erg clean. Er wordt weinig door de compiler voor je gedaan en een klein foutje wordt meteen goed afgestraft. In mijn ogen leer je bij C niet alleen de basis van elke moderne programmeertaal maar ook de werking van een computer en compiler. Met clean bedoel ik ook dat er weinig dingen voor je worden gedaan. In object georiënteerde talen is er namelijk al sprake van overhead en goede compilers kunnen dit enigzins een beetje verminderen. Maar wanneer we het over talen hebben met interpreters is de overhead gigantisch zoals Applescript of Java. Omdat je in C volledige controle hebt over overhead worden hoogwaardige stukjes software die hoog rendement wil behalen nog altijd in C geprogrammeerd.

    Mocht je kiezen voor C zou ik ook zorgen dat je het boek van kerninghan & ricthie kan bemachtigen. Dit is ‘het boek’ dat iedere C programmeur (nodig) heeft. En maakt je daarna niet druk over de overstap naar Ovjective-C want die is heel erg klein. De overstap naar C++ is zelfs nog kleiner.

    Bijdrager
    johnkeates

    Wat de mensen hier boven posten is helemaal waar, en boeken zijn inderdaad ook handig om te hebben, maar stel dat je niet meteen van alles wil aanschaffen, dan zijn een paar online hulpbronnen en wat PHP code alles wat je nodig hebt om te kijken of je ‘programmeursdenken’ kan aanleren. Dat PHP een scripttaal is en Obj-C eerst door een compiler gehaald moet worden is misschien een verschil, maar als je net begint wil je niet steeds eerst compileren en dan verder, maar gewoon even wat ‘dingetjes doen’ of proberen, en dat gaat met een scripttaal makkelijker. Natuurlijk kan je ook zeggen dat je 100% zeker weet dat je echt C wil, en dan kan je gewoon meteen met een gecompileerde taal beginnen. (Je kan ook eerst op wikipedia of google uitzoeken wat het verschil tussen scripttalen en gecompileerde talen zijn, en dat er nog nog tussenwegen zijn, zoals java bytecode en just-in-time compilers)

    Misschien volg je dit topic helemaal niet eens meer;) maar het is nog steeds een redelijke hoeveelheid waardevolle informatie voor iedereen die in de toekomst iets over programmeren vraagt.:)

16 berichten aan het bekijken - 1 tot 16 (van in totaal 16)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.