# Programmieren für Anfänger



## WhatsUn (6. Juli 2014)

*Programmieren für Anfänger*

Hallo Leute, 

Vor ca. zwei Jahren habe ich mit Webdesign angefangen. Dazu habe ich mir, mit der Hilfe von Youtube-Videos und diversen Internetseiten, die Grundlagen von HTML beigebracht. Meine Kenntnisse habe ich dann mit dem Programm Dreamweaver erweitert. Seit einem Jahr habe ich nichts mehr in dieser Richtung unternommen. Jetzt ist die Motivation wieder da, allerdings möchte ich richtig Programmieren. Welche Sprache empfehlt ihr mir (C, C#, oder etwas anderes)? Ich fange nächstes Jahr mein Studium im Bereich Wirtschaftsinformatik an, dabei sollte mir die Sprache auch helfen. Habt ihr Erfahrungen mit dem "Selbstbeibringen"?


----------



## HanZ4000 (6. Juli 2014)

*AW: Programmieren für Anfänger*

Ich empfehle mit C-Programmierung anzufangen.
Auf diese Kenntnisse kann man dann in C++ und Java drauf aufbauen. C# ist dann auch kein Thema mehr.

Selbstbeibringen mit der nötigen Motivation, klar!
"C für Dummies" ist ein gutes Buch, welches ich empfehlen kann.


----------



## kbit (6. Juli 2014)

*AW: Programmieren für Anfänger*

Ich kann das Buch "C Programmieren von Anfang an" empfehlen. 
Bei der Auswahl der Programmiersprache musst du drauf achten was du machen möchtest.


----------



## Atothedrian (6. Juli 2014)

*AW: Programmieren für Anfänger*

Bin grad dabei ein Buch über C# durchzuarbeiten. Mach auch viel Spaß, die Sprache orientiert sich an Anwendungen und Apps für Windows. Ansonsten biete die Microsft Virtual Academy zu verschieden Sprachen /Themen eine umfangreiche Videothek zum selbstudium. Gratis. 

Link: Microsoft Virtual Academy


----------



## bingo88 (6. Juli 2014)

*AW: Programmieren für Anfänger*

Im Bildungsumfeld (FH/Uni) wird mittlerweile viel in Java gemacht, könnte also Sinn machen, damit zu beginnen.


----------



## kbit (6. Juli 2014)

*AW: Programmieren für Anfänger*

vllt wäre C++ eine Idee wegen dem Objektorientiertem programmieren


----------



## Laudian (6. Juli 2014)

*AW: Programmieren für Anfänger*

Die Wahl der ersten Programmiersprache würde ich sehr vom Charakter abhängig machen.

Mit einer einsteigerfreundlichen Sprache wie z.B. Python kannst du sehr schnell viel erreichen und wirst vor allem gut an die Objektorientierte Programmierung herangeführt. Dafür ist die Sprache aber sehr ineffizient und vor allem im professionellen Bereich fast garnicht vertreten. Was die Sprache für Einsteiger so ideal macht ist meiner Meinung nach vor allem, dass man alle Befehle ohne großes drumherum einfach ausprobieren kann. Konsole öffnen, "a=1" eingeben, "a" eingeben --> "1" wird ausgegeben.
Langfristig muss man dann natürlich trotzdem noch eine andere Sprache lernen.

Wenn du ohnehin (Wirtschafts-)Informatik studieren möchtest wirst du langfristig _wahrscheinlich_ nicht an C++ vorbeikommen. C++ ist allerdings eine sehr einsteigerunfreundliche Sprache, man braucht recht lange bis man wirklich Ergebnisse sieht und ist dadurch mMn vor allem für Personen, die Probleme haben sich über längere Zeiträume hinweg zu motivieren, nicht als erste Sprache zu empfehlen. Vor allem zum Ausprobieren braucht man durch das andauernde Kompilieren und die starre Struktur recht lange.
Vorteil von C++ ist natürlich, dass die Sprache sehr effizient ist.

Dann gibt es noch Java. Das liegt in den meisten Punkten irgendwo zwischen Python und C++. Einsteigerfreundlicher als C++, dafür nicht ganz so schnell. Von der Struktur aber durchaus ähnlich.

Edit: Mit C würde ich heute ehrlich gesagt nicht mehr anfangen, C++ ist ja mehr oder weniger der Nachfolger von C.


----------



## bingo88 (6. Juli 2014)

*AW: Programmieren für Anfänger*

Hmm, ich würde für den Anfang bei Java oder C# bleiben. Wenn es noch einfacher sein soll, dann eine Skriptsprache wie Python.

Edit: Der Effizienzvorteil von C++ bleibt aber nur erhalten, wenn man keine "dummen Sachen" macht. Was wiederum nicht gerade einsteigerfreundlich ist, da man teilweise schon Erfahrung gesammelt haben sollte.


----------



## WhatsUn (6. Juli 2014)

Danke schonmal für die schnellen Antworten! 
Ein Freund empfiehlt mir C# und will mir dafür ein Buch geben (von Kopf bis Fuß - O'Reilly). Ist speziell C# leicht für Anfänger? Und bringt mir diese Sprache in dem angestrebten Studiengang etwas?


----------



## bingo88 (6. Juli 2014)

*AW: Programmieren für Anfänger*

C# ist sehr ähnlich zu Java - immerhin wurde es von einem Java-Mitentwickler entworfen. Ob C# direkt hilfreich ist, kann ich dir so nicht pauschal beantworten. Eigentlich ist das aber auch egal, da wenn du eine Sprache beherrscht, eine andere relativ leicht zu lernen ist. Besonders wenn ihr da Java lernen würdet, da die beiden Sprachen wie gesagt sehr ähnlich sind.


----------



## BiosShock (6. Juli 2014)

*AW: Programmieren für Anfänger*

Ich würde zu C++ raten. Wenn dann richtig. Außerdem gibt es sehr viel Vorlagen zum ab/einarbeiten und genauso viele Foren wo man sich Tipps holen kann.

Visual Studio bekommst Du bei MS für lau und die Dokumentation ist auch recht gut.

PS: Als Lernmaterial ist VideoToBrain nicht schlecht.


----------



## Laudian (6. Juli 2014)

*AW: Programmieren für Anfänger*

Da du im Studium zu 99% Wahrscheinlichkeit C, C++ oder Java benutzen wirst würde ich mich jetzt nicht unbedingt für C# entscheiden.

Am sinnvollsten wäre es wahrscheinlich, wenn du einfach mal bei einem Studenten an deiner Zieluni nachfragst welche Sprache dort im 1. Semester gelehrt wird.


Nochmal zum Punkt Motivation zurück: Wie würdest du dich denn einschätzen ?
Kannst du dich wirklich lange mit einer Sprache beschäftigen ohne Ergebnisse zu sehen ? Bei allen C-Sprachen und Java wirst du nämlich am Anfang erstmal ziemlich lange nur "Formalitäten" lernen ohne wirklich etwas zu erreichen, woran ich mehrmals gescheitert bin.

Beim 3. oder 4. Anlauf habe ich dann Python ausprobiert, und mit der Sprache kann man eben vom 1. Tag an wirklich rumspielen, was mir zumindest sehr geholfen hat. Als Informatiker solltest du dann mittelfristig natürlich auf eine "richtige" Programmiersprache umsteigen, aber das geht dann deutlich einfacher.
Noch ein Vorteil von Python, den ich eben vergessen habe: Python Programme lesen sich fast wie Englisch, selbst ohne tiefe Kenntnisse kann man einfachen Programmcode schon sehr gut lesen und nachvollziehen. Ein C-irgendwas Code wird für einen Anfänger dagegen erstmal wie §$%&/()= aussehen.


----------



## WhatsUn (6. Juli 2014)

Ich glaube das meine Motivation dafür reichen wird. In den nächsten paar Monaten kann ich viel Zeit aufbringen und die werde ich nutzen.


----------



## BiosShock (6. Juli 2014)

*AW: Programmieren für Anfänger*



WhatsUn schrieb:


> Ich glaube das meine Motivation dafür reichen wird. In den nächsten paar Monaten kann ich viel Zeit aufbringen und die werde ich nutzen.


 
An was hast Du denn als Projekt gedacht? Schon ne Idee?


----------



## WhatsUn (6. Juli 2014)

BiosShock schrieb:


> An was hast Du denn als Projekt gedacht? Schon ne Idee?


Ich habe bislang noch keine konkrete Vorstellung für ein spezielles Projekt.


----------



## Laudian (6. Juli 2014)

*AW: Programmieren für Anfänger*



WhatsUn schrieb:


> Ich habe bislang noch keine konkrete Vorstellung für ein spezielles Projekt.


 
Darüber solltest du dir unbedingt Gedanken machen. Ohne ein festes Ziel vor Augen verliert man die Motivtion doch schneller als man denkt.


----------



## WhatsUn (6. Juli 2014)

Das stimmt, hab ich bei meinen Anfängen mit HTML gemerkt, ein Freund hatte dann eine Idee und verwirklichte ich eine Website


----------



## Salfurium (6. Juli 2014)

*AW: Programmieren für Anfänger*

Ich kann C# auch wärmstens empfehlen. Ist Java wirklich sehr ähnlich und wenn man eine der C-Sprachen beherrscht (zu denen Java zählt) ist es wirklich sehr leicht eine andere zu lernen.
Meiner Meinung nach ist C# wirklich sehr gut für den Einstieg geeignet, da Visual Studio (Microsofts IDE für C#, C++, Visual Basic und F#) wirklich ungeschlagen ist.
Ein anderer Vorteil von C# ist die wirklich gute Integration der "Windows Presentation Foundation", die es echt einfach macht Benutzeroberflächen zu erstellen. Als ich vor einigen Jahren angefangen habe zu programmieren, hat es mir sehr geholfen, dass man als Anfänger in C# nicht nur mit Konsolen rumhantieren konnte, sondern auch mithilfe eines Designers einfache Benutzeroberflächen bauen konnte. Da du dich ja mit Webseiten auskennst könnte ich mir vorstellen, dass dir das programmieren Lernen so auch etwas leichter fällt.


----------



## WhatsUn (6. Juli 2014)

Salfurium schrieb:


> Da du dich ja mit Webseiten auskennst könnte ich mir vorstellen, dass dir das programmieren Lernen so auch etwas leichter fällt.


    Das glaube ich auch! Ich habe mir Visual Studio 2010 Express vorhin mal geladen und das sagt mir schon sehr zu! Erster Eindruck: Top


----------



## XPrototypeX (6. Juli 2014)

*AW: Programmieren für Anfänger*

Ich denke ob eine Sprache einsteigerfreundlich ist hängt stark von der Standard API und dessen Dokumentation ab. Da ist C# und auch Java sehr zu empfehlen. Beide haben eine starke Community und auch mächtige IDEs(C# Visual Studio, Java eclipse und IDEA) hinter sich stehen. 

Beide Sprachen eignen sich meiner Meinung nach. Ich persönlich würde Java bevorzugen, allerdings ist das reine Geschmackssache.


----------



## Salfurium (6. Juli 2014)

*AW: Programmieren für Anfänger*



WhatsUn schrieb:


> Das glaube ich auch! Ich habe mir Visual Studio 2010 Express vorhin mal geladen und das sagt mir schon sehr zu! Erster Eindruck: Top


 
http://www.visualstudio.com/de-de/downloads/download-visual-studio-vs
Da würde ich die VS Express 2013 für Windows Desktop nehmen. Der verbesserte Oberflächendesigner und .Net 4.5 sind es meiner Meinung nach echt Wert. Wobei das für den Einstieg auch erstmal egal sein sollte.

EDIT:
Diesem Büchlein kann man auch ziemlich angenehm Folgen: Visual C# 2012 (Openbook)


----------



## xEbo (6. Juli 2014)

*AW: Programmieren für Anfänger*

Also ich würde mir erst Gedanken machen was denn Programmiert werden soll:

Mobile Betriebssystem: Meist Java.
Windows: Java, C#, C++, Visual Basic!!!!!
Windows Konsole: Java, C++
Linux: C++, Java, Phyton etc.

Dann gehst am besten mal auf die Hochschul Websiten, suchst nach den Zuständigen Dozenten für deinen Studiengang und fragst nach was bei denen in den VLs/ Übungen eingesetzt wird. 
Danach würde ich dann eine Buchhandlung aufsuchen und mir ein paar Bücher querlesen. Oder mir eine Community suchen die spezialisiert ist für die ausgesuchte Sprache und Einsatzgebiet.

Das wäre meine herangehensweise. Ich habe mit Turbo Pascal angefangen Programme zu schreiben und danach mit C/C++ weiter gemacht. Inzwischen programmiere ich quasi nurnoch C auf Mikrocontrollern.


p.s. Assembler habe ich jetzt außen vorgelassen. Das bringt die steilste Lernkurve und die besten Einsichten die Rechnerarchitektur und effiziente Programmierung. Aber die Lernkurve ist natürlich hinderlich wenn man alles selber schreiben muss weil man lange nicht viel sieht .


----------



## VikingGe (6. Juli 2014)

*AW: Programmieren für Anfänger*



> Ich würde zu C++ raten. Wenn dann richtig.


Auch wenn ich die Sprache mag und für fast alles, was ich mache, einsetze, rate ich genau davon immer wieder ab, weil man damit ziemlich schnell auf die Nase fliegt, wenn man nicht aufpasst - passiert auch, wenn man in anderen Sprachen schon Erfahrung gesammelt hat, aber wenn nicht, dann erst recht.

Und Templates sind nun nichts, was ich einem Greenhorn unbedingt zumuten würde. Die sind aber letztenendes das, was C++ ausmacht und auch nicht unbedingt in den tendenziell einsteigerfreundlicheren Sprachen wiederzufinden sind - nein, auch nicht Java mit seinen niedlichen Generics, die sind da meilenweit von entfernt.

Klar, man _muss_ nicht unbedingt Templates schreiben, spätestens in der (ohnehin nicht gerade tollen) Standardbibliothek tauchen sie aber auf. Und die sind so viel zu lernen, da sollte man wenigstens die Sprache drum herum schon einigermaßen beherrschen haben.



> p.s. Assembler habe ich jetzt außen vorgelassen. Das bringt die steilste Lernkurve und die besten Einsichten die Rechnerarchitektur und effiziente Programmierung. Aber die Lernkurve ist natürlich hinderlich wenn man alles selber schreiben muss weil man lange nicht viel sieht.


Und bevor jemand auf die Idee kommt, direkt damit anzufangen: _Erst_ programmieren lernen, _dann_ Assembler lernen  Zumal man dazu sagen sollte, dass man sich schon sehr genau mit der Architektur, für die man programmiert, auseinandersetzen sollte, sonst ist der Code am Ende langsamer als das, was einem der C(++)-Compiler ausspuckt, oder zumindest nicht so effizient wie es sein könnte.

Standalone-Programme würde ich ohnehin nie komplett in ASM schreiben, dann doch eher optimierte Routinen. Die meisten Compiler unterstützen ja irgendeine Art von Inline-Assembly, oder man benutzt gleich AsmJit.


----------



## Salfurium (6. Juli 2014)

*AW: Programmieren für Anfänger*

Ohh ja... In C++ wird man dann doch viel zu leicht dazu verleitet mit den Zeigern zu experimentieren, was dann ziemlich schnell zu Programmabstürzen führt und irgendwann frustrierend ist. Man gewöhnt sich nebenbei auch "schlechte" Programmierstile in C++ an. Wenn man schon C++ lernen möchte sollte man auf jeden Fall darauf achten mit C++11/14 anzufangen.


----------



## DKK007 (13. Juli 2014)

*AW: Programmieren für Anfänger*

Wir hatten damals in der Schule mit Delphi (Pascal IDE) angefangen. Im ersten Semester hatten wir reines C. Jetzt im zweiten Semester haben wir in Softwaretechnologie mit Java und Uml gearbeitet. Wenn du erstmal eine imperative Sprache kannst und dir die Konzepte vertraut sind (Funktionsaufrufe, Schleifen, if-then-else usw.) dann kannst du dich auch gut in eine andere Sprache einlernen. In Programmierung hatten wir mit Haskell gearbeitet, was als funktionale Sprache schon eine schwere Umgewöhnung darstellte.


----------



## crys_ (13. Juli 2014)

*AW: Programmieren für Anfänger*

Ich würde mit Java beginnen, wie schon erwähnt wird das an Schulen/FH/Uni als Einsteigersprache unterrichtet. Vorteil von Java ist, das es recht "unkomplex" ist, da mann sich z.B. um Deallocation nicht so direkt kümmern muss wie unter C/C++, aber trotzdem später dann direkt Objektorientiert prgrammiert werden kann. 
Cooler Nebeneffekt mit Java: Du kannst direkt Android-Apps programmieren


----------

