Objective-C lernen - Lohnt sich das noch? Aufwand?

little_pixel

Aktives Mitglied
Mitglied seit
06.06.2006
Beiträge
4.608
Mir hat er geschrieben, dass die Nacht wunderbar war… :p

Viele Grüße
 

elChupete

Mitglied
Mitglied seit
13.10.2007
Beiträge
804
Off Topic
- Gibts auch Buchempfehlungen für Swift
Back to topic
 

Dextera

Aktives Mitglied
Mitglied seit
13.09.2008
Beiträge
15.279
Für Swift find ich ehrlich gesagt die Apple-Tutorials schon recht nett gemacht ... also die iPad App Playgrounds.
Ich bin aber auch jemand der gerne Tutorials durcharbeitet, deswegen hab ich auch einige Kurse auf Udemy gekauft. Bücher sind mir oft zu trocken - die nehm ich gerne als Nachschlagewerke ...

Ich nehm mir jetzt seit Jahren vor dass ich mal ne App mache - aber ehrlich gesagt hab ich absolut keinen Anwendungsfall. Alles, was ich an Apps brauchen könnte, gibts schlicht schon :D Es lohnt einfach nicht da Zeit zu versenken um etwas zu erstellen was es 100x schöner und wohl besser bereits gibt.
 

lisanet

Aktives Mitglied
Mitglied seit
05.12.2006
Beiträge
2.535
Ein kleiner Vorteil von Objectiv-C ist, dass du es direkt mit C source codes mischen und in den selben files schreiben kannst. Gerade bei bestehenden open source Projekten ist das oft ein Vorteil, weil die sehr häufig in C geschrieben sind.

Andererseits hat Swift auch ein paar richtig gute Sprachkonstrukte, die objective-C nicht kennt, z.B. tuples. Ein Funktion kann nicht nur einen einzigen Rückgabewert liefern, sondern mehrere, auch beliebigen Typs.
 

Kaito

Aktives Mitglied
Mitglied seit
31.12.2005
Beiträge
6.940
Ein kleiner Vorteil von Objectiv-C ist, dass du es direkt mit C source codes mischen und in den selben files schreiben kannst. Gerade bei bestehenden open source Projekten ist das oft ein Vorteil, weil die sehr häufig in C geschrieben sind.
Gar nicht so wild. Der in C geschriebene Videoplayer mpv hat das OSX Video-Backend inzwischen in Swift: https://github.com/mpv-player/mpv/tree/master/video/out/cocoa-cb
Wenn dein C-Teil eine halbwegs ordentliche Schnittstelle hat, dann ist das kein Problem.
 

lisanet

Aktives Mitglied
Mitglied seit
05.12.2006
Beiträge
2.535

Atalantia

Aktives Mitglied
Mitglied seit
26.11.2009
Beiträge
1.456
Also wenn jemand keine Kenntnisse von C oder C++ hat würde ich mal behaupten es lohnt sich nicht Obj-C zu lernen. Ich habe es in drei Anläufen versucht und habe in wochenlanger Arbeit ein kleines Programm erstellt, dass in einem Text Objekt zufällig generiert Passwörter in wählbarer Länge ausgibt. Auch die gerühmten Bücher von Negwed Amwad waren nicht hilfreich weil dort oft Apfel Birnen Vergleiche mit viel Drumrummtamtam geschrieben steht ohne das man wirklich verifizierbare Informationen kriegt.
Ich würde mal behaupten, dass das Erlernen von Obj-C nur einen Kurs möglich ist. Wie gesagt ich habe es aus Büchern versucht und bin gescheitert obwohl ich nicht gerade der dümmste bin.
 

little_pixel

Aktives Mitglied
Mitglied seit
06.06.2006
Beiträge
4.608
Guten Morgen,

