Wie lernt man eine Programmiersprache

Wenn du die Editor/konsolen Variante verwenden möchtest empfehle
ich dir Notepad++ als editor. Um gcc/g++ zu installieren kannst du
entweder auf die MinGW Toolchain zurückgreifen, das wäre der reine
Compiler der dann über die Commandozeile in Windows aufgerufen
wird, oder dir Cygwin installieren - das ist eine Unix Bash unter Win7.
Beide Varianten haben ihre vor und Nachteile ;) ich hab mir damals zum
lernen Ubuntu installiert, da lernt man gleich ein bischen was über
Linux und zumindest der gcc (g++ bin ich mir gerade unsicher) ist
von Haus aus mit bei - als Editor würde ich gedit oder Kate nehmen.

Ach ja ich würde am Anfang mit -Wall kopilieren, das zeigt dir sämtliche
Warnungen an und kann gerade am Anfang hilfreich sein zu verstehen
was da eigentlich passiert, also so:
Code:
gcc  -Wall meinProgramm.c -o einTollerNamefürmeinProgramm

Es gibt noch ne Menge weitere Optionen, aber die sollten erstmal reichen ;)
 
C++ ist viel zu stumpf und trocken um das zu lernen, ich würde hier VBA oder C# empfehlen, das ist einfach zu lernen und es gibt schöne Videos von.
 
Wie wärs denn mit einer aktuellen Programmiersprache, z.B. C#, die auch alle Möglichkeiten einer modernen Programmierung bietet ?

Nutzt dazu am besten das Visual Studio von Microsoft, gibt es für personal use in der Express-Edition for free.
Mit der MSDN und diversen C#-Communities habt ihr Millionen von Beispielen und viele Tutorials zur Verfügung.
Des weiteren könnt ihr damit so ziemlich alles machen, von einfachen Konsolenanwendungen, über Webseiten und Windows-Anwendungen
bis hin zu Services und Plugins für Micrsoft Office. Über die Templates im Studio wird dabei der benötigte Coderahmen bereits vorgeneriert.

Eine gute Entwicklungsumgebung ist hier schon die halbe Miete ...

will er eine Programmiersprache lernen, oder will er eine IDE lernen zu Benutzen?

Gerade VS ist eine GANZ schlechte Wahl am Anfang. Ich hab selbst mal relativ am Anfang mehr oder weniger gezwungen VS genutzt, und es ist scheise. VS lässt vieles zu, was normal nicht geht, und hat auch ansonsten so seine ganz eigenen Eigenheiten. Damit verhunzt du dir aber deinen Stil UND du hast massive Probleme wenn du mal für Linux Code schreiben musst, oder nur eine andere IDE nutzen sollst.

Was Java nich zu einer schlechte Programmiersprache, nur eben zu einer die nicht
ausnahmslos für alle Zwecke geeignet ist. Genausi ist es manchmal übertrieben
C++ zu nehmen, den so performant muss eine bestimmte Anwendung meist nicht
sein, da ist java völlig ausreichend



Die IDE ist im Prinzip egal, ich hab meine ersten richtigen C/C++ Programme
mit gedit (einfache Editor mit Syntax Highlighting) geschrieben und mit gcc/g++
in der Konsolo programmiert. Warum? Weil es am Anfang sch***egal wie der
Kompiler was wegoptmiert und in welcher IDE man besser die Maus umher -
schubsen kann. Es geht einzig und allein darum die Basics einer Programmier-
sprache zu lernen und dafür ist Code::Blocks super. Wenn man dann irgendwann
mal die professionellen Tools von VS braucht (Brauche ich bis heute nicht, von
daher nutze ich Eclipse für C/C++/Java und PHP) kann man imer noch umsteigen.
Die IDE sollte wirklich keine Rolle spielen :what:

So sieht's aus.

Was am Anfang am meisten Sinn macht, ist ein Texteditor mit Syntaxhylightning und eben ein Compiler wie gcc/g++. Da verstehst du dann auch, was du machst,und was du brauchst und was nicht. Gerade VS liefert da VIEL mehr viel mit, wenn man nicht mit einem komplett leeren Dokument anfängt. Auch versteht man bei VS nicht, was das compilieren und linken eigentlich ist, und das man das eine nach dem anderen machen kann und so nicht immer alles compilieren muss und wie das mit den Headerfiles etc ist.

