Der Programmier-Thread

crack-king

Administrator
Team-Mitglied
systems, systems, systems, systems, systems, systems
Ja, das ist echt unglaublich, wie vielseitig er ist :D er hat mir ja auch am Anfang gut bei der Android-Entwicklung geholfen, obwohl er das so noch nie wirklich gemacht hat^^

chrizel, eigentlich müsstest du das Studium nachholen (mit etwas Verhandlungsarbeit kannst du bestimmt paar Semester oder zumindest Module überspringen) und dann als Dozent dort arbeiten oder vielleicht in einer Firma in die Entwicklung einsteigen (weiß ja nicht genau, was du aktuell machst).
 
chrizel ist für höheres bestimmt, wer so viel weiß sollte in einem Start-Up ein Produkt mit anderen entwickeln, was wirkliche Exzellenz beweist. Mit gutem Design kennt er sich ja aus ;) Da ist man in Deutschland ja recht konkurrenzlos.
 
PSN-Name: leckt mich an meinem haarigen hintern ihr haufen!
Spielt gerade: perl(pc); div. KOFs (ps3); GT6(ps3); sfIV(div.);
@chrizel: respekt :D

@emugeschichte: vielleicht hättest du dir erstmal ein system mit ner alten risc cpu vornehmen sollen o_O
 
PSN-Name: chrizeliq
Paaah, scheisse ist das aufwaendig... ich habe jetzt mindestens 12 Stunden am Stueck gearbeitet :o Davon etwa 4-5 Std. damit verbraucht den Assemblercode von Tetris zu debuggen... :ugly:

127 Instruktionen und etwa 1698 Zeilen Code spaeter sieht das jetzt so aus:



He das kann sich ja schonmal sehen lassen. :ugly:

Einige Sekunden nach dem Intro-Bildschirm erscheint allerdings:


Argh, da ist irgendwo ein Bug und jetzt muss ich wohl wieder Tetris debuggen... (haha)

Aber schoen langsam wirds. Damit es soweit funktioniert musste ich Interrupts und DMA implementieren... Steuerung gibts noch keine, aber das kommt wohl als naechstes, ist verglichen mit dem Rest ein simpler Weg... aber es fehlen immer noch 70% der Instruktionen...

chrizel, eigentlich müsstest du das Studium nachholen (mit etwas Verhandlungsarbeit kannst du bestimmt paar Semester oder zumindest Module überspringen) und dann als Dozent dort arbeiten oder vielleicht in einer Firma in die Entwicklung einsteigen (weiß ja nicht genau, was du aktuell machst).
Vor einigen Jahren habe ich noch ueberlegt zu studieren, aber diesen Gedanken inzwischen komplett verworfen, weil mich ein Studium zumindest in den ersten Semestern wahrscheinlich eher langweilt... ok, es gibt schon ein paar - vor allem theoretische - und Nicht-Informatik-Bereiche wo ich auch nicht so viel weiss, aber ich denke ich bin eher fuer ein (eigenes) Unternehmen bestimmt.

@chrizel: respekt :D

@emugeschichte: vielleicht hättest du dir erstmal ein system mit ner alten risc cpu vornehmen sollen o_O
Danke. Ja, der Gedanke ist mir damals auch gekommen... der GBA lauft glaube ich mit einer ARM-CPU, das sollte eigentlich einfacher sein, aber ARM hat glaub ich auch wieder mindestens zwei verschiedene Instruktionssaetze, dann koennt das auch nichts heissen. Ich wollte halt eine Nintendo-Konsole angehen, weil Nintendo praktisch meine Kindheit bestimmt hat, und mir alle anderen oder aelteren Systeme leider nicht so viel sagen.
 
Spielt gerade: BF3, FIFA11, GR:FS
Heute hab ich mich wieder mal an die Arbeit gemacht und ich komme einfach nicht weiter...

Hab zu Testzwecken das jetzt mal gemacht:
function countx()
{
global $textview, $textbuffer;
$cnt = 0;

while ($cnt < 10)
{
echo $cnt++;
DrawTextView($cnt);

sleep(1);
}
}

Wie schaff ich es nun dass die Zahlen nacheinander im Textview ausgegeben werden? Ich sehe zwar dass er zählt (jedoch nicht im Textview) und zum Schluss erscheint immer nur die "10" im Textview, will aber dass er von 0 bis 10 im Textview hochzählt. Außerdem friert die GUI auch währenddessen ein. Mit proc_open bin ich noch nicht zusammengekommen...
 
PSN-Name: chrizeliq
Was macht DrawTextView? Kannst du das auch noch posten? GUI-Programmierung ist nicht so simpel, als dass da alles von oben nach unten ablaufen wuerde. GUI-Programmierung ist Event-Basiert (d.h. bei Mausklick mach das, bei Tastatureingabe mach das etc.) und alles lauft ueber eine sogenannte Main-Loop ab welche Events entgegennimmt, verarbeitet und an entsprechende Handlerroutinen weiterleitet. Das ist in jedem GUI-Framework aehnlich: Gtk, Qt, Swing, SWT, MFC, WinAPI, Cocoa etc... ueberall gibt es eine Main-Loop.

