Programmiersprache für Anfänger

lionlion

Member
Hallo,

ich möchte Programmieren lernen. Mittlerweile weiß ich, dass es nicht die Programmiersprache für alles gibt, sondern, dass es davon abhängt was man machen möchte.
Gerne würde ich eine Programmiersprache lernen mit der ich Forensik-Programme besser verstehen kann (falls es so etwas gibt) und vor allem Anwendungen, die mir meinen PC-Alltag erleichtern, programmieren kann. Das ist zwar nicht besonders spezifisch, aber so ist das nun einmal.
Ah und ich sollte mich nach oder während ihrem Erlernen - ich vermute, dass man da wie bei allem in der Informatik, auch bei sowas nie ausgelernt hat - nicht dabei schwer tun eine andere Sprache zu lernen. Das heißt das Visual Basic nichts für mich ist. Außerdem sollte sie relativ anfängerfreundlich sein.

Danke im voraus.

Mfg
lion
 
Hi lionlion,

da du im anderen Thread ja schon darauf anspielt mit Kali Linux und dergleichen experimentieren zu wollen wäre Ruby vielleicht nicht schlecht, da das gesamte Metasploit-framework damit geschrieben ist.
Ansonsten würde ich dir generell zu Python empfehlen, vielleicht hilft dir auch dieses Buch. Ich selbst hatte an der Hochschule als erstes Java und fand es furchtbar (konzeptuell bedingt). Im dritten Semester kam damals Python und ich hab mir gewünscht, dass gleich von Anfang an diese Sprache gelehrt worden wäre. Mit Python kannst du auf Linux/BSD generell viel machen und wäre für mich neben Shellskripten die erste Wahl, wenn ich mir ein Tool schreiben würde.

Viel Spaß dabei,
Pascal

EDIT: Generell gilt natürlich, dass man sobald man eine Sprache wirklich beherrscht sich mit den anderen nicht schwer tut. Einen Bruch wirst du erleben, wenn du von den objektorientierten zu den funktionalen umschwenkst, weil dein Hirn gewohnt ist anders zu denken. Nachdem du mit Python firm bist, würde ich dir raten C++/C zu lernen, da die niedrigere Abstraktionsebene dir mehr darüber vermittelt, wie dein System funktioniert und dir das für die Forensik mehr bringt.
 
Die Sprache zum Einstieg gibt es nicht. Auch gibt es nicht die Sprache mit der du anfängst programmieren zu lernen und mit der su sofort brauchbare Programme schreibst.
Viel mehr solltest du in dich gehen und dich fragen ob du eher Low-Level bleiben willst oder doch lieber high-level. Sehr wichtig ist auch, dass du für dich selbst die Frage beantwortet, wie Frustrationsresistent du bist, denn bei vielen Sprachen ist es ein langer, steiniger weg.

Ich selbst habe mit C angefangen. Ist bei C mit schnellen Ergebnissen zu rechnen? Nein. Ist C frustrierend als erste Programmiersprache? Ja. Gleichzeitig lernt man in C jedoch von Anfang an vieles, was man sonst nicht lernen würde. Da wären Zeiger, structs, in ANSI C die Notwendigkeit sich erweiterte Typen wie Listen selbst zu schreiben, etc. Ich behaupte, dass ich dadurch sehr viel über die Funktionsweise von Computern und Programmieren an sich gelernt habe. Dinge, die sich im weiteren Lernprozess sehr positiv auf mein Verständnis der Programmierung ausgewirkt haben. Wirklich gut programmieren habe ich in C jedoch nie gelernt. Das war der nächste Schritt, mit der nächsten Sprache.

Viele aus meinem Bekanntenkreis haben auf ähnliche Weise das Programmieren gelernt. Mit C, Haskell oder gar C++ die harten Basics und das scheitern. Das eigentliche Programmieren dann in einer anderen Sprache.

Ich bezweifle, dass das der eine, richtige Weg ist programmieren zu lernen und doch würde ich dir das erlernen C zur stärkung des Grundverständnis vieler grundlegender Konzepte empfehlen. Wenn ich nochmal von vorne anfangen müsste das zu lernen würde ich aber heute vielleicht zu Ruby als erster Sprache greifen. Die Einstiegshürde ist klein, die Community ist aktiv groß und du kannst mit Ruby von prozeduraler Programmierung über OOP hin zu funktionalen ausdrücken alles machen. Sprich: Du kannst mit einer Sprache sehr einfach verschiedene aspekte der Programmierung erlernen.
 
