Was wird alles mit c++ gemacht?
-
Ich hab da mal dieses Dokument gefunden:
http://www.adevel.com/amodules3/attachment/wiki/WikiStart/About_AModules3.pdf?format=raw
Es geht nicht direkt um C(++). Aber der Vergleich der einzelnen Technologien ist sicherlich interessant.
Hauptvorteil ist die Ausführungsgeschwidigkeit. Ist ja alles Binary und muss nicht erst durch den Interpreter. Bis zu 1000 Anfragen/Sekunde (zum Vergleich: Perl <=50, Java <=200) können verarbeitet werden, mehrere tausend gleichzeitig laufende sessions cachen.
Das alles sind natürlich eher seltener benötigte Fähigkeiten. Aber für z.B. ebay, wo diese Zahl leicht erreicht wird, könnte das sicherlich interessant sein (OK, die haben wohl eher viele Server, die die Anfragen verteilt bearbeiten...)
-
Hi,
ok - ihr habt mich überredet
.
Die Ausführungsgeschwindigkeit ist sicher ein Thema. Das lässt sich auch mit anderen Techniken erreichen, aber es ist halt eine Alternative.
Der Speicherverbrauch spielt sowohl im Embedded-Bereich eine Rolle, wie auch auf hochbelasteten Servern. Da hat Tntnet mit C++ seine Stärke. Wobei es speicherhungriger, als eine reine Embedded-Lösung ist. Im Embedded-Bereich kommt natürlich noch die in der Regel langsame CPU zum Tragen. Tntnet wird beispielsweise von FreeWRT verwendet, da sich damit der Speicherverbrauch in Grenzen hält (vor allen Dingen hier der Flash-Speicher). Und auch die Antwortzeiten einer Tntnet-Applikation sind auf so einen WRT-Router erstklassig.
Mindestens zwei Applikationen, die mit Tntnet realisiert wurde, sind Closed-Source. Da kommen Techniken wie PHP oder Perl nicht in Frage. Und auch Java muss man gewisse Anstrengungen unternehmen, um den Source-Code nicht offen zu legen. Ich finde es echt erstaunlich, wie lesbar so decompilierte class-Dateien sind.
In einem bestehenden Projekt, welches in C und C++ realisiert ist, sollte eine Weboberfläche realisiert werden. Da kam es zu gute, dass man die bestehenden C- und C++-Sachen weiter verwenden konnte. Ausserdem spielte hier eine Rolle, dass das System möglichst kurze Latenzen aufweisen soll und man jegliche unnötige CPU-Last vermeidet. Hier spielte natürlich auch das Know-How des Teams eine Rolle. Statt eine neue Sprache zu lernen, konnte man seine C++-Kenntisse im Web einsetzen.
Im Open-Source-Bereich gibt es natürlich immer den Spaßfaktor als Argument. Es gibt viele Menschen (ich zähle mich dazu), die einfach gerne C++ programmieren.
Sicher gibt es auch andere Techniken, aber genau so wie ich Fragen kann: "Warum soll ich Tntnet nehmen? Das geht doch auch in ...", kann ich die Frage genausogut anders rum stellen. Ich bin der Meinung, dass C++ eine gute Sprache ist, die mir vieles bietet und daher seine Daseinsberechtigung hat. Sicher hat sie auch seine Schwächen, aber welches System hat keine?
Übrigens schafft Tntnet mehrere tausend Requests pro Sekunde. Je nach Applikation natürlich. Einfache Anwendungen liegen von der Performance im Bereich von statischen Seiten.
-
Browserspiele wären auch ein Anwendungsbereich, wo die Performance sehr wichtig sein kann. Und ich will mal das C++ Web Toolkit in den Raum werfen.
-
ja gut das meinte ich tntnet.
danke
und Badestrand_ ich guck mir das mal an.
auch danke
-
Spiele wurden zwar am Rande erwähnt, aber scheinen nicht die ihnen zustehende Würdigung erhalten zu haben.
Tatsächlich ist es so, dass heutzutage die meisten kommerziellen Computerspiele in C++ geschrieben sind. Nicht zuletzt, weil man sowohl hardwarenahe als auch auf hoher Abstraktionsebene arbeiten kann und Performance oft eine wichtige Rolle spielt. Natürlich wird nicht nur in der Sprache selber programmiert, für die Spieleprogrammierung wurden sogar spezielle APIs entwickelt. Vielleicht sagt dir DirectX oder OpenGL etwas. Davon abstrahiert entstanden wieder Frameworks, die einen bestimmten Bereich abzielten (zum Beispiel 2D-Programmierung und Plattformunabhängigkeit wie bei SFML).
-
Nexus schrieb:
Spiele wurden zwar am Rande erwähnt, aber scheinen nicht die ihnen zustehende Würdigung erhalten zu haben.
Absolut
Nexus schrieb:
für die Spieleprogrammierung wurden sogar spezielle APIs entwickelt. Vielleicht sagt dir DirectX oder OpenGL etwas.
Na ja, ich denke nicht, dass DirectX speziell für Spiele entwickelt wurde. Es ging doch eher darum, vor die Hardwarekommunikation noch eine Schicht zu packen, damit man sich für seine Software mit den spezifischen Eigenschaften einer bestimmten Hardware (z.B. Soundkarte) nicht mehr rumschlagen muss. Das bringt doch aber vielen Applikationen einen enormen Vorteil, nicht nur Spielen. Korrigier mich, falls ich mich irre.
-
Ursprünglich und Heute zum Grössten Teil in der Spieleindustrie eingesetzt:
-
wo wir grade bei spiele sind ich versuche gerade einen array in einer console
mit a und d nach links und rechts zu bewegen. Ich weiß zwar das es den ganzen code zu posten sehr ungünstig ist. Aber es geht nicht anders!#include<conio.h> #include<iostream> char a = 97; char d = 100; char mainin = 1; char p[] = {"#####"}; int pleft(); int pright(); int instream() { while(true) { std::cin>>mainin; if(mainin == a) { pleft(); } else if(mainin ==d) { pright(); } } } int pleft() { std::cout<<a; } int pright() { std::cout<<d; }
natürlich gibt es noch eine cpp datei die instream ausführt...
-
Du hast vergessen zu erwähnen, was nicht funktioniert.
Btw, ich würde dir empfehlen, mindestens 2 Zeichen einzurücken. So ist das doch eher schlecht lesbar.
-
ja?!
-
lol hm okay ^^ also verbeserrung
#include<conio.h> #include<iostream> char a = 97; char d = 100; char mainin = 1; char p[] = {"#####"}; int pleft(); int pright(); int instream() { while(true) { std::cin>>mainin; if(mainin == a) { pleft(); } else if(mainin ==d) { pright(); } } } int pleft() { std::cout<<a; } int pright() { std::cout<<d; }
so ich denke so ists besser.
Also mein problem ist das ich nicht weiß wie man
p[] auf der konsole per tastendruck nach links bzw
nach rechts bewegt. Und das wenn man zb a gedrückt hält
das dann vom programm sofort eine reaktion kommt. Wenn man a dann
loslassen würde dann würde auch die Reaktion aufhören.
Verstanden??
-
Ähm, Verbesserung? Also ich meinte eigentlich nicht, dass du Leerzeilen einfügen sollst, sondern dass du mind. 2 Zeichen nach rechts einrücken sollst.
Na ja, du deinem Problem: ich denke, unter Windows könnte GetAsyncKeyState vielleicht was für dich sein (in Kombination mit entsprechenden Schleifen).
-
_matze schrieb:
Ähm, Verbesserung? Also ich meinte eigentlich nicht, dass du Leerzeilen einfügen sollst, sondern dass du mind. 2 Zeichen nach rechts einrücken sollst.
wieso, Richard Stallman wäre stolz wenn er diesen einrückungsstil sehen würde
-
#include<conio.h> #include<iostream> char a = 97; char d = 100; char mainin = 1; char p[] = {"#####"}; int pleft(); int pright(); int instream() { while(true) { std::cin>>mainin; if(mainin == a) { pleft(); } else if(mainin ==d) { pright(); } } } int pleft() { std::cout<<a; } int pright() { std::cout<<d; }
so wärs besser.
Also zur antwort, um auf Tastatur evente zu reagieren ,da hab ich keine ahnung, aber wenn du willst wenn man bei der eingabe eines strings bzw. zeichen etwas passiert dann kann man das ja mit if/else oder switch/case machen...
-
matze:
eh ja okay jetzt nur mit Beispiel xD.
sothis:
hm versteh ich net... ^^
Wikinger75:
okay danke jetzt weiß ich auch was ihr meint mit zeichensetztung und so...
auch danke für den tipp ich versuch das jetzt selber mal probieren aba ich denke ich bekomm das net hin ...
-
<<set.GER[6] schrieb:
_matze:
eh ja okay jetzt nur mit Beispiel xD.Beispiele zu GetAsyncKeyState findet man doch haufenweise im Netz.
<<set.GER[6] schrieb:
ich versuch das jetzt selber mal probieren aba ich denke ich bekomm das net hin ...
Das ist aber keine optimale Einstellung!
-
okay dann setzt ich mich mal rann danke _matze
-
Hi,
<<set.GER[6] schrieb:
wo wir grade bei spiele sind ich versuche gerade einen array in einer console
mit a und d nach links und rechts zu bewegen. Ich weiß zwar das es den ganzen code zu posten sehr ungünstig ist. Aber es geht nicht anders!also wenn du das unter Windows reallisiern willst(wovon ich aus gehen wennste im WinAPI Teil postest) wäre die "ImprovedConsole" zu nennen. Eine kleine Warpper Klasse für die WinAPI Funktionen für die Konsole.
Kein leider keine Link finden. Der im Forum geht nicht "Permission denied". Musste mal genauer nachforschen. Wennste die nicht findest könnt ich die auch mal auf RapideShare.com uppen, falls SideWinder sein OK gibt.Grüßli Pingu
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
tntnet schrieb:
Mindestens zwei Applikationen, die mit Tntnet realisiert wurde, sind Closed-Source. Da kommen Techniken wie PHP oder Perl nicht in Frage. Und auch Java muss man gewisse Anstrengungen unternehmen, um den Source-Code nicht offen zu legen. Ich finde es echt erstaunlich, wie lesbar so decompilierte class-Dateien sind.
Kleiner Tipp: Nicht jede Closed Source Software liegt beim Mediamarkt im Regal.
Java kommt seit jahrzehnten massiv in Closed Source Projekten zum Einsatz. Nur ist das fast immer entweder Individualsoftware oder Serversoftware. In beiden Fällen bekommen Aussenstehende den Sourcecode nie in die Hand.
Aber Gratulation zu den zwei Kunden.