Frage von Onceutoldme, 103

Ich würde gerne Programmierprachen lernen. Alle Tipps sind Willkommen. Wie fange ich da am besten an und habt ihr Buchtipps?

Antwort
von Chrissi2004, 48

Hallo!

Ich empfehle dir Java, es ist die einfachste und weltweit verbreiteste Programmiersprache, die es derzeit gibt. Als Buchtipp empfehle ich dir, wenn du ein Anfänger bist: "Einführung in Java mit Greenfoot" und später, als Aufbau ist "Schrödinger programmiert Java" sehr empfehlenswert. Ich selbst habe beide Bücher gehabt und bin sehr zufrieden mit dem Inhalt und den Erklärungen.

Falls du noch Fragen dazu hast, ich stehe dir gern zur Verfügung.

Liebe Grüße,

Chrissi2004

Kommentar von Onceutoldme ,

das Buch ist  von 2010, ist das ein Problem ? ich weiß nicht inwiefern sich die Sprachen verändern/weiterentwickeln oder ob die Platformen sich verändern.

Kommentar von androhecker ,

Die Grundlegenden Dinge in Java verändern sich wenig, es werden nur neue Features hinzugefügt. Wenn du mal in so einem Buch lesen willst, das hier ist das bekannteste und auch kostenlos: http://openbook.rheinwerk-verlag.de/javainsel/

Expertenantwort
von guenterhalt, Community-Experte für Linux, 36

die einfachsten Programmiersprachen sind die, die mit denen man bereits ein lauffähiges (wenn auch nur sehr einfaches )Programm schreiben kann.
Häufig machen die Dinge um eine Sprache herum die größten Probleme.
Hat man die gemeistert, kann man auch Kenntnisse über die Sprache selbst Schritt für Schritt erweitern.

Bücher fangen sehr oft mit den Elementen einer Sprache an. So richtig verstehen wird man es aber erst dann, wenn man es auch ausprobieren kann.

So ist es auch wenig sinnvoll, ein Buch verstehen zu wollen, ohne das gelesene auch praktisch  zu vertiefen.

Um die Programmiersprachen C und C++ wird man nicht herumkommen, wenn man einen Beruf auf dem Gebiet der Informatik ergreifen will.
Für einen Anfänger ist so eine Sprache geeignet, haben sie doch einerseits den Charakter einer Hochsprache ( viele Dinge werden im Hintergrund von einem Compiler erledigt, ohne damit "belastet" zu werden) andererseits ist auch ein gewisses Maß an Wissen über die niedrigste Ebene des Ziel-Prozessors notwendig.

Ich programmiere heute fast nur noch in Tcl, einer Scriptsprache.

Die läuft auf jedem Linux-Betriebssystem ( auch auf dem Raspberry-Linux  ) wie auch in einem Windows-Betriebssystem.

Das oben erwähne drum-herum besteht in den drei Zeilen

#!/bin/bash
# \
ecex tclsh "$0" "$@"

Im Gegensatz zu vielen Sprachen mit Variablentypen wie  char , int,  long int ...
kennt Tcl nur einen Type ( und nicht mal dem muss man kennen).

set variable1 1
set variable2 "Hallo Welt"
# hier wurden 2 Variable angelegt und mit Inhalt initialisiert

puts "$varible1 $variable2"
# puts gibt beide Variable auf dem Bildschirm aus

Dein Linux-System ( bei openSuSE gehört Tcl zum Standard) kennt auch eine ganze Menge Beispiel-Programme.
Wenn man zusätzlich auch noch Tk installiert, kann man praktisch sofort auch grafische Elemente Fenster, Button, Boxen ... auf den Bildschirm  zaubern.

Probiere es aus.

Kommentar von Onceutoldme ,

danke für die ausführliche Antwort, aber ich verstehe leider nicht was du mir mit der 2. hälfte mitteilen wolltest :3

Kommentar von guenterhalt ,

meinst du ab:

Ich programmiere heute fast nur noch in Tcl, einer Scriptsprache.

wer noch nicht programmiert hat, der kennt sicher die Problematik der Variablen-Typen nicht. Nur so viel: man muss wissen, ob man ein 8-Bit Zeichen ( A,B,C .... a,b,c ... z ) oder einen 8-Bit Zahlenwert von 0 bis 255 oder von -127 bis +128 oder einen 16-Bit Zahlenwert von  0 bis  65536 ... in so einer Variablen speichern will.
Gleiches gilt für Zeichenketten und viele andere Werte.
Mit Typprüfungen (siehe Kommentar von @androhecker) wird verhindert, dass man z.B. die Zahl 1033 in eine  8-Bit-Variable eintragen will.

Solche Betrachtungen sind in vielen Programmiersprachen notwendig aber lästig. Beim Programmieren in der Sprache Tcl wird man davon entlastet und man kann diese Zeit für den logischen Entwurf der Programmstruktur verwenden.

Mehr als "versuche diese Sprache zu erlernen" wollte ich nicht sagen.