Hervorragendes Thema für Flamewars, übrigens. Sowas fragt man nicht.

Kurz: ich selbst würde mit C anfangen und dabei aber nicht stehen bleiben. Möchtest Du an einer Uni studieren, dann lerne Java (aber man muss einige Programmierkonzepte vorher dazu verstehen, die nicht ohne sind). Möchtest Du in die Wissenschaft, guck Dir Haskell und andere funktionale Sprachen an.

C = einfach (ohne viel zu lernen), dafür low-level und erscheint schwierig für viele Leute, weil sie aber meistens nicht darüber lesen und lernen wollen
C++/Java = mittelschwer, Voraussetzung "objektorientiertes Denken" (vor allem bei Java Pflicht) und Umgang mit Templates/Generics
Haskell = holprig, aber lupenrein... Voraussetzung "funktionales Denken" und etwas Typentheorie und Erfahrung grundsätzlich mit höheren Sprachkonzepten

Witzig ist, dass die obigen alle Einsteigersprachen sein können und tatsächlich SIND!

Und jetzt die tatsächliche Antwort: lerne KEINE Programmiersprache, sondern mach Dir einen Überblick was es gibt, sammle die Namen der Paradigmen und Konzepte, die dort auftauchen. Bilde Dich, lies viel und DANN sehe Dir mal die Programmiersprachen wieder an. Du fängst dann an zu verstehen, was der Zweck ist und wo Leute nachgedacht haben. Die Entscheidung kann Dir also keiner abnehmen... ganz ernst!
 
Nimm lieber Python statt Ruby.
Python hat einen ordentlichen Comminity-Process und eine saubere Sprachdefinition. Ruby erinnert da eher an PHP.

Außerdem mausert sich Python momentan zur de-facto standard Sprache im wissenschaftlichen Umfeld.

Mit ruby bist du allein mit 1mio RubyOnRails Entwicklern. Das hat auch den Nachteil, dass viele das Programmieren nur für ihre Webseiten machen und so etwas weniger durchblick haben.

Dass metasploit sich für ruby entschieden hat ist seltsam genug.
 
Danke^^

Ich werde mich wohl - wie nakal es mir empfohlen hat - erst einmal genauer informieren und dann eine Programmiersprache aussuchen.

Danke nochmal.

Von mir aus kann der Thread geschlossen werden.
 
Welche Sprache du lernst würde ich von konkreten Zielen abhängig machen die es zu erreichen gilt. Falls du also an Metasploit (was nicht wirklich was mit Forensik zutun hat) arbeiten willst würde ich tatsächlich zu Ruby greifen. Konkrete Ziele sind einfach ein besserer Motivationsfaktor als etwas so abstraktes wie "ich will programmieren lernen".

Ruby ist auch nicht wirklich eine Websprache, es ist nur so, dass Rails unter den Ruby Frameworks das Beste Marketing hat. Wenn man etwas tiefer gräbt, finden sich genug non-Rails Ressourcen.
 
Ich hab das Gefühl außerhalb von Rails und Mac ist Ruby unbedeutet. Bin aber auch ziemlich voreingenommen weil ich intensiv Python nutze.
 
Bin aber auch ziemlich voreingenommen weil ich intensiv Python nutze.

So geht es mir auch, weswegen ich mich bisher zurückgehalten habe ;)
Aber wenn ich eh schonmal schreibe, ich persönlich denke Python und C dürften einen guten Einstieg bieten.
Das eine ist Low-level und schwer, dafür lernt man doch viele Konzepte,
das andere ist relativ einfach gelernt (Im Gegensatz zu Java und C++) und trotzdem High-level.
 
Aber wenn ich eh schonmal schreibe, ich persönlich denke Python und C dürften einen guten Einstieg bieten.

Ich würde auch mit Python für den Anfang empfehlen (einfach zu lernen, schnelle Erfolge, große Community).

Sollte lionlion Gefallen am Programmieren finden, kann er mit dem gewonnenen Erfahrungsschatz besser beurteilen, wo die Reise anschließend hingehen soll.
 
Hallo,

ich möchte Programmieren lernen.
....... mit der ich Forensik-Programme besser verstehen kann (falls es so etwas gibt) und vor allem Anwendungen, die mir meinen PC-Alltag erleichtern, programmieren kann.
Das ist zwar nicht besonders spezifisch, aber so ist das nun einmal.

Hi Lion,

Du hast da eine interessante Anforderung Forensik-Programme? Ich spekulier jetzt nicht weiter.