Für den Anfang ist es eigentlich egal welche C Abart es wird(auch Java zähle ich dazu,ist schließlich auch nicht viel mehr als ein Versuch C++ "sicher" zu machen). Die Syntax ist bei allen vergleichbar und nun mal DER Standard(bei all ihren Stärken und schwächen).
Je nach dem was man in Zukunft dann machen will kann man recht leicht auf die dafür geeignete Sprache wechseln.
(Online, Smartphones-> Java; Microcontroller->C;Windows Programme-> C#;Performance Orientiert auf dem PC->C++)

Edit zum Thema IDE: Um sich eine GUI zusammen zu klicken und bei großen Programmen vielleicht noch zum Debuggen ist sowas ja ganz nett, aber programmieren an Sich geht mit einem guten Editor wie Notepad++ und dem entsprechenden Compiler für die gewählte Sprache auch prima.
Seh ich auch so. Wer nicht ohne IDE arbeiten kann, insbesondere bei kleineren Projekten und am Anfang, der hat die Sprache auch nie richtig verstanden.

Es geht mir dabei aber nicht ums optimieren, sondern um die einfachkeit. Wenn man gerade was neues in C++ lernt, will man sofort das ausprobieren.
Sonst müsste mans ich in deinem Fall mit dem Compiler aussernandersetzen und längere Zeit gucken, wie man denn jetzt compiliert. Macht man das in VS klickt man einmal f7 dann hat man fein compiliert und bei f5 startet das programm sofort. Das meine ich. Die Optimierungen sind den Anfängern absolut egal, klar da haste recht. Aber man will sich auf C++ konzentrieren, das brauch mans einfach
Ausprobieren Marke try and error ist aber nicht der richtige Weg. Das kann man ganz ganz ganz am Anfang mal machen, wenn man noch nichts wirklich verstanden hat, wobei das nicht passieren sollte, wenn man mit einem gescheiten tutorial arbeitet.

Du solltest IMMER genau wissen was du machst!
Gewöhn dir das gar nicht erst an, etwas "einfach" mal aus zu probieren. Das klappt bei popeligen Sachen wie dem Hello world noch, das war's aber dann auch. Ich hatte die Angewohnheit, wie wohl jeder irgendwann mal :rolleyes:, auch. Hab's mir aber sehr schnell abgewöhnt, denn bei Programmen die auch mal schnell 20 min+ zum compilieren&linken brauchen, geht try and error nicht mehr. Da ärgert man sich schon über ein Vergessens Semikolon. Da stimmt der Algorithmus in 95% der Fälle San gleich, und den Rest hat man dann nach 1-2 Compilierungen dann auch draußen. Vom Testen des Algorithmus fang ich mal gar nicht erst an. Da bist du schnell bei Tagen und Wochen um das wirklich aus zu testen. Daher solltest du WISSEN was du machst.


C++ ist viel zu stumpf und trocken um das zu lernen, ich würde hier VBA oder C# empfehlen, das ist einfach zu lernen und es gibt schöne Videos von.
Ja ne ist klar..

Die beide würde ich NIEMANDEM empfehlen. VB ist nur ne Skript-Sprache und C# muss ich ja wohl hoffentlich nichts zu sagen.
Das hat vielmehr viele Besonderheiten und Eigenarten...

Wenn man mit was anfangen will, dann mit C/C++ oder Java. Beide haben eine Syntax, die es erlaubt auch SEHR viele andere Sprachen schnell zu lernen, sind sehr weit verbreitet und du kannst praktisch alles mit Ihnen machen.
 
C++ als Einsteigersprache? Ist klar... Für einfache Programme und gerade für den Einstieg ist C# wohl die beste Empfehlung -.-
 
ja, wo ist das Problem?

Ob du jetzt Sprache X oder Y lernst ist ziemlich Banane.

In der Uni sind wir mit C/C++ eingestiegen und haben erst später Java verwendet, wobei sich die Einführung auf ein bis 2 Stunden beschränkt hat. Man kann ja C/C++.

In der Schule haben wir mit HTML angefangen, dann SQL und dann JAVA. Man kann aber ohne Probleme direkt in Java oder C/C++ einsteigen. Man fängt ja nicht gleich mit ooprogrammierung an, sondern mit C/C-Style. Erst später kommen die komplizierteren Konzepte wie Vererbung, virtuelle Klassen, Prototypen, überladen, Referenzen oder Zeiger etc.

Du kannst verdammt viel ohne solche Sachen machen. Vieles ist ja einfach nur dafür da etwas schneller/eleganter zu machen.
 
ich würde hier VBA oder C# empfehlen, das ist einfach zu lernen und es gibt schöne Videos von.
Wer nutzt den bitte noch VBA? Ist der Dreck immernoch nicht ausgestorben? :ugly:
Und Videos, um programmieren zu lernen - brauch ich wohl nichts mehr zu sagen.

@Skysnake: Was hast du gegen C#? Taugt doch was.

C/C++ als Einstiegssprache setzt extrem hohe Hürden (manuelle Speicherverwaltung/Pointer etc), wenn man nicht grade durch die Uni dazu gezwungen wird und keine Riesenambitionen hat, dann ist das der pure Overkill.
Da steigen viele dann auch einfach wieder aus, weil die sich denken - F**K THAT SHIT. Wozu brauch man den Wissen über compilieren, Pointer und sonstiges, wenn man einfach nur mal reinschauen will? Gar nicht, so siehts aus.

Aus dem Grund gibs ja auch die Kindersprachen, damit die Kiddies den Lehrern nicht gegen's Schienbein treten - Programmiersprachen für Kinder.
Hinterher kann man immernoch umsteigen, aber die Grundlagen und ersten Erfolgserlebnisse sollten so einfach wie möglich sein, damit die Motivationskurve nicht wegbricht, wenns dann Streß mit vorkompilierten Headern oder sonstigem Kram gibt, dann hat man auch schnell keinen Bock mehr, vor allem wenns halt nur zum antesten ist.

Hätt ja auch kein Bock, wenn ich n Modellauto bauen will, gleich den 1:1 Maßstab zu nehmen. Kann man am meisten mit machen, aber brauch ich das zum Einstieg? Eher nicht.
 
Naja, wo hast du denn mit manueller Speicherverwaltung und Pointern zwingend zu tun?

Pointer haste bei Arrays, das wird aber überall gleich behandelt, und zum verwenden musst dus nicht verstehen. Genau so siehts mit vielen anderen Bereichen aus. Pointer und Referenzen nimmste ja nur zur Optimierung. Zur Not legste halt alles Mehrfach an, oder kopierst die Daten halt hin und her. Effizient ist was anderes, aber beim lernen raffste das eh noch nicht, aber ist auch kein Problem, da du die Vorzüge/Problemstellungen gar nicht kennst/wahr nimmst.

Genau so siehts auch bei der manuellen Speicherverwaltung aus. Wann muss man das schon mal machen? Richtig fast nie, wenn man 0815 Sachen programmiert. Der Stack passt eigentlich ziemlich lange, und danach kommt der Heap, und erst DANN musst du dich wirklich richtig drum kümmern, aber das ist auch kein Hexenwerk mit new und delete. :ka:

Auf die Probleme stößt du aber im Normalfall nicht. Da musste schon einiges verstanden haben und machen um sinnvoll auf solche Probleme zu stoßen. Naja und wenn du auf Sie triffst, dann reicht normal einmal kurz googeln und du hast das Problem gelöst.

Ich versteh daher wirklich nicht, warum die Leute deswegen son Aufstand machen. Man KANN es ja nutzen, muss es aber im Normalfall nicht. Ok new ja irgendwann schon, aber dann hat man eh ganz andere Probleme :devil:
 
Naja, wo hast du denn mit manueller Speicherverwaltung und Pointern zwingend zu tun?

Pointer haste bei Arrays, das wird aber überall gleich behandelt, und zum verwenden musst dus nicht verstehen. Genau so siehts mit vielen anderen Bereichen aus. Pointer und Referenzen nimmste ja nur zur Optimierung. Zur Not legste halt alles Mehrfach an, oder kopierst die Daten halt hin und her. Effizient ist was anderes, aber beim lernen raffste das eh noch nicht, aber ist auch kein Problem, da du die Vorzüge/Problemstellungen gar nicht kennst/wahr nimmst.

Genau so siehts auch bei der manuellen Speicherverwaltung aus. Wann muss man das schon mal machen? Richtig fast nie, wenn man 0815 Sachen programmiert. Der Stack passt eigentlich ziemlich lange, und danach kommt der Heap, und erst DANN musst du dich wirklich richtig drum kümmern, aber das ist auch kein Hexenwerk mit new und delete. :ka:

Auf die Probleme stößt du aber im Normalfall nicht. Da musste schon einiges verstanden haben und machen um sinnvoll auf solche Probleme zu stoßen. Naja und wenn du auf Sie triffst, dann reicht normal einmal kurz googeln und du hast das Problem gelöst.

Ich versteh daher wirklich nicht, warum die Leute deswegen son Aufstand machen. Man KANN es ja nutzen, muss es aber im Normalfall nicht. Ok new ja irgendwann schon, aber dann hat man eh ganz andere Probleme :devil:

Ich bin bei beiden Themen ziemlich nahe bei dir, vor allem bei der manuellen Speicherverwaltung. Ich arbeite im Embeddedumfeld (teilweise Sicherheitsrelevant) da wird nie ein malloc() drin vor kommen.

Pointer überfordern am Anfang gerne mal, ich habe gerade mal in meinem alten Vorlesungsskript nachgeschaut, Pointer wurden dort erst unmittelbar vor Klassen behandelt. Sprich dann als es so richtig C++ spezifisch wurde. Klar sind die Sachen hilfreich aber mal ehrlich weshalb sollte man jemanden gerade am Anfang hier überfordern wenn man eigentlich fast alles auch so lösen kann. Letztendlich hat man viel mehr davon wenn man sich gründlich in die Basics einarbeitet als wenn man meint man muss gleich in den ersten beiden Tagen alles wissen was möglich ist. Gerade bei C/C++ ist hier nämlich vieles möglich...
 
Da ärgert man sich schon über ein Vergessens Semikolon.

So etwas kann dir z.B. mit Visual Studio 2010 nicht passieren. Dort werden alle Syntax-Fehler sofort gehighlighted. War am anfang etwas gewöhnungsbedürftig aber ist ungeheuer praktisch.
Die Debugging-Tools sind auch exzellent - du kannst bei einem Fehler Funktion für Funktion zurückspringen, um zu erkennen woher er kam.

@TE:

Gibt es bei dir eine Uni in der Nähe, die Informatik im Programm hat? Die veranstalten nämlich meistens Einführungskurse bezüglich Programmierung.
So einen Kurs würde ich dir empfehlen. Sollte in der Regel unproblematisch sein, da auch als Nicht-Student mitzumachen.
 
Bei C kommt man am Anfang problemlos ohne Pointer aus, man kann auch so schon unheimlich viel machen. Außerdem wird er ja sicher nicht gleich mit Embedded C anfangen. :ugly: Und eine Skriptsprache würde ich auch nicht als Einstieg empfehlen, speziell dynamisch/schwache Sprachen sind da tückisch finde ich.

Ich hab jetzt ein Semester PHP hinter mir und bin auf alle Zeiten satt. :fresse: Wobei die Lehrveranstaltung auch durch und durch schei*e war...
 
Ich hatte damals mit einer Scriptsprache begonnen (Lua) und es hat schon was gebracht.
Lua ist zwar alles andere als Mächtig aber für den Einstieg fand ich es garnicht mal so übel :)
 
