Blutiger Anfänger C++ sucht Richtung



  • Hallo,

    ich habe mir in PHP ein Server basiertes und mit MySQL angetriebenes Analyse Programm gebaut, welches über einen Cronjob alle Zahlen auswertet. Die grafische Darststellung von Diagrammen ist aktuell in Excel gelößt.

    Nun überlege ich die ganze Sache als Windows Programm zu realisieren. Die Rahmenbedingungen:

    Aus einer auf dem Windows Rechner installierten PostgreSQL Datenbank werden einzelne Datensätze ausgelesen und in eine neue Datenbank geschrieben. Dort werden die Daten durch das Programm aufbereitet und ausgewertet. Es können durchaus 1+ Mio Datensätze vorhanden sein. Das Programm selber wird/soll dann am Ende Tabellen mit Zahlen und Diagramme anzeigen.

    Ich habe Erfahrung in PHP,HTML,MySQL und CSS/SCSS. Was C++ angeht bin ich blutiger Anfänger, arbeite derzeit aber einige Tutorials (u.a. alle video2brain tutorials) durch um zu sehen ob und wie ich mein Projekt realisieren kann bzw. um einen Einstieg zu finden.

    Ein paar kurze Fragen (bitte nicht lachen):

    Zunächst einmal würde mich interessieren was es mit 32bit und 64bit Entwicklungen auf sich hat. Fange ich mit 32bit an, oder wird direkt auf 64bit entwickelt? RAM wäre im Zusammenhang mit den Auswertungen schon wichtig, aber nicht jeder hat ein 64bit System. Verlangen 2 Systeme auch 2 unterschiedlich geschriebene Programme? Muss ich für MAC etwas komplett eigenes schreiben?

    Das Programm soll mit Unterstützung einer MySQL Datenbank auf dem Rechner laufen, da ich bereits einiges an Erfahrung mit MySQL gesammelt habe. Müsste der Nutzer diese Datenbank extra installieren oder wäre es möglich alle Installation-Routinen über das Programm laufen zu lassen? Der Nutzer soll das Programm so unkompliziert wie möglich installiert bekommen, daher meine Frage.

    Ist Visual Studio Ultimate 2013 der Profi unter den Entwicklungsumgebungen bzw. was ist wohl der Standard (Kommerziell und Open Source).

    Würde mich über ein paar kurze Anregungen freuen, damit ich ungefähr einschätzen kann in welche Richtung ich arbeiten muss.

    Gruss...



  • Standardkonformes C++ sollte auf 64 und 32 bit laufen. Solange du nicht durch irgendwelche libraries limitiert bist und keinen Scheiss machst, wie pointer in integer zu speichern, reicht es, das Programm einfach noch einmal neu zu compilen.
    Beachte bei 32 bit, dass die Programme normal nur 2 GB verwenden koennen und man fuer mehr ein entsprechendes flag setzen muss (funktioniert aber normal nur, wenn das OS 64 bit hat).
    Wie gross sind denn die Datensaetze? So ein paar Zahlen sind doch nicht soviel. Fuer 1 mio Eintraege brauchst du auch schon 1000 Byte grosse Datensaetze um den GB vollzukriegen, um an die 2 bzw. 4 GB ranzukommen muss es noch etwas mehr sein.
    Musst du alles gleichzeitig verarbeiten? So wie ich das sehe, hat Datenbanksoftware den Sinn, Teile der Daten auf Platte abzulegen. Wenn du einzeln oder in kleinen Bloecken verarbeiten kannst, brauchst du nur einen geringen Teil der Arbeitsspeichers.

    Schreib bloss kein Programm, das installiert und ausfuehrt. Das dauert nur lange und Installer in C++ sind scheisse. Nimm lieber NSIS. Das geht fuer dich einfacher, fuer Anwender einfacher und sieht viel professioneller aus.



  • Ich würde darüber nachdenken ob es wirklich ein MySQLServer sein muss oder ob man auch http://www.sqlite.org/ einsetzen kann....



  • Hallo Ihr beiden,

    erstmal danke für eure Antworten. Die Datenmenge liegt aktuell bei ca 3GB in einer MySQL Datenbank mit 1,2 Mio Datensätze. Wenn, dann würde ich auf eine PostgreSQL Datenbank bauen. Der Grund dafür ist, daß beide Programme die mir die Datensätze bereitstellen bereits eine PostgreSQL Datenbank auf dem lokalen Rechner erfordern und der Anwender diese somit schon installiert haben wird. Nur muss ich dafür alle mühsam erstellten Abfragen in MySQL auf PostgreSQL umbauen, was halt weniger Spass macht. Ich habe mich bereits sehr an MySQL gewöhnt und finde es einfacher damit zu arbeiten.



  • Kurz nachgefragt:

    Auf welchen Projekt-Typ sollte ich mich in Visual Studio 2013 konzentrieren? Da ich C++ lernen möchte, frage ich mich nun mit welchem Projekt-Typ ich am besten entwickeln kann. Das Programm soll eine ausführbare .exe werden und nach Möglichkeit auf Windows und MAC compiliert werden (also muss ich Standard konform C++ programmieren, richtig?). Das GUI würde ich gerne mit einem Interface gestalten (Menü bauen, Buttons erstellen, Diagramme grafisch abbilden etc).

    Fange ich mit einem leeren C++ Dokument an oder ist MFC für so etwas geeignet? Meine Frage ist für jeden Programmierer sicher ein Witz, ich muss aber irgendwo anfangen und möchte zumindest für den Einstieg in die richtige Richtung arbeiten.

    Bezüglich der Datenbank werde ich ggf. doch die PostgreSQL nutzen, da der Anwender diese in jedem Fall schon auf seinem Rechner installiert haben wird. So weit bin ich aber noch lange nicht.



  • Schaue schon den ganzen Tag im Netz und werde mir das QT Project einmal näher anschauen.



  • Also, Du planst ein C++ Projekt mit Anwendern außer Dir und bist noch Anfänger in C++. Au Backe! Das ist wie, wenn Du auf Portugisisch ein Buch schreiben und verkaufen willst, ohne dass Du Portugisisch kannst. Aber Du kannst Deutsch und Englisch. Ich will Dir die Laune nicht verderben sondern nur eine realistische Einschätzung abgeben: Da wird Murks bei rauskommen -- es sei denn, Du hast mindestens noch 1 Jahr Zeit, um in die Sprache "reinzukommen". In diesem Jahr brauchst Du aber Lehrmaterial höherer Qualität als irgendwelche Tutorials aus dem Netz, die oft selbst nur von Halbwissenden geschrieben wurden.



  • Ja, ist sicher eine Herausforderung. Aber so hoch sind die Anforderungen an das Programm nicht. Im Grunde geht es nur um das Ausführen von SQL Anweisungen (PostgreSQL), Schleifen, If Anweisungen und einfache mathematische Operatoren.

    Learning by doing! Das hat für mich auch mit PHP+MySQL,HTML,CMS,CSS/SCSS geklappt und das Programm steht und läuft. Mit dem GUI habe ich in QT schon angefangen und eine erstes Menü steht.

    Mir ist klar, daß C++ komplex ist. Jemand der Portugisisch lernen möchte, dem würde ich raten 1 Jahr ins Ausland zu fahren. Ich springe also gerne in das kalte Wasser, was man anhand meiner Fragen sicher erkennen kann 😃 Zeit habe ich jede Menge!



  • Ins kalte Wasser springen ist ganz nett. Ich würde dir aber dringend empfehlen dich irgendwann doch in Undefined Behavior einzulesen. Man schreibt was völlig harmloses hin, sowas wie a = a++; und das Programm macht kompletten Blödsinn. Davon gibt es noch viel mehr Beispiele, die dir irgendwann auf die Füße fallen werden. Sowas kann man mit Learning by Doing leider nicht lernen.



  • nwp3 schrieb:

    Man schreibt was völlig harmloses hin, sowas wie a = a++; und das Programm macht kompletten Blödsinn.

    ~~Was soll daran undefiniert sein?
    In a wird immer a inkrementiert drin stehen...

    zu erst wird nämlich a = a ausgeführt und danach a= a + 1.~~

    Schwachsinn sry 😕


Log in to reply