C++ Starter

Betagurke

PC-Selbstbauer(in)
Hallo Forum,

mich hat irgendwie das Programmier-Fieber gepackt und ich habe mich in C++ versucht, doch nun meine Frage: Sind diese ganzen Sachen wie Hello World überhaupt notwendig? Klar sind das Grundlagen, aber reicht es nicht auch, wenn man sie die einzelnen Befehle/Codes so einprägt. Ach ja, wie schreibt man ein Programm, dass im Hintergrund ausgeführt wird, also ohne dass dieses .cmd/.bat Fenster aufgeht bzw. wie Verknüpft man ein solches Programm mit einer eigenen "Grafik-Engine"? Ich habe nur wenig Ahnung, deswegen weiß ich nicht, wie ich es ausdrücken soll.

Naja, danke im Voraus!

(Wäre einer so lieb und könnte mein "kleiner" Support sein, d.h. jemand der sich Zeit nimmt um Fragen zu beantworten, die von Zeit zu Zeit aufkommen, ich erwarte natürlich keinen 24 Stunden Service für Lau!) :D
 
Fragen kannste immer, aber NIMM DIR BITTE! DIE ZEIT FÜRS LERNEN!

Mach die Aufgaben, auch wenn du denkst, das Sie stumpfsinnig sind. Programmieren muss dir in Fleisch und Blut über gehen, und bei vielen Tutorials triffst du auch mal auf einen Fehler, weil die Tutorials einfach falsch sind :ugly: Oder veraltet oder whot ever. Dann läuft das nicht und du musst schauen warum, und das Problem eben lösen. So lernst du programmieren. Denn oft ist es einfach nur ein "Wie schaff ich dass der Mist so funktioniert wie ich es mir überlegt habe.... :wall:"

Klar, Algorithmen etc. sind auch wichtig, aber das kommt entweder mit der Zeit von allein, oder man muss richtig dafür paucken. Oft machen so was auch Mathematiker. Also nichts mit dem du dich beschäftigen wirst.
 
Ich kann Skysnake zustimmen, man sollte sich Zeit dafür nehmen. Es muss in Fleisch und Blut übergehen.
Es ist wie bei fast jeder Beschäftigung, die man lernen kann: Je länger man es macht, je besser ist man. Ab einer Woche intenvisem Training/Übung kannst du mir bestimmt die wichtigsten Befehle aufsagen, die Syntax runterbeten und alles was man sonst noch so wissen muss. Trotzdem wirst du lange nicht so gut Programmieren, wie jemand, der schon ein halbes Jahr programmiert. Es ist einfach immer wieder die Erfahrung, die einen richtig gut macht.

Deswegen: Mach die Aufgaben, die dir sinnlos erscheinen. Wenn du später an zu schwere Aufgaben rangehst, dann verzweifelst du, und hast keine Lust mehr. Glaub mir. Fang klein an, arbeite dich hoch und irgendwann hast du das geniale Gefühl: Jetzt kann ich C++!

"Wer sich zu wichtig für kleine Aufgaben hällt, ist meist zu klein für wichtige Aufgaben" - weiß ich nich
Tolles Zitat, halte dich dran ;)

Und naja, wenn du gerade anfängst zu programmieren, muss ich dich leider enttäuschen: Mit Grafik Engine wirste da nix groß anfangen können, Kollege. Solange du nicht sowieso in dem Bereich sehr gut bist und einen IQ von 1337 hast, wird bis zu deiner eigenen Grafikengine einiges an Zeit vergehen.
Um noch deine Frage zu beantworten: Um ein Programm im Hintergrund ablaufen zu lassen, muss man die Hauptfunktion nicht int main() nennen sondern irgendwie anders. Aber ich bin mir auch nicht sicher, ich meine das nur noch zu wissen....


Aber trotzdem: Viel Spaß beim Lernen und diese Community hilft dir sicher gerne :)

mfg
Lukas
 
Unter Linux gehts einfach "./Programmname &" Und schon wird es im Hintergrund gestartet :D