Kommentar von androhecker ,

Die Typüberprüfung in Java und C/C++ macht sogar sehr viel Sinn, die IDEs für die Sprachen sind um Welten ausgereifter und erkennen auch tiefgründigere Fehler.

Kommentar von guenterhalt ,

mit keinem Wort habe ich die Typprüfung angezweifelt. Dort, wo es nur einen Type gibt (wie in Tcl), braucht man auch keine Typprüfung.

Es kann trotz fehlender Typprüfung keinen Überlauf geben, weil die Variablen dynamisch verwaltet werden und immer so groß (reservierter Speicherbereich)  sind, wie gerade erforderlich um Werte darin zu speichern.
So eine Eigenschaft erleichtert in vielen Fällen das Programmieren ungemein.

Kommentar von androhecker ,

Ich weiß, aber das Problem ist dass sowohl Compiler, User als auch IDE meistens mit Typüberprüfung leichter tun, der Compiler kann gleich den Syntax überprüfen, genauso kann der User bei komplexen Programmen nicht aus Versehen einen falschen variablentyp nehmen (zB beim String splitten), denn das wäre gleich ein Syntaxfehler. Zuletzt sieht man im IDE auch bei Methoden welchen Typ sie benötigen, dadurch kann man die meisten Methoden schon komplett erraten, ich kenne vielleicht nur 10% der Methoden der Java SE, aber die meisten kann ich auch benutzen ohne überhaupt zu wissen was sie tun weil sie mit Typüberprüfung, Namensgebung und Returntype schon mehr als Offensichtlich sind, das geht weder bei Python noch bei TCL oder einer anderen Interpreter Sprache ohne Typüberprüfung.

Antwort
von KieranMeow, 34

Schau mal bei codeacademy vorbei. Ist gut zum anfangen finde ich

Kommentar von Onceutoldme ,

habe dort reingesehen, ist der Hammer! Danke für den Großartigen Tipp :)

Kommentar von KieranMeow ,

Kein problem :D

Kommentar von androhecker ,

NICHT Codecademy, das System beruht darauf dass man vorgefertigte Aufgaben löst und sich durchlevelt, die Dinge werden alle nur kurz angesprochen und fallen dann auch wieder weg, danach kann man vieles aber nicht programmieren, früher hätte ich von Seiten wie wcschools abgeraten, die haben sich aber gebessert und sind tausend mal besser als Codecademy.

Kommentar von KieranMeow ,

Find ich nicht. Seite ist toll. Kommt auf das Lernverhalten der person an..

Kommentar von androhecker ,

Die Seite zeigt einem was man mit einer Sprache machen kann, aber das ist kein gutes Tutorial oder Buch mit Anwendungsbeispielen sondern einfache nur ganz Aufgaben die richtig lame sind. Wie schon in etlichen Kritiken zu CodeCademy: Die Seite beinhaltet ein paar nette Einführungen in eine Sprache, aber richtig können wird man die Sprache danach nicht. Eine Sprache zu lernen dauert deutlich länger als ein billiger Kurs der nur wenige Minuten/Stunden geht. Klar kann man manche Sprachen viel schneller lernen als wenn man schon ähnliche kann, aber selbst da ist CodeCademy nicht gut, denn da steht nur ein kleiner Teil.

Antwort
von androhecker, 35

Du kannst viele Sprache, aber niemals alle. Selbst so viele zu können wie thenewboston ist eine echte Herausforderung.

Kommentar von androhecker ,

Sorry, falsch verstanden, ich würde mit Java anfangen, das Buch Java ist auch eine Insel gibts sogar kostenlos bei openbooks Rheinwerk.

Antwort
von grtgrt, 16
Kommentar von grtgrt ,

Wenn es dir lieber sein sollte, mit einem Buch zu beginnen, so lies bitte https://www.gutefrage.net/frage/informatik-java-programmieren-uni-loesung-info--... .

Antwort
von Masterman431, 66

Ich empfehle dir eine objektorientierte Sprache zu erlernen. Am besten c#, weil man da schnell greifbare Ergebnisse hat (während man in Java lange in der Konsole rumgammelt)

Kommentar von Onceutoldme ,

kann man da einfach ein Anfängerbuch bei Amazon kaufen?

Kommentar von Masterman431 ,

Ja, wobei diese oft Ideen der Objektorientierung vorraussetzen und diese auch oft einiges kosten. Mach erst mal ein bisschen was mit ein paar YouTube tutorials. Überleg dir selbst aufgaben und arbeite dran, bis du sie gelöst hast.

Wenn du bemerkst, dass es dir spaß macht, kannst du dir Fachpresse besorgen.

Kommentar von Onceutoldme ,

müssen die videos aktuell sein ? habe eine ausführliche reihe gefunden die ist aber von 2012

Kommentar von Masterman431 ,

nee, das passt schon. Du solltest aber unedingt in der Selben Version der Entwicklungsumgebung arbeiten.

Kommentar von Sturmkap ,

