Programmieren erlernen

08/07/2015 03:23 Cypros#1
Hallo erstmal,

mein Name ist Cypros und ich gehe momentan in die 12 Klasse,
da ich nach Abschluss meiner Schule in die Richtung
der Informationstechnik gehe würde ich mich gerne
dafür vorbereiten beziehungsweise soviel Wissen wie möglich erarbeiten.

[Only registered and activated users can see links. Click Here To Register...]
Nun habe ich einige Fragen an euch und hoffe, dass ihr sie mir
beantworten könnt.

1.) Wie fange ich an?
2.) Welche Programme benötige ich?
3.) Welche Programmier Sprache sollte ich erlernen?
4.) Ist es effektiver in Richtung Hardware oder Software zu gehen?
5.) Finde ich alle Informationen im Internet oder doch eher im Buch?

[Only registered and activated users can see links. Click Here To Register...]
Ich hoffe ihr könnt mir weiterhelfen, wäre euch sehr dankbar!


Mit freundlichen Grüßen,
Cypros
08/07/2015 05:16 Mikesch01#2
Hallo.

Die Informatik ist ein großes Gebiet und hier gibt es auch kein "Allheilmittel" für alles. Es gibt hier kein "das ist am effektivsten für alles".

Es kommt immer ganz darauf an, in welche Richtung man gehen möchte und was einen interessiert. Ich glaube das wurde hier aber auch schon einige Male durchgekaut.

