Programmieren lernen

Abend,
Ich möchte gern das Programmieren lernen. Ich weis leider nicht wo ich anfangen soll. Was ist sinnvoll und gibt es irgendwo passende Tuturials?
Danke für alle Antworten im voraus.
MFG Smooke
 
Nein, das hast du falsch verstanden. Also das ganze noch mal...

1. Die beste Sprache gibt es nicht. Jeder hat andere Präferenzen.
2. Welche Sprache die richtige ist, hängt von verschiedenen Faktoren ab. Die wichtigsten: Was willst du programmieren? Welches Betriebssystem wird verwendet? Wie gut ist die verfügbare Doku?
3. Bitte benutze die Boardsuche.
 
enkore ist in letzter Zeit wohl auf Noobjagd?

@Topic: Wie Bitmuncher schon sagte, die beste Sprache gibt es nicht, genau wie es kein bestes Werkzeug gibt. Wenn du einen Nagel einschlagen willst du ich gebe dir eine Säge, nutzt dir das nichts. Manche Sprachen sehen auch so aus:
6a0120a85dcdae970b017742d249d5970d-800wi

Was du suchst, ist eine Sprache, die grundlegende Konzepte vermittelt. Dafür wurde Delphi ursprünglich konstruiert, allerdings auf Kosten der Benutzbarkeit. enkores Vorschlag Python zum Anfang zu lernen ist insofern richtig, als dass die Sprache sauber ist, zu gutem Stil erzieht und extrem Featurreich ist, sodass man schnell zu Ergebnissen kommt. Nachteil: Man verpasst Grundlagen wie Speicherverwaltung u.Ä.. Eine maschinennähere Sprache, wie C++ zwingt dazu viele Feinheiten zu erlernen, wodurch man in der Lernphase nur Kleinigkeiten zu Stande bringen wird (z.B. kann man sich grafische Oberflächen schon mal abschminken.). Also kommt es drauf an wie du lernen willst.
 
Nachteil: Man verpasst Grundlagen wie Speicherverwaltung u.Ä.. Eine maschinennähere Sprache, wie C++ zwingt dazu viele Feinheiten zu erlernen, wodurch man in der Lernphase nur Kleinigkeiten zu Stande bringen wird (z.B. kann man sich grafische Oberflächen schon mal abschminken.). Also kommt es drauf an wie du lernen willst.

Zum einen liegst du da sicherlich richtig, dass man bestimmte Feinheiten erlernen sollte (besonders in Sachen Speicherverwaltung). Aber es muss ja nicht immer die C-Keule geschwungen werden. Das ist sicherlich nach wie vor wichtig, wenn man auf Computern programmieren möchte, für die es die entsprechenden Laufzeitumgebungen nicht gibt, aber als Anfänger sollten die wenigsten daran Interesse haben.
 
aber als Anfänger sollten die wenigsten daran Interesse haben
Eben nicht! Was soll man mit Programmierern anfangen, die nicht wirklich verstehen, was die realen Auswirkungen ihrer Programme auf der zugrunde liegenden Maschine sind? Das führt (metaphorisch) zu einer Situation, wie in Amerika: Die beste Diebstahlsicherung für ein Auto ist eine manuelle Schaltung, weil die keiner beherrscht.
 
Eben nicht! Was soll man mit Programmierern anfangen, die nicht wirklich verstehen, was die realen Auswirkungen ihrer Programme auf der zugrunde liegenden Maschine sind? Das führt (metaphorisch) zu einer Situation, wie in Amerika: Die beste Diebstahlsicherung für ein Auto ist eine manuelle Schaltung, weil die keiner beherrscht.

Ich sage ja nicht, dass man es nie lernen soll. Nur eben nicht direkt als Einstieg. Wenn ich mir überlege, wie viele Leute sich dadurch vergraulen lassen, dass sie als Einstieg C lernen müssen... ich habe das privat ganz schnell sein lassen zugunsten von anderen Sprachen und mich dann später erst damit beschäftigt. Das ist mMn sinnvoller, als die Motivation durch (für Anfänger) zu komplizierte Konstruke direkt zu zerschlagen.

Und es mag ja ganz schön sein, wenn man weiß, wie es hinter den Kulissen aussieht. Im ersten Moment hat der Hobbyprogrammierer davon aber keinen besonderen Nutzen, da er genauso gut oder in manchen Fällen einfach besser zu Sprachen greifen kann, die ihm die Arbeit abnehmen.
 