Ich hatte damals mit einer Scriptsprache begonnen (Lua) und es hat schon was gebracht.
Lua ist zwar alles andere als Mächtig aber für den Einstieg fand ich es garnicht mal so übel :)

Genau desswegen schlug ich VBA vor, ist einfach zu lernen und man bekommt einen Einblick in die Programmierung.
 
Man sollte gar nicht mit C# anfangen, weil man sich damit zu sehr auf eine Plattform einschießt.
Und das ist interessant für ..... Leute, die ...... ja sags mir??
Bestimmt nicht für Programmiereinsteiger, die ausprobieren wollen. Schonmal den Startthread hier durchgelesen? Der will kein Cross-Compiling und ich wette 50€, dass er Windows benutzt.

Gute Syntax, sehr gute IDE und grafische Oberflächen sind auch sehr schnell erstellt - läuft.
 
Dann solltest du aber mal lieber auch mal den Startpost lesen ;)

Er will programmieren lernen, nicht wie mache ich klicki punti Sachen. Nimm ne vernünftige Hochsprache, lern die von der Pike auf, und lass dir etwas Zeit dabei, überfordere dich nicht, übe, übe, übe und zum Schluss erarbeite dir Stück für Stück. Dann haste in absehbarer Zeit die Sache im Griff, kannst nette Programme schreiben UND! vor allem du hast es wirklich verstanden. Der Umstieg auf jede x beliebige andere Sprache ist dann auch kein Problem mehr. Das ähnelt sich ja alles sehr stark.

