Wie gehts weiter?
-
37Würfel schrieb:
Mechanics schrieb:
Spezialisieren ist eigentlich eine schlechte Idee. Bei Informatikern ist Flexibilität und abstraktes Denken gefragt.
Spezialisieren ist keine schlechte Idee. Ich kenne viele die sich auf Compilerbau, Computergrafik oder ähnliches spezialisiert haben und damit gute Jobs bekommen haben. Außerdem schließen Spezialisieren und Flexibilität und abstraktes Denken sich nicht gegenseitig aus.
Natürlich muss man sich immer auf einen/mehrere Bereiche spezialisieren. Es gibt Informatiker, die sich auf Wirtschaft spezialisiert haben, andere auf CAD, oder auch Computergrafik usw. Aber man spezialisiert sich nicht auf eine Programmiersprache und sagt, so jetzt kann ich zwar 3-4 Sprachen, spezialisier mich jetzt aber auf eine und die anderen interessieren mich nicht mehr, werd die nächsten 50 Jahre nur noch die eine Sprache machen.
-
also hmm ich möchte jetzt, aber nicht umbedingt damit anfangen Spiele zu programmieren und spaeter doch was anderes machen. Wieso muss man in der Informatik soviele Entscheidungen treffen.
-
Es ist völlig egal. Ist ja nicht so, als wäre Speicherkapazität im Gehirn so extrem knapp, dass du nachher nichts anderes mehr lernen könntest. Mach einfach was dir Spaß macht.
-
Cho++ schrieb:
also hmm ich möchte jetzt, aber nicht umbedingt damit anfangen Spiele zu programmieren und spaeter doch was anderes machen. Wieso muss man in der Informatik soviele Entscheidungen treffen.
Warum nicht? Meinst du, es macht Spass immer nur dasselbe zu machen? Mir nicht. Kann mir nicht vorstellen, 40 Jahre lang dasselbe zu machen. Hab paar Jahre Entreprise Anwendungen in Java/.NET geschrieben, dann paar Jahre Systemprogrammierung, jetzt C++ im CAD Bereich. Und in jedem Job hatte ich mit zig Programmiersprache und Technologien zu tun. Du kannst dich doch nicht jetzt schon auf irgendwas festlegen. Mach das was dir Spass macht, vielleicht kannst du das später auch beruflich machen, vielleicht wird es dir aber auch in 1-2 Jahren keinen Spass mehr machen.
-
Hmm
Danke ihr habt recht! Ich kann ja nicht immer das selbe machen.
-
Cho++ schrieb:
Ich besitze die Sprachen C,C++,Python und Java.
In deinem Repertoire fehlt noch mindestens eine funktionale Programmiersprache.
Versuche es mal mit Haskell oder Lisp.
PS:
D erlaubt auch eine funktionale Programmierung, dürfte für dich aber einfacher sein, da man altbewährte Denkweisen von C, C++, Java usw. weiternutzen kann.
-
Man kann auch in C++ funtkionial programmieren.
-
@PI: Man kann auch in Assembler Objektorientierung betreiben. Das will nur niemand, wenn es um den Lernzweck für jemanden geht, der seit 2 Jahren beim Programmieren ist. Abgesehen davon ist funktionales C++ weit entfernt von der Eleganz von echt funktionalen Sprachen wie bspw. Haskell. Will heißen potthässlich.
-
Was soll das mit Spezialisieren? Was du (nach der Schnellskizze des Profils)
eher bräuchtest, wäre mehr Programierpraxis.Versuch ein paar kleine Spiele für Handys zu entwickeln, oder Weiterentwicklungen von Typ Sysinternals ( http://technet.microsoft.com/en-us/sysinternals/bb842062 )
(Leider kein Sourcecode mehr dabei, aber es hilft vielleicht schon, sich einfach mal die Funktionsliste in IDA anzeigen zu lassen. Oder versuche einen Disassembler für Linuxe, erst einfach, dann viel intelligenter als der Rest der schon da ist. Es gibt zu wenige gute Hexeditoren, dabei sind die gar nicht so schwer zu programmieren. Aber deswegen gibt es wohl so wenig gute, die meisten schreiben sich das Ding wahrscheinlich selber. Aber es gibt auch viele gute solcher Programme mit Sourcecode, die weiterhelfen.
Der Midnight Commander in Unixen war anfangs eigentlich auch "nur" ein Einsteigerlernprojekt zum C Lernen.
(Das Original Dosprg war in Assembler geschrieben, ebenfalls recht Einsteigerfreundlich)Bei der Spieleentwicklung für Handys kannst du einen Menge lernen, performanter programmieren, lineare Arithmetik, überhaupt Mathevertiefung, schnelle Algorithmen nutzen und vieles mehr.
Versuch ein Schachspiel mit Bitmaps aufzubauen o.ä.
Man könnte auch generell mehr Api-Kenntnisse, dokumentiert und undokumentiert aufbauen.
Wie sieht es aus mit Erweiterungen von C, OpenMP, Cuda, Parallelprogrammierkenntnissen?
Wie gut sind deine Assemblerkenntnisse?
Wenn es aber unbedingt noch eine Sprache sein muß, würde ich auch in Richtung Scala oder Haskell zeigen. Haskell hat eine hervorragende Parallelperformance, gute Entwicklungstools, gute deutschsprachige Einführungsliteratur und auch gute wissenschaftliche Literatur zum Vertiefen.
An den Unis scheint zwar seit einiger Zeit Ocaml bzw. Metaocaml mehr en vogue zu sein, aber im Direktvergleich mit anderen Funktionalen Sprachen finde ich, schneidet Haskell eigentlich am besten ab.Naja, und Bibliothekzeugs und Libs und so...
http://www.amazon.de/Programming-Prentice-Source-Software-Development/dp/0132354160/
http://www.amazon.de/Game-Coding-Complete-Mike-McShaffry/dp/1584506806/
-
Vielen Dank ich werde dann mal damit anfangen irgendeine funktionelle Sprache zu lernen.
Grüsse
-
Cho++ schrieb:
Vielen Dank ich werde dann mal damit anfangen irgendeine funktionelle Sprache zu lernen.
Grüsse
Wobei ichs mit funktionalen Sprachen nicht übertreiben würde. Ist ganz witzig, interessiert aber keinen. Am ehesten noch Scala, das kann man noch unauffällig in ein Java Projekt einbauen, wenn man will. Mach ich ab und zu. Aber dass du jemals eine Aufgabe bekommst, wo du was in Haskell programmieren musst (außer im Praktikum an der Uni) ist sehr unwahrscheinlich.
-
Das ist so nicht ganz richtig. In der Telematik spielt das funktionale Erlang durchaus eine Rolle.
-
JFB schrieb:
Das ist so nicht ganz richtig. In der Telematik spielt das funktionale Erlang durchaus eine Rolle.
Ja, es gibt paar kommerzielle Erlang und sogar Lisp Projekte, deswegen hab ich auch explizit Haskell geschrieben. Aber mit Erlang wird man auch nicht unbedingt in Berührung kommen, es sei denn, man will es explizit und bewirbt sich extra bei den 2-3 Firmen, die das nutzen. Wobei ich natürlich niemanden davon abhalten will, sich Erlang, Lisp oder Haskell anzutun, hab ich ja selber auch gemacht. Wollte nur sagen, dass es kein Muss ist. Gibt ja auch genug andere Sachen, die vielleicht praxisnäher oder "wichtiger" sind.
-
Achso, ich hab deine Aussage ein wenig absoluter verstanden
Zum Thema praxisnah und "wichtig": Ich kann nur für mich sprechen, aber ich finde, dass funktionale Programmierung (v.a. die theoretischen Grundlagen, also der Lambda-Kalkül) einem einen völlig neuen Blickwinkel auf das Programmieren geben. Wichtig würde ich es also auf jeden Fall nennen.
Und die Art von Modularität und Abstraktion, die man dort kennenlernt hat zumindest meine Sicht auf die (sehr praxisrelevante) OOP stark beeinflusst. Alles in allem auf jeden Fall eine den Horizont erweiternde Erfahrung, finde ich.
-
JFB schrieb:
Zum Thema praxisnah und "wichtig": Ich kann nur für mich sprechen, aber ich finde, dass funktionale Programmierung (v.a. die theoretischen Grundlagen, also der Lambda-Kalkül) einem einen völlig neuen Blickwinkel auf das Programmieren geben.
Jo, ich bin über Python zur funktionalen Programmierung gekommen und lern jetzt etwas Haskell. Ist wirklich sehr ... mhh ... horizonterweiternd.
Werds zwar so direkt kaum brauchen, aber meine Intuition für einige Template-Metaprogramming-Geschichten hat sich dadurch schon verbessert.
-
Na Vielen Dank! Da ich sowieso nicht wusste was ich machen soll lern ich gerade Lisp. Naja gegenüber C++ finde ich es viel einfacher, aber ist schon empfehlenswert sich sowas anzuschauen.