Der Punkt ist der: Auch das Zeichnen von einem Fenster ist ein Event. D.h. wenn du in deinem Code z.B. auf dem Klick eines Buttons in dein Textfeld schreibst, und mit einem sleep da immer eine Sekunde wartest, dann tut sich gar nix, weil deinem Programm nicht die Zeit gegen wird sich neu zu zeichnen!

In jedem GUI-Framework gibt es fuer solche Faelle Funktions- oder Methodenaufrufe um die Events z.b. in Schleifen zu verarbeiten.

Was du fuer GTK brauchst ist das:
http://developer.gnome.org/gtk/2.24/gtk-General.html#gtk-events-pending

D.h. nachdem du den Text in dein Textfeld hinzugefuegt hast, musst du in deiner Schleife nach DrawTextView Code wie solchen aufrufen:
Code:
while (gtk_events_pending ())
  gtk_main_iteration ();
Das fuehrt dazu, dass in der Schleife alle Events vor dem Sleep verarbeitet werden und du zumindest deine Ausgabe sehen solltest. Dein Sleep fuehrt allerdings dazu, dass deine GUI in dieser Wartezeit haengt, weil im Sleep natuerlich keine Events (wie z.B. Zeichnen) verarbeitet werden.

Beachte allerdings, dass beim Aufruf von gtk_main_iteration alle Events verarbeitet werden z.B. auch Mausklicks etc. D.h. waehrend deiner Schleife koennen auch Buttons geklickt werden und der Code darin wird ausgefuehrt waehrend du gtk_main_iteration machst. Deine GUI muss auf solches Verhalten ausgelegt sein.

Dass in deinem Textfeld nur 10 steht und nicht die Zahlen untereinander ist wahrscheinlich ein Fehler in DrawTextView... das setzt wahrscheinlich den Inhalt des Textfeldes neu. Was du willst, ist Text hinzufuegen.
 
Zuletzt editiert:
Spielt gerade: BF3, FIFA11, GR:FS
Erstmal wieder danke für deine ausführliche Erklärung, du bist echt spitze! :okay:

Was macht DrawTextView? Kannst du das auch noch posten?
function DrawTextView($txt)
{
global $textBuffer,$textView;
$textBuffer->set_text(utf8_decode($txt));
$textView->set_buffer($textBuffer);
}

Der Punkt ist der: Auch das Zeichnen von einem Fenster ist ein Event. D.h. wenn du in deinem Code z.B. auf dem Klick eines Buttons in dein Textfeld schreibst, und mit einem sleep da immer eine Sekunde wartest, dann tut sich gar nix, weil deinem Programm nicht die Zeit gegen wird sich neu zu zeichnen!
Aber sleep ist in diesem Fall doch nur die Zeit die zwischen den Zahlen abgewartet wird, d.h. 1 Sekunde von der einen Zahl zur nächsten, damit es eben etwas länger dauert. Denn wenn der Abstand nicht wäre würde man ja nicht erkennen ob die GUI einfriert oder nicht. Es soll ja damit nur mal irgendeine Funktion simuliert werden, ist wie schon erwähnt eben nur als Testzweck, im Programm wird dann kopiert o.Ä.. Ich könnte ja auch gleich einen Kopierbefehl verwenden wenn es das erleichtern würde...


In jedem GUI-Framework gibt es fuer solche Faelle Funktions- oder Methodenaufrufe um die Events z.b. in Schleifen zu verarbeiten.

Was du fuer GTK brauchst ist das:
http://developer.gnome.org/gtk/2.24/gtk-General.html#gtk-events-pending

D.h. nachdem du den Text in dein Textfeld hinzugefuegt hast, musst du in deiner Schleife nach DrawTextView Code wie solchen aufrufen:
Code:
while (gtk_events_pending ())
  gtk_main_iteration ();
Das fuehrt dazu, dass in der Schleife alle Events vor dem Sleep verarbeitet werden und du zumindest deine Ausgabe sehen solltest. Dein Sleep fuehrt allerdings dazu, dass deine GUI in dieser Wartezeit haengt, weil im Sleep natuerlich keine Events (wie z.B. Zeichnen) verarbeitet werden.
Ok, werde es heute oder morgen dann weiterprobieren und mich dann wieder melden.