Ne IDE braucht/nutzt man nur zum produktiven arbeiten, aber NICHT! zum verstehen, und genau darum geht es eben am Anfang. Verstehen was ich da eigentlich mache.

Die schnellen ich klicke mir was zusammen und nutze die Mörder-IDE Sachen bringen einem schnell zu den ersten Hallo-Worlds etc. aber man büßt es am Verständnis, und das hat auf kurze/lange Sicht deutlich mehr Gewicht. Wenn du weißt was du eigentlich machst, dann haste schnell verstanden, wie du einen Algorithmus implementierst, und dann bauste auch nicht so viel *******. Manche Sachen sollte man einfach von Grund auf lernen. Ein Haus bau ich auch von Unten nach Oben und fang nicht in der Mitte an....
 
Dann solltest du aber mal lieber auch mal den Startpost lesen ;)
Er will programmieren lernen, nicht wie mache ich klicki punti Sachen.

Sie sollte einfach sein und Tutorials haben. Ich würde gerne einfache Programme entwickeln
Ich les da "einfache Programme", also schnelle Ergebnisse, wahrscheinlich grafische Oberfläche und einfach zu erstellen.
Viel Spaß mit C und QT:lol:.
 
Einfache Programme kannst du mit C/C++ und Java ohne Probleme schreiben. GUI ist halt immer so ne Sache, für den Anfänger, der Programmieren lernen will ist das aber eh nicht so knalle. Man sollte sich ja erst mal auf das wesentliche Konzentrieren, und das geht am Besten ohne GUI.