Und mit "nohup ./Programmname &" Kannste sogar die Console wieder zu machen, oder alternativ "screen" nutzen :daumen:

Überhaupt rate ich dir dazu, Linux zu verwenden und gvim(<-kann mögliche Befehle listen) oder geedit(<- reiner Texteditor), weil du da einfach nicht den Windowsmüll mit an der Backe hast, und eben das Zeug wirklich C/C++ ist, wie es spezifiziert ist, ohne Extrawürste, die sonst nirgends funktionieren -.- Ich hab mich dadurch teils SEHR schwer getan auf linux zu programmieren, weil ich die ganzen Windows Extrawürste intus hatte, insbesondere von MS Visual C++, ohne es zu wissen. Das hat mich sehr sehr sehr viele Stunden arbeit gekostet, bis ich das wieder drausen hatte....:wall:

Und zur Graphig-Engine. Also wie schon gesagt wurde, vergiss das mal schnell mit der eigenen, und selbst mit einer API wirst du mehr als genug Probleme haben. DAS gehört nämlich mit zu den anspruchvollsten (ok, anspuchsvoll nicht wirklich, eher LÄSTIG) Sachen, die man so machen kann. Es gibt immer sehr viele Befehle, und sehr sehr sehr viel Overhead, den man erst mal erledigen muss, bis überhaupt etwas graphisch ausgegeben werden kann.

Ich hab QT mal in einem Semester genutzt, und es was Grauenhaft. Hat sehr sehr sehr viel Zeit gekostet und es war sehr sehr sehr sehr sehr sehr sehr!!!! schwer, zu verstehen, warum 99,99% identischer Code manchmal komplett unterschiedliche Sachen gemacht hat. Da sind wir teils mit 10 Leuten dran gesessen und haben versucht raus zu finden, warum manchmal komische Sachen passieren.

Also wie gesagt, graphische Ausgabe ist in >>50% der Fälle reine Kür.
 
Vielen Dank für die netten Antworten. Mal noch eine Frage, muss man mathematisches Genie sein, um programmieren zu können? Oder reicht es wenn man in Mathe gut bis mäßig ist?
 
Das kommt drauf an. Wenn du bspw. numerisch irgendwelche dicken Differntialgleichungen beackern möchtest, solltest du da schon den mathematischen Background zu haben. Aber allgemein ist ein fundiertes Mathe-Wissen nicht zwingend erforderlich, allerdings auch nicht schädlich ;)
 
Was ich empfehlen kann ist das Buch "C++ von A bis Z", da werden eig. alle Fragen beantwortet. Hat mir persönlich extrem geholfen.
 
Jup, dem kann ich zustimmen. Das ist auch ein Buch, das dich dein ganzes Programmiererleben lang begleiten kann. :daumen:

Ich schau da hin und wieder auch rein. Leider hat unsere UB das Ding aussortiert und nur noch im FreiHand-Bereich :wall:
 
Bücher kann ich auch nur hoch loben, immer ein gute Nachschlage werk zu haben ist Gold wert, gerade am Anfang.
Und zu Mathekenntnissen:
Wie gesagt, kommt drauf an was du machst. Aber für Graphic Engine wirst du das wahrscheinlich brauchen und eine gute Räumliche Vorstellungskraft.
Wenn du zb. ein Spiel programmieren möchtest, brauch deine Engine auch noch eine Physic berechnung und sowas. Also du kannst dich bei vielen Anwendungen darauf einstellen, dass du Mathe brauchst. Es werden zwar immer viele Funktionen bereitgestelt, die dir komplizierte Aufgaben wie Matrizen multiplikation abnehmen, aber manchmal kommst du nicht drum rum.

Ich will dir nicht den Teufel an die Wand mal , aber Mathe ist doch schon mehr oder weniger wichtig :P Aber naja du kannst erstmal lange Zeit programmieren ohne Großartige Mathekenntnisse.

mfg
Lukas
 
