Welche Komponenten sind die beaten für das Programmieren?
Hallo zusammen,
ich habe vor, mit dem programmieren anzufangen und es danach auch in meinem Informatikstudium anzuwenden, da ich, (wie man es vermuten kann) Informatiker werden will.
Ich besitze bereits einen PC mit folgenden Komponenten:
Intel Core i7 3770 CPU 3.40 Ghz
Nvidia Geforce GTX 1650
16 GB DDR3
Jetzt stellt sich mir die Frage, welche Komponenten oder Teile/ Aufrüstungen ich bei meiner Hardware machen sollte, um gut, schnell und flüssig programmieren zu können.
Ich habe schon gelesen, dass eine Grafikkarte für das reine Programmieren von Programmen nicht so auf dem neuesten Stand (sprich, RTX 3090 oder so) sein muss, ich jedoch einen guten Prozessor mit 32 GB RAM haben sollte und der auch ein i7 sein sollte (und auch 8 Kerne benötigt sind).
Da ich mir jetzt echt unsicher bin, frage ich lieber euch und hoffe, ein paar klare Antworten zu erhalten (auch gerne Vorschläge für CPUs und GPUs)
Ps: Es darf bitte nicht zu teuer sein, da ich nicht so viel Geld für high-end Komponenten ausgeben kann.
Vielen Dank für alle Antworten schonmal.
8 Antworten
Für ein Informatikstudium braucht man Programmieren so wenig wie Rechnen für ein Mathematikstudium. Für das, was man da wirklich benötigt, reicht ein 30 Jahre alter PC mehr als aus.
Es sei denn, der Lehrstuhl kommt auf den Gedanken, Java wäre eine gute Idee, am besten noch in Verbindung mit Eclipse - das ist notorisch eine Schnecke im ersten Gang. (Andere Entwicklungsumgebungen kenne ich jetzt nicht aus eigener Erfahrung. Könnte ein klein wenig besser sein. - Es gibt aber Möglichkeiten, Eclipse erheblich zu beschleunigen.) Dann ist ein möglichst schneller Prozessor dringend zu empfehlen, ebenso ein paar GiB an RAM - aber 8 sollten ausreichen. Mit deinem System bist du also gut dabei, zumal dein Prozessor im "Turbo-Boost-Modus" (nur 1 Kern aktiv, der aber möglichst hoch getaktet) schon ziemlich am physikalischen Limit (für nicht gerade stickstoffgekühlte) Prozessoren bist.
Wichtig ist v. A. die Software - insbesondere eine bequeme (und nicht allzu träge) Entwicklungsumgebung und ein guter Debugger.
Ich würde auch ein Mobilgerät (Notebook) in Erwägung ziehen, um auch unterwegs zwischendurch schnell was ausprobieren zu können.
Selbst auf einem Microcontroller mit 32 KB Flash, 64 KB RAM, mit 50 MHz getaktet, ohne Grafik, läßt sich prima programmieren. Also nicht bloss "Kompiliertes Programm da drauf laden und ausführen", sondern "optimierenden native code compiler auf dem controller laufen lassen, dort Quellcode übersetzen lassen und ausführen". Mit interaktivem System auf dem laufend, also quasi auch Betriebssystem und shell.
Im Prinzip auch Editor, aber oft wird der vom PC bekannte und dort verwendete Editor vorgezogen gegenüber einem auf dem target laufenden und bedienten.
Programmieren ist weniger eine Frage der Leistungsfähigkeit des Gerätes, sondern eher eine der Leistungsfähigkeit des biologischen Hirns von demjenigen, der dieser Tätigkeit nachgeht.
Bei sehr großen Programmen (Hunderttausende bzw Millionen von Zeilen) beginnt die Leistungsfähigleit des Gerätes eine Rolle zu spielen, da Abarbeitungsgeschwindigkeit von Compilern nicht unendlich hoch ist.
NASA computer ... Der originale AGC hatte bissel mehr als 12000 Speicherplätze von ich glaub jeweils 16 bit. Aber der compiler für dessen Programme lief da vermutlich nicht drauf.
Der genannte native code compiler auf Microcontrollern ist aber auch nicht üblich für solche Geräte. Hat tatsächlich Bezug auf Luftfahrt und davor auch Raumfahrt, Astronomie. Konkret denke ich jetzt an mecrisp (bzw -stellaris)
da ist bloß ein Problem: ich habe sogzt wie keine Ahnung, was genau du sagst. Du benutzt eher die Fachsprache, was für mich eher etwas komplizierter verständlich ist.
Kein Programme-Schreiber ist mit der Kenntnis, wie das geht, geboren worden.
AGC ist der Apollo Guidance Computer. Das Steuerungsmodul, womit z.B. auch zum Mond geflogen wurde.
Microcontroller sind kleine, sparsame und vergleichsweise leistungsschwache Computer, meist alles, was zum Laufen nötig ist, in einem einzigen Chip enthaltend.
"native code compiler" ist ein Übersetzer von Quellcode (das ist, was der Programmierer schreibt) in eine Form, die vom Computer direkt - also ohne weitere zusätzliche Übersetzungsschritte - ausführbar ist.
Luftfahrt ist ein Sammelbegriff für Technologien und Geräte, welche gesteuerte und kontrollierte Bewegung durch Atmosphäre ermöglichen :)
vielen dank. Das was ich vorher wusste ist das mit Luftfahrt. Bei den anderen Punkten war es sehr hilfreich. Danke
Solche Microcontroller boards sind auch recht preisgünstig. Da zwischen den dafür geschriebenen Programmen und der Hardware (sowie evtl angeschlossener periphärer Elektronik) meist kein Betriebssystem ist, ist insbesondere die hardware-nahe Programmierung auf solchen Geräten sehr direkt. Ein Betriebssystem stellt sich dem direkten Zugang nämlich quer, und erfordert es stattdessen, die vom Betriebssystem angebotenen Dienste zu verwenden oder, oft aufwändig, das Betriebssystem von der Rechtmäßigkeit von direkten Zugriffen zu zu überzeugen.
Damit können solche microcontrollerbasierten Kleinstsysteme aber auch eine Menge Spaß machen, verglichen mit "großen" Computern.
"Preisgünstig" heißt, unter etwa 3€. Im Preisfenster 3 bis 10€ finden sich auch schon vergleichsweise leistungsfähige Systeme.
Und, ein Aspekt, welcher nicht zu verwahrlosen ist: auf solchen lernt man eher "Programmieren" statt "Bibliotheksfunktionen, geschrieben von anderen, zusammenzukleben".
ok aber brauche ich diese. micro controller? und wie schließe ich den genau an den computer an? so ich verstehe den genauen Sinn nicht ganz. (auch wenn die frage vielleicht dumm ist, tut es mir leid)
Nö, brauchen tust du die nicht. Das sind halt selbst kleine Computer, die natürlich ebenfalls programmiert werden können. Und aufgrund der geringen Größe und niedrigem Preis auch gut als z.B. Steuerrechner eingesetzt werden können, also als Teil eines Apparates, den du damit baust. Sinn ist damit also, weitere, zusätzliche Computer zu haben, die auch praktischen Nutzen haben können, unabhängig von deinem PC: Willst du deine Programme für irgendetwas anderes Einsetzen, ausser die auf dem PC zu laden, laufen zu lassen, und wieder zu beenden, willst du natürlich nicht für jeden dauerhaften Anwendungsfall einen PC kaufen und dafür einsetzen - viel zu groß, zu stromhungrig, und zu teuer.
Das ist, wofür du dann einen billigen, sparsamen und kleinen Microcontroller verwenden würdest. Also wenn Programmieren nicht nur Selbstzweck ist, sondern einen Nutzen abseits vom Desktop PC haben soll.
Wie die genau angeschlossen werden, hängt vom jeweiligen board ab. Viele verfügen über einen USB Port, worüber die mittels Kabel an einen USB port vom Computer angeschlossen werden. Manche kommen sogar schon als direkt einsteckbares board mit Stecker-Teil dran. Andere wiederum werden z.B. über einen SWI Adapter ("Single Wire Interface") angeschlossen - solche mag ich z.B, da darüber sowohl der komplette Flash-Speicher des Controllers beschrieben werden kann - auch eines vollständig "leeren" Controllers -, als auch Quellcode dahin gesendet, und Tastatureingaben sowie Bildschirmausgaben, also Terminal, ebenfalls darüber laufen können. Also eine einzige minimale Verbindung für jeglichen Kommunikationsbedarf.
achsoo. also brauche ich den theoretisch nur, wenn ich mir irgendetwas einzeln baue und dann außerhalb des computers programmieren möchte. aber für das programmieren am pc macht das nichts. So habe ich das jetzt verstanden.
Ja genau. Die sind eine Alternative, oder besser, eine Ergänzung zum Programmieren eines PCs. Damit vergrößert ein Programmierer sein Spektrum der Einsetzbarkeit, weil er damit zusätzliche Geräte programmieren kann.
Dazu kommt, dass solche Microcontroller-systeme auch einfacher aufgebaut sind als PCs. Du kannst die ganz in etwa mit sehr frühen PCs vergleichen.
Um mit dem Programmieren anzufangen, brauchst du erstmal eine Konsole und eine Entwicklungsumgebung. Eclipse (mal als Beispiel rausgegriffen) läuft auf einem 10 Jahre alten Rechner locker.
https://www.oreilly.com/library/view/eclipse-ide-pocket/0596100655/ch01.html
Von daher solltest du überhaupt kein Geld in Hardware stecken, sondern lieber in einem guten Programmierkurs und schauen, ob dir Programmieren überhaupt liegt. Wenn du in ein paar Jahren soweit bist, dass du zum Programmieren in irgendeiner Ecke bist, dass du gigantische Rechenleistung benötigst (und irgendwelche Virtualisierungslösungen o.ä. keine Option sind), dann kannst du dich zeitnah umschauen.
Wie gut und flüssig man programmiert, hängt nicht an der Hardware.
Ich habe auf einem ZX81 mit zunächst 1kB RAM angefangen zu programmieren und wirklich das letzte Byte aus dem Basic-Code gequetscht. Als ich dann auf 16kB aufgerüstet habe, lebte ich im reinen Luxus. Man lernt dabei auf Effizienz wertzulegen und ein Gefühl für das Zusammenspiel aus Soft- und Hardware zu bekommen. Davon profitiere ich auch heute noch, wenn ich Code für die winzigen Kerne einer GPU schreibe.
Beim Erlernen der ersten Programmiersprache gewöhnt man sich daran, Vorstellungen des Ablaufs in kleine Pakete aufzuteilen, die man in Code übersetzen kann. Wenn man dann etwas Erfahrung mit kleinen Programmen mit 1000 bis 10'000 Zeilen Code gesammelt hat, kann man dieses Wissen deutlich erweitern, indem man weitere Sprachen mit neuen Konzepten kennenlernt. Danach braucht man Wissen zum Thema Software-Engineering: Versionierung, Dokumentation, Erkennen des Zeitpunkts für ein Neuschreiben (Refactoring), usw. Projektmanagement und Test-Strategien kommen auch noch dazu.
Wie viel RAM die Grafikkarte hat, ist dabei nebensächlich. Die Hardware wählt man dann später passend zum Projekt: Ein selbst programmierter Internet-Chat-Dienst läuft auf einem Linux-Wurm mit 1 MB RAM, eine komplexe Simulation schiebt man dann auf einen Rechencluster mit 512 CPUs und 1 TB RAM.
Die Hardware ist da viel weniger wichtig als die Übung. Autofahren lernt man ja auch nicht in einem Wagen mit möglichst viel PS, sondern durch Übung, Erfahrung und das Nutzen von Tipps anderer.
- 6900xt
- i7 12700k
- 32Gb RAM z. B. Von g.skill
Auch für mit hoher Grafik, weiß ja nicht, was du genau machen willst und Spiele.
achsooo haha. und ich dachte schon, ich müsste mir hier einen halben NASA pc zusammen bauen. Vielen Dank!