Eben nicht! Was soll man mit Programmierern anfangen, die nicht wirklich verstehen, was die realen Auswirkungen ihrer Programme auf der zugrunde liegenden Maschine sind? Das führt (metaphorisch) zu einer Situation, wie in Amerika: Die beste Diebstahlsicherung für ein Auto ist eine manuelle Schaltung, weil die keiner beherrscht.

Es MUSS heute keiner mehr wissen. Die stetige Abstrahierung der Sprachen hat eben auch bewirkt, dass man als Programmierer einen anderen Fokus entwickeln kann. Die Sprachen mit ihren Frameworks sind "leicht" geworden und ich kann mich zB bei c#, wenn ich die richtige IDE habe, voll und ganz auf die Aufgabe konzentrieren, die ich lösen will - völlig losgelöst von Registern, Speicheradressen, pointern usw. usw. Tatsächlich macht sich diese Bewegung schon lange sehr deutlich und hat die Softwareentwicklung verändert.

Böse formuliert könnte man sagen dass immer weniger Wissen notwendig ist um Software zu entwickeln, was dafür sorgt, dass ich lukrativ Software entwickeln kann und die Lohnkosten sinken, weil ich eben nicht mehr die nerds brauche, wie vor 15 Jahren. Klingt fies, ist aber so, besonders im Online und Desktop Bereich.

Jedenfalls sind die Zeiten vorbei, wo ich erstmal nen Stevens lesen MUSSTE um Sockets zu programmieren oder man sich um big und little Enten kümmern MUSSTE.

Der Webstuhl-Effekt .. wir sind Alteisen :D

Aber hey, ich finds geil!
 
Böse formuliert könnte man sagen dass immer weniger Wissen notwendig ist um Software zu entwickeln, was dafür sorgt, dass ich lukrativ Software entwickeln kann und die Lohnkosten sinken, weil ich eben nicht mehr die nerds brauche, wie vor 15 Jahren. Klingt fies, ist aber so, besonders im Online und Desktop Bereich

Ich sehe das etwas anders. Es ist zwar richtig, dass die höheren Programmiersprachen einem vieles abnehmen, dafür kommt aber viel Neues hinzu.
Es gibt viel mehr Geräte-Klassen, viel mehr Betriebssysteme, viele Netzwerktechnologien, viel mehr verschiedene Datenbank-Systeme etc.
Man braucht zwar nicht mehr so viel Wissen, welches ganz auf die tiefsten Ebenen geht, dafür muss das Wissen immer mehr in die Breite gehen.
Als ich für ein paar Wochen arbeitssuchend war, war ich bei der Agentur für Arbeit. Dort wollte mein Berater zusammen mit mir ein Skill-Profil erstellen. Dafür haben die in deren Software nach Berufen gestaltete Vorlagen. Bei Software-Entwicklern (oder IT-Menschen allgemein, ich weiß es nicht), gab es zig Seiten, und er schickte mich nach Hause zum Ausfüllen, weil er pro Arbeitssuchenden nur 1 Stunde hat.
 
Mag sein, ich wollte nur darauf hinweisen, dass es eine Illusion ist, dass heute alles einfacher ist. Die Schwierigkeiten liegen nur wo anders als früher.
 
@Gambajo
Ich sehe das etwas anders. Es ist zwar richtig, dass die höheren Programmiersprachen einem vieles abnehmen, dafür kommt aber viel Neues hinzu.
Es gibt viel mehr Geräte-Klassen, viel mehr Betriebssysteme, viele Netzwerktechnologien, viel mehr verschiedene Datenbank-Systeme etc.

Heute wird im Mainstream auf weniger Systemen entwickelt als noch vor 15 Jahren, wo wir weitaus mehr verschiedene Systeme "in the wild" aktiv hatten. Alleine die ganzen Unix Derivate die ueberall liefen. Heutzutage findet man meistens Linux oder Windows und manchmal FreeBSD und SunOS. Selbst die mobilen Geräte haben die Sprachen der vorigen Systeme adaptiert. Auch in der Industrie ist die Vielfalt der aktiven Systeme geschrumpft.