Also wenn jemand keine Kenntnisse von C oder C++ hat würde ich mal behaupten es lohnt sich nicht Obj-C zu lernen. Ich habe es in drei Anläufen versucht und habe in wochenlanger Arbeit ein kleines Programm erstellt, dass in einem Text Objekt zufällig generiert Passwörter in wählbarer Länge ausgibt.
Vielleicht lese ich es falsch, oder interpretiere zu viel, aber genau das zeigt mir, dass es eben kein Problem nach der Frage der Sprache ist.
Du kannst doch in Apples Frameworks mit Objektive-C, Swift, AppleScript und sogar mit JavaScript arbeiten.
Dein Vorhaben und Scheitern hat nicht im Ansatz etwas mit der Sprache zutun. Wenn Dein Fenster mit Knöpfen, Textfelder und Optionsfeldern haben magst, dann ist das eine Frage über das Wissen der Bibliotheken und der Frage "Wie funktioniert eine Mac App?" und nicht eine Frage der Sprache.
Und aus diesem Grund ist für mich die Behauptung falsch.

Auch die gerühmten Bücher von Negwed Amwad waren nicht hilfreich weil dort oft Apfel Birnen Vergleiche mit viel Drumrummtamtam geschrieben steht ohne das man wirklich verifizierbare Informationen kriegt.
Da fehlt mir irgendwie der Zusammenhang. Die Bücher beantworten Dir keine Fragen, die Du gerade im Kopf hast.
Die Bücher werfen Fragen beim Lesen auf und animieren Dich zum Nachdenken und zum Verstehen warum etwas gerade ein Problem ist.
Und liefern dann in Beispielen die Antworten, die man "durchlebt". Man muss überhaupt nicht verstehen was da steht, total irrelevant am Anfang.
Durchhalten ist angesagt und sich darauf einlassen und stumpf folgen. Mehr und mehr macht es dann klick.

Ich würde mal behaupten, dass das Erlernen von Obj-C nur einen Kurs möglich ist.
Ich finde Kurse gut und wichtig, aber das Erlernen selbst geht nur mit einem selbst.
Kaum einer kann bei einem Kurs, der sich vorher nicht im Ansatz damit beschäftigt hat, der Geschwindigkeit standhalten.

In meinem Kurs hat damals nach dem zweiten Tag einer gefragt "Was macht die Klasse NSView?".
Das soll auf keinen Fall herabschauend sein, aber als solches kann der gleich gehen. Da zahlt jemand 1k Euro und kommt so etwas von unvorbereitet in den Kurs. Da gibt es einige, die danach denken sie sind fit vom Zuhören.
So läuft es halt nicht.

Und nochmals zusammengefasst: Das hat alles Null mit Objective-C zutun.

Viele Grüße
 

xentric

Aktives Mitglied
Mitglied seit
11.05.2007
Beiträge
4.149
Ich würde mal behaupten, dass das Erlernen von Obj-C nur einen Kurs möglich ist. Wie gesagt ich habe es aus Büchern versucht und bin gescheitert obwohl ich nicht gerade der dümmste bin.
Glaub ich nicht. Ich hab C(++) gelernt ohne Kurs. Ich würde eher behaupten reine Bücher sind zum Ersterlernen einer Programmiersprache ungeeinet. Da schaut man rein, wenn man die Basics kann, Programmiererfahrung hat oder neue Konzepte verstehen will. Die heutigen (Anfänger-)Programmierbücher sind einfach zu viel Text, zu viel drum herrum, kein richtiger Bezug, und es dauert Ewigkeiten.

Ich würde mir ein kleines Projekt machen mit Bezug zum Problem auf das ich richtig Lust habe es zu lösen und loslegen! Das ist das entscheidene. Klar, man kann dann in einzelne Bücherkapitel schauen, aber auch genau so gut ins Internet weil die Antworten da präziser auf das Problem bezogen sind (z.B. Stackoverflow) oder mit kleinen Tutorials sich die Grundlagen erarbeiten. Aber Programmieren lernen in dem man ein Buch von vorne bis hinten durchliest, ich glaube nicht dass das die einfachste Variante ist. Man braucht eben ein Projekt mit Bezug, sonst hat man schnell keine Lust mehr wenn es bei bestimmten Sachen nicht direkt klickt macht. Außerdem wendet man so direkt das Gelernte an und hinterfragt mehr.