Sollte kein Problem sein. :)'

Kommentar von androhecker ,

C# ist nicht zu empfehlen, mit der Sprache kann man nicht viel Anfangen außer Windows Programme schreiben, für Java gibt es mehr Support, bessere Software und man sitzt nicht auf einer Plattform fest, Java ist für so gut wie alles außer embedded Systems zu gebrauchen.

Kommentar von Masterman431 ,

Java ist selbstverständlich weiter anwendbar, aber nicht zum Einstieg geeignet. Natürlich ist die Sprache gleich schwer, aber die GUI Entwicklung mit AWT und SWING bremst Einsteiger stark aus. Bei c# hat man wie gesagt von Anfang an etwas in der Hand. Ein Programm, dass man wirklich nutzen kann. Bei JAVA verbringt man den Anfang in der dunklen Konsole. Da verliert man schnell den Spaß und das sollte man am Anfang definitiv vermeiden.

Zudem weiß ich nicht, wie du darauf kommst, dass c# nur auf Windows läuft, aber du liegst falsch. Ebenso kann ich mit C# auch fast alles machen. Von Datenbank Anwendungen, Administrationstools bis hin zur Spieleentwicklung steht dir alles offen. Mit Visual Studio hast du eine der Besten entwicklungsumgebungen die du haben kannst, während ich schon Brechreiz bekomme, wenn ich wieder eclipse auf machen muss.

C# ist besser für Einsteiger und wer das Gegenteil behauptet, weiß entweder nicht, was Einsteiger wollen, oder hat noch nie in c# entwickelt.

Kommentar von androhecker ,

1. Hast du überhaupt eine Ahnung was das GUI Tool für Java ist, das nennt sich JavaFX und ist um einiges besser aufgebaut als Swing bzw AWT, den User gleich am Anfang mit einem GUI zu Konfrontieren ist richtig dumm, mit Event Handling etc sollte man gerade NICHT anfangen, man sollte erst die DInge verstehen bevor man sie benutzt.

2. Es gibt gerade zwei implementierungen von C#, Visual C# und Mono wobei letzteres eher eine miese Portierung von Visual C# ist. Deine genannten Beispiele sind auch alle grafische Anwendungen, anscheinend hast du keine Ahnung vom Umfang von Informatik, dazu zählt noch Sockets, WebServer und dazu auch Serverseitige Programmierung, Browserprogrammierung (Applets und mit Java kann man mehr oder weniger schon JavaScript), komplette Server oder auch Plugins. Ich will sehen wie du das in C# umsetzt, die Sprache ist einfach nur für grafische Programme geeignet, mit Java kann man so ziemlich alles machen.

3. Wer Eclipse nutzt ist auch selber schuld, IntelliJ ist eindeutig besser.

4. Einsteiger wollen grafische Programme machen, heraus kommt Leute die intermediate Teile lernen bevor sie die Basics lernen und dadurch werden sie in den meisten Fällen schlechte Programmierer. Mit C# ist man im MS Universum gefangen (nur mal so, MS ist sch****) und hat dadurch auch sehr begrenzte Möglichkeiten, Java wird nahezu überall unterstützt, hat die größte Community eine Umfangreichere Library und deutlich mehr Erweiterungen. Wenn man sich mal eine Zeit hinsetzt und Java richtig lernt schafft man auch schnell grafische Programme, die GUT programmiert sind.

Kommentar von Masterman431 ,

"Sockets, WebServer und dazu auch Serverseitige Programmierung, Browserprogrammierung,
komplette Server oder auch Plugins"

Das sind ja mal die einfachsten anfänger themen der Welt.

Nicht irgendwie einen Taschenrechner, oder ein knopf wo sich Text verändert. Du hast vollkommen recht. Wenn ich entwicklung anfangen würde, hätte ich wirklich lieber mit Sockets und WebServer anfangen sollen. Das macht anfängern richtig hart spaß.

Ich hab mit Java angefangen und es bereut. Hab dann irgendwann nebenbei mit c# angefangen und hatte spaß daran. Wenn es dir nicht passt, dass man mit wenig verständniss etwas user freundliches entwickeln kann, dann ist das so.

Ich sag nicht das c# besser ist, nur das mir persönlich wesentlich mehr spaß gemacht hätte damit anzufangen.

Kommentar von androhecker ,

Sag mal liest du dir nur die Hälfte durch? Das waren Beispiele für den Umfang von Java, weil du gesagt hast dass man mit C# viel machen könne, mit Java kann man ca 20 mal mehr machen...

Und oben war es nicht nur deine Meinung sondern ein allgemeiner Fakt...

Kommentar von Masterman431 ,

Was nix daran ändert, dass es einfacher ist mit c# einzusteigen

Kommentar von androhecker ,

Die miesen Argumente die du genannt hast konnte ich alle mit Leichtigkeit kontern, also wo sind deine guten Argumente? Ich sehe keine dafür dass C# leichter ist als Java...

Keine passende Antwort gefunden?

Fragen Sie die Community