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

Bitcruncher

unregistriert
Mitglied seit
11.10.2003
Beiträge
2.795
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 :)
Meines Wissens sind das zwei getrennte Welten. Es gibt wohl Überlegungen ob Apple die beiden zusammenführt.
(Das ist mein Wissen, aber ich bin kein Apple/MacOS/ios Programmierer! Wenn ich damit falsch liege mag man mich bitte verbessern)
 

Bitcruncher

unregistriert
Mitglied seit
11.10.2003
Beiträge
2.795
Ja, die ganzen Frameworks von Apple sind gerade am Anfang sehr schwer zugänglich,
Beim programmieren ist es eigentlich nie das Wissen um die Programmiersprache. Die 50-70 Befehle sind schnell erlernt. Das wichtige Wissen ist das Framework.
Wie greife ich auf ne Datenbank zu, wie nutze ich dynamisches SQL, wie kommunizere ich mit anderen Tools (MQSeries z.B.), welche Dateiformate gibt es und welche Unterschiede gibt es da, wie schreibe ich restartfähige Batchprogramme....usw usw usw....die Liste ist ellenlang....je mehr Erfahrung, desto wertvoller bist als
Prorammierer...

Zu den Grundlagen gehört natürlich auch die verschiedenen Zahlensysteme Oktal, Hex....wie manipuliere ich Daten...
 

chris25

Aktives Mitglied
Mitglied seit
10.08.2005
Beiträge
4.576
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 :)
Meiner Erfahrung nach können Model- und Controller-Klassen für iOS und macOS in der Regel weitestgehend identisch sein, die View-Klassen müssen angepasst werden (schon wegen Touch vs. Maus, aber auch unterschiedlichen Klassen in Apples Frameworks).
 

lisanet

Aktives Mitglied
Mitglied seit
05.12.2006
Beiträge
2.535
Mein "Schlüsselerlebnis" hatte ich, als ich mal aus dem Programm heraus dem User eine zuvor generierte Datei als Anhang via Mail verschicken lassen wollte. Nachdem ich mich hab zu tot gesucht habe, wie ich unter macOS Mail "fernbediene" oder mit Apple-Script oder per command line eine Mail versende, bin ich dann auf folgenden Einzeiler gekommen:

Code:
[[NSWorkspace sharedWorkspace] openFile: basename withApplication: @"Mail"];
Und das finde ich schon extrem elegant. :D
 

Atalantia

Aktives Mitglied
Mitglied seit
26.11.2009
Beiträge
1.456
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 ...
Ältere Vorlesungen (ebeso legendär mit Evan Doll bzw Josh Shaeffer, heute Apple) zu Objective-C sollten sich finden lassen
Danke. Nach der Sichtung dieser Schulung ist es für mich definitiv klar, dass ich das nie lernen werde. Aber es ist auf jedenfall etwas vom besten, das ich zu diesem Thema je gesehen habe.
 

Haskelltier

unregistriert
Mitglied seit
16.08.2017
Beiträge
552
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.
Halte ich zumindest bei einem Programmieranfänger nicht für sinnvoll. Wenn man bereits mindestens eine Programmiersprache beherrscht und weiß, was objektorientierte Programmierung ist, mag das gehen, einem Anfänger hilft der vorhandene Code aber absolut nicht. Denn der weiß gar nicht, wie so ein Programm aufgebaut ist, was für Konzepte bei der Erstellung des Codes verwendet wurden, und hat darüber hinaus noch fremden Code, in den er oder sie sich erstma mühsam einarbeiten muss. Und das ist schwierig, wenn das nicht gerade ein sehr einfaches Programm ist.
Dann sollte man doch eher konkrete, einfache Probleme hernehmen (beispielsweise das Programmieren eines einfachen GUI-Taschenrechners) und sich die Lösungen mit Buch und/oder gutem Lehrmaterial/Videos usw. aus dem Netz selbst erarbeiten, während man parallel die Konzepte lernt und durch die Anwendung Routine bekommt.

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.
Gut, den Programmfluss kann ich mir so anschauen, nur weiß ein Anfänger dann immer noch nicht warum Dinge so gelöst wurden wie sie gelöst wurden. Wenn bereits ein gewisses Basiswissen vorhanden ist, mag das zu der einen oder anderen Erkenntnis führen, aber sonst doch eher nicht.
 

Bitcruncher

unregistriert
Mitglied seit
11.10.2003
Beiträge
2.795
C ist als Anfängersprache vielleicht auch nicht gerade ideal. In C kann man den Code so schreiben das man gar nix mehr versteht....
 