Ich habe vor Jahren C und Perl gelernt und musste vor einigen Wochen mal was fuer Windows programmieren. Also ein bischen MS software installiert und mit c# angefangen. Innerhalb weniger Tage konnte ich die recht simple Desktop Applikation entwickeln ohne die Sprache zu kennen.

Haette ich das gleiche "damals" in Perl oder gar (visual)C schreiben muessen, haette ich da wochen dran gesessen, weil es einfach nötig gewesen waere mehr zu lernen. Die IDE und die darin umgesetzten Sprachkonzepte sind heutzutage viel viel einfacher.

Was die Netzwerktechnologie angeht ist es sogar viel einfacher: Ich erzeuge ein Objekt, benutze es, wie es mit die IDE fast schon vorsagt und kann zb in einer halben Stunde einen simplen FTP client zusammenbauen. Ich muss von den Eigenschaften der einzelnen Protokolle rein gar nichts mehr wissen, geschweige denn deep stuff wie socket optionen oder header zusammenbauen. usw usf.
 
Vor geraumer Zeit, zu den Anfängen von java.swing habe ich es noch gelernt die Oberfläche händisch zu programmieren.

Sprich jedes Element musste alles im einzelnen zugewiesen bekommen.

Hier auf Arbeit hatte ich dann mal einen Programmierer bezügliche des LayoutManagers für seinen BUG befragen wollen. Zu meinem Bedauern bekam ich aber nur weit aufgerissene Glotzen zu sehen mit einem großen Fragezeichen darin.

Ich denke das die heutigen Tools/Progammierungen, wie Chromatin es bereits erwähnt, einen fast alles abnehmen und der Programmierer nicht mehr alles im Detail wissen muss.
Ohne Internet könnten 99% aller Coder einpacken und sich arbeitslos melden.
Kann denn jeder heutzutage noch mal ebend aus dem Kopf eine Datenbankverbindung, ohne Copy & Paste herstellen mit einem kleinen insert und update. So rein aus dem Kopf ? Egal in welcher Sprache!
Ich würde die Frage mit nein beantworten ...
Anderes Beispiel ist ... in .NET gibt es das Tree Objekt. Kann so etwas noch jeder selber programmieren eine rekursion selber zu durchlaufen ...
 
Heute wird im Mainstream auf weniger Systemen entwickelt als noch vor 15 Jahren, wo wir weitaus mehr verschiedene Systeme "in the wild" aktiv hatten. Alleine die ganzen Unix Derivate die ueberall liefen. Heutzutage findet man meistens Linux oder Windows und manchmal FreeBSD und SunOS. Selbst die mobilen Geräte haben die Sprachen der vorigen Systeme adaptiert. Auch in der Industrie ist die Vielfalt der aktiven Systeme geschrumpft.

Mit was hat man den so auf den Unix Derivaten programmiert?
Damals gab es eine Hand voll sprachen, die sich semantisch die fast alle nach dem gleichen Paradigmen funktionierten. Relativ einfach gestrickte Sprachen mit wenigen Sprach-Elementen (im Vergleich zu heute).

Die Unix Derivate machten früher nicht so den Wahnsinnsunterschied. Konnte man C, hat man sich (fast) überall durchschlagen. Heute gibt es viele komplexe Embedded-Systeme, Windows, Mac, Linux, Unix, BSD, iOS, Android, WP...
Man programmiert für Apache, Tomcat, IIS...
Man programmiert Desktop-, Web, Mobile-, ...

Man sieht es doch an den Fragen hier. Ein Anfänger ist schon von der Anzahl der Sprachen, Einsatzzwecke, IDEs, Tools, Frameworks, Infrastrukturen, ... so erschlagen, dass er nicht weiß, wo er anfangen soll.

Ich habe vor Jahren C und Perl gelernt und musste vor einigen Wochen mal was fuer Windows programmieren. Also ein bischen MS software installiert und mit c# angefangen. Innerhalb weniger Tage konnte ich die recht simple Desktop Applikation entwickeln ohne die Sprache zu kennen.

Ah, ich sehe, wir sprechen von unterschiedlichen Dingen. Für mich ist programmieren können nicht gleich "ich klicke mir eine Desktop-Anwendung zusammen".

Was die Netzwerktechnologie angeht ist es sogar viel einfacher: Ich erzeuge ein Objekt, benutze es, wie es mit die IDE fast schon vorsagt und kann zb in einer halben Stunde einen simplen FTP client zusammenbauen. Ich muss von den Eigenschaften der einzelnen Protokolle rein gar nichts mehr wissen, geschweige denn deep stuff wie socket optionen oder header zusammenbauen. usw usf.