Und nochmals zusammengefasst: Das hat alles Null mit Objective-C zutun.
Das ist richtig.
 

little_pixel

Aktives Mitglied
Mitglied seit
06.06.2006
Beiträge
4.608
dass in einem Text Objekt zufällig generiert Passwörter in wählbarer Länge ausgibt
Vielleicht animiert es Dich zum Wiedereinstieg…

Viele Grüße

Code:
-(void)applicationDidFinishLaunching:(NSNotification *)aNotification
{

    
    // …
    
    NSUInteger length = 32;
    
    // …
    
    NSString *string = [self randomTextWithLength:length];
    
    // …
    
    NSLog(@"%@", string);
    
    // …

}

-(NSString*)randomTextWithLength:(NSUInteger)aLength
{
    
    // …
    
    if(aLength < 1)
    {
        
        return nil;
        
    }
    
    // …
    
    NSMutableString *mutableString = [NSMutableString string];
    
    if(mutableString == nil)
    {
        
        return nil;
        
    }
    
    // …
    
    for(NSUInteger n = 0; n < aLength; n++)
    {
        
        // …
        
        unichar nChar = [self randomChar];
        
        // …
        
        [mutableString appendFormat:@"%C", nChar];
        
        // …
        
    }
    
    // …
    
    NSString *stirng = [NSString stringWithString:mutableString];
    
    if([stirng length] < 1)
    {
        
        return nil;
        
    }
    
    // …
    
    return stirng;
    
    // …
    
}


-(unichar)randomChar
{
    
    // …
    
    NSString *string = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ0123456789";
    
    NSInteger length = [string length];
    
    // …
    
    NSUInteger index = (NSUInteger)(arc4random() % length);
    
    unichar aChar = [string characterAtIndex:index];
    
    // …
    
    return aChar;
    
    // …
    
}
 

Atalantia

Aktives Mitglied
Mitglied seit
26.11.2009
Beiträge
1.456
...Ich würde mir ein kleines Projekt machen mit Bezug zum Problem auf das ich richtig Lust habe es zu lösen und loslegen! Das ist das entscheidene. Klar, man kann dann in einzelne Bücherkapitel schauen, aber auch genau so gut ins Internet weil die Antworten da präziser auf das Problem bezogen sind (z.B. Stackoverflow) oder mit kleinen Tutorials sich die Grundlagen erarbeiten. Aber Programmieren lernen in dem man ein Buch von vorne bis hinten durchliest, ich glaube nicht dass das die einfachste Variante ist. Man braucht eben ein Projekt mit Bezug, sonst hat man schnell keine Lust mehr wenn es bei bestimmten Sachen nicht direkt klickt macht.
Genau so habe ich das oben erwähnte Programmchen zum generieren von Passwörtern gemacht. Ich brauchte mit allem Recherchieren und Fehler, Versuchen, Fehler, wieder Versuchen usw. soviel Zeit, dass mir die Lust diese Sprache zu lernen und überhaupt Programme zu entwickeln gründlich vergangen ist. Ich habe zwar xCode noch auf der Platte ist aber ein Mülleimer Kandidat.
 

xentric

Aktives Mitglied
Mitglied seit
11.05.2007
Beiträge
4.149
Okay.

Ne andere Variante ist du suchst dir ein kleines, kompaktes Einmann Open Source Projekt (davon gibts leider genügend) das dich anspricht und in der Sprache ist die du erlernen willst und probierst es zu Erweitern oder dort Probleme zu lösen. Der Vorteil ist, du hast schonmal Code da der funktioniert und du musst dir weniger selbst ersuchen sondern kannst dir die Konzepte direkt in dem Code anschauen. Z.B. einfach mal alles laufen lassen mit dem Debugger an, und schauen wie der Programmfluss ist, und warum der Code so ist wie er ist. Klar, dass dauert 2-3 Tage (abhängig von Größe), aber imho lernt man so schneller das warum.