Benötigen wirst du eine IDE mit Syntax-Highlighting (hier kommt es darauf an, welche Programmiersprache man verwenden will, da die IDE's sich unterscheiden) um deinen Code zu schreiben.

Die Programmiersprache entscheidet sich darüber, was man vor hat. Es gibt bestimmte Programmiersprachen, die sich für einige Aufgaben besser eignen als Andere.

[Only registered and activated users can see links. Click Here To Register...]

Informationen findet man heutzutage so gut wie überall. Sowie ich Netz als auch im Buch gibt es meist gute Informationen.
08/07/2015 14:48 tayfe#3
Wer nach Abschluss seiner Schule in Richtung IT gehen möchte, der sollte bitte auch eine Suchmaschine benutzen können wie z.B. Google. Das wäre dann schon Mal Schritt 1!

Welche Programme du benötigst hängt ganz davon ab, was du machen willst.

Wie Mikesch01 schon geschrieben hast, benötigst du für viele Sprachen eine IDE, Syntax-Highlighting kann als Standard angesehen werden und ich eigentlich immer vorhanden.
Es gibt auch Sprachen, die keine spezielle IDE brauchen und die somit z.B. im Editor geschrieben werden können. Doch davon ist in jeglicher Hinsicht abzuraten!

Für viele Vorhaben kann das schon reichen. Das hängt halt wie gesamt ganz davon ab, was du willst. Doch es gibt für unterschiedliche Bereiche noch sinnvolle, weitere Programme.
In der Webentwicklung z.B. ist ein Grafikprogramm äußerst sinnvoll wie GIMP oder Photoshop. Wenn du im Zuge der Webentwicklung auch in die Datenbanken-Programmierung einsteigen willst, können lokale Datenbanken äußerst sinnvoll sein.
Wenn du aber z.B. in Richtung 3D-Spieleprogrammierung gehen willst, dann wirst du um ein Programm wie Maya, Cinema4D oder 3DsMax nicht herum kommen zur Erstellung der Objekte, Landschaften, Items und Charaktere.

Die Wahl der Programmiersprache ist ganz klar abhängig von deinem Vorhaben, dafür findest du aber auch tausende Übersichten im Internet.

Damit sollte es erstmal reichen, denn: JA, du kannst alles im Internet finden! Allerdings sollte dir klar sein, dass im Internet jeder ein Tutorial oder so schreiben kann, auch jemand, der kaum Ahnung hat. Deswegen sind Bücher meiner Meinung nach ein sicherer Einstieg, den diese wurden von Leuten mit Ahnung geschrieben und haben auch ein gewissen Talent, Wissen zu vermitteln, damit verdienen die Autoren ihre Brötchen.
Im Internet hingegen wirst du eher fündig, wenn du Anleitungen oder andere Hilfestellungen zu ganz speziellen Problemen suchst. Aber auch hier sind Google oder auch YouTube sehr hilfreich!
08/07/2015 16:34 th0rex#4
Quote:
Originally Posted by tayfe View Post
Wie Mikesch01 schon geschrieben hast, benötigst du für viele Sprachen eine IDE, Syntax-Highlighting kann als Standard angesehen werden und ich eigentlich immer vorhanden.
Es gibt auch Sprachen, die keine spezielle IDE brauchen und die somit z.B. im Editor geschrieben werden können. Doch davon ist in jeglicher Hinsicht abzuraten!
Für welche Sprachen brauche ich denn unbedingt eine IDE ? Und warum ist von einem Editor abzuraten ? Gibt genug Leute, die emacs/vim oder SublimeText/Atom gut finden und täglich nutzen.
08/07/2015 17:03 Cypros#5
Hallo,

danke für die Ideen Vorschläge und das mit dem Internet war mir
natürlich bewusst, dennoch frage ich User von Epvp mit denen
ich interagieren kann und Diskussionen führen kann.

Kommen wir zudem wofür ich mich nun entschieden habe.
Ich würde gerne in die Richtung eines Systemlücken Schließers
gehen wenn man das so sagen darf. Jemand der Systemlücken aufdeckt
und diese schließt also in Richtung der Datenbank Auswertung.
Kann mir dazu jemand ein Buch empfehlen oder andere Tipps geben?


Mit freundlichen grüßen,
Cypros
08/07/2015 20:55 YatoDev#6
bis dahin ist noch ein langer weg und du musst sowieso bei 0 anfangen.
Also warum nicht einen der Sticky Threads anschauen und selbst das auswählen was sich für dich am besten anhört?
08/08/2015 03:13 warfley#7
Nun zunächst einmal solltest du Programmieren lernen und den Gedanken mit IT Sicherheit nach hinten stellen für ein paar Jahre. Zum programmieren lernen kannst du Prinzipiell jede Programmiersprache nehmen, ich denke es ist für dich und deine Interessen sinnvoller eine Native Sprache zu lernen, da du so mit dem System viel näher in Kontakt kommst (als z.B. bei .Net wo eine Virtuelle Maschine dazwischen hängt) und du auch so die Eigenschaften der Systeme selbst lernst.

Ada zum Beispiel ist eine Programmiersprache vom US Verteidigungsministerium unterstützt zur Entwicklung sicherheitskritischer Anwendungen. Der Ada Compiler ist teil der GCC (GNU Compiler Collection) und somit auch frei zugänglich. (Wobei sicherheitskritisch eher in den Bereich Fehleranfälligkeit fällt).
Du kannst aber natürlich auch mit jeder anderen Sprach anfangen. Andere verbreitete (native) Sprachen sind C, C++, Objective C (eher nur Mac OS, auch wenn es Cross verfügbar ist), Pascal, Oberon, Fortran, Assembler (keine Hochsprache), Smalltalk und viele Weitere, wobei man die meißten Programmiersprachen eigentlich in: C-Artige Sprachen, Wirthsche Sprachen, Basic artige Sprachen und der Rest (Sprachen die größtenteils Unikat sind so wie z.B. Smalltalk) unterteilen kann.

Du kannst natürlich auch problemlos nicht Native Sprachen lernen wie z.B. Python, Ruby, Perl, Java, C#, VB(.Net), etc. An den Konzepten der Programmierung ändert sich nicht viel, nur wer halt in C für Unix entwickelt lernt durch das C lernen allein schon eine menge über z.B. das Dateisystem oder Socket System, etc von Unix, womit z.B. ein Java Entwickler eher selten in Berührung kommt, da dieses auf viel höherer ebene Abstrahiert wird

Neben diesen Imperativen Programmiersprachen gibt es auch noch Funktionale und Logische Programmiersprachen, wie Haskell oder Prolog, aber ich denke diese fallen eher weniger in deinen Interessensbereich.

Im Gegensatz zu dem was tayfe geschrieben hast benötigst du für keine (mir bekannte) Programmiersprache eine IDE. Eine IDE (Integrated Development Environment) ist ein Programm, eine Art Toolsammlung zur Anwendungsentwicklung, dazu gehören meißt:
1. Ein Editor mit so fancy Funktionen wie Syntaxhighlight, Code Vervollständigung, Code Jumps, sowie das Handeln mehrere Quellcode Dateien
2. Ein Interface für den Compiler, die IDE übernimmt die Funktion einer Grafischen Oberflache für den Compiler mit der einfach Compilereinstellungen gesetzt werden können und die Compilerausgaben aufbereitet und Dargestellt werden.
3. Ein Interface für einen Debugger, zur simplen Steuerung des Debuggers und dem Darstellen des Codes wärend dem Debuggen
4. Ein Projektsystem mit dem man verschiedene Dateien, Compiler-und Debuggereinstellungen in Projekten zusammen gespeichert werden können.

Dazu können IDE's noch über tolle Tools wie SVN oder Git Unterstützung, Tools zur Teamarbeit, GUI Builder, etc. verfügen

Und damit sind IDE's zum Produktiven Entwickeln ein nahezu unverzichtbares Mittel.
Aber ich bin der Meinung dass man zumindest am Anfang so etwas gar nicht benötigt, eher sogar dass eine IDE die viele Fehler präventiv, durch z.B. die Code Vervollständigung, behebt dem lernen der Syntaktischen Eigenheiten einer Sprache entgegen wirkt (wie soll man wissen wie ein Ausdruck Syntaktisch korrekt ist wenn man noch nie ihn selbst geschrieben hat weil es IDE immer für einen macht Übung macht den Meister) und da empfehle ich eher Simplere Editoren mit "nur" Syntaxhighlight und wenn nur eine ziemlich beschränkte Code Vervollständigung. Unter Windows nutze ich gerne Notepad++ und unter Unix am liebsten VIM (VI Improved) auch wenn dieser ein wenig einarbeitungszeit voraussetzt.

Was du aber auf jeden Fall benötigst ist:
1. eine PC am besten mit Administrativen rechten.
2. Einen beliebigen Texteditor nach Wahl, je nach Compiler und Sprache musst du in der Lage sein plaintext mit bestimmten Encoding(ASCII, UTF8, UTF16) und Zeilenumbruchtüpen (CR LF, LF, CR) abspeichern zu können (Ein RTF Editor wie Apples TextEdit kommt also nicht infrage)
3. einen Compiler oder Interpreter
Optional: Einen Debugger (z.B. den GDB)

Als Anfang in die Programmierung eignet sich immer ein gutes Buch. Je nach Programmiersprache die du wählst solltest du dich dann mal schlau machen was es in diesem Bereich für gute Bücher gibt.


Natürlich solltest du auch wenn du in den Bereich Sicherheit gehen willst dich mit den Verschiedenen Systemen auseinander setzen, ein Windows server mit Microsoft Software hat natürlich andere Kritische Punkte als ein *nix server. Gute *nix Systeme (mit denen ich Erfahrung hatte) sind Linux Systeme und Mac OSX. Informationen über Linux Systeme bekommst du gut auf [Only registered and activated users can see links. Click Here To Register...]. Ich selbst verwende an Linux Open Suse mit KDE in einer VM, und muss sagen dass ich damit recht zu frieden bin (auch wenn ich es nie aus der VM lassen würde, dafür hat linux mir schon oft genug das System geschrottet).

Natürlich können sich deine Präferenzen auch jederzeit ändern, z.B. du weckst plötzlich ein Interesse an Eingebetteten Systemen, dass lässt sich noch nicht voraussagen, aber allgemein programmieren zu lernen ist denke ich ein guter Einstieg in nahezu jeden Bereich der Informatik.


Am Ende möchte ich noch darauf hinweisen für diesen Sicherheitskritischen Bereich reicht nicht nur Programmierung, man muss auch ein wenig Kreativ und Experimentell sein, wer rein Linear und in Schemata an die Sache ran geht wird wohl eher weniger erfolgreich sein, da diese Lücken ja grade dort auftreten wo man sie nicht erwartet, gebiete bei denen man sich vielleicht nicht mal bewusst ist dass dort Risiken bestehen. Außerdem ist es auch Stark Mathelastig, um gebiete wie Analysis, Lineare Algebra und Stochastik wirst du wohl nicht herumkommen. Sowie natürlich aus wissen im Bereich der Theoretischen Informatik und Technischen Informatik definitiv von nutzen, wenn nicht sogar Voraussetzung sind.
Um ehrlich zu sein denke ich dass die beste Wahl um in diesem Segment Erfolg zu haben ist tatsächlich ein Informatik Studium, zumindest ein Bachelor, da die benötigten Wissensbereiche sich über jeden Teil der Informatik (und Mathematik) streuen.
Aber sieh dir zunächst mal Programmieren an und überlege ob es überhaupt etwas für dich ist, und ob dieser Bereich dann immer noch deinen Vorstellungen entspricht