ClientServer Programm als C++ Anfänger [was: Anfänger Fragen]



  • Hi wie aus dem Titel schon zu ersehen ist ich bin beginner, und ich hätte auch gerne die suchfunktion des Forums genutzt um mich schonmal etwas durchzuelsen die ist allerdings wohl nicht funktionszüchtig im moment....

    Ich habe zwar viel Erfahrung mit HTML,VRML,WML,XML,JavaScript,ActionScript etwas PHP und auch ein ganze klein wenig JAVA aber bis auf JAVA ist keins davon ne echte programmiersprache, und JAVA kann ich gerade mal ein wenig lesen...

    Mein END-Ziel ist es anwendung zu schreiben die auf Client Server ebene laufen wobei ich gerne die Clientseitige Lösung am liebsten in Flash(swf oder Projektor-EXE) erstellen würde um dann per Socket auf eine C++ Anwendung zuzugreifen und dann auf eine mySQL DB zuzugreifen.

    habe ein paar, für euch wahrscheinlich, ziemlich blöde fragen dazu.

    1. ist C++ überhaupt das Richtige für mich? es geht mir um schnelligkeit hauptsächlich, natürlich auch um zuverlässigkeit und stabilität, es sollte möglich sein damit eine socket programmieren zu können die unter umständen auch 50000 user gleichzeitig bedienen kann mit raw data aber auch media inhalten (streams)und dazu noch auf ein db system zugreifen kann oder eben eine anwendung die die enduser auf diverse server und sockets verteilt, ist C++ dazu am besten geeignet oder wäre dafür was anderes besser?

    2. wie fange ich am besten an. mir fehlt sozusagen ne kleine einführung bzw ein leicht verständliches tutor für anfänger um die grundfunktionen des Compilers bzw die eigenschaften der sprache kennen und verstehen zu lernen

    3. welchen Compiler empfehlt ihr und da meistens sich bücher und tutors auf einen compiler beziehen welches Buch (möglichst e-book) oder welches "einsteiger" tutor empfehlt ihr dazu.

    Ich hoffe ich bekomme ein paar nützliche tips die jemand der sich zwar schnell reinarbeitet dem aber sozusagen der startschuss fehlt weiterhelfen die Grundfunktionen des Compilers und die Eigenschaften der Sprache zu begreifen.

    MfG
    Sascha

    <edit=kingruedi>
    bitte vernünftige Topics benutzen
    wmfrs
    </edit>



  • Also mit C/C++ hast du die volle Kontrolle über alles was das Programm so macht, und damit natürlich auch über die Performance.
    Wenn du jetzt mal anfängst, hast du schon in etwa 2 - 3 Jahren auch das notwendige Know-How um eine Anwendung zu schreiben die deinen, eigenen Anforderungen so halbwegs gerecht werden kann.



  • 1. ist C++ überhaupt das Richtige für mich? es geht mir um schnelligkeit hauptsächlich, natürlich auch um zuverlässigkeit und stabilität, es sollte möglich sein damit eine socket programmieren zu können die unter umständen auch 50000 user gleichzeitig bedienen kann mit raw data aber auch media inhalten (streams)und dazu noch auf ein db system zugreifen kann oder eben eine anwendung die die enduser auf diverse server und sockets verteilt, ist C++ dazu am besten geeignet oder wäre dafür was anderes besser?

    Das Problem für dich an C++ wird sein, dass C++ eine recht komplexe Programmiersprache ist, die nicht gerade entworfen wurden um Leuten das leben leicht zu machen, die sich nicht wirklich gut mit C++/Programmieren auskennen. Da baut man als Anfänger viele Fehler und hässlichkeiten ein.

    (Objekt) Pascal oder Basic Dialekte (Gamba,VisualBasic oä.) wären sicher besser geeignet. Aber für die Aufgabe nicht unbedingt zutreffend

    2. wie fange ich am besten an. mir fehlt sozusagen ne kleine einführung bzw ein leicht verständliches tutor für anfänger um die grundfunktionen des Compilers bzw die eigenschaften der sprache kennen und verstehen zu lernen

    http://tutorial.schornboeck.net/inhalt.htm
    http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html
    http://www.c-plusplus.net/tuts/cpp/cpp_notizencpp.zip

    http://www.c-plusplus.net/tutorials.htm
    http://www.c-plusplus.net/bucher.php

    (kleiner Tipp beim Bücher kauf.
    1. dünne, billige Bücher sind idr. nicht gut
    2. Bücher zu dem Thema "Visual C++" oder "Borland C++" sind idr. nicht gut, da sie idr. nur eine kurze Einführung in die bei den Compilern mitgelieferten Frameworks geben, aber keine Einführung in C++!
    )



  • 3. Markt und Technik Bücher sind per definition schlecht,also nicht kaufen.
    4. gute Bücher sind mindestens 900 seiten dick und kosten mindestens 40€,schau mal bei amazon nach c++ lernen und professionell anwenden,is für leute die schonmal irgendwas programmiert haben gut verständlich.



  • Gutes Buch ist auch: Ulrich Breymann: "C++ Eine Einführung"
    Mit dem hab ich auch angefangen. Es ist ausführlich genug, umfasst alle grundlegenden Themen und ist genau. Und Fachnegriffe lernst du dabei auch noch 😉



  • wenn du schon etwas Java kennst, dann wuerd ich vorschlagen, dass du einfach dabei bleibst! 🙂

    Java ist trotz all den Mythen gar nicht so langsam, solang man keine Grafische Oberflaeche (GUI) mit einbaut. Und eine Server-Anwendung brauch ja keine Aufwaendige Bedienoberflaeche. Ich wuerd sogar soweit gehen zu sagen, da ist es gleichschnell wie C++, oder zumindest kaum merkbar langsamer. Java ist einfacher zu lernen als C++, aber du lernst dabei sehr, sehr viel, das dir spaeter hilfreich sein wird, wenn du dich dann doch noch entschliesst, C++ zu lernen. Beide Sprachen sind sich sehr aehnlich, nur ist C++ mehr Low-Level (du musst dich z. B. selbst um die Arbeitsspeicherverwaltung kuemmern, bei Java nicht). Was Java an Performance gegenueber C++ einbuesst, das sparst du dir an Lern- und Entwicklungsaufwand. Und bei deinem Projekt (das SEHR SEHR hochgesteckt ist fuer ein Einsteigerprojekt, aber IMO machbar - auch wenn's sehr schwierig wird) wird der Entwicklungsaufwand ziemlich gross sein. Und du wirst auch so sehr, sehr viel zum Lernen haben, ich wuerd dir wirklich von C++ abraten. Du kannst wirklich 2-3 Jahre einrechnen, bis du C++ _WIRKLICH GUT_ kannst. Aber auch an Java wirst du eine ziemliche Weile zu knabbern haben, sei gewarnt!

    Ein weiterer Vorteil ist, dass Java plattformunabhaengig ist. Du kannst z. B. auf Windows programmieren und deinen Server dann problemlos unter Linux laufen lassen. Bei anderen Sprachen (auch C++) ist das nicht immer selbstverstaendlich (da du viele externe Libraries verwenden wirst, die es z. B. fur Windows gibt, fuer Linux aber nicht, oder umgekehrt).

    Was du fuer Java brauchst, ist zum einen das JDK (Java Development Kit), das du bei SUN (dem "Macher" von Java) finden kannst, unter http://java.sun.com/. Mit dem JDK kannst du deinen Quelltext in Bytecode uebersetzten (also quasi Compilieren). Du solltest auf der Seite von SUN auch ein Paket aus JDK & dazupassender IDE (der Entwicklungsumgebung Netbeans) finden, aber es gibt auch viele gute Freeware-IDEs im Netz. Einfach mal danach googeln.

    Ebenfalls im Internet findbar sind viele gute e-Books zu Java. Auch einige Buecher, die es auch als Buch zu kaufen gibt, gibt es ganz legal im Internet als eBook. Schau mal in die FAQ dieses Forums, da gibt es glaub ich einen Thread, wo viele Tutorials & eBooks zum Thema Java aufgelistet sind.

    Ich hoff das hilft dir weiter 🙂



  • Erstmal allen Danke für die ausführlichen Tips 🙂

    Helper , tja 2-3 Jahre ist harter tobak aber so wie es aussieht wohl eine realistische Einschätzung, nunja Rom wurde auch nicht an einem Tag erbeut

    Kingruedi, vielen Danke für deine Ausführungen und die Links, habe Sie alle mal unter meine Favoriten gepackt und werde Sie dieses WE mal durchgehen 🙂

    Otze, Markt und Technik Bücher kenne ich noch aus meinem Atari XL Zeiten und Sie sind defentiv nicht zu empfehlen 😉

    Randa, Danke für den Buchtip ich werd mir das Buch heute mal Anschauen und es mir dann zulegen. 🙂

    Blue-Tiger, Java ist sicherlich die grosse Alternative aber da es schon einige Versuche gibt das was ich will mit JAVA zu realisieren und bisher alle mehr oder weniger ihre Probleme haben, hatte ich mich eigentlich schon für C++ entschieden.
    Bisher "arbeite" ich was JAVA betrifft mit "Eclipse" und habe mir als Buch "Java ist auch eine Insel" dazu ausgesucht, da es recht umfassend ist jedoch bei den Grundbegriffen anfängt 🙂

    Ich denke ich werde wohl mit JAVA weitermachen und gleichzeiteig in C++ einsteigen um dann zu sehen wo die grossen Unterschiede liegen und womit ich besser zurecht komme. Evtl. ist ja auch eine kombination aus beidem recht sinnvoll.

    Wie gesagt erstmal allen Danke, wenn noch andere Forumsmitglieder Tips haben, würde ich mich über diese sehr freuen.

    MfG
    Sascha



  • 2 programmiersprachen gleichzeitig lernen bringt nix.
    also ich bin mit c++ schon voll ausgelastet,vorallem würde ich dann mit verwechslung der syntax probleme bekommen:"ist das nun java oder c++ schreibweise?".
    aber fang erstmal mit java an,Java kann dasselbe was C++ kann,naja bis auf das ganze lowlevel zeugs, aber das is ja nich so wichtig für dich denk ich mal.

    Das problem bei solchen hoch angesetzten projekten in der "lernphase" ist vor allem,dass man die Fähigkeiten der sprache nichmal ansatzweise begreifen kann.bsp c++, ich hab mir letztens das Buch "modernes C++ Design geholt" und mir steht immernoch vom 2. oder 3. beispiel der Mund offen,so genial war das, was da drin stand.

    Vorallem is es aber auch demotivierend, wenn du ein großes ziel hast, anfängst zu programmieren, und alle 2monate neu anfängst, weil du merkst,dass dein ansatz von deinem "neuen" wissensstand aus, absoluter schrott ist(da hilft auch eine noch so gute planung nichts, man kann die sprache einfach noch nicht einschätzen).



  • hmm naja um einen etwas genaueren überblick zu verschaffen was ich eigentlich damit möchte ist:

    Chat
    Messenger
    Videoconferencing
    Forum
    E-Mail
    internet-Radio
    MP3 on demand
    Video on Demand
    (falsh)Webesiten erstellung
    Office-groupware funktionalität (terminplaner, notizbuch, pdf schreiben, tabellenkalkulation, datenbankverwaltung, mms, sms, fax...)
    Auktionshaus
    Online Flirt-single datenbank
    p2p

    ... etc

    einiges davon liesse sich ja einfach mit php machen, jedoch gerade beim chat den ich der geschwindigkeit zu liebe über seine socket laufen lassen möchte fängts an mit der geschwindigkeit und der begrenzten user anzahl, wenn ich über video on demand nachdenke, komme ich mit php nicht weit, genauso wie bei p2p etc.

    entweder ist das was ich "fordere" bzw. mir wünsche, mit dem mir bekannten nicht realisierbar oder der server würde überlastet sein bzw. die geschwindigkeit nich akzeptabel oder eben die gewünschten besucher zahlen nicht erreichbar.

    da ich aus dem bereiche Webdesign und Webentwicklung komme und mich schon seit längerem mit Macromedia Flash/Actionscript beschäftige dachte ich evtl. schon an den einsatz eines FCS(Flash Communication Servers) der einiges von oben genanntem einfach unterstützt und mitbringt, jedoch sind mir die kosten bei der dort vorliegenden lizenzlimitierung zu hoch und die zukünftige entwicklung zu ungewiss.

    Da ich mich eh lieber auf selber erstelltes verlasse und lieber an die basis gehe dachte ich an c++ da ich mit java schon öfters die leidige erfahrung machen musste das es das system "krass" ausbremst, inwiefern das auch bei server anwendungen der fall ist kann ich aus mangelnder erfahrung nicht beurteilen.

    eigentlich wollte ich den hauptteil des oben genannten via flash client modul realisieren das sich ja auch als projektor(exe) recht unabhängig vom betriebssystem über eine socket mit dem server verbinden lässt.

    allerdings sehe ich auch, das ich wahrscheinlich mit einer reinen lösung in einer hochsprache besser da stünde und mir das flash für eine webseite die zum modul gehört und über grundfunktionen verfügt besser fahren würde. nur in dem fall käme bei java wieder das ins spiel, was bei mir zumindest, immer mein halbes system lahmlegt, betriebssystem unabhängigkeit hin betriebsystem unabghängigkeit her.
    c++ läuft zumeist nur auf windoof rechnern also fiele mac unix weg, sowie auch tux, da mac user eh ein eigenes volk für sich sind, die einen wenn man den namen mediplayer oder winamp in den mund nimmt eh schon schief anguggen und einem i-tunes an die backe heften wollen und wohl deswegen kaum auf etwas neues umsteigen werden sowie von pc´s schonmal garnichts halten, man jedoch nie wissen kann wie lange der höhenflug der mac´s noch anhält was den heimbereich und endbenutzer markt betrifft würde ich somit eher auf windows setzen, denn so blöds klingt, auf dem pc markt führt linux immernoch ein schatten dasein, suse gibts auch nicht mehr wirklich, und laut neuesten tests ist windows xp sicherer als die aktuellen linux versionen, mal abgesehen davon das sich kaum ein enduser einen linux rechner holt, ich red ja immerhin von liesschen müller als endbenutzer, ich kann mich noch an die zeiten erinnern als ich meinen eltern den timer des videorekorders programmieren musste und selbst einige studenten und oder manager oder ärzte.... sind da nicht anders gestrikt.

    alles in allem denke ich mal das, auch wenn ich noch nicht soviel erfahrung mit c++ gesammelt habe, die syntax beider sprachen (c++ und java) doch recht unterschiedlich ist und verwechslungen da eher selten vorkommen werden, und es für mich am einfachsten wäre beides zu lernen und miteinander zu vergleichen, zumindest bis ich mir aufgrund meiner eigenen erfahrungen damit selbst ein bild machen kann was für mich am sinnvollsten und "einfachsten" ist um dies dann weiter zu vertiefen.

    Gruss Sascha

    Ich hoffe ich hab euch nun nicht "ein ohr abgequatscht" 🙂



  • Du irrst dich, du kannst sehr wohl C++ so schreiben, dass es auf Mac, Linux und Windows funktioniert (oder nur mit ganz kleinen Aenderungen). Nur musst du dann immer genau aufpassen, was fuer externe Bibliotheken du einsetzt. z. B. als graphische Oberflaeche wxWidgets (www.wxwidgets.com) => das funktioniert auf allen 3 Systemen. Du musst es nur fue jedes System getrennt kompilieren. Und ansonsten kannst du jede Funktionalitaet, die z. B. in der STL steckt, ohne dir Gedanken zu machen auch auf allen 3en verwenden 🙂

    Wie gesagt, nach dem was ich so hoere bremmst Java nur aus, wenn graphische Oberflaechen mit im Spiel sind! Ich selber kann Java nicht und hab deshalb wenig Eigenerfahrung... aber als C++ Programmierer kann ich ohne groessere Schwierigkeiten Java-Quelltext lesen und verstehen, die Syntax der beiden gleicht sich wirklich sehr, sehr stark (dich irritiert momentan vielleicht dass man in Java jede Funktion in eine Klasse stecken muss, deshalb schauen Javaprogramma anfangs etwas anders aus (v.a. was den Funktionskopf betrifft), aber glaub mir, die beiden stehen sich nahe). Trotzdem ists nicht sehr sinnvoll, beides gleichzeitig zu machen.

    Du benoetigst 1. viel mehr Zeit, und 2. musst du alles doppelt lernen. Wuerdest du erst eine Sprache lernen, ginge die 2te viel besser von der Hand, weil du sagen kannst "kann ich schon, beherrsch ich schon". Momentan kannst du das einfach nicht (auch wenn es dir vielleicht so vorkommt), weil dir die noetige Erfahrung fehlt. Und deshalb sinkt auf lange Sicht auch die Lernmotivation, und das waer ganz schlimm.

    Zu den Betriebssystemen: mag sein dass Windows auch mittelfristig den Desktopmarkt beherrscht. Aber der Businessbereich (der nicht zu unterschaetzen ist!) steigt immer mehr auf Linux um (inwieweit sich das auf den Desktopmarkt auswirkt darf jeder fuer sich entscheiden). Und zumindest Serverseitig wuerde dein Programm wesentlich besser ausschauen, wenn es auch mit Unix zurecht kommt. Auf der Anwenderseite magst du recht haben, da kann man auch bei Windows bleiben, vorerst. Aber wie gesagt: du kannst auch C++ portabel schreiben, so dass du spaeter fuer fuer die Portierung auf Linux nur einmal neu kompilieren musst (im Idealfall).

    ABER: was du da vorhast, ist eine KILLERAPPLIKATION! fuer sowas wuerden mehrere Profis Monate oder Jahre benoetigen. Du, als Anfaenger, der noch dazu allein ist, wirst dich da sehr, sehr, sehr, sehr, (sehr, sehr, sehr, .......) schwer tun. Du kannst zwar sehr viel Funktionalitaet auslagern und mit Werkzeugen machen, die du schon beherrscht: Mach soviel es geht mit PHP, wenn du das wirklich durchziehen willst. Sobald du mal eine schnellere Sprache machst, kannst du's ja neu schreiben. Keine Angst, der Aufwand, es zuerst mit PHP (Flash, was auch immer) zu schreiben, wird nicht umsonst sein: die Planung, die du da reinsteckst und all die Erfahrungen, die du mit dem System machst, wird dir 100 mal zu gute kommen, wenn du es neu schreibst. Aber wie gesagt: du nimmst dir extrem viel vor! Ich will nicht pessimistisch klingen, aber sei gewarnt, sowas durchzuziehen (besonders wenn du allein bist) ist sehr schwierig (bis unmoeglich)



  • otze schrieb:

    also ich bin mit c++ schon voll ausgelastet,vorallem würde ich dann mit verwechslung der syntax probleme bekommen:"ist das nun java oder c++ schreibweise?".

    An der Syntax wird es sicherlich nicht scheitern... 😉 :p


Anmelden zum Antworten