Du kannst natürlich auch mit swift anfangen, und dann immernochmal in Obj-C reinschauen, wenn du dann willst. Ich meine es ist klar, dass du damit schneller Erfolgserlebnisse hast, so höher die Sprache ist. Wenn das ganze Memorymanagement wegfällt fällt es dir evlt einfacher, wenn du schonmal aufgegeben hast mit Obj-C. Und es ergibt ja auch durchaus Sinn das es die andere Sprachen gibt. Oftmals braucht man nicht die Performance von C.
 

Bitcruncher

unregistriert
Mitglied seit
11.10.2003
Beiträge
2.795
Genau so habe ich das oben erwähnte Programmchen zum generieren von Passwörtern gemacht. Ich brauchte mit allem Recherchieren und Fehler, Versuchen, Fehler, wieder Versuchen usw. soviel Zeit, dass mir die Lust diese Sprache zu lernen und überhaupt Programme zu entwickeln gründlich vergangen ist. Ich habe zwar xCode noch auf der Platte ist aber ein Mülleimer Kandidat.
Gerade am Anfang braucht man zum erlernen der Programmiergrundlagen (und die gibt es) halt sehr viel Zeit.
Ich hab mir mit 14 Jahren in den 80er Jahren das Programmieren selbst beigebracht, habe eine versucht ein größeres Programm zu schreiben, irgendwann lief es aber es war dann so schrecklich geschrieben das ich das Teil ingesamt sechsmal weggeworfen habe und neu geschrieben habe. Die Jahre danach hab ich dann den Gang durch alle möglichen Programmiersprachen gemacht (Basic,Pascal, C, Elan, Assembler usw....).Später habe ich mehrere IT-Berufe gelernt, heute bin ich Programmierer und Projektleiter im Großrechnerbereich.

Worauf ich hinauswill: das Erlernen der Grundlagen, wie funktioniert das und vor allem WELCHE MÖGLICHKEITEN gibt es im Programmierbereich das zu Erlernen
braucht einfach viel Zeit. Allein das rausfinden was geht alles beim Programmieren kann mehr Spass machen als die eigentliche Freude ein Programm zu erstellen.
 

Atalantia

Aktives Mitglied
Mitglied seit
26.11.2009
Beiträge
1.456
Vielleicht animiert es Dich zum Wiedereinstieg…

Viele Grüße

Code:
-(void)applicationDidFinishLaunching:(NSNotification *)aNotification
{

   
    // …
   
    NSUInteger length = 32;
   
    // …
   
    NSString *string = [self randomTextWithLength:length];
   
    // …
   
    NSLog(@"%@", string);
   
    // …

}

-(NSString*)randomTextWithLength:(NSUInteger)aLength
{
   
    // …
   
    if(aLength < 1)
    {
       
        return nil;
       
    }
   
    // …
   
    NSMutableString *mutableString = [NSMutableString string];
   
    if(mutableString == nil)
    {
       
        return nil;
       
    }
   
    // …
   
    for(NSUInteger n = 0; n < aLength; n++)
    {
       
        // …
       
        unichar nChar = [self randomChar];
       
        // …
       
        [mutableString appendFormat:@"%C", nChar];
       
        // …
       
    }
   
    // …
   
    NSString *stirng = [NSString stringWithString:mutableString];
   
    if([stirng length] < 1)
    {
       
        return nil;
       
    }
   
    // …
   
    return stirng;
   
    // …
   
}