Dass in deinem Textfeld nur 10 steht und nicht die Zahlen untereinander ist wahrscheinlich ein Fehler in DrawTextView... das setzt wahrscheinlich den Inhalt des Textfeldes neu. Was du willst, ist Text hinzufuegen.
Aber mit dem sleep müsste man da ja dann durch den Abstand von 1er Sekunde zwischen den Zahlen doch sehen wie er raufzählt oder nicht? Also 1 - 2 - 3 usw., zwar nicht alle gleichzeitig aber eben hintereinander, aber das tut er nicht, er zählt in eben in der Konsole von 0 bis 9 und die 10 wird dann im Textfeld ausgegeben.
Text hinzufügen kann ich mich erinnern, habe glaube ich schon vor ein paar Wochen mal danach gesucht, aber auch nichts anständiges gefunden, man findet für den Kack echt nichts sinnvolles im I-Net. -.-
 
PSN-Name: chrizeliq
Code:
[INDENT] function DrawTextView($txt)
[/INDENT][INDENT] {
[/INDENT][INDENT][INDENT]   global $textBuffer,$textView;
[/INDENT][/INDENT][INDENT][INDENT]   $textBuffer->set_text(utf8_decode($txt));
[/INDENT][/INDENT][INDENT][INDENT]   $textView->set_buffer($textBuffer);      
[/INDENT]}

[/INDENT]
Wie erwartet setzt die Funktion nur den Text neu und verwerft den alten Text. Du musst wahrscheinlich mit get_text den Text holen, deinen Text anfuegen und neu setzen.

Aber sleep ist in diesem Fall doch nur die Zeit die zwischen den Zahlen abgewartet wird, d.h. 1 Sekunde von der einen Zahl zur nächsten, damit es eben etwas länger dauert. Denn wenn der Abstand nicht wäre würde man ja nicht erkennen ob die GUI einfriert oder nicht. Es soll ja damit nur mal irgendeine Funktion simuliert werden, ist wie schon erwähnt eben nur als Testzweck, im Programm wird dann kopiert o.Ä.. Ich könnte ja auch gleich einen Kopierbefehl verwenden wenn es das erleichtern würde...
Klar. Aber das ist genau der Punkt: Du machst sleep oder rufst deinen Kopierbefehl auf der den Programmfluss blockt bis der Kopierbefehl abgeschlossen ist. Das geht mit dem einher was ich damals geschrieben habe: PHP hat keine Threads, dann koennte man das damit loesen. Das einzige was du machen kannst ist, dass du deinen Kopierbefehl nicht mit system oder sowas aufruft. Beachte die PHP-Dokumentation zum system-Befehl: http://de2.php.net/system

If a program is started with this function, in order for it to continue running in the background, the output of the program must be redirected to a file or another output stream. Failing to do so will cause PHP to hang until the execution of the program ends.

D.h. wenn du die Ausgabe des Programs nicht in eine Datei oder einen anderen Ausgabestream umleitest, wartet der System-Befehl bis dein cp-Befehl abgeschlossen ist.

Wie damals schon geschrieben, brauchst du statt system eher proc_open: Das wartet nicht bis der Kopierbefehl fertig ist, sondern fuehrt sofort deinen Code weiter aus. Im Gegenzug musst du die Ausgaben auswerten und kannst damit ggf. deine Fortschrittsanzeige machen etc. Das ist aber nicht so einfach wie es sich anhoert und durch den Umstand nur noch schwieriger dass du PHP und Gtk verwendest: Gtk ist nur im Linux-Umfeld wirklich populaer -- und wenn dann nur in C/C++/Python. Mit PHP macht damit keiner was. Keiner!

Aber mit dem sleep müsste man da ja dann durch den Abstand von 1er Sekunde zwischen den Zahlen doch sehen wie er raufzählt oder nicht? Also 1 - 2 - 3 usw., zwar nicht alle gleichzeitig aber eben hintereinander, aber das tut er nicht, er zählt in eben in der Konsole von 0 bis 9 und die 10 wird dann im Textfeld ausgegeben.
Genau das wirst du erreichen, wenn du den gtk_main_iteration-Code anwendest, den ich oben gepostet habe. Habe aber gerade mal in der PHP-GTK-Doku nachgeschaut, der Code unter PHP muss so ausschauen: http://gtk.php.net/manual/en/gtk.method.main_iteration.php

Code:
while (Gtk::events_pending()) {
    Gtk::main_iteration();
}
Text hinzufügen kann ich mich erinnern, habe glaube ich schon vor ein paar Wochen mal danach gesucht, aber auch nichts anständiges gefunden, man findet für den Kack echt nichts sinnvolles im I-Net. -.-
Wie gesagt. PHP und Gtk macht keiner. Dementsprechend findest du nix. Eine GUI in PHP zu bauen ist ungefaehr so sinnvoll wie mit einem Segelschiff auf der Autobahn zu fahren. PHP ist fuer Webseiten und Webanwendungen gut. Nicht aber fuer alles andere.
 