Haskelltier

unregistriert
Mitglied seit
16.08.2017
Beiträge
552
Ist C nicht genau dafür erfunden worden? Einfach und klar kann jeder.
C ist relativ hardwarenah. Bedeutet, man bekommt sehr gute Performance, allerdings zu dem Preis, dass man sehr leicht schwer zu findende Fehler in seinen Code einbauen kann. Was auch regelmäßig geschieht, wenn das Programm erst einmal eine gewisse Größe und Komplexität erreicht hat. Einfach, klar und gut wartbar ist dieser Code in der Tat nicht. Weswegen ich jedem empfehlen würde nicht C einzusetzen, wenn die Performance nicht gebraucht wird. Denn dann mag die Performance nicht so gut sein (aber immer noch in einem unproblematischen Bereich), dafür bekommt man aber in der Regel Code, der leichter zu verstehen und leichter zu warten/erweitern ist.
 

xentric

Aktives Mitglied
Mitglied seit
11.05.2007
Beiträge
4.149
.
Dann sollte man doch eher konkrete, einfache Probleme hernehmen (beispielsweise das Programmieren eines einfachen GUI-Taschenrechners) und sich die Lösungen mit Buch und/oder gutem Lehrmaterial/Videos usw. aus dem Netz selbst erarbeiten, während man parallel die Konzepte lernt und durch die Anwendung Routine bekommt.
Was genau meine erste Variante zwei Posts darüber war, und abgelehnt wurde. Also?

Halte ich zumindest bei einem Programmieranfänger nicht für sinnvoll. Wenn man bereits mindestens eine Programmiersprache beherrscht und weiß, was objektorientierte Programmierung ist, mag das gehen, einem Anfänger hilft der vorhandene Code aber absolut nicht. Denn der weiß gar nicht, wie so ein Programm aufgebaut ist, was für Konzepte bei der Erstellung des Codes verwendet wurden, und hat darüber hinaus noch fremden Code, in den er oder sie sich erstma mühsam einarbeiten muss. Und das ist schwierig, wenn das nicht gerade ein sehr einfaches Programm ist.
Sehe ich nicht so. Grund hab ich geschrieben. Man erspart sich das zig tausendfache suchen nach api/framework dokumenten von denen man nichtmal weis, dass sie existieren.

Klar brauch man etwas Grundkenntnisse, aber die brauch man immer, bei jeder methode. Ich werd mich auch nicht als bäcker versuchen, wenn ich nicht weiss was ein gramm ist.
 

Haskelltier

unregistriert
Mitglied seit
16.08.2017
Beiträge
552
Was genau meine erste Variante zwei Posts darüber war, und abgelehnt wurde. Also?
In dem Post steht meiner Interpretation nach etwas anderes. Dort schreibst du, dass du dir ein konkretes Problem suchst, drauflos programmieren willst und dir bei Fragen/Problemen Lösungen suchst. Ich würde andersrum rangehen und mir ein vernünftiges Buch oder Lernmaterial nehmen und die erlernten Konzepte an Hand eigener Beispielprogramme auch praktisch anzuwenden. Und Foren sind immer so eine Sache. Bei konkreten Fragen, bekommt man sicher hilfreiche Antworten, da bringt mir aber niemand eine Programmiersprache bei (bestenfalls bekomme ich Tipps, wo ich die erlernen kann).

Sehe ich nicht so. Grund hab ich geschrieben. Man erspart sich das zig tausendfache suchen nach api/framework dokumenten von denen man nichtmal weis, dass sie existieren.
Gut, ich sehe vielleicht was eine API oder Framework hergibt, um zu verstehen wie ich damit vernünftig arbeite, muss ich aber dennoch die Dokumentation konsultieren. Wenn ich allerdings keine Ahnung habe, ob für Problem x nicht schon ein Framework vorhanden ist, das ich nur noch nicht kenne, konsultiere ich eine Suchmaschine meiner Wahl oder frage in entsprechenden Foren nach. Da fällt meist ein passendes Stichwort, das mir weiterhilft. Dafür muss ich dann nicht fremden Programmcode lesen und hoffen, dass dort jemand ein ähnliches Problem bereits gelöst hat.
 

Bitcruncher