Und was hast du gegen QT? Gut, bis man es mal aufgesetzt hat ist es etwas nervig, aber so lange man nicht Multithreaded arbeitet geht QT eigentlich. Ich hab damit auch ein paar Sachen schon gemacht, und so lange man nicht auf Performance aus ist, geht das auch relativ locker von der Hand. GUI ist aber definitiv sehr komplex mit QT oder auch mit OpenGL/GLUT. Muss aber ja auch nicht sein. Einfacher gehts dann mit Java und JUnit. Da verwendet man dann aber gleich wieder ne IDE wie Eclipse.

Ganz nett und so, aber zum Programmieren lernen jetzt nicht wirklich sehr geschickt.

Ich glaub du verstehst den Unterschied zwischen "Ich will Programmieren lernen" und "ich will einfach paar Sachen hin rotzen" nicht. 1. ist produktiv und Zielführend. 2. ist eher Zeit tot schlagen und nicht wirklich produktiv. Erst kommt das Verständnis, dann die Umsetzung.
 
Ich glaub du verstehst den Unterschied zwischen "Ich will Programmieren lernen" und "ich will einfach paar Sachen hin rotzen" nicht. 1. ist produktiv und Zielführend. 2. ist eher Zeit tot schlagen und nicht wirklich produktiv. Erst kommt das Verständnis, dann die Umsetzung.
Klar versteh ich den Unterschied, aber was interessiert jemanden, der ein paar Tools mit grafischer Oberfläche das? Klar ist es besser, mit C/C++ anzufangen und dann auf andere Sprachen umzusteigen, nur werden wohl über 90% davor abbrechen, weils halt einfach unnötig kompliziert ist.
Der Kram ist uralt und es gibt halt deutlich bessere Hochsprachen heutzutage zum einsteigen.

Du überschätzt wohl deutlich die Fähigkeiten von normalen Leuten, bei mir im Studium sind ~40% (ca. Durchfallquote) an Java gescheitert und das war kein Informatikstudium, sondern die extreme "Light"-Version (also einfach als Vorlesung+Klausur, die Informatiker hatten ne komplett andere, deutlich schwerere Klausur). Von 0 anfangen, mit Übungen/Tutorien und grafische Sachen waren nicht klausurrelevant, wir sind bis zu generischen Typen gekommen.
Sah dann so aus - Übung, alle kommen weil es Bonuspunkte gibt, aber alle sitzen da und hocken ihre Zeit ab, niemand kapiert was und ich bin der einzige aus meiner Gruppe, der regelmäßig die Übungen macht und abliefert. Und wir reden hier von Java, wo die Syntax noch halbwegs verständlich ist.
Wenn man C oder C++ auf die Leute losgelassen hätte, hätten noch viel mehr Leute das Fach gewechselt ................ :ugly:.
 
Zurück