# Programmieren für Anfänger - Wie fange ich an?



## Nequeox (24. Januar 2017)

*Programmieren für Anfänger - Wie fange ich an?*

Hey Leute, 

ich hatte schon immer eine kleine Faszination für's Programmieren, aber mich nicht getraut, weil es mir zu schwierig vor kam. Jetzt wurde ich durch einen Post auf Reddit aber dazu inspiriert und da ich bald 2 Monate Semesterferien habe und ich meine Zeit endlich mit einem sinnvollen Hobby nutzen möchte, welches ich evtl später einmal brauchen kann, dachte ich, dass im programmieren ja die Zukunft liegt. 
Dazu kommt, dass ich BWL studiere und anscheinend zu blöd bin für Kapitalmarkttheorie, unsere Uni aber auch eine gute Auswahl an Wirtschaftsinformatikkursen anbietet, welche ich nun wohl belegen werde, darunter SAP und Supply Chain Management und da kann die ein oder andere Programmierkenntniss auch vom Vorteil sein hoffe ich.

Allerdings weiß ich nicht wo man anfangen soll bei all den unterschiedlichen Sprachen. Ich habe mir mal einen Account auf codeacadamy.com angelegt und die fangen an mit einem Grundkurs für CSS und HTML. Ist das zu empfehlen? Oder doch das Buch "C: Programmieren von Anfang an " von Amazon kaufen?
Ich weiß ehrlich gesagt nicht, was ich programmieren möchte, ich bin nur fasziniert davon. Ich habe seitdem ich ein kleines Kind bin mit Computern zu tun, verstehe aber nicht wie sie funktionieren, geschweige denn wie man einen PC richtig zusammenbaut. Dies möchte ich ein bisschen ändern, zumindest was die Software anbelangt. Wenn es mich nach einer Weile langweilt kann ich immer noch aufgeben, nur möchte ich es wenigstens versucht haben. 

Danke im Voraus,

Nequeox.


----------



## FrozenPie (24. Januar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Nunja, wenn man davon absieht, dass CSS und HTML keine richtigen Programmiersprachen (eher Textformatierungssprachen) sind 
C, C++ würde ich persönlich nicht als Einstieg verwenden (Wird äußerst schnell äußerst Komplex), aber da hat jeder andere Ansichten. Ich habe selbst mit Java angefangen und mich auch mal, im Zusammenhang mit Unity3D, mit C# beschäftigt, sowie etwas C++ mal nebenher. Für Java kann ich dir das Openbook hier empfehlen: Rheinwerk Computing :: Java ist auch eine Insel - index