Hier findest Du eine Übersicht über Programmiersprachen, die es so gibt.

http://www.99-bottles-of-beer.net/
NEWLIB ist schön. Mich hat das am Anfang auf der Mainframe an den Rand der Verzweiflung geführt ;->

Ich selbst hab mal mit Basic auf einem Sinclair ZX81 angefangen. Verdammt lang her.
Dann habe ich C auf einem ATARI ST gelernt um dann im Studium in Fortran 77 zu programmieren.
Erst vor kurzem hat sich mir das objectorientierte Programmieren erschlossen (mit Hilfe von ARDUINO und Processing), C++ von Stroustroup habe ich mal vor 20 Jahren gelesen.

Der Einstieg in C ist deshalb interessant, da die *nix Kernel, nicht nur die, immer noch(!) in C geschrieben sind. Und *BSD oder Linux Dir einen tiefen Einblick in das System geben.
Falls Du Dich denn dafür interessierst.
Ich war lange Jahre stolz darauf auf meinem Linux immer den aktuellen pppd Dämon ans fliegen zu bekommen.

Wenn ich Zeit finde versuche ich mich gerade an SMALLTALK, was ebenfalls sehr interresant ist.

Ich bin allerdings kein Programmierer und benötige eher für ganz spezifischen Probleme Analysetools, die ich am liebsten immer noch in eine shell schreibe, das *nix über mächtige Werkzeuge verfügt.

Noch ein Tipp. Beschäftige Dich mit Regular Expressions und PERL.
 
Damals in den Ardennen, da war man ein BASIC-Loser oder ein Pascal-Held ...

Pascal ist wie Latein, man kann im realen Leben nicht viel damit anfangen, aber man lernt eine töfte Grammatik.
 
Da fühl ich mich alt wenn ich auf meine Programmierhistorie zurückschaue: Batch->Pascal->C->Delphi->Java->Python. Die Ausflüge in C++ und Basic Dialekten hab ich erfolgreich verdrängt.
 
Was willst du uns mit dieser unpassenden Anspielung mitteilen?

Zum einen ist es eine Erinnerung an auschweifende GOTO-Orgien und zum anderen hilft es meiner Meinung nach, wenn man Sprachen lernen möchte, dies mit einer zu machen, die sich dafür bewährt hat.

Geht es Dir mit dieser Auskunft besser?
 
Ihr verwirrt doch die Leute nur mit dem alten Cruft :)

Folgende Programmiersprachen sollte man sich mal einverleibt haben:

  • Java
  • Python
  • Prolog
  • Ein Lisp/Scheme
  • Haskell (oder zur not auch SML bzw. Ocaml)
  • Assembler
Wo man anfängt ist die Frage. Ich empfehle da immer Python, aber lisp ist so schön einfach, das hat man schnell einen Überblick.

C kann ich generell nicht empfehlen, es ist einfach schund, nichtmal ne Sprache mehr ein riesen Macro Assembler mit undefinierter Semantik an allen Ecken.
Ich versteh auch nicht warum das immer mit low-level assoziiert wird, C ist relativ neu und eher eine schlechte Umsetzung des kleinsten gemeinsamen Nenners der Stand der Technik aus der Zeit. "Aaaabber aber Gnome !!1!" -- Ja genau. Einfach frustrierend.
 
C/C++ ist wie Rasieren mit einem richtigen Messer. Beim ersten mal schneidet man sich auf jeden Fall und es ist nicht für Jeden das richtige. Aber man kann damit die besten Rasuren hinbekommen.
 
Ich werfe noch mal D (http://www.dlang.org) ins Rennen. Die Standardbibliothek braucht noch ein wenig Liebe, aber der Sprachkern ist inzwischen ausgereift. Sauberer und gut strukturierter Syntax, relativ einfach zu lernen, aber zu nativem Code übersetzend.
 
Nach einiger Zeit guckt man auf BASIC sicherlich herab, aber Ihr solltet nicht über eine Sprache herziehen, die für Anfänger gedacht ist und keinen Anspruch auf Professionalität erhebt.

Das hört sich so an, als ob sich Lego-Kinder, die schon 3 Jahre alt sind über Lego-Duplo totlachen, dass es total sinnlos sei.

Achso, noch ein Edit:

Obligatory "Shoot in foot" comparison: http://www.math.psu.edu/tseng/program1.html
 
Viel wichtiger als die Programmiersprache ist doch die eigentliche Aufgabe das Problem zu strukturieren und diese in Funktionen/Code umzusetzen.
 
Zurück
Oben