Spielt gerade: BF3, FIFA11, GR:FS
Code:
[INDENT] function DrawTextView($txt)
[/INDENT][INDENT] {
[/INDENT][INDENT][INDENT]   global $textBuffer,$textView;
[/INDENT][/INDENT][INDENT][INDENT]   $textBuffer->set_text(utf8_decode($txt));
[/INDENT][/INDENT][INDENT][INDENT]   $textView->set_buffer($textBuffer);      
[/INDENT]}

[/INDENT]
Wie erwartet setzt die Funktion nur den Text neu und verwerft den alten Text. Du musst wahrscheinlich mit get_text den Text holen, deinen Text anfuegen und neu setzen.
Mach ich get_text dann für den Buffer oder das TextView? Den Befehl gibt es ja für beide Widgets.


Klar. Aber das ist genau der Punkt: Du machst sleep oder rufst deinen Kopierbefehl auf der den Programmfluss blockt bis der Kopierbefehl abgeschlossen ist. Das geht mit dem einher was ich damals geschrieben habe: PHP hat keine Threads, dann koennte man das damit loesen. Das einzige was du machen kannst ist, dass du deinen Kopierbefehl nicht mit system oder sowas aufruft. Beachte die PHP-Dokumentation zum system-Befehl: http://de2.php.net/system

If a program is started with this function, in order for it to continue running in the background, the output of the program must be redirected to a file or another output stream. Failing to do so will cause PHP to hang until the execution of the program ends.

D.h. wenn du die Ausgabe des Programs nicht in eine Datei oder einen anderen Ausgabestream umleitest, wartet der System-Befehl bis dein cp-Befehl abgeschlossen ist.

Wie damals schon geschrieben, brauchst du statt system eher proc_open: Das wartet nicht bis der Kopierbefehl fertig ist, sondern fuehrt sofort deinen Code weiter aus. Im Gegenzug musst du die Ausgaben auswerten und kannst damit ggf. deine Fortschrittsanzeige machen etc. Das ist aber nicht so einfach wie es sich anhoert und durch den Umstand nur noch schwieriger dass du PHP und Gtk verwendest: Gtk ist nur im Linux-Umfeld wirklich populaer -- und wenn dann nur in C/C++/Python. Mit PHP macht damit keiner was. Keiner!
Er wird doch nicht mit System ausgeführt?! Sondern so ->
Code:
$cmd = sprintf("cp /mnt/images/%s /opt/repairsystem/images/%s", $file,$file);
Oder ist "cp" der ein System-Befehl? :kopfkratz:

In meinem Testprogramm hab ich es einfach so probiert:
Code:
copy($b, $a)
Bzw. probiere ich es eben jetzt gerade mit proc_open, hab da aber noch nicht ganz durchgeblickt. :D Btw: Und wie werden dann solche Ausgaben ausgewertet?


Genau das wirst du erreichen, wenn du den gtk_main_iteration-Code anwendest, den ich oben gepostet habe. Habe aber gerade mal in der PHP-GTK-Doku nachgeschaut, der Code unter PHP muss so ausschauen: http://gtk.php.net/manual/en/gtk.method.main_iteration.php

Code:
while (Gtk::events_pending()) {
    Gtk::main_iteration();
}
Ok, danke das funktioniert mal, nun muss ich eben schauen dass ich noch den Text hinzufüge anstatt ihn zu ersetzen.


Wie gesagt. PHP und Gtk macht keiner. Dementsprechend findest du nix. Eine GUI in PHP zu bauen ist ungefaehr so sinnvoll wie mit einem Segelschiff auf der Autobahn zu fahren. PHP ist fuer Webseiten und Webanwendungen gut. Nicht aber fuer alles andere.
:lol:
Naja ich kanns mir ja leider nicht aussuchen...
 
Zuletzt editiert:
PSN-Name: chrizeliq
Oder ist "cp" der ein System-Befehl? :kopfkratz:
cp das zu in sprintf angibst und spaeter vermutlich mit system aufrufst ist ein aufruf das cp-Befehls meistens in /bin/cp

Bzw. probiere ich es eben jetzt gerade mit proc_open, hab da aber noch nicht ganz durchgeblickt. :D Btw: Und wie werden dann solche Ausgaben ausgewertet?
Das ist als Anfaenger ohne Unix-Kenntnisse auch nicht so einfach zu verstehen. Man kommuniziert mit dem Prozess ueber Pipes die man mit fopen/fwrite lesen/schreiben kann. Beispiele findet man in der PHP-Doku.

---

Bin am Emulator weiterbauen:


Die ersten zwei Menuebildschirme funktionieren nun komplett incl. Steuerung. Viele Instruktionen fehlen aber noch. Es gibt auch einen Bug der den ganzen Speicher vollschreibt wenn man ein Spiel startet, das verhindert momentan am weitermachen, muss noch mehr gedebuggt werden... spielen kann man dadurch leider noch nicht.