Auch hier sprechen wir von verschiedenen Dingen. Das ist nämlich der Grund, warum man heutzutage jeden Tag zu hören bekommt, dass Hacker wieder irgendein System geknackt haben.
Programmiert man heutzutage fürs Netz/Internet, muss man sich mit vielen verschiedenen Protokollen auseinander setzen, Sicherheitsmechanismen, Verschlüsselung, WebServices, REST, digitalen Signaturen, Java, PHP, HTML, AJAX, JavaScript, jQuery, Hibernate, Three Tier, XML, SOA, verteilte Anwendungen, Servlets, ASP...

Zugegeben, das sind fast alles Dinge, die man nicht zu Anfang macht. Aber das bedeutet, dass wenn man eine wirklich brauchbare Anwendung schreiben kann, man zwar nicht in die Tiefe, aber in die Breite lernen muss.
Da reicht es nicht Variablen, Schleifen und ein wenig OOP zu kennen.
 
Die Unix Derivate machten früher nicht so den Wahnsinnsunterschied. Konnte man C, hat man sich (fast) überall durchschlagen. Heute gibt es viele komplexe Embedded-Systeme, Windows, Mac, Linux, Unix, BSD, iOS, Android, WP...

Ich habe einige Jahre Softwareprojekte aus der Industrie gesehen und es gab eine Vielzahl von eingesetzten Systemen sowie Sprachen, wo selbst die unterschidelichen Dialekte nicht wirklich kompatibel waren. Von den verschiedenen BUS Systemen mal ganz abgesehen.
Heute habe ich profibus, ethernet oder tcp/ip und bei Neuentwicklungen komplexerer Systeme embedded Windows Zeugs oder Linux.

Ah, ich sehe, wir sprechen von unterschiedlichen Dingen. Für mich ist programmieren können nicht gleich "ich klicke mir eine Desktop-Anwendung zusammen".

Das sind ja auch nach meiner Meinung verschiedene Dinge - und doch wieder nicht. Früher führte der Weg zu einer Softwareentwicklung durch die Studie der Sprache: Konnte ich keine Sprache, konnte ich auch nichts programmieren, auch wenn meine theoretische Lösung oder Idee sehr gut war.

Heute ist man erlöst von der Pein, die einem die Sprache auferlegt hat. Wer eine Idee hat, kann sie mit sehr viel weniger Wissen um das Werkzeug umsetzen, als es vor 10 Jahren möglich war.


Man sieht es doch an den Fragen hier. Ein Anfänger ist schon von der Anzahl der Sprachen, Einsatzzwecke, IDEs, Tools, Frameworks, Infrastrukturen, ... so erschlagen, dass er nicht weiß, wo er anfangen soll.
Die Wahl einer Programmiersprache ist nicht komplizierter als der Kauf eines Neuwagens. Bei einem Neuwagen kennen wir allerdings die für uns wichtigen Parameter. Bei Neulingen im Netz oder am Computer ist es schlichtweg die Unkenntnis der wenigen Parameter die man braucht um sich zu entscheiden.
Dazu kommt die steigende Unfähigkeit "wegzuhören" und sich mal auf eine Sache zu konzentrieren - nämlich konsequent das ausgewählte zu erlernen.


Programmiert man heutzutage fürs Netz/Internet, muss man sich mit vielen verschiedenen Protokollen auseinander setzen, Sicherheitsmechanismen, Verschlüsselung, WebServices, REST, digitalen Signaturen, Java, PHP, HTML, AJAX, JavaScript, jQuery, Hibernate, Three Tier, XML, SOA, verteilte Anwendungen, Servlets, ASP...

Da würfelst Du aber ganz schoen was zusammen ;)


Es nervt die Programmierer und Nerds, aber dieses Handwerk unterliegt den gleichen Entwicklungen wie jedes andere auch. Und jede Neuentwicklung und weitere Abstrahierung macht ihre Erfinder sozusagen überflüssig. Wenn man halt auf Technik setzt muss man damit zurechtkommen, dass die nächstere Generation "bessere" Arbeit als die vorige, mit halb so viel Wissen.

So what?
 
Zurück
Oben