-(unichar)randomChar
{
   
    // …
   
    NSString *string = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ0123456789";
   
    NSInteger length = [string length];
   
    // …
   
    NSUInteger index = (NSUInteger)(arc4random() % length);
   
    unichar aChar = [string characterAtIndex:index];
   
    // …
   
    return aChar;
   
    // …
   
}
Also, ich habe mich jetzt nochmals eine Woche mit dem Thema auseinandergesetzt, Tutorials auf YouTube (die teilweise grauenhaft daherkommen) angeschaut, http://www.swift-blog.de/projekte/ angeschaut, das Buch von denen gelesen, mein Passwortprojekt nochmal revidiert. Ich verstehe zwar Operatoren, Funktionen, Tuples, Konditionen usw. aber ein Programm erstellen... ne. Fazit: reine Zeitverschwendung. Bis ich das verstanden habe, programmiert niemand mehr mit Swift. Xcode und die Developer-tools sind jetzt definitiv in die Tonne gewandert.
 

Loki M

unregistriert
Mitglied seit
07.02.2005
Beiträge
3.513
Ich hab sowohl Objective-C, C++ und Swift aus Büchern gelernt, aus WWDC Videos und den exzellenten Kursen von Stanford (über iTunes U). Paul Hegarty ist der Hammer. Auch auf youtube:


Ältere Vorlesungen (ebeso legendär mit Evan Doll bzw Josh Shaeffer, heute Apple) zu Objective-C sollten sich finden lassen
 

lisanet

Aktives Mitglied
Mitglied seit
05.12.2006
Beiträge
2.535
reine Zeitverschwendung. Bis ich das verstanden habe, programmiert niemand mehr mit Swift. Xcode und die Developer-tools sind jetzt definitiv in die Tonne gewandert.
wie little_pixel schon mal angemerkt hat, glaube auch ich, dass das bei dir nichts mit der Sprache Swift an sich zu tun hat, sondern mit den Frameworks von Apple, die dir einfach noch nicht geläufig sind.

Ja, die ganzen Frameworks von Apple sind gerade am Anfang sehr schwer zugänglich, da sie sehr, sehr umfangreich sind und man sich zu Beginn schnell mal darin verliert. Allerdings sind sie auch extrem vollständig in dem Sinn, dass es kaum nötig ist eigene Klassen abzuleiten oder gar selbst zu erstellen. Ich habe gemerkt, dass immer dann wenn ich dachte ich müsse nun eine eigene Klasse erstellen, mir eigentlich immer nur die korrekte API nicht bekannt war, die mein Problem gerade erforderte. Das ist am Anfang nervig, da es bedeutet, viel in der Doku zu den Frameworks zu suchen und zu lesen. Aber es lohnt sich.
 

Mondmann

Aktives Mitglied
Mitglied seit
21.07.2004
Beiträge
2.990
Worauf ich hinauswill: das Erlernen der Grundlagen, wie funktioniert das und vor allem WELCHE MÖGLICHKEITEN gibt es im Programmierbereich das zu Erlernen
braucht einfach viel Zeit. Allein das rausfinden was geht alles beim Programmieren kann mehr Spass machen als die eigentliche Freude ein Programm zu erstellen.
Da sagst du was. Genau so ist es.
Oft fummelt man tagelang an einem vorhandenen Programm oder an einer Problemstellung herum, um es immer noch besser, noch einfach und effizienter zu machen: So lernt man am meisten, brauche aber viiiiel Zeit.

Aber ich bin (leider) Windows-Entwickler auf C#. Zu Hause ist alles komplett "veräppelt".


Und als dieser hätte ich ne Frage:
Mit Swift...kann man da "Apps" für iOS und OSX - mit einer Datenbasis erstellen? Oder sind das dann immer noch zwei grundlegend verschiedene Dinge?
Ich vermute stark, dass es so ist :)
 

lisanet

Aktives Mitglied
Mitglied seit
05.12.2006
Beiträge
2.535
Mit Swift...kann man da "Apps" für iOS und OSX - mit einer Datenbasis erstellen? Oder sind das dann immer noch zwei grundlegend verschiedene Dinge?
Ich vermute stark, dass es so ist :)
Viele der Frameworks sind identisch zwischen iOS und macOS. Bei der GUI gibts dann aber unterschiedliche Klassen