Wenn du zb. ein Spiel programmieren möchtest, brauch deine Engine auch noch eine Physic berechnung und sowas. Also du kannst dich bei vielen Anwendungen darauf einstellen, dass du Mathe brauchst. Es werden zwar immer viele Funktionen bereitgestelt, die dir komplizierte Aufgaben wie Matrizen multiplikation abnehmen, aber manchmal kommst du nicht drum rum.
Ähmmmm... Matrixmultiplikation kompliziert? :ugly:

Äh... also ich will ja nix sagen, aber das sind im Optimalfall 5 Zeilen Code oder so. Wenn ich es grad richtig im Kopf hab, sind es 3 for-schleifen für die naive Implementierung.

Klar, das Ding kann man auch auf 100+ Zeilen Code aufblähen, wie ich das schon gemacht habe um maximale Performance raus zu holen, aber das ist halt was ganz anderes als einfach das Problem zu lösen.

Mathe brauchste wie schon gesagt wurde mehr oder weniger, aber du brauchst es immer. Wenn du nur eine Namensverwaltung oder so was schreibst, wirst du es kaum brauchen, wenn du ne Berechnung von irgendwelchen physikalischen Vorgängen machen willst, brauchste verdammt viel Mathe.

Kommt halt wie gesagt immer drauf an. Du kannst aber in deinem Leben NIE genug Mathe können, wenn du in die Informatik geht. Nur so viel dazu.

Und zur Graphik noch was. Du musst für Beleuchtung meist/immer die Normalen von irgendwelchen Triangles berechnen. Da brauchste also auch wieder Mathematik, wobei das eher rechnen ist, da man solche Sachen überall nachschlagen kann. Das hat nichts mit Mathematik zu tun. Das ist einfach nur Rechnen.

Und was ein Prof mal gesagt hat "Wir machen hier Mathematik und rechnen nicht. Rechnen kann ich auch nem Affen beibringen!"

:lol:
 
Ähmmmm... Matrixmultiplikation kompliziert? :ugly:

Äh... also ich will ja nix sagen, aber das sind im Optimalfall 5 Zeilen Code oder so. Wenn ich es grad richtig im Kopf hab, sind es 3 for-schleifen für die naive Implementierung.

Klar, das Ding kann man auch auf 100+ Zeilen Code aufblähen, wie ich das schon gemacht habe um maximale Performance raus zu holen, aber das ist halt was ganz anderes als einfach das Problem zu lösen.

Was ich meine ist der mathematische Hintergrund dazu. Also ich bin irgendwie jetzt in der 13. Klasse ohne je mit Matrizen ge"rechnet" ( ;) ) zu haben. Und ich denke, dass ich nciht der einzige bin. Und wenn man da einfach mal ein Objekt im 3D raum drehen will, kommt man nach einiger Zeit eventuell auf den Wikipedia Artikel Drehmatrix. Und ich bleibe bei meiner Behauptung und finde, dass es verdammt schwer ist da sofort durchzusteigen.
Das war nur ein Beispiel für die mathematischen Grundlagen, die man dafür braucht.

mfg
 
Naja, um zu verstehen, wie die Matrix angewendet wird, bzw. was Sie macht, ja, da muss man kurz 5 min Hirnschmalz rein stecken, um das zu verstehen. (Je nach Vorbildung auch sehr viel mehr)

Aber die Matrixmultiplikation ist hatl einfach eine Rechenvorschrift. Nicht mehr und nicht weniger. Das ist halt wie gesagt "Rechnen". Den Hintergrund dazu macht man dann in Lineare Algebra, ergo Mathematik. Das ist dann auch anspruchsvoller. Ein Informatiker kann das aber oft nicht. Machen ja wenn überhaupt nur die an der Uni, und selbst die sind ja oft nicht gerade die Mathe Genies. Also nichts gegen Informatiker, aber das sind halt meist nicht die Leute, die sich überlegen ein Mathestudium zu machen. Ist zumindest meine Erfahrung ;)
 
Hey,

