daemon777
Lt. Commander
- Registriert
- Dez. 2003
- Beiträge
- 1.371
Also manche Leute sind hier schon sehr negativ mit ihren Kommentaren. Wenn man wissbegierig ist und viel Zeit hinein investiert kann man schon sehr weit kommen. Erlerntes vergisst man ja auch selten komplett. Zumindest hat man noch eine ungefähre Idee, wenn man es mal wieder zu Gesicht bekommt (vorrausgesetzt man hat damals Arbeit hineingesteckt).
Und ich denke genau hierum geht es dem TE auch eigentlich: einen Überblick über alle relevanten Themen zu bekommen, um eine fundierte Basis zu haben. Einen Anspruch, den ich eigentlich an jeden mehr oder weniger stellen würde, der behauptet etwas studiert zu haben. Das hat ja nichts damit zu tun, dass man jegliche Paper der letzten hundert Jahre auswendig aufsagen kann. Die allermeisten Konzepte sind über die Zeit halbwegs gleich geblieben oder sind Weiterentwicklungen. Hier reicht es oft, wenn man die Endergebnisse der Forschung kennt und halbwegs versteht, um was es geht. Natürlich ist auch das eine Herausforderung, aber es besteht schon ein Unterschied zwischen "ich würde gerne wissen, was DNA ungefähr ist und halbwegs verstehen, was sie macht" und "ich möchte das komplette Humangenom per Hand entschlüsseln".
Wer erwartet, dass er in allen Forschungsgebieten zum absoluten Experten werden und 100 Nobelpreise gewinnen wird .. naja dem ist auch nicht mehr zu helfen.
Beim Verständnis von Computern und/oder Informatik gibt es gleich von Anfang an schon ein paar Entscheidungen, die man treffen muss. Irgendwie muss man an die Sache rangehen. So etwas wie Turing-Maschinen und formale Grammatiken, Logik usw. gehören in die Sparte der theoretischen Informatik. Sehr hilfreich in vielen Dingen, aber nicht unbedingt nötig, um die Hardware zu verstehen. Geht es um die Entwicklung von vernünftigen Datenstrukturen und Algorithmen ist es jedoch völlig unvermeidbar hiermit zu beschäftigen. Hier würde ich dann eher hierauf meinen Hauptaugenmerk legen, als auf die Ergründung der Hardware-Architektur/Technologie usw.
Selbst im Bereich der Grafikprogrammierung gibt es jedoch einiges zu lernen. Wenn man tatsächlich Spiele entwickeln möchte, so sollte man sich hiermit schon einige Jahre auseinander setzen. Auch hier gibt es jedes Jahr neue Paper zu neuen Entwicklungen, die Grundlagen sollten jedoch in 1-2 Jahren zu erlernen sein. Wohlgemerkt: Grundlagen != Effiziente Programmierung. Letzteres dauert dann doch ein paar Jährchen länger.
Im Gebiet der Hardware (weil es hier ja öfter angesprochen wurde) könnte man das Ganze von klein nach groß aufbauen. Also (wie es an vielen unis auch ist) etwa nach folgendem Schema:
- Elektrotechnische Grundlagen
- Aufbau von Gattern, Boolsche Logik, Cmos-Technologie
- Aufbau von simplen arithmetischen Einheiten (Carry-Look-Ahead Addierer, Muliplizierer, Multiplexer, FlipFlops usw)
- Rechnertechnologie (DRAM, SRAM, ... )
- Rechnerarchitektur (ISA, Pipelining, Superscalar/VLIW ... )
Dazu dann natürlich noch bei Interesse Dinge wie Entwurfstechniken und co. Das reicht vielleicht um eine erste Idee zu bekommen, mit was man es eigentlich zu tun hat und einem eine Basis gibt, um tatsächlich mal so etwas in VHDL nachzubauen.
Viele praxisrelevante Themen werden aber sicher auch in diesen Vorlesungen einfach außen vorgelassen. So stößt man schon, wenn man sich das erste Mal mit Kernel-Programmierung beschäftigt auf neue Themenkomplexe. Eine Betriebssystemveranstaltung kann hier vielleicht etwas mehr (highlevel-)Hintergrundwissen verschaffen, aber wie das genau abläuft erfordert dann schon etwas mehr Eigeninitiative (wobei lowlevel und OSDevelopment einem schon einiges abnehmen).
Also mit genügend Zeit kann man sich schon einiges an Wissen aneignen und weit kommen. Das kann dann aber auch nur der Startpunkt sein, um sich mit 1-2 Themen dann in der Tiefe zu beschäftigen.
@ SoDaTierchen
Ist das nicht einfach der fastcall-Standard? Zumindest ist das in C/C++ in der Regel auch so, wenn man nicht mit bestimmten Flags kompiliert. Das hat auch etwas damit zu tun, zu was die Hardware in der Lage ist.
Was BranchPrediction und Caches angeht kann man heute nicht mehr ganz so generelle Annahmen machen. Hier werden auch Vorhersagen darüber getroffen, welche Werte als nächstes in den Cache geladen werden müssen und bei SMT ist die BranchPrediction auch etwas weniger Interessant geworden.
Eine generelle Empfehlung sollte aber immer noch sein Lokalitäten so weit wie möglich zu fördern. Das ist natürlich einfacher gesagt, als getan ^^
Und ich denke genau hierum geht es dem TE auch eigentlich: einen Überblick über alle relevanten Themen zu bekommen, um eine fundierte Basis zu haben. Einen Anspruch, den ich eigentlich an jeden mehr oder weniger stellen würde, der behauptet etwas studiert zu haben. Das hat ja nichts damit zu tun, dass man jegliche Paper der letzten hundert Jahre auswendig aufsagen kann. Die allermeisten Konzepte sind über die Zeit halbwegs gleich geblieben oder sind Weiterentwicklungen. Hier reicht es oft, wenn man die Endergebnisse der Forschung kennt und halbwegs versteht, um was es geht. Natürlich ist auch das eine Herausforderung, aber es besteht schon ein Unterschied zwischen "ich würde gerne wissen, was DNA ungefähr ist und halbwegs verstehen, was sie macht" und "ich möchte das komplette Humangenom per Hand entschlüsseln".
Wer erwartet, dass er in allen Forschungsgebieten zum absoluten Experten werden und 100 Nobelpreise gewinnen wird .. naja dem ist auch nicht mehr zu helfen.
Beim Verständnis von Computern und/oder Informatik gibt es gleich von Anfang an schon ein paar Entscheidungen, die man treffen muss. Irgendwie muss man an die Sache rangehen. So etwas wie Turing-Maschinen und formale Grammatiken, Logik usw. gehören in die Sparte der theoretischen Informatik. Sehr hilfreich in vielen Dingen, aber nicht unbedingt nötig, um die Hardware zu verstehen. Geht es um die Entwicklung von vernünftigen Datenstrukturen und Algorithmen ist es jedoch völlig unvermeidbar hiermit zu beschäftigen. Hier würde ich dann eher hierauf meinen Hauptaugenmerk legen, als auf die Ergründung der Hardware-Architektur/Technologie usw.
Selbst im Bereich der Grafikprogrammierung gibt es jedoch einiges zu lernen. Wenn man tatsächlich Spiele entwickeln möchte, so sollte man sich hiermit schon einige Jahre auseinander setzen. Auch hier gibt es jedes Jahr neue Paper zu neuen Entwicklungen, die Grundlagen sollten jedoch in 1-2 Jahren zu erlernen sein. Wohlgemerkt: Grundlagen != Effiziente Programmierung. Letzteres dauert dann doch ein paar Jährchen länger.
Im Gebiet der Hardware (weil es hier ja öfter angesprochen wurde) könnte man das Ganze von klein nach groß aufbauen. Also (wie es an vielen unis auch ist) etwa nach folgendem Schema:
- Elektrotechnische Grundlagen
- Aufbau von Gattern, Boolsche Logik, Cmos-Technologie
- Aufbau von simplen arithmetischen Einheiten (Carry-Look-Ahead Addierer, Muliplizierer, Multiplexer, FlipFlops usw)
- Rechnertechnologie (DRAM, SRAM, ... )
- Rechnerarchitektur (ISA, Pipelining, Superscalar/VLIW ... )
Dazu dann natürlich noch bei Interesse Dinge wie Entwurfstechniken und co. Das reicht vielleicht um eine erste Idee zu bekommen, mit was man es eigentlich zu tun hat und einem eine Basis gibt, um tatsächlich mal so etwas in VHDL nachzubauen.
Viele praxisrelevante Themen werden aber sicher auch in diesen Vorlesungen einfach außen vorgelassen. So stößt man schon, wenn man sich das erste Mal mit Kernel-Programmierung beschäftigt auf neue Themenkomplexe. Eine Betriebssystemveranstaltung kann hier vielleicht etwas mehr (highlevel-)Hintergrundwissen verschaffen, aber wie das genau abläuft erfordert dann schon etwas mehr Eigeninitiative (wobei lowlevel und OSDevelopment einem schon einiges abnehmen).
Also mit genügend Zeit kann man sich schon einiges an Wissen aneignen und weit kommen. Das kann dann aber auch nur der Startpunkt sein, um sich mit 1-2 Themen dann in der Tiefe zu beschäftigen.
@ SoDaTierchen
Ist das nicht einfach der fastcall-Standard? Zumindest ist das in C/C++ in der Regel auch so, wenn man nicht mit bestimmten Flags kompiliert. Das hat auch etwas damit zu tun, zu was die Hardware in der Lage ist.
Was BranchPrediction und Caches angeht kann man heute nicht mehr ganz so generelle Annahmen machen. Hier werden auch Vorhersagen darüber getroffen, welche Werte als nächstes in den Cache geladen werden müssen und bei SMT ist die BranchPrediction auch etwas weniger Interessant geworden.
Eine generelle Empfehlung sollte aber immer noch sein Lokalitäten so weit wie möglich zu fördern. Das ist natürlich einfacher gesagt, als getan ^^