unregistriert
Mitglied seit
11.10.2003
Beiträge
2.795
Einfach, klar und gut wartbar ist dieser Code in der Tat nicht. Weswegen ich jedem empfehlen würde nicht C einzusetzen, wenn die Performance nicht gebraucht wird.
C ist mehr ne Sprache für Fortgeschrittene, man denke nur an die Möglichkeiten mit Zeigern in C zu operieren...
Für die Wartbarkeit des Codes ist der Programmierer selbst verantwortlich, du kannst in jeder Sprache Code schreiben der schrecklich ist.
Man denke nur an die Goto-Programmierung in Basic.

In den meisten IT-Firmen gibt es dafür Vorschriften, sonst kannst den Code nach 3 Jahren wegwerfen...
 

Bitcruncher

unregistriert
Mitglied seit
11.10.2003
Beiträge
2.795
C ist mehr ne Sprache für Fortgeschrittene, man denke nur an die Möglichkeiten mit Zeigern in C zu operieren...
(noch raffinierter ist Assembler, da kannst Du den ausführbaren Code WÄHREND der Ausführung überschreiben/verändern :D)
Für die Wartbarkeit des Codes ist der Programmierer selbst verantwortlich, du kannst in jeder Sprache Code schreiben der schrecklich ist.
Man denke nur an die Goto-Programmierung in Basic.

In den meisten IT-Firmen gibt es dafür Vorschriften, sonst kannst den Code nach 3 Jahren wegwerfen...
 

Haskelltier

unregistriert
Mitglied seit
16.08.2017
Beiträge
552
C ist mehr ne Sprache für Fortgeschrittene, man denke nur an die Möglichkeiten mit Zeigern in C zu operieren...
Sehe ich nicht so. C ist eine Sprache, bei der man sehr gut aufpassen muss, wenn man damit möglichst fehlerfreie Programme schreiben will (ganz ohne Fehler gelingt selbst den besten nicht, zumindest dann nicht, wenn das Programm halbwegs komplex ist). Das hält aber schlechte Programmierer nicht davon ab, diese zu verwenden, obwohl sie es besser nicht sollten (mit Pointern kann halt jeder rummachen und die Compiler lassen ja viel Murks zu). Und durch die relativ hohe Verbreitung von C kommt es zwangsläufig dazu, dass sie auch von schlechteren Programmierern verwendet wird.

Eine Programmiersprache, die sehr viel sicherer ist und bei der die Nutzerschaft aus überdurchschnittlich guten Programmierern besteht, ist beispielsweise Haskell. Der Grund ist einfach: Mit Haskell hat man wenig Freude, wenn man nur versucht irgendetwas zusammenzustümpern (der Compiler lässt viel weniger durchgehen). Und die zugrundeliegenden Programmierparadigmen und Abstraktionen, die man beherrschen muss, um mit Haskell umgehen zu können, sind für viele wesentlich schwieriger zu erlernen.
 

Bitcruncher

unregistriert
Mitglied seit
11.10.2003
Beiträge
2.795
Sehe ich nicht so. C ist eine Sprache, bei der man sehr gut aufpassen muss, wenn man damit möglichst fehlerfreie Programme schreiben will
C ist echt sehr schwierig und tricky !!!
Man beachte nur das Hochzählen der Variablen i
++i
oder
i++

Geht beides, liefert aber komplett unterschiedliche Ergebnisse. Das ist nichts mehr für einen Beginner....
 

Haskelltier

unregistriert
Mitglied seit
16.08.2017
Beiträge
552
C ist echt sehr schwierig und tricky !!!
Man beachte nur das Hochzählen der Variablen i
++i
oder
i++

Geht beides, liefert aber komplett unterschiedliche Ergebnisse. Das ist nichts mehr für einen Beginner....
Das ist mit ein Grund, weswegen Anfänger diese Sprache besser nicht produktiv verwenden sollten (und für den Einstieg ist C denkbar ungeeignet). Es hält den Anfänger aber nicht davon ab, Programme mit vielen Fehlern in C zu schreiben.
 

Bitcruncher

unregistriert
Mitglied seit
11.10.2003
Beiträge
2.795
Ich würde da dann doch was einfacheres empfehlen
BASIC
Beginner’s All-purpose Symbolic Instruction Code
 

oneOeight

Aktives Mitglied
Mitglied seit
23.11.2004
Beiträge
54.748
C ist echt sehr schwierig und tricky !!!
Man beachte nur das Hochzählen der Variablen i
++i
oder
i++

Geht beides, liefert aber komplett unterschiedliche Ergebnisse. Das ist nichts mehr für einen Beginner....
naja, pre- und post-increment sind jetzt nicht so schwierige konzepte.
wenn man genau hin guckt, verrät allein doch schon die schreibweise was da passiert.