mich hat irgendwie das Programmier-Fieber gepackt und ich habe mich in C++ versucht, doch nun meine Frage: Sind diese ganzen Sachen wie Hello World überhaupt notwendig? Klar sind das Grundlagen, aber reicht es nicht auch, wenn man sie die einzelnen Befehle/Codes so einprägt.

Ich sags mal so. Ich habe in meiner Schullaufbahn geschätzte 50 (ACHTUNG bisschen übertrieben!) Schüler-, Lehrer-, Taxi- und sogar Mistkübelverwaltungen geschrieben. Mein Lehrer meinte es wäre nötig um die Grundlagen wirklich zu beherrschen. Einerseits glaube ich, hätte ich das auch mit der hälfte davon gecheckt. Aber andererseits muss ich sagen, dass es sicher nicht schlecht war.

Ach ja, wie schreibt man ein Programm, dass im Hintergrund ausgeführt wird, also ohne dass dieses .cmd/.bat Fenster aufgeht bzw. wie Verknüpft man ein solches Programm mit einer eigenen "Grafik-Engine"? Ich habe nur wenig Ahnung, deswegen weiß ich nicht, wie ich es ausdrücken soll.

Hmm... verstehe nicht was du meinst. Ich glaube du meinst sowas wie Bibliotheken. Bibliotheken stellen dir eine Sammlung von Methoden usw. bereit. Du wirst sie sicher schon einmal gesehen haben diese .dll files. Dort kannst du Methoden, Klassen, etc. definieren und als .dll bereitstellen und in anderen Programmen benutzen.
Sonst weiß ich leider nicht was du mit verstecken meinst.
Oder meinst du verstecken damit der User nichts davon mitbekommt? Virus etc.? :D In Windows musst du da in die Tiefen vom Explorer. Aber den Code will ich hier nicht preisgeben. (Aber Google verrät sehr viel.)

Mit freundlichen Grüßen,
Frezy
 
Ich will hier nur nochmal auf die Mathematik eingehen, den Rest haben die Herren zuvor bereits sehr richtig beschrieben.

Umfangreiche Mathekenntnisse sind hervorragend zum Programmierung, aber irgendwie auch ein kleiner Luxus und nicht zwingend nötig. :D Es reicht wenn du einfach... naja... nicht zu doof bist dafür. :ugly: Das heißt im Klartext: Mathematik auf Halde zu lernen, um perfekt auf alle möglichen Probleme vorbereitet zu sein, ist sehr sehr schwer. Viele Probleme wirst du erst in deinem Schaffensprozess kennenlernen, manchmal sind es Probleme die du sogar schon in der Schule hattest. ;)

Das gute an der Sache ist: wenn du im Rahmen deiner Programmierarbeit ein mathematisches Problem lösen musst, gehst du mit einer vollkommen anderen Einstellung an die Sache, als es vielleicht zuvor in der Schule der Fall war, wo dir die Sachen eventuell zu abstrakt waren. Du bist deutlich motivierter, das Problem zu lösen. Dadurch bist du beharrlicher und hängst dich mehr rein. Ein Programm dazu zu bringen, dass es funktioniert, wie du es willst, ist ja auch viel cooler und interessanter, als ein schnödes Gleichungssystem lösen zu müssen - dabei kann es durchaus das gleiche sein. ;)

Ich bin auch kein Mathe-Genie muss ich sagen, trotzdem bin ich nach Regelstudienzeit im Sommer beim Bachelor. ;) In Informatik/Ingenieurswesen natürlich. Wenn man nur will, kann man sich problemlos auch nicht gerade trivialen mathematischen Problemen stellen und wenn du es tatsächlich nicht aus eigener Kraft schaffst, gibt es sicher Leute, die dir mit ihrem Wissen helfen können. :)

Motivation, Interesse, Begeisterung - die drei sind wichtiger, als Talent und Vorwissen.
 
Mit so ner Aussage wäre ich aber vorsichtig.