Aus persönlicher Erfahrung kann ich dir sagen, dass man am meisten lernt, wenn man versucht Spiele zu programmieren, anstatt von stupiden Verwaltungsprogrammen, wie es von den meisten Informatik-Lehrern in der Schule leider bevorzugt wird (Fehler in der Programmierung eines Verwaltungsprogramms äußern sich meistens nur in Rechenfehlern, während man in Spielen auch den ein oder anderen Bug mit "interessantem Effekt haben kann, was die Motivation oben hält. Zumal man bei manchen Bugs sich auch denkt, dass sie für eine zukünftige Funktion des Spiels noch nützlich sein kann, z.B. durch Wände laufende Gegner zur Verwendung als Geister, weshalb man die Ursache des Fehlers noch genauer untersucht ). Diese Erfahrung basiert darauf, dass wir zwei Wochen lang ein Java-Seminar bei einem Dozenten hatten, welcher aus der Spieleprogrammierung kam und ich in diesen zwei Wochen mehr gelernt habe, als in den drei Jahren Abitur mit Leistungskurs Informatik


----------



## Laudian (24. Januar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Die Diskussion hatten wir natürlich schon 100 mal hier, und jedes mal scheiden sich die Geister an der Frage, welche Programmiersprache für Anfänger zu empfehlen ist 

HTML / CSS sind ja jetzt keine klassischen Programmiersprachen, die fallen eigentlich direkt raus.

Mit Python kann man sehr schnell die ersten richtigen Programme und Skripte schreiben und es ist sehr einfach zu erlernen. Rechenintensive Anwendungen wirst du mit Python zwar nicht realisieren können, dafür führt Python dich sehr schnell an die Objektorientierte Programmierung heran.

Vorteil ist, dass man bei Python anfangs sehr leicht rumprobieren kann, da man nicht kompilieren muss, und somit Änderung am Code sehr leicht & schnell testen kann.


----------



## Nequeox (24. Januar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Mir ist gerade vielleicht etwas eingefallen, was ich programmieren möchte. Ich wollte ein Haushaltsbuch führen, worin ich Einträge über mein Smartphone (Android) und meinen PC machen kann, allerdings gib es entweder Apps für den PC oder das Smartphones und nicht beides zusammen. Im Moment benutze ich daher Excel und habe mir da Tabellen und so weiter angelegt. 
Wäre es möglich eine App und ein Programm für den PC zu entwickeln, welches eventuell das selbe Dateiformat beutzt indem es die Daten speichert und man dieses in einer Cloud zB speichert und dann über die App/Windows Programm darauf zugreifen kann?

Das klingt natürlich erstmal ziemlich umfangreich für einen Anfänger, aber sowas wäre doch ein schönes langfristiges Ziel, wenn es sich denn machen lässt. Welche Sprachen müsste ich dafür beherrschen und wie gehe ich sowas am besten an. Java für Android, richtig?


----------



## Laudian (24. Januar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Wenn du wirklich für Android programmieren möchtest, dann kommst du um Java kaum drumrum.

Es gibt zwar Alternativen, aber einfacher sind die auch nicht.

Ich würde allerdings nicht direkt mit dem Smartphone anfangen. Lerne erst einmal, wie Java auf dem PC funktioniert, und guck dir dann die smartphonespezifischen Änderungen an, wenn du die PC App fertig geschrieben hast.

Schritt 1: Lade dir JRE (Java Runtime Environment) und Java SDK (Software Development Kit) herunter.

Schritt 2: Installiere dir Notepadd++. Es gibt zwar 300 Millionen tolle Entwicklungsumgebungen, aber für den Anfang empfehle ich einen stinknormalen Texteditor. Autovervollständigung und Klassenbäume sind später zwar tolle Sachen, aber für den Anfang musst du erst einmal die Syntax begreifen und die wichtigsten Befehle auswendig können, und da hilft nur: Tippen, tippen, tippen. Wenn du so weit bist, dass du die Grundlagen verstanden hast, kannst du dich gerne mit Entwicklungsumgebung und Versionskontrolle beschäftigen. Vorher ist das einfach zu viel auf einmal.

Schritt 3: Es gibt im Internet 300 Millionen gute Anleitungen für Java. Such dir eine aus. Am besten direkt eine englischsprachige, denn alle wichtigen Programmierseiten (stackoverflow.com und die Java Documentation) sind ohnehin nur in Englisch verfügbar. Deswegen am besten direkt an die Englischen Begriffe gewöhnen. Viele sind den deutschen zwar sehr ähnlich (Class - Klasse; method - Methode) aber einige sind eben auch anders (inherit - erben; parent - übergeordnete Klasse).

Ein konkretes Tutorial kann ich dir allerdings nicht empfehlen. Was aber ganz wichtig ist: Spiele mit den Codebeispielen herum. Probier aus, was Änderungen am Code bewirken.

Wenn du soweit bist, dass du das Konzept der objektorientierten Programmierung verstanden hast, und zumindest die primitiven Datentypen sowie die wichtigsten Module der Standardbibliothek kennst, kannst du anfangen auf dein persönliches Ziel hinzuarbeiten.


----------



## _LS_ (24. Januar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Zuerst mal schließe ich mich mal meinen Vorrednern an, CSS und HTML benutzt man zwar für Websites, sind aber keine "echten" Programmiersprachen.

Ich habe selbst mit VisualBasic.NET angefangen, würde ich aber nicht so als Anfang empfehlen (Ist zwar recht einfach, aber die Syntax unterscheidet sich recht häufig von den anderen gängigen Sprachen).
Java ist zurzeit wahrscheinlich einfach der beste Einstieg (sogar bei mir im Informatikstudium wird fast nur Java verwendet) und für Androidapps ist es wohl auch die beste Wahl (für Spiele sollte man jedoch zu Unity3D und damit zu C# greifen).
C# benutzt zum Großteil Javasyntax, hat aber hier-und-da mehr Möglichkeiten, ist jedoch nicht so einfach für andere Betriebssysteme, wie Android, verwendbar.
C und C++ sind zum Anfang eher nicht zu empfehlen.
Zu anderen Sprachen wie Python kann ich leider nichts sagen.

Zu Tutorials:
Ich habe am Anfang viel über die VideoTutorials von ScratchForFun gelernt. (--> auf Englisch, nur ein paar konkrete Projekte)
Ein Kumpel, der jetzt mit mir Informatik studiert, hat Java komplett von Brotcrunsher gelernt. (habe hier selbst nur Einzelnes nachgeschaut) (-->auf Deutsch, zum Großteil einzelne Aspekte von Java, teils aber auch ganze Projekte und auch andere Programmiersprachen)

Zur Entwicklungsumgebung:
Einfach das neueste JDK(manchmal auch JavaSDK) herunterladen und installieren(das JRE ist meines Wissens nach darin enthalten, wenn nicht einfach nach installieren).
Ich würde jedoch gleich mit einer IDE(Programmierumgebung) anfangen (z.B. Eclipse), da die meisten Tutorials darauf aufbauen und man es beim testen ("Debuggen") leichter hat.


----------



## fotoman (25. Januar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*



Laudian schrieb:


> Schritt 2: Installiere dir Notepadd++. Es gibt zwar 300 Millionen tolle Entwicklungsumgebungen, aber für den Anfang empfehle ich einen stinknormalen Texteditor.


Warum einfach, wenn es auch kompliziert geht? Auch mit Syntax-Prüfung und Autovervollständigung kommt man nicht daran vorbei, den Syntax der Sprache zu lernen (und natürlich auch alle anderen Grundlagen).

Alleine der Verzicht auf ein IDE wird sich rächen, sobald mal das erste Programm im Debugger laufen soll. Aber man kann es natürlich auch so machen wie in Kapitel 1.5 des Rheinwerk-Buches beschrieben.


----------



## Zeiss (30. Januar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Ich habe damals (= vor 15 Jahren) mit C angefangen und finde immernoch, dass es richtig war. Mittlerweile programmiere ich in Java, C/C++ (C vor allem im Embedded Umfeld), C#, etwas Assembler (wenn C zu langsam ist) und VB.

Sprache ist nur ein Werkzeug, mehr nicht. Man muss die Algorithmen dahinter verstehen, was ist eine Schleife, was ist eine Verzweigung, eine Klasse, Methode, ein Attribut. Wenn man das alles verinnerlicht hat, hat man schon gewonnen. Ob es am Ende dann C++, Java, C# oder sonstwas ist, ist absolut egal.


----------



## Shortgamer (30. Januar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Youtube ist ein guter Anfang. 
Die Leute haben ordentliche Videos online, und der großteil erklärt es einfach und langsam. 

Zusammen mit dem bewegendem Bild (Praktisches Beispiel) und der Theorie, konnte ich mir schon so einige Programmierschnipsel selbst bei bringen. 
Vorwiegend in Excel bzw. VBA, aber das ist auch für andere Sprachen möglich. 
Youtube bietet da einiges an Videos.


----------



## failwell (6. Februar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Frag tausend Programmierer, und du wirst tausend verschiedene Antworten erhalten.
Wir sind ein eigenartiges Volk, bei dem jeder gern behauptet, dass die jeweils andere Sprache nicht so toll ist - und nur die, die man selbst gern verwendet das einzig wahre ist. Und man selbst ist überhaupt der einzige, der so programmiert, wie es sich gehört. 

Wenn du nicht allzu trocken anfangen möchtest, dann sind die kostenlosen und interaktiven Online-Kurse vielleicht etwas für dich. Z.B. Codecademy. Da lernt man interaktiv programmieren. Es werden einem immer kleine Schnipsel gegeben und erklärt, und man kann sich dann direkt daran probieren: Learn to code | Codecademy

Den besonders leichten Einstieg bietet ansonsten imho die Web-Programmierung, bzw. Script Sprachen. Da wären Javascript und/oder PHP. Mit Javascript kann man eigentlich am einfachsten starten, weil man dazu nicht mehr benötigt als einen Text-Editor (Plain-Text Editor). Das geht zB mit Notepad von Windows. Besser noch mit Notepad++. Dazu dann nur noch ein Browser, und fertig ist die Programmierumgebung.
Dafür gibt es unter anderem auch ein Tutorial auf Codecademy: Learn JavaScript | Codecademy

Sprachen wie Java, C++, C#, PHP, sind schon etwas aufwändiger, weil hierfür in der Regel erstmal etwas mehr "Handwerkszeug" benötigt wird. Das sind etwa ein Compiler (C/C++/C#), eine zusätzliche VM zum Compiler (Java), oder auch ein Webserver Programm (etwa Apache für PHP).

Ich wünsch dir viel Spaß beim Lernen. Den wichtigsten Tipp, den ich Dir geben kann ist:

Programmieren lernst du nur durch Programmieren. Also probiere so viel wie möglich aus. Versuche es nachzumachen und zum Laufen zu bekommen. Dadurch lernt man am Effektivsten und Schnellsten das Programmieren.


----------



## Zeiss (6. Februar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*



failwell schrieb:


> Frag tausend Programmierer, und du wirst tausend verschiedene Antworten erhalten.
> Wir sind ein eigenartiges Volk, bei dem jeder gern behauptet, dass die jeweils andere Sprache nicht so toll ist - und nur die, die man selbst gern verwendet das einzig wahre ist. Und man selbst ist überhaupt der einzige, der so programmiert, wie es sich gehört.



Ich sage mal so, ich persönlich nehme die Sprache, die sich am besten für den UseCase eignet. Für dynamische Web Geschichten Java, für GUI C# oder Java, wenn es um komplexe Berechnungen geht, dann C ggf. mit Assembler und so weiter...



failwell schrieb:


> Ich wünsch dir viel Spaß beim Lernen. Den wichtigsten Tipp, den ich Dir geben kann ist:
> 
> Programmieren lernst du nur durch Programmieren. Also probiere so viel  wie möglich aus. Versuche es nachzumachen und zum Laufen zu bekommen.  Dadurch lernt man am Effektivsten und Schnellsten das  Programmieren.



Und wenn man was macht, sollte man sich immer fragen: "was macht der Compiler draus und wie wird es abgearbeitet".


----------



## Shutterfly (10. Februar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Persönlich finde ich Python für Anfänger relativ gut geeignet. Da die Syntax hier strikt vorgegeben ist, ist es gerade für Anfänger schön, da hier "rumgesaue" schon von Anfang an etwas eingedämmt wird. Dazu lassen sich viele Paradigmen gut lernen, weswegen Python auch von vielen US-Universitäten genutzt wird anstatt, wie bei uns in Deutschland oft, Pascal.

Für erste Erfahrungen in meinen Augen definitiv besser als C, C++ oder PHP. Vor allem nicht PHP, dort ist die Funktionsbibliothek leider so zugesaut mit Altlasten, dass man als Anfänger sich leicht schlechte Eigenschaften aneignet. 

C# und Java sehen auch aber bringen natürlich direkt die volle OOP-Keule mit, welche ich für Anfänger auch eher unpassend empfinde. Darauf kann man umsatteln, wenn man erst einmal etwas Boden unter den Füßen hat.

Daher empfehle ich Python! Ein gutes Buch oder Tutorial online (aufpassen, das man hier keinen Mist liest, auf Youtube sind auch die meisten Videos Schrott) und man macht erste Gehversuche. Dann spielt man damit etwas rum und will dann etwas machen, was mit Python ggf. nicht so einfach möglich ist. Dann schaut man sich nach einer passenden Sprache um und entwickelt sich. Je nach Interessen und Situation.

Die eine Programmiersprache gibt es eh nicht. Es ist nur ein Handwerkszeug und ein guter Handwerker nimmt für die aktuelle Arbeit immer das passende Werkzeug und nicht immer das gleiche Werkzeug  

Vote 4 Python


----------



## FrozenPie (10. Februar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*

@Shutterfly
Ich persönlich mache einen großen Bogen um Python, weil ich die Syntax einfach extrem hässlich und unübersichtlich finde (Bin halt explizite Trennung und Klammer-Setzung gewohnt), ist halt Geschmackssache 

Also z.B. Syntax-Vergleich von C und Python:

C(++)-Code:

```
int fakultaet(int x)
{
    if (x > 1) {
         return x * fakultaet(x - 1);
    } else {
         return 1;
    }
}
```

Python-Code:

```
def fakultaet(x):
    if x > 1:
        return x * fakultaet(x - 1)
    else:
        return 1
```

Bei größeren Programmen, wird das schnell unleserlich (Aufgrund fehlender Klammerstrukturen und Semicolas), nach meinen Erfahrungen. Erschwerend kommt noch die Unterscheidung zwischen Tabulator und Leerzeichen hinzu, falls die Entwicklungsumgebung falsch eingestellt ist 
Deswegen hat mich Python auch ziemlich abgeschreckt und ich habe mit Java und C++ angefangen 

Ist aber, wie gesagt, Geschmackssache, was man jetzt nimmt.


----------



## Zeiss (13. Februar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*



Shutterfly schrieb:


> Für erste Erfahrungen in meinen Augen definitiv besser als C, C++



Weil?

In  C/C++ hast Du genau so eine sehr strikte Syntax und Abläufe. Dazu kommt  noch, dass man in C/C++ sich über Speicherverwaltung Gedanken machen *muss*  und das ist auch gut so. Wenn ich den wundervollen Garbage Collector  von Java sehe, kriege ich einen zu viel. Ich mag Java sehr gern, aber  der GC ist eine absolute Gurke.



Shutterfly schrieb:


> C# und Java sehen auch aber bringen natürlich direkt die volle OOP-Keule  mit, welche ich für Anfänger auch eher unpassend empfinde. Darauf kann  man umsatteln, wenn man erst einmal etwas Boden unter den Füßen  hat.



Und was ist an OOP so schwierig? Ein Objekt (= Zug) besteht aus Eigenschaften (= Farbe) und Methoden (= fährt).



FrozenPie schrieb:


> Bei größeren Programmen, wird das schnell unleserlich (Aufgrund fehlender Klammerstrukturen und Semicolas), nach meinen Erfahrungen. *Erschwerend kommt noch die Unterscheidung zwischen Tabulator und Leerzeichen hinzu,* falls die Entwicklungsumgebung falsch eingestellt ist



WTF???? Echt jetzt? Dafür gehören sie verprügelt...


----------



## xNeo92x (13. Februar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Ich gebe mal meinen Senf dazu....

Meine Vorredner haben alle im Großen und Ganzen recht.
Aus meiner eigenen Erfahrung kann ich nur sagen, dass mir C# besonders gefallen hat.
Es ist ähnlich wie Java, aber trotzdem irgendwie einfacher zu verstehen.
Ich hatte an zwei verschiedenen Schulen Java und C# gelernt und jedes Mal war C# für mich das Einfachere.
Außerdem hat es beim Programmieren weniger Fehler verursacht. Es war nicht so zickig wie Java.
Bei Java konnte ich einen Quelltext der eindeutig funktioniert, kopieren und einfügen und er hat nicht mehr funktioniert.
Außerdem kann man mittlerweile auch mit C# für Android und Co. programmieren. 
Wenn du dir die Visual Studio Community Edition holst, hast du da alles was du brauchst.
Auf dieser Seite gibt es kleine Programm "Stückchen", an denen man auch die C# Syntax kennen lernen kann: dotnet-snippets.de
Außerdem wäre folgende Seite nützlich: C# - Rheinwerk openbook


----------



## Zeiss (13. Februar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Naja, bei Java kommen die "Zicken" meistens von:


Classpath
Imports
Package
 Wenn das passt, zickt auch Java nicht mehr.


----------



## FrozenPie (13. Februar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*

@xNeo92x 
Danke für die 'Snippets'-Seite 
Ich hab mir schon an manchen Tagen echt nen Wolf gesucht um bestimmte Programmteile bzw. Umsetzungen zu finden  (Hauptsächlich für Unity3D)


----------



## Shutterfly (14. Februar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*



Zeiss schrieb:


> Und was ist an OOP so schwierig? Ein Objekt (= Zug) besteht aus Eigenschaften (= Farbe) und Methoden (= fährt).



Darauf versuche ich heute Abend im Detail einzugehen. Weil ja, so kann man es machen. Wenn man dann jedoch das Ganze mit dem Fachwissen bzgl. Polymorphie, Liskovsches Substitutionsprinzip, Kovarianz und Kontravarianz etc. anreichern will, finde ich es für den Einstieg unpassend. Immerhin hat man gar keine Ahnung


----------



## FrozenPie (14. Februar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*



Shutterfly schrieb:


> Darauf versuche ich heute Abend im Detail einzugehen. Weil ja, so kann man es machen. Wenn man dann jedoch das Ganze mit dem Fachwissen bzgl. Polymorphie, Liskovsches Substitutionsprinzip, Kovarianz und Kontravarianz etc. anreichern will, finde ich es für den Einstieg unpassend. Immerhin hat man gar keine Ahnung


Also von drei der vier Begriffe habe ich noch nicht mal was gehört und es schränkt mich beim Programmieren auch absolut nicht ein


----------



## Shutterfly (14. Februar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*



FrozenPie schrieb:


> Also von drei der vier Begriffe habe ich noch nicht mal was gehört und es schränkt mich beim Programmieren auch absolut nicht ein



Kommt drauf an wie du "Einschränkung" betrachtest. Oder ob du dir dessen überhaupt bewusst bist. Zugegeben die mit den Begriffen verbundenen Verhalten und Tatsachen kann man meist irgendwie indirekt nutzen ohne sich dessen Bewusst zu sein. Für mich unterscheidet sich jedoch hier die Spreu vom Weizen. 

Jeder kann irgendwie etwas programmieren, in der Umgangssprache auch "hinrotzen" genannt. Es wird erst dann interessant wenn man diese Werke mal gewissen Aspekten wie Stabilität, Wartbarkeit, Performance, Flexibilität etc. betrachtet, wo dann solches Wissen den feinen Unterschied machen kann. Es macht für mich einen großen Unterschied, ob ein Programmierer sein Handeln auch technisch begründen kann und nicht mit purer Ahnungslosigkeit glänzt. 

Und je mehr du in höhere Sprachen einsteigst, desto mehr Konzepte gibt es, welche man eigentlich kennen und verstehen sollte. Ansonsten lassen sich die Mächtigkeit von z.B. Design Pattern gar nicht wirklich ausspielen.

Vielleicht sind meine persönlichen Ansprüche für einen Anfänger auch viel zu hoch


----------



## taks (14. Februar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*



Shutterfly schrieb:


> Vielleicht sind meine persönlichen Ansprüche für einen Anfänger auch viel zu hoch



Naja, für den Anfang sollte es reichen wenn man mit objektorientierter Programmierung klar kommt.

Design Pattern kann man dann anwenden, wenn man die Syntax beherrscht und einfach mal eine Applikation zusammenschustern kann.
Frei nach dem Motto: Write - Improve - Write - Improve - ...

Und wenn man nem Anfänger ein Buch von Fowler vorlegt, will er sicherlich nicht mehr programmieren ^^


----------



## Flipbo219 (17. Februar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*



Laudian schrieb:


> Wenn du wirklich für Android programmieren möchtest, dann kommst du um Java kaum drumrum.



VisualStudio , Xamarin, C#?


----------



## Zeiss (18. Februar 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*



Shutterfly schrieb:


> Darauf versuche ich heute Abend im Detail einzugehen. Weil ja, so kann man es machen. Wenn man dann jedoch das Ganze mit dem Fachwissen bzgl. Polymorphie, Liskovsches Substitutionsprinzip, Kovarianz und Kontravarianz etc. anreichern will, finde ich es für den Einstieg unpassend. Immerhin hat man gar keine Ahnung



Jetzt musste ich ganz laut und lange lachen...

Das ist genau so wie "ANSI SQL vs Oracle SQL" (Oracle steht hier nur als Beispiel für ein "RDBMS-spezifisches SQL"). Wenn einer bei uns anfängt ANSI SQL zu schreiben, wird er direkt gefeuert... so ein Schwachsinn wie "RDBMS-Unabhängigkeit" interessiert bei uns kein Schwein, das funktioniert in der Theorie aber nie in Wirklichkeit.


----------



## Nequeox (15. März 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Uiuiui, da hat sich hier ja einiges an Antworten noch aufgetan was ich so gar nicht mitbekommen habe.  

Ich bedanke mich erst einmal recht herzlich für all die unterschiedlichen Sichtweisen.  
Ich habe mittlerweile schon meine ersten Fortschritte in Python gemacht und bin auch relativ zufrieden mit meinem Einstieg. Programmieren kann man schlecht von heute auf morgen lernen, von daher gibt es immer wieder mal ein wenig Frustration, aber davon lasse ich mich nicht unterkriegen. Diese ganze "projekt" von mir ist ja auf die nächsten paar Jahre ausgelegt und solange ich da jede Woche ein paar Stündchen investiere, sollte das so funktionieren wie ich möchte.


----------



## Thomas0x (25. November 2017)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Ich kann auch VisualStudio 2017 mit Xamarin.Forms (C#) empfehlen! Ist sehr einfach zu erlernen und man bekommt damit gleich 3 Apps auf einmal programmiert (iOS, Android und Windows) natrülich auch alles kostenlos


----------



## fotoman (27. November 2017)

*AW: Programmieren fÃ¼r AnfÃ¤nger - Wie fange ich an?*



Thomas0x schrieb:


> Ich kann auch VisualStudio 2017 mit Xamarin.Forms (C#) empfehlen! Ist sehr einfach zu erlernen und man bekommt damit gleich 3 Apps auf einmal programmiert (iOS, Android und Windows) natrülich auch alles kostenlos


Hast Du damit Erfahrung? Darf man die Aussagen unter


			
				https://www.xamarin.com/platform-> Xamarin.iOS schrieb:
			
		

> Our Ahead-of-Time (AOT) compiler compiles Xamarin.iOS apps directly to  native ARM assembly code, meaning your app is a native platform binary.


wirklich so interpretieren, dass man mittlerweile unter Windows eine gültige, laufähige iOS App compilieren kann, die man dann einfach irgendwie auf seine eigene Apple-iOS Hardware kopieren/installieren kann?

Bisher kannte ich nur die altbekannte Gängel-Aussge von Xamarin (bzw. Apple)


			
				https://developer.xamarin.com/guides/ios/getting_started/installation/windows/connecting-to-mac/ schrieb:
			
		

> iOS applications cannot be created without Apple’s compiler, and they  cannot be deployed without Apple’s certificates and code-signing tools.  This means that your Xamarin.iOS for Visual Studio installation requires  a connection to a networked Mac OS X computer


Man muss also Geld für einen (natürlich einigermaßen aktuelle) Apple-Kiste ausgeben, damit man gnädiger weise seine Xamarin-iOS App kompilieren darf. Virtuell und legal geht nichts, da man Mac OS nicht legal ohne Computer kaufen kann. Ein lageler und vor allen (wie von dir genannt) kostenloser Ansatz, um eine App "im Netz" für iOS kompilieren und signieren zu lassen, habe ich noch nicht gefunden (selbst, wenn ich mal alle Sicherheitsbedenken bei so einem Vorgehn außen vor lassen würde).


----------



## CosmoCortney (28. Dezember 2017)

*AW: Programmieren fÃ¼r AnfÃ¤nger - Wie fange ich an?*

Ich habe früh eine Faszination für C++ entwickelt, aber mir viel der Einstieg sehr schwer.
Durch HTML und CSS gelang mir ein einfacher Einstieg ins Coding allgemein. Das Erlernen von JavaScript war dann auch keine Hürde. Schnell habe ich meine Kenntnisse um jQuery erweitert und habe es dann nochmal mit C++ versucht und hatte Erfolg!
Schnell fand ich mich dann auch in x86-64 Assembler, PowerPC Assembler und PHP zurecht  Das alles geschah in ungefähr 9 Monaten (nur hatte ich HTML und CSS schon zuvor gelernt und kannte mich etwas in PPC Assembler aus).
Vielleicht hilft es dir ja, einen Weg in die Programmierung zu finden.
Hier sind ein Paar Bücher und Links, die ich empfehlen kann: Schrödinger lernt HTML, CSS & JavaScript
Learning C++ by creating Games with UE4
Introduction to 64 Bit Assemlby Programming
QT5 Blue Prints
Einstieg in PHP 7 und MySQL

Zu empfehlende YouTube Kanäle:
x64 Assembler: What's a Creel?
 - YouTube
C++, Qt, Java, HTML, CSS, C#, Python: https://www.youtube.com/user/VoidRealms/playlists
C++ Qt, Android Programmierung, Java: https://www.youtube.com/user/ProgrammingKnowledge/playlists


----------



## Zeiss (8. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Wärst Du von C auf C++ gekommen, hättest Du keine Probleme...

Aber man kann natürlich das Pferd von hinten aufzäumen...


----------



## commodore128d (12. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*



fotoman schrieb:


> Virtuell und legal geht nichts, da man Mac OS nicht legal ohne Computer kaufen kann.



Doch, das geht. Du kannst bei Apple OSX Snow Leopard als Retail Version legal beziehen. Dann hast du die Lizenz, womit du auch updates bekommst. Das ist auch der Grundsatz auf den sich die Hackintosh Szene beruft.


----------



## Laggy.NET (12. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Ich finde, beim Programmieren ist weniger die Syntax bzw. "Sprache" das Problem, sondern viel eher, wie schon gesagt wurde, Algorithmen zu erstellen, die die gewünschte Aufgabe erledigen (das erfordert imho nur logisches Verständnis), aber VOR ALLEM auch die eigentliche "Entwicklung" eines Programms (hier ist imho ne gewisse Erfahrung notwendig)

Heißt, der Aufbau eines Programms. Welche Funktionen brauche ich überhaupt und was muss ich insgesamt überhaupt für ne Struktur ans laufen bringen, damit mein Programm überhaupt arbeitet.

Ich hab mich auch schon mal mit der Thematik beschäftigt. Kleinere textbasierte Programme mit eingabeaufforderung, kein Problem. Das ganze mit ner GUI auszustatten - reine Fleißarbeit.
Aber ein komplexeres Programm, wie z.B. ein ganzes 2D Spiel zu erstellen hat auf dem ersten blick imho wenig mit "programmieren" zu tun, so wie man es im einstieg lernt. Man beschäftigt sich hier viel mehr mit der gesamten Konzeptionierung des Programms. Die einzelnen Algorithmen zu erstellen ist dabei mit etwas übung wirklich nicht schwer...

Und das war es auch, was mich letztendlich nicht weiter motiviert hat bzw. mir zu zeitaufwändig war.
Mit Anleitung bzw. Plan ein kleineres Spiel zu programmieren ist mir sehr leicht gefallen. Weil ich eben weiß, wie das Programm aufgebaut sein muss, damit es arbeitet.

Das ganze aber komplett ohne Anleitung zu erarbeiten? Keine Ahnung...

Ich sehe hier nur zwei Möglichkeiten, sich das anzueignen. Sehr viel Übung mit vielen weiteren Beispielen oder eben eine gezielte Schulung.
Und genau deswegen sehe ich solche Hinweise auf Seiten wie "Java ist auch eine Insel" als wenig hilfreich an. Hier wird zwar die Syntax, alle Befehle und einige Grundlagen gut erklärt. Wie man aber an das Problem der Softwareentwicklung herangeht wird natürlich nicht vermittelt.
Gut, das ist sicherlich auch nicht die Zielsetzung dieses Buchs bzw. dieser Website. Aber jemand, der Programmieren lernen will und erwartet eigene Programme entwickeln zu können, den bringt das quasi null weiter.


Kurz gesagt: "Programmieren" ist das eine (und lässt sich in wenigen Wochen aneignen), "Softwareentwicklung" das andere...
Eine Programmiersprache (halbwegs) zu beherrschen ist ein mächtiges Werkzeug. Es gilt aber zu wissen, wie man dieses Werkzeug einsetzt, um letztendlich  "bauen" zu können, was man sich vorstellt. Nur das Werkzeug zu verstehen hilft einen da nicht weiter.


----------



## Gimmick (12. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*



Laggy.NET schrieb:


> Ich finde, beim Programmieren ist weniger die Syntax bzw. "Sprache" das Problem, sondern viel eher, wie schon gesagt wurde, Algorithmen zu erstellen, die die gewünschte Aufgabe erledigen (das erfordert imho nur logisches Verständnis), aber VOR ALLEM auch die eigentliche "Entwicklung" eines Programms (hier ist imho ne gewisse Erfahrung notwendig)
> 
> Heißt, der Aufbau eines Programms. Welche Funktionen brauche ich überhaupt und was muss ich insgesamt überhaupt für ne Struktur ans laufen bringen, damit mein Programm überhaupt arbeitet.
> 
> ...



Ich finde Spiele sind kein guter Einstieg für Anfänger und Hobbyprogrammierer. Eher früher als später landet man eh bei einer fertigen Engine wie Unity - da programmiert man zwar natürlich auch, aber eben auf einer ganz anderen Basis, dafür ist das Ding ja da.

Du hättest mit deinem textbasierten Programm weiter machen sollen. Sowas wächst mit der Zeit, stellt einen vor ganz neue Probleme und man lernt sehr gut dazu.
Aber es spricht ja nichts dagegen ein anderes Vorhaben in die Tat umzusetzen.


----------



## Olstyle (12. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Ich mag ja nach wie vor das Originalkonzept des Raspberry Pi: Das ist nämlich eigentlich eine Programmier-Lehrplattform.
Und zwar im ersten Schritt mit Scratch
Scratch - Raspberry Pi Documentation
Da kann man dann ganz in Ruhe Logik lernen bevor man sich Gedanken um fehlende Semikolons macht.

 Syntax irgendwelcher Sprachen kann man bei Bedarf nachschlagen, die sind kein Selbstzweck.


----------



## Xtr3me86 (18. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Vielleicht ein kleiner Erfahrungsbericht: 

Ich habe mit der Programmiersprache Java (studiumsbedingt) angefangen, das wurde von der FH so vorgegeben – denke da werden sich viele wiederfinden. Im Nachgang fand ich Java als erste Programmiersprache gar nicht so verkehrt. Es empfiehlt sich (andere vor mir haben es ebenfalls bereits erwähnt), direkt mit einer Entwicklungsumgebung wie z.B. Eclipse für Java zu beginnen, anstatt Programme im Notepad zu schreiben. Es gibt etliche Tutorials, und das erste „Hello World“ Programm ist fix erstellt und ausführbar. Dass mal was nicht klappt, und das tut es auf Anhieb meistens nie, daran muss man sich einfach gewöhnen. Anfangs muss man auch erst mal die Elemente der Sprachsyntax wie Anweisungen, Variablen, Schleifen, Bedingungen…. Kennenlernen – die gibt es nämlich in jeder Programmiersprache. Nach einigen Tutorials war das höchste der Gefühle, dass ich kleine Rechtecke in einem kleinen Eingabefenster ausgegeben oder Zahlenfolgen erzeugt und rausgeschrieben habe. Es gibt genug kleine Tutorials mit immer schwerer werdendem Schwierigkeitsgrad, einfach mal googlen! 

Während dem Studium hat mir das Buch „Java ist auch eine Insel“ enorm geholfen – es geht zwar oft unglaublich ins Detail, aber zum Nachschlagen ist es allemal eine gute Hilfe. Wenn ich was nicht verstanden hatte oder ich zu einem Thema mehr wissen wollte, in dem Buch stand es garantiert…natürlich gab es dennoch viele schwarze Flecken am Java-Horizont, insbesondere wenn die Entwicklungsumgebung mal nicht so wollte - es wurde bereits der berühmte „classpath“ erwähnt. Man tappt anfangs generell oft im Dunkeln, weil die modernen IDEs (Entwicklungsumgebungen) so viel können mit zig Funktionen, und man eigentlich als Anfänger nur ein Bruchteil benötigt…davon nicht abschrecken lassen! Nach dem anfänglichen Kennenlernen der Sprache dann der nächste Meilenstein: mit einer IDE kann ich mein Programm an einer von mir gewählten Stelle anhalten und Anweisung für Anweisung weiter ausführen, das sogenannte Debugging. Ich kann den aktuellen Zustand betrachten, dies ist z.B. sinnvoll, um einen Fehler zu finden.  (Ich verbringe einen Großteil meiner Arbeitszeit mit dem Debuggen, teilweise sucht man Stunden, um einen Fehler zu finden!)
Zurück zu den Sprachen: ich habe im späteren Studium in .NET entwickeln müssen, d.h. Programmiersprache C#, Entwicklungsumgebung Microsoft Visual Studio Express. Nun stellt man schnell fest, dass man doch etwas kann, denn in C# sieht alles sehr ähnlich aus und funktioniert auch sehr ähnlich. Sogar das erst erlernte Debugging gelingt ohne große Umstellung... C# als erste Sprache kann ich also auch empfehlen. Ein Pluspunkt MS Visual Studio: Programme mit grafischer Oberfläche waren „zu meiner Zeit“ viel einfacher und komfortabler im Visual Studio erstellt, ohne noch irgendwelche Plugins etc. suchen zu müssen. Per WYSIWYG-Oberfläche hat man sich also ziemlich schnell ein paar Buttons, Eingabefelder etc. in ein Fenster gepackt und war „fertig“. 

Ich finde es auch nicht verkehrt, mit einer objektorientierten Sprache zu beginnen – mittlerweile kann man sogar in der SAP-Sprache ABAP objektorientiert entwickeln. Sicherlich wird man OOP nicht auf Anhieb verstehen und so verinnerlichen, wie jemand der seit Jahren damit arbeitet und die Möglichkeiten ausschöpft. Allerdings denke ich, dass man zumindest mit grobem Wissen über  (abstrakte) Klassen, und (Statische) Methoden und Interfaces schon ein gutes Stück weit kommt. 

Meiner Meinung nach kommt nun die spannendste Phase: man beherrscht die Sprachsyntax grob und findet sich in der IDE zurecht – bisher konnte man nur kleine Java-Programme schreiben, die in einem Fenster ausgeführt werden, weit entfernt von einer schicken grafischen Oberfläche. Wer mit einer anderen Programmiersprache angefangen hat, wird sicher ähnlichen Stand haben. Folgendes ist mir damals durch den Kopf gegangen: „Außerdem würde ich gerne mal Informationen abspeichern können, z.B. in eine Textdatei, in ein XML (und zwar korrekt und „wohlgeformt“, sodass ich diese ohne Fehler auch irgendwann wieder einlesen kann!)“. Oder „Mein Programm soll mit anderen Programmen/Diensten/was auch immer kommunizieren können, z.B. über das http-Protokoll. Die meisten Apps auf den Smartphones tun dies z.B., da sie ja irgendwie die Daten vom Server bekommen müssen“. „Und ein sauberes Fehlerhandling wäre auch nicht verkehrt, denn mein Programm darf nicht jedes Mal abstürzen, sondern sollte die Aktion abbrechen und dies dem User mitteilen“. Und und und….jetzt lernt man „eigentlich“ erst die Programmiersprache richtig kennen. Nicht bezüglich der Syntax, sondern vom „Sprachumfang“. Jede der populären Programmiersprachen bietet bereits viele Funktionalitäten, die ich durch Aufrufe/Nachrichten/Events/gerichtete Würfe von Zaunpfählen in meinem Code verwenden kann. „Ich muss nicht jedes Mal das Rad neu erfinden“. So kann man also – vorausgesetzt, man weiß, ob es so eine Funktion in Java (C#....) bereits gibt – wie sie heißt – und wie man diese Funktion füttern muss („welche Parameter muss ich übergeben?“). Das oben angesprochene Buch zeigt einem schon eine ganz gute Vielfalt, was out-of-the-box möglich ist. Achtung Spoiler: oftmals googelt man sich das Zeug auch zusammen, und landet meistens eh auf stackoverflow.com, wo ein User dies GARANTIERT auch schon mal wissen wollte – und wenn es gut läuft, ist auch noch ein Beispiel gepostet für STRG+C, V  Man beginnt, sich kleinere Projekte zu überlegen. Klassiker: „Movie-Database“. Wenn man dran bleibt, wird man besser, und verwendet schon viele Sachen aus dem einen Programm in seinem nächsten. Tjoa, simple as that (oder auch nicht). Beispiel aus meinen Anfängen: ich hatte irgendwann ne ganz schöne Ansammlung von kleinen „Showcases“. Kleinstprogramme, die oftmals in einer einzigen Source „irgendwas“ machen. Der eine schreibt etwas Beispieltext in eine Textdatei. Mehr nicht. Der nächste erzeugt einen Thread (nebenläufiges Programm), der sich irgendwann in meinem Hauptthread meldet. Wenn sich dieser meldet, wird eine Ausgabe erzeugt. Hab ich irgendwann später ein Programm eine Funktion einbauen wollen, hab ich mich gern bei meinen Showcases bedient 

Ich habe gerade noch einmal die Beiträge vor mir überflogen (wo insgesamt viel Richtiges imho drin steht). Ein Hinweis noch: ich habe zu meiner Schulzeit mal versucht, mich mit HTML, CCS und Co anzufreunden. „Mal ne kleine Webseite bauen“. Ich habs gehasst , waren mir damals zu viele unterschiedliche Konzepte auf einmal, schätze ich. Mittlerweile habe ich auch ein paar Apps entwickelt, sowohl für Android (Java) als auch iOS (Objective C), letzteres schon paar Jahre her. Find ich ebenfalls für den Einstieg vielleicht etwas überfordernd, obwohl Apps „cool“ sind. Wer z.B. schon etwas fit ist mit Java, kann mal den Exkurs zu einer Android App wagen, ich persönlich hätte wohl aufgegeben wenn Apps mein Einstieg sein sollten. 

My two cents


----------



## Zeiss (22. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Das Problem, was ich bei Java und C# sehe, dass einem sehr viel (zu viel mMn.) abgenommen wird, wie zum Beispiel der komplette Speichermanagement. Und das kein Mensch weiß, was da genau passiert. So passiert es sehr schnell, dass man ein Memory Leak eingebaut hat, dass irgendwelche Ressourcen nicht freigegeben werden und irgendwelche Klassen nicht entsorgt werden. Gerade beim "Klassen entsorgen" ist auch schon das zweite Problem ist, das Verhalten nicht deterministisch ist, sprich, wann der GC zuschlägt. Dann die unterschiedliche Speicherbereiche, Heap, Edden, Old Gen, ... und wie die Lebensdauer eine Klasse ist.

Was heißt "zu meiner Zeit"? Das VS gibt es schon ewig. Da gab es auch schon die Oberflächen-Builder, damals noch mit MFC. Oder auch der alte C++ Builder von Borland (anno 2002) hatte es mit an Bord, mit ihrer VCL-Library. Also, es ist nichts Neues.

Eclipse ist der letzte sch**ss, ich habe noch nie eine IDE gesehen, die so verbuggt ist. Nach jahrelanger Quälerei mit Eclipse bin ich auf NetBeans umgestiegen und ich muss sagen, coole Sache! Das Zeug funktioniert.

Ich fange an (bzw. habe angefangen) einen Treiber für Linux zu entwickeln, eigentlich ist es ein Stack, also ein "bisschen" mehr. Die Leute haben sich echt Gedanken gemacht, auch wenn man an manchen Stellen sich fragen muss "hä, warum so?", aber gut, sind halt Eigenarten. Aber, pures C, kein C++ und klar strukturiert. Und genau hier wird es interessant, kmalloc und kfree zum Beispiel  Oder Interrupt-Routinen. Und um das Ganze richtig spannend zu machen: wie wär's mit Real Time Kernel? Als IDE nehme ich KDevelop und muss sagen, es ist nicht schlecht. Es kann direkt die Linux-Kernel Source einbinden und auch damit umgehen, was Eclipse NICHT kann, auch nicht nach stundenlangem einrichten.


----------



## Xtr3me86 (22. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*



Zeiss schrieb:


> Das Problem, was ich bei Java und C# sehe, dass einem sehr viel (zu viel mMn.) abgenommen wird, wie zum Beispiel der komplette Speichermanagement. Und das kein Mensch weiß, was da genau passiert. So passiert es sehr schnell, dass man ein Memory Leak eingebaut hat, dass irgendwelche Ressourcen nicht freigegeben werden und irgendwelche Klassen nicht entsorgt werden. Gerade beim "Klassen entsorgen" ist auch schon das zweite Problem ist, das Verhalten nicht deterministisch ist, sprich, wann der GC zuschlägt. Dann die unterschiedliche Speicherbereiche, Heap, Edden, Old Gen, ... und wie die Lebensdauer eine Klasse ist.


Hmm. Du überspringst gerade etliche Stufen, redest aus deiner Sicht. Ich vermute, dass eben der Anfänger, der vor lauter Bäumen den Wald nicht sieht, happy af ist, wenn er sich jetzt nicht auch noch direkt mit Speicher allokieren, dies und das und tralala beschäftigen muss! Natürlich hat jeder, der Java entwickelt, sich auch Regeln, "Best Practices", aneignen müssen, damit das Ding auch performant bleibt - ich denke, dass 95% der interessierten Leser hier sich wohl nie um Performance-Probleme kümmern müssen werden, und ganz froh sind, dass es für die 0815 Anwendung mehr als ausreichend ist.  



Zeiss schrieb:


> Was heißt "zu meiner Zeit"? Das VS gibt es schon ewig. Da gab es auch schon die Oberflächen-Builder, damals noch mit MFC. Oder auch der alte C++ Builder von Borland (anno 2002) hatte es mit an Bord, mit ihrer VCL-Library. Also, es ist nichts Neues.


"Zu meiner Zeit" sollte eine Momentaufnahme sein, da ich mich weder großartig davor (Schüler, höchstens Zocken am PC im Kopf) noch nach meinem Studium mit grafischen Oberflächen beschäftigt habe, sprich: ich weiß nicht, ob es heute schon richtig gute Plugins gibt, die das grafische Erstellen kinderleicht machen. Zu dem Zeitpunkt, als mein Interesse geweckt wurde, hatte VS out-of-the-box die für mich einfachere, zugänglichere Möglichkeit parat, mal ne Maske zu designen. Die ersten Schritte. Drag n Drop. Für einen Laien ist das schick, dass er so schnell was zusammen gezimmert hat. Ich kann mich nicht dran erinnern, dass es das direkt im Eclipse so gab, und ich meine, UI Frameworks gab es wenn dann nur komplizierter, unkomfortabler oder wie auch immer, fürs Eclipse. Android IDE und Xcode waren sehr nett, allerdings gings da nicht um Desktop-Anwendungen.



Zeiss schrieb:


> Eclipse ist der letzte sch**ss, ich habe noch nie eine IDE gesehen, die so verbuggt ist. Nach jahrelanger Quälerei mit Eclipse bin ich auf NetBeans umgestiegen und ich muss sagen, coole Sache! Das Zeug funktioniert.


Gott sei Dank.



Zeiss schrieb:


> Ich fange an (bzw. habe angefangen) einen Treiber für Linux zu entwickeln, eigentlich ist es ein Stack, also ein "bisschen" mehr. Die Leute haben sich echt Gedanken gemacht, auch wenn man an manchen Stellen sich fragen muss "hä, warum so?", aber gut, sind halt Eigenarten. Aber, pures C, kein C++ und klar strukturiert. Und genau hier wird es interessant, kmalloc und kfree zum Beispiel  Oder Interrupt-Routinen. Und um das Ganze richtig spannend zu machen: wie wär's mit Real Time Kernel? Als IDE nehme ich KDevelop und muss sagen, es ist nicht schlecht. Es kann direkt die Linux-Kernel Source einbinden und auch damit umgehen, was Eclipse NICHT kann, auch nicht nach stundenlangem einrichten.


Das freut mich, dass du Spaß an deinem Hobby hast. Ich muss gestehen, ich hatte noch nie vor, einen Real Time Kernel zu entwickeln, noch mein OS auf Linux umzustellen oder Linux-Kernel Sourcen einbinden. Deswegen bin ich auch nicht unbedingt traurig drum, dass Eclipse das nicht kann. Ich arbeite heute übrigens auch nicht mehr mit Eclipse. Ich dachte allerdings nur an den TE oder andere Neugierige, die genau wie ich damals den Kopf voller Ideen haben und gar nicht recht wissen, wie sie anfangen sollen. Denn ab und zu macht die Geschichte verdammt nochmal viel Spaß, vor allem, wenns einem mal einfach so richtig läuft. Die Freude, wenn es mal funktioniert wie man möchte. Oder wenn man sich überlegt, was man Neues dran programmieren kann. Ich denke, darum gehts. Und um die Einstiegshürde nicht mehr ganz so groß aussehen zu lassen wie sie anfänglich eben ist, hab ich einfach mal runter geschrieben, wie das bei mir so war - und wie sich der Erfolg und der Spaß ganz von alleine einstellen.


----------



## Zeiss (22. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*



Xtr3me86 schrieb:


> Hmm. Du überspringst gerade etliche Stufen, redest aus deiner Sicht.



Was überspringe ich?



Xtr3me86 schrieb:


> Ich vermute, dass eben der Anfänger, der vor lauter Bäumen den Wald nicht sieht, happy af ist, wenn er sich jetzt nicht auch noch direkt mit Speicher allokieren, dies und das und tralala beschäftigen muss!



Also, ich denke mal, gerade am Anfang ein


```
#include <stdio.h>

int main(void) {

printf("Hallo Welt!\n");

return 0;
}
```

einfacher ist, als sich mit Konstruktor, Package und etc. zu beschäftigen. Wie gesagt, meine Meinung.



Xtr3me86 schrieb:


> Natürlich hat jeder, der Java entwickelt, sich auch Regeln, "Best Practices", aneignen müssen, damit das Ding auch performant bleibt - ich denke, dass 95% der interessierten Leser hier sich wohl nie um Performance-Probleme kümmern müssen werden, und ganz froh sind, dass es für die 0815 Anwendung mehr als ausreichend ist.



Das ist, leider, die Traumwelt und Traumvorstellung. Die Realität sieht anders aus. Ich kann Dir Code von Entwickler (!!! keine Programmierer) zeigen, da wird es Dir übel und das ist (wie gesagt, leider) die Realität...



Xtr3me86 schrieb:


> "Zu meiner Zeit" sollte eine Momentaufnahme sein, da ich mich weder großartig davor (Schüler, höchstens Zocken am PC im Kopf) noch nach meinem Studium mit grafischen Oberflächen beschäftigt habe, sprich: ich weiß nicht, ob es heute schon richtig gute Plugins gibt, die das grafische Erstellen kinderleicht machen. Zu dem Zeitpunkt, als mein Interesse geweckt wurde, hatte VS out-of-the-box die für mich einfachere, zugänglichere Möglichkeit parat, mal ne Maske zu designen. Die ersten Schritte. Drag n Drop. Für einen Laien ist das schick, dass er so schnell was zusammen gezimmert hat. Ich kann mich nicht dran erinnern, dass es das direkt im Eclipse so gab, und ich meine, UI Frameworks gab es wenn dann nur komplizierter, unkomfortabler oder wie auch immer, fürs Eclipse. Android IDE und Xcode waren sehr nett, allerdings gings da nicht um Desktop-Anwendungen.



Genau das wollte ich doch wissen, was heißt "zu meiner Zeit", Jahr oder sowas. Nur damit ich weiß, von welcher Zeit wir gerade reden. Wie gesagt, ich rede von anno 2002, da kam ich in Berührung mit VS und Borland C++. Eclipse kam da gerade erst auf.



Xtr3me86 schrieb:


> Das freut mich, dass du Spaß an deinem Hobby hast. Ich muss gestehen, ich hatte noch nie vor, einen Real Time Kernel zu entwickeln, noch mein OS auf Linux umzustellen oder Linux-Kernel Sourcen einbinden. Deswegen bin ich auch nicht unbedingt traurig drum, dass Eclipse das nicht kann. Ich arbeite heute übrigens auch nicht mehr mit Eclipse. Ich dachte allerdings nur an den TE oder andere Neugierige, die genau wie ich damals den Kopf voller Ideen haben und gar nicht recht wissen, wie sie anfangen sollen. Denn ab und zu macht die Geschichte verdammt nochmal viel Spaß, vor allem, wenns einem mal einfach so richtig läuft. Die Freude, wenn es mal funktioniert wie man möchte. Oder wenn man sich überlegt, was man Neues dran programmieren kann. Ich denke, darum gehts. Und um die Einstiegshürde nicht mehr ganz so groß aussehen zu lassen wie sie anfänglich eben ist, hab ich einfach mal runter geschrieben, wie das bei mir so war - und wie sich der Erfolg und der Spaß ganz von alleine einstellen.



Naja, ich entwickle ja keinen Kernel und ich hoffe, dass ich die RT-Geschichten vom Kernel nicht brauche, aber wer weiß.

Ich bin nach wie vor davon überzeugt, dass OOP nicht der richtige Weg für den Einstieg ins Programmieren ist. Am Anfang hat man eh Probleme damit die Schleifen, Verzweigungen, Funktionen und etc zu verstehen, da braucht man nicht noch extra Klassen, Klassenhierarchien, Ableitung und den ganzen Geraffel mit drauf zu packen. Denn die Schleifen, Verzweigungen und etc. sind immer da, egal ob objektorientiert oder prozedural. Hat man das verstanden, ist der nächste Schritt mit Klassen, Vererbung und etc. einfacher.

Ich denke, es ist einfacher erst den Weg von A nach B zu erkunden, sprich "was mache ich hier eigentlich" und "wie mache XYZ" und dann das Ganze in OOP sich vorzustellen.


----------



## Olstyle (22. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Den Kerneltreiber hab ich damals mit Geany geschrieben und von da raus kompiliert. Ist alles kein Hexenwerk (wobei Kdevelop schon ganz schick ist)
Aber halt eins nach dem Anderen. 

Entscheidend ist "irgendwo" anzufangen. Den perfekten Weg für Alle und Alles gibt es nicht. 
Allein beruflich bin ich gerade mit C, C++, C#, VB, Python, Matlab und Stateflow zugange. Nicht aus Überzeugung sondern aus Notwendigkeit.


----------



## Zeiss (22. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*



Olstyle schrieb:


> Den Kerneltreiber hab ich damals mit Geany geschrieben und von da raus kompiliert. Ist alles kein Hexenwerk (wobei Kdevelop schon ganz schick ist)
> Aber halt eins nach dem Anderen.



Kriegt er das Linking und Makefile-Projekte sauber hin? Ich mache ja Crosscompiling.



Olstyle schrieb:


> Entscheidend ist "irgendwo" anzufangen. Den perfekten Weg für Alle und Alles gibt es nicht.
> Allein beruflich bin ich gerade mit C, C++, C#, VB, Python, Matlab und Stateflow zugange. Nicht aus Überzeugung sondern aus Notwendigkeit.



VB, Du kennst aber auch gar nichts, ist ja ekelhaft...


----------



## Olstyle (22. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Geany ruft einfach direkt make auf. Wenn das Makefile einen Crosscompiler benennt dann macht es eben das. Hab ich zu Uni-Zeiten gerne als Minimal-IDE genutzt.

Lieber VB als die Sprachen in denen Whitespace/Einrückung eine funktionale Bedeutung hat.


----------



## Zeiss (22. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Das gibt man dem make direkt mit:



> root@idefix:~# make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-



Glaube, ich schaue es mir mal an.


----------



## Xtr3me86 (22. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Mit "du überspringst ein paar Stufen" meine ich, du sprichst Themen an, die einen Anfänger nicht wirklich interessieren, sicherlich aber einen richtigen Entwickler. Da sind üblicherweise ein paar Stufen dazwischen. Bei mir fast 10 Jahre nun. 

Mit Constructor, Package etc. braucht man sich ebenfalls nicht rum ärgern. Wird einem bei Projektanlage angelegt. Trifft man mit dem Anfänger ein Gentlemen's Agreement, dass er nur innerhalb dieser geschweiften Klammern nach static void main seine Programmierversuche packt, sind sicherlich beide Seiten einverstanden. Effektiv hat der Java Dummy eine einzige Zeile geschrieben. Auch zum Thema OOP und "unnötige, erhöhte Komplexität zu Beginn"....mit statischen Methoden in der gleichen Source hält man sich auch eine ganze Weile über Wasser und kann sich mit Schleifen und Bedingungen austoben. Man kann sehr wohl das ganze Sprachen 1mal1 lernen, ohne überhaupt irgendwas über Klassen, Vererbung etc. wissen zu müssen. Im Übrigen habe ich nichts gegen C, C++ oder wie se alle heißen für die erste Programmiersprache. Halbwegs ordentliche IDE drumherum und noch ne gute Online Tutorial Verfügbarkeit hat man quasi überall.

Wenn dann aber der Groschen gefallen ist, finde ich OOP durchaus nützlich. Sollte imo schon relativ früh dazu kommen. Denke wir sind uns einig, dass man OOP lange außen vor lassen kann, man muss kein OOP beherrschen um in Java ein paar Programme zu schreiben. Ich finde, richtig OOP verstanden zu haben, kommt eh erst über die Jahre - war zumindest bei mir so. Bis dahin hat es mir aber nicht weh getan


----------



## Zeiss (22. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Frag einen Entwickler was der Unterschied zwischen einer objektorientierten und einer prozeduralen Sprache ist und Du wirst überrascht sein, was da für Antworten kommen und es wird viel zu lachen geben...

Wenn man die Grundzüge verstanden hat, also genau die Schleifen, Verzweigungen, Klassen(hierarchien), Konstruktoren/Destuktoren,  ist es egal welche Sprache man nimmt, die Vorgehensweise ist dieselbe und die Sprache ist nur ein Werkzeug. Nur gerade bei Java und C# muss man aufpassen, was man macht (Stichwort: Speichermanagement), denn durch das "es wird mir abgenommen" tappt man schnell in eine Falle rein. Ich bin eher dafür, dass man es genau andersherum lernt, sprich erst weißt, was da passiert und dann überlässt es der RT.


----------



## Gimmick (23. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*



Zeiss schrieb:


> Das ist, leider, die Traumwelt und Traumvorstellung. Die Realität sieht anders aus. Ich kann Dir Code von Entwickler (!!! keine Programmierer) zeigen, da wird es Dir übel und das ist (wie gesagt, leider) die Realität...



Eine Berufsbezeichnung macht eben noch keinen Experten (abgesehen davon kann man zwischen Entwickler und Programmierer eh nicht wirklich trennen imo).
Ich bin sozusagen auch Entwickler - ähh arbeite unter Bezeichnung "Entwickler" 

Bin aber eigentlich Dipl. Phys. und der Einstieg in den Job hat mich leider nicht direkt mit Allwissen durchstrahlt ;<


----------



## Zeiss (23. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*



Gimmick schrieb:


> Eine Berufsbezeichnung macht eben noch keinen Experten



Aber die 12-15 Jahre Erfahrungen sollten es. 



Gimmick schrieb:


> (abgesehen davon kann man zwischen Entwickler und Programmierer eh nicht wirklich trennen imo).



Naja, ein Inder (ist keine Beleidigung) ist ein Programmierer. Gib ihm eine Spec und er hackt sie runter, mehr oder weniger gut. Sollte in der Spec irgendwas unklar sein, bleibt er stehen...
Genau das haben wir Jahre lang bei Bosch beobachtet...


----------



## Olstyle (23. Januar 2018)

*AW: Programmieren für Anfänger - Wie fange ich an?*

Villleicht sind deswegen so viele Firmen jetzt in Rumänien zur SW-Entwicklung. Auch nicht viel teurer (kein Wunder, die Berufsgruppe ist dort steuerbefreit) aber als vollwertige Entwickler einsetzbar.

Wobei ich bei uns im allgemeinen eher die "Anti-Programmierer" erlebe. Die können sich die ganzen Design-Schritte in der Doku garnicht erklären weil doch eh keiner "so doof" sei dass er wirklich nur umsetzt.


----------