Der Emu ist auch unter Windows kompilierbar dank GLUT und OpenGL:


Sourcecode liegt jetzt hier: https://github.com/chrizel/gameboy-emulator

Eine interessante Loesung habe ich jetzt fuer die Definition des Instruction Sets gefunden. Das war mir viel zu aufwendig, selbst wenn es mit einer einzigen Zeile C++ realisierbar war, man musste immer noch zu viel schreiben und ueberlegen.

Die jetzige Loesung kompiliert zuerst das Programm instructionset_generator.cc welches unter Verwendung von base_instructionset.txt selber C++ Code erzeugt der etwa so ausschaut: base_instructionset.h -- diese Datei wird im Kompilationsprozess des eigentlichen Emulators eingebunden um den Befehlssatz der CPU letztendlich zu definieren.
 
Zuletzt editiert:
PSN-Name: Bohne_13
Spielt gerade: GT Sport
Ich habe vor ein paar Wochen angefangen VB.net zu programmieren.
Im Moment probiere ich die Funktionen des WebBrowsers und habe da ein Problem, für das ich keine Lösung finde.

Ich möchte, das mir das Programm die Links einer Seite auflistet. Allerdings nicht alle sondern nur die Links in dem Element mit dem Attribut class="uiMediaThumb uiScrollableThumb uiMediaThumbLarge".
Folgenden Code benutze ich dazu:
Code:
Dim alleAElemente As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("a")
            For Each AElement As HtmlElement In alleAElemente
                Dim Klasse As String = AElement.GetAttribute("class").ToString
                If Klasse = "uiMediaThumb uiScrollableThumb uiMediaThumbLarge" Then
                    OutputListBox.Items.Add(AElement.GetAttribute("href").ToString)
                End If
            Next
Ich kann da kein Fehler finden und außerdem benutze ich praktisch den Selben Code (mit anderen Elementen und Attributen), um sich auf die Internetseite einzuloggen.

Das Problem ist, so glaube ich, dass der Webbrowser class als null herausgibt.
Ich hab mir einmal einfach nur alle class-Attribute auflisten lassen, dann hatte die Liste zwar 25 Elemente, aber alle ohne Inhalt. X(
Das selbe mit allen href-Attributen und die Elemente hatten einen Inhalt.

Wenn jemand eine Lösung hat, würde ich mich sehr freuen.
 
Zuletzt editiert:
PSN-Name: chrizeliq
Vielleicht sind das nicht die class-Attribute von einem a-Tag sondern von Elementen die in den Links liegen wie z.B. img oder div?

--

Mein Emulator kann jetzt Tetris emulieren und man kann spielen: :banana:



Ich kann auch cheaten und mir immer die besten Bloecke geben. :ugly:



Als eine der naechsten Schritte denke ich an Sound-Support und noch die restlichen Instruktionen. Sound interessiert mich vom Lerneffekt her, weil ich bis jetzt eigentlich noch nie grossartig bzgl. Soundausgabe programmiert habe.

Komplexere Spiele wie Mario oder Zelda laufen noch nicht, weil man dafuer noch so Sachen wie memory banks und scrolling realisieren muss. Das ist mit Sicherheit eines der naechsten Ziele.

Rueckblickend betrachtet ist es eine interessante Erfahrung. Der Gameboy war meine erste Spielekonsole die ich mir mit meinem eigenen Geld gekauft habe. Zusammen mit Super Mario Land 2. Mystic Quest auf dem Gameboy war fuer mich das erste Rollenspiel ueberhaupt.

Einen Emulator zu bauen scheint aber doch mit relativ viel Arbeit verbunden zu sein. Ok, wenn man jetzt Uebung darin hat ist es wahrscheinlich einfacher. Das Problem ist allerdings, dass man sich nicht viele Fehler erlauben darf. Es muss nur irgendwo ein Bit falsch gesetzt sein, und schon kann das ganze Programm nicht richtig ausgefuehrt werden. Fehlersuche ist unter Umstaenden sehr schwierig und zeitaufwaendig -- mit der Zeit entwickelt man sich dann Tools um das Debugging zu erleichtern.
 
PSN-Name: chrizeliq
Respekt! Mich würde mal interessieren, was du beruflich für Programme implementierst.
Thx. Ach, so speziell ist mein Job nicht. Ob du es glaubst oder nicht, aber ich programmiere in der Arbeit seit 10 Jahren unter Windows. Delphi... wird heute nicht mehr so stark verwendet, aber es gibt kaum etwas was fuer Datenbankbasierte Desktop-Anwendungen einfacher waere. Die letzten Jahre mache ich allerdings immer mehr Webentwicklung in JavaScript/PHP, und da kommt mir die Erfahrung die ich mit OnPSX gemacht habe zugute. Die Firma (nur um die 30 Mitarbeiter) bei der ich arbeite hat hauptsaechlich Firmenkunden aus der Textil- und Sportindustrie. Jetzt 2012 startet dann eines der bisher groessten Projekte ueberhaupt, und ich baue praktisch die Software dafuer. Kunde ist Adidas. :)