Bei uns müssen die Informatiker AnaI und LAI hören, und die Durchfallquote liegt da bei geschätzten >50%. Ist mit dem Bachelor wohl etwas besser geworden, aber wenn man an die Uni will, sollte man fit in Mathe sein. Haben schon genug Leute ihr Informatikstudium geschmissen, weil Sie die Mathevorlesungen nicht gepackt haben.
 
Wenn du Informatik studierst, brauchst du Mathekenntnisse(gibt dann auch entsprechende Vorlesungen), damit du die theoretischen Grundlagen verstehen kannst.

Wenn du einfach nur programmieren willst, reicht es auch, wenn du logisch und strukturiert denken kannst.(was auch für Mathematik eine Voraussetzung ist) Ab und zu stolperst du vielleicht über ein mathematisches Problem beim Programmieren, aber normalerweise nichts, was sich nicht mit etwas Intelligenz + Internet lösen lässt.
 
Mit so ner Aussage wäre ich aber vorsichtig.

Bei uns müssen die Informatiker AnaI und LAI hören, und die Durchfallquote liegt da bei geschätzten >50%. Ist mit dem Bachelor wohl etwas besser geworden, aber wenn man an die Uni will, sollte man fit in Mathe sein. Haben schon genug Leute ihr Informatikstudium geschmissen, weil Sie die Mathevorlesungen nicht gepackt haben.

Die Kenntnisse sind nicht nur an einer Uni entscheidend - an Hochschulen ist es mindestens genauso gefragt. Den Unterschied machen in der Regel die unterschiedlichen Abschlussarten (Bachelor / Diplom / Master) aus, ob und wieviel Mathe man können muss. Gerade im Master musste ich feststellen, dass man Mathe nicht mehr in 5min begreift und auch zu Hause mal drüber grübeln muss.

Ganz verrückt wird es dann bei der grafischen Programmierung (OpenCL, dx), weil das mMn nur noch wenig mit Programmieren, denn mit Mathematik zu tun hat (authentische Lichtbrechnung, Wasserdarstellung, Schatten, ...). Als Anfänger, um die Basics um Schleifen/ Ausnahmen / Objektprogrammierung etc. zu lernen sind Mathekenntnisse eher zweitrangig.
 
Stimme meinen Vorrednern zu. Komme jetzt ins 5 Semester Informatik
und stelle fest das Mathe zwar nicht zwingend erforderlich, aber absolut
hilfreich ist. Zumal dir in den Mathe VL auch eine Denkweise beigebracht
wird, die beim Programmieren sehr hilfreich ist. Bin jetzt seit dem 2. Sem.
Mathe Tutor und werde immer wieder gefragt "Brauch ich das überhaupt?"
Das ist die falsche Frage, besser: "Wie kann ich das Wissen, das mir in den
Mathe Vorlesungen vermittelt wird anwenden?" Und da gibt es eine Menge
Situationen. Banales Beispiel: Wir haben in einem Flashspiel eine
Windquelle gehabt und brauchten den Winkel des Windes um die Auswirkung
auf unsere Spielfigur zu erfahren. Da hilft es schon wenn man mal von
Pythagoras gehört hat ;) Auch in anderen Fächern, wie Bildverarbeitung
oder Computergrafik fliegen dir nur so die Vektoren / Matritzen um die Ohren.
Räumliche Vorstellungskraft hin oder her, wenn du nicht weisst wie damit
rechnen kannst, kommst du nicht weit...Mathe hat mir persöhnlich bisher
immer geholfen.

Aber das sind alles Probleme, mit denen du dich anfangs nicht beschäftigen
solltest, wie unnerved sagte. Eins sollte dir klar sein: Eine Programmiersprache
ist nur das Handwerkszeug. Code hinzuschreiben hat mit Programmieren
mMn nicht viel zu tun, das ist schnell gelernt. Die Kunst oder das was ich
als Programmierne bezeichnen würde ist Probleme zu erkennen und einen
Algorithmus für die Lösung zu finden - Wenn du dir den erstmal ausgedacht
hast, ist der rest nicht viel mehr als hinschreiben...
 
Zurück