Ich arbeite halt inzwischen schon seit ueber 10 Jahren dort. Ich habe also ueber 10 Jahre Berufserfahrung als Softwareentwickler. Damit bin ich mit 26 Jahren schon noch vergleichsweise jung, aber wie gesagt - ich habe nicht studiert, nicht mal Abitur. Nach meiner Erfahrung im Job sagt die Schulbildung oder ein Titel gar nichts aus. Berufserfahrung und Eigeninitiative ist der entscheidende Punkt.

In unserem Job muss man staendig lernen. Und das ist genau das was ich mache. Ich bin in einem staendigen Lernprozess und versuche zuhause immer etwas anderes zu machen. Desshalb arbeite ich zuhause auch eher mit Unix und nutze verschiedenste Sprachen - momentan eben wieder C++. Grundlagenwissen habe ich praktisch in allen Programmiersprachen, weil ich mir ueber die Jahre alles mal angeschaut habe. (ich habe bestimmte Phasen wo ich immer ein paar Wochen zum naechsten Projekt wechsle, momentan ist es halt der Emulator)

Diese Verruecktheit hat aber auch seine Schattenseiten. Wie bei Nerds ueblich bekommt der Computerbereich bei mir vergleichsweise viel (manchmal auch zu viel) Aufmerksamkeit. Dementsprechend sitzt man relativ viel vor der Kiste. (zumindest wenn man in so einen Flow reinkommt wie jetzt mit dem Emulator) -- wie oft auch bei Nerds (ja, als solchen bezeichne ich mich gezwungenermassen) ueblich, fallen mir ehrlich gesagt soziale Kontakte nicht so einfach. Das wurde die letzen Jahre und mit dem Alter besser, aber ich kann mit Leuten die gar nix mit Computer oder Spielen zutun haben nicht so extrem viel anfangen. Smalltalk zu irgendwelchen Sachen wo ich keine Ahnung habe, faellt mir besonders schwer.

--

Hatte gestern Abend noch eine Idee, und ich habs heute morgen einfach mal umgesetzt:


Fuck yeah. :cool: (aber Steuerung und Timing muss man noch richtig hinbekommen)

Man kann sagen was man will, aber in der Hinsicht ist C/C++ schon ziemlich cool. Ich habe den Emulator auf einer komplett plattformunabhaengigen Ebene gebaut und bin trotzdem sehr Hardwarenah. Mit ein wenig Code drumrum kann ich den Emulator praktisch auf jedem System zum laufen bringen, wenn die Performance mitspielt.
 
Ob du es glaubst oder nicht, aber ich programmiere in der Arbeit seit 10 Jahren unter Windows.
Hab ich mir schon gedacht. Ist ja immer noch das größte Steckenpferd in Deutschland. Wobei ich persönlich keine Lust habe, nach dem Studium in der Ecke zu arbeiten. Ich würde gerne etwas mehr nach vorne schauen. Man soll sich ja seinen Interessen entsprechend bewerben ^^

Ich habe mit dem Programmieren erst richtig mit dem Beginn des Studiums angefangen. Das ich überhaupt da reingekommen bin war eigentlich auch eher einer falschen Studiengangsbeschreibung geschuldet. Ich bin eigentlich mehr der Ingenieurstyp, aber jetzt doch mehr der Informatiker.

Darfst du Projekte leiten, oder bist du Arbeitssklave?

In unserem Job muss man staendig lernen. Und das ist genau das was ich mache. Ich bin in einem staendigen Lernprozess und versuche zuhause immer etwas anderes zu machen.
Hast du dich auch mit verkopfteren Themen auseinandergesetzt, zB Komplexitätstheorie, Algorithmen- und Datenstrukturen, Logik, Diskrete Mathematik, Statistik?

wie oft auch bei Nerds (ja, als solchen bezeichne ich mich gezwungenermassen) ueblich, fallen mir ehrlich gesagt soziale Kontakte nicht so einfach. Das wurde die letzen Jahre und mit dem Alter besser, aber ich kann mit Leuten die gar nix mit Computer oder Spielen zutun haben nicht so extrem viel anfangen.
Über mehr als IKT, Musik, Filme, Spiele und Kinder kann ich auch nicht reden. Ich hab auch eine Abneigung für den Boulevard entwickelt. Ich schau auch kein Fernsehen. Lese nur im Web oder Die Zeit. Da gehen einige Themen flöten vor allem, wenn man mit den Freunden zu tun hat, die kein Studium gewählt haben. Ist zwar auch Klischee, aber die meisten ziehen sich so was rein, von der Uni die Leute, kaum. Auch für Sport hab ich kein großes Interesse, hab mir schon angewöhnt, darüber zu lesen, mich mehr dafür zu interessieren, dass ich nicht wie der letzte Depp daneben stehe ^^

Wer von der Uni kommt, der soll ja ins "Management". Deswegen soll man für Smalltalk ja Kunstausstellungen besuchen (haben sie diesen Monet gesehen?), Opern/Theater, Bücher, damit man über "verkopfteres" beim Geschäftsessen reden kann.... Mir egal, haben sie The Dark Knight Rises gesehen? BOOOM! und BAAAM und Bane! :D

Was ich sagen will, dass mit dem Smalltalk ist entweder für jeden ein Problem, oder zumindest für jeden, der mehr mit seiner Arbeit/Hobbies verbringt als mit dem Rest ^^

Und der Emulator auf dem iPhone! Du Gott :D

Falls ich mal mit anderen eine zündende Start-Up Idee habe, darf ich auf dich zurückkommen? Vielleicht hab ich ein tolles Angebot für dich? Und auch umgekehrt, von dir kann man sooo viel lernen ^^
 
PSN-Name: chrizeliq
Hab ich mir schon gedacht. Ist ja immer noch das größte Steckenpferd in Deutschland. Wobei ich persönlich keine Lust habe, nach dem Studium in der Ecke zu arbeiten. Ich würde gerne etwas mehr nach vorne schauen. Man soll sich ja seinen Interessen entsprechend bewerben ^^
Bei mir hat es damals recht gut gepasst, weil um 2000 rum war Delphi das womit ich damals am liebsten gearbeitet habe. Es war damit zumindest deutlich einfacher gut aussehende Windows-Anwendungen zu schreiben als mit C oder C++. (Ich habe aber damals auch schon einiges mit C und C++ gemacht, kann mich noch erinnern dass ich die Windows-API-Befehle auswendig gelernt habe um ein Fenster anzuzeigen... wuerde ich heute wohl nicht mehr machen. ;))

Darfst du Projekte leiten, oder bist du Arbeitssklave?
Es waere wahrscheinlich Zeitverschwendungen wenn ich mich mit dem Managen von Projekten (im Sinne von mit dem Kunden aergern) rumschlagen muesste. Das ist bei einer kleinen Firma wahrscheinlich anders als bei einer grossen Firma. Bei einer kleinen Firma macht man von jeher sehr viel selber wo es bei grossen Firmen verschiedene Positionen gibt. Das hat alles seine Vor- und Nachteile... durch meine Erfahrung bin ich allerdings natuerlich sehr haeufig Ansprechpartner fuer alle moeglichen Fragen.

Ich habe auch schon Software gebaut die andere Leute heute ihre feste Arbeitsstelle sichern und ihr Leben finanzieren, weil sie jetzt exklusiv an meiner Software programmieren bzw. extra nur desshalb eingestellt wurden. Klar, ich entwickle mich einfach aufgrund der Umstaende immer mehr in eine leitendere Position - ich war z.B. auch schon bei ein paar Bewerbungsgespraechen dabei etc. Aber das ist auch eines meiner Lebensziele -- ich will mal eine eigene Firma haben. Das ergibt sich einfach aus verschiedenen Tatsachen (z.B. ist mein Vater auch selbststaendiger Unternehmer und bei so Sachen wie OnPSX und anderen in der Vergangenheit war ich immer der, der die Sache in die Hand genommen hat -- anscheinend wirke ich auf Leute auch wie jemand zu dem sie hinaufschauen koennen, anders kann ich mir das nicht erklaeren) In der Hinsicht sollte man die Sache mit einer eigenen Firma allerdings nicht ueberstuertzen, und ich kann da auch noch viel lernen. Von der Vergangenheit her weiss ich, dass ich inzwischen auf einem Level bin wo ich ganze Softwareprodukte entwickeln kann. :)

Ein Kunde von uns macht mit dem Webshop den ich entwickelt habe Umsaetze im 8-stelligen Bereich. ;)

Hast du dich auch mit verkopfteren Themen auseinandergesetzt, zB Komplexitätstheorie, Algorithmen- und Datenstrukturen, Logik, Diskrete Mathematik, Statistik?
Ich habe einige Standardbuecher zum Thema...
Aber bei weitem nicht alles gelesen.

Ich habe vergleichsweise viele Java-Buecher (verglichen mit den anderen Sprachen) -- und das obwohl ich nie etwas nennenswertes in dieser Sprache gebaut habe bis auf ein paar Spiele... aber daher kommt mein Java-Wissen wie crack-king bemerkt hat... ansonsten sieht man, dass ich zu fast allen nennenswerten Programmiersprachen Buecher habe... C, C++, Haskell, Lisp, Java, Objective-C, Perl, Ruby, JavaScript, Scala, Python (Django), Delphi, ... zu PHP lustigerweise kein einziges Buch, aber ich sehe PHP mehr als Mittel zum Zweck an und empfinde es nicht als schoene Sprache von der man was lernen koennte... und einige Buecher zur Spieleprogrammierung, 3D-Mathe etc... das Buecherregal deckt sich ganz gut mit dem was mich interessiert und was ich die letzten 10 Jahre alles mal gemacht habe.

Es gibt ein relativ bekanntes Essay von Peter Norvig: Teach Yourself Programming in Ten Years -- wenn man sich die Punkte da so anschaut -- im Grunde ist das das, was ich die letzten 10 Jahre gemacht habe. Und es stimmt tatsaechlich... man wird ein ziemlich guter Programmierer.

Ehrlich gesagt sind mir Algorithmen auch etwas zu trocken, und ich hab sie in den letzten 10 Jahren praktisch nie gebraucht. Interessanter und viel wichtiger (und in der Forschung noch in den Kinderschuhen) finde ich Themen wie Softwaredesign - wie man grosse komplexe Systeme aufbaut die wartbar sind... Test Driven Development, Behavior Driven Development -- die pragmatischen Ansaetze, das sind die interessanten Sachen und die lernt man nur in der Praxis. Eine gute Software baut dir nur jemand mit Erfahrung.

An der Uni lernst du oft nur die theoretischen Ansaetze, dann werden irgendwelche UML-Diagramme gezeichnet. Ernsthaft. Das ist in den meisten Faellen total weltfremd. Eine Software wie bei einem Architekten mit riesig aufwaendiger Planung umzusetzen ist Bloedsinn und zum Scheitern verurteilt. Natuerlich muss man Software irgendwie planen, aber es ist immer ein Grad zwischen Theorie und Praxis. Leute von der Uni entwickeln dann mal gerne viel mit Design Patterns und zig Klassensystemen um ja extremst flexibel zu sein. Dass den Mist dann keiner mehr versteht und anwenden will, daran denken sie nicht. (ein gutes Beispiel sind einige Java-Libraries)

Siehst du. Ich sehe es eher wie Apple. Apple ist auch eine sehr praktische Firma. Wenn du dir die Klassenbibliothek von Cocoa anschaust merkst du, dass sie fuer Menschen gebaut wurde. Von einigen Java-Libs kann man das nicht behaupten.

Mathematik ist jetzt auch nicht meine Staerke. Ich habe allerdings etwas wissen in linearaer Algebra, weil man das fuer 3D-Spieleentwicklung braucht. Wie man an meiner Bibliothek sieht, habe ich ein paar Buecher darueber.

Falls ich mal mit anderen eine zündende Start-Up Idee habe, darf ich auf dich zurückkommen? Vielleicht hab ich ein tolles Angebot für dich? Und auch umgekehrt, von dir kann man sooo viel lernen ^^
Du bist nicht der erste. ;) Wie immer kommt es drauf an.
 

crack-king

Administrator
Team-Mitglied
systems, systems, systems, systems, systems, systems
Das ist echt immer faszinierend von dir zu lesen :D Irgendwann können wir sagen:"Den chrizel, den kenne ich. Habe mit dem zusammen bei Onpsx gearbeitet" :D

Nicht falsch verstehen, aber für mich bist du einer der letzten "echten Nerds". Ist jetzt aber gar nicht negativ gemeint. Du machst die ganze Sache echt noch mit Herzblut und daher bist du auch so gut! Du bist noch in einer Zeit aufgewachsen, als die Informatik mehr oder weniger in den Kinderschuhen steckte und man selbst mit einem normalen Schulabschluss viel erreichen konnte.

Heute ist man ja schon ein Nerd, wenn man WoW zockt :ugly: Und wenn man so sieht, was alles Informatik studiert, weiß man, dass die Informatik im Mainstream angekommen ist. Bei jedem zweiten kann man sagen, dass er das Semester nicht überstehen wird. Informatik ist halt in, man kann damit gutes Geld machen und alle denken man wäre der Größte auf Erden. Echt schade eigentlich...

Aber echt beeindruckend, was du alles kannst bzw. wo du Kenntnisse von hast (Bei der Android ONpsx-App wirst du gesondert erwähnt :ugly: )

Übrigens..Wie du schon sagst, wird testen immer wichtiger in der Programmierung. Gibt da ja unterschiedliche Ansätze und zumindest bei uns an der Uni ist sowas mittlerweile auch Thema. Zwar nicht viel und ausführlich, aber es wird immerhin angesprochen.

Und DANKE! Endlich mal jemand der UML-Diagramme für sinnlos hält :D Vor allem in der Schule fand ich es nervig. Man sollte erst stundenlang ein Diagramm entwickeln, um nachher nur E-Mail Adressen auszulesen xD Man muss schon wissen, was man macht, aber manchmal kann man es auch übertreiben.
 
Top