Jump to content
makze

Analyse-Tool

Recommended Posts

makze
Posted

Hallo Forum,

 

ich möchte mir eine Datenbank aufbauen, welche sich selbst aktualisiert und täglich Wertpapiere mit Hilfe von Indikatoren analysieren soll und so eine Prognose für den nächsten Tag geben soll.

Da ich bis jetzt recht wenig mit Datenbanken zu tun hatte, möchte ich mal von euch wissen, welche Software sich hierzu am besten eignet. Also als erstes ist mir hier Excel eingefallen. Gibt es Programme, die sich besser eignen? Wenn ja, welche und wie sind die Vorteile im Vergleich zu Excel?

 

Danke

Share this post


Link to post
Reigning Lorelai
Posted

Access?

Share this post


Link to post
makze
Posted

Access ist auch eine Variante, die ich im Hinterkopf hatte. Die Frage ist nur, welche Programme gehen besser mit den Daten um in Bezug auf Aktualisierung, Ladezeiten und Rechenzeiten. Hab wenig erfahrung mit Access. Access ist SQL oder? Vorteile von Access gegenüber Excel oder andersherum?

Also ich finde, dass die VBA-Programierung bei Excel sehr einfach ist, schon allein durch die Möglichkeit Makros aufzeichnen zu können.

 

Ich würde das Thema noch gerne erweitern und von euch erfahren, was eurer Meinung anch ein gutes Analysetool können muss.

Share this post


Link to post
H.B.
Posted

Hi,

 

nimm doch einfach ein entsprechendes Programm.

Dann musst du nicht das Rad neu erfinden.

 

Ich nutze hierfür Amibroker.

Da ist eine Datenbank drin, die man mit diversen Formaten auch automatisiert pflegen kann und es gibt eine richtige Programmiersprache, mit der du dein Handelssystem definieren kannst.

Ich meine, dass es eine VBA-API gibt, so dass du die Chartsoftware mit Excel steuern könntest.

 

Excel kommt mit Sicherheit ohne externe Unterstützung rasch an die Verarbeitungsgrenzen. Was eigentlich auch sinnvoll ist, schließlich ist eine Handelssystemprogrammierung nicht unbedingt der Anwendungsschwerpunkt einer Bürosoftware. Access würde ich gar nicht in Erwägung ziehen. SQL-Server, Oracle oder Mysql wären Datenbanken, die in Frage kommen.

Share this post


Link to post
seeadler
Posted

Hallo Zusammen,

 

mich interessiert das Thema auch sehr, bzw. arbeite ich konzeptionell an einem ähnlichen Thema.

 

Bitte nicht übel nehmen, aber bevor wir über eine Lösung, bzw. die Entwicklungsumgebung diskutieren

müssen wir erst die Anforderungen kennen.

 

 

Ich kann ja mal kurz über meine Anforderungen berichten:

 

1.)

Für eine zu definierende Anzahl von Wertpapieren möchte ich zu definierbaren Zeiten

per E-Mail als erstes die aktuellen/zeitnahen Kurse erhalten.

Weitere Wertpapierinformationen könnten später noch folgen.

Die Konfiguration sollte für verschiedene User möglich sein.

 

2.)

Eine zu definierende Anzahl von Wertpapieren

soll nach definierten Setups (Mehrzahl!) analysiert werden.

Es wird eine Wertpapierhistorie mit Tages- und Wochendaten benötigt.

Werden die definierten Grenzen erreicht soll eine E-Mail verschickt werden.

Es kann ein Report der Analyseergebnisse erstellt werden - Filter können eingestellt werden.

Die Konfiguration sollte für verschiedene User möglich sein.

Stufe 2: Die Analyseergebnisse können im Internet in einem geschützten Bereich abgerufen werden.

 

3.)

Weitere "individuelle" Analysen und Alarme können noch folgen.

 

4.)

Wird ein kostengünstiger SMS-Server gefunden, sollen die Informationen und Alarme

auch per SMS verschickt werden (Abhängig von der Konfiguration).

 

 

Für die Umsetzung würde ich ein einfaches Datenbanksystem nehmen.

Das Tool würde ich auf einem V-Server im Internet laufen lassen (Kosten ca. 6.- bis 10.- € / Monat)

Sollte es bereits ein bestehendes und bezahlbares Analysetool mit entsprechenden Schnittstellen geben, dann würde ich es gerne testen.

Amibroker habe ich noch nicht getestet.

 

Zum Screening, Backtesting und zur "händischen" Analyse benutze ich aktuell ProRealTime und WISO-Börse 2008.

 

Ich würde mich sehr freuen wenn wir gemeinsam an dem "kleinen" Analyse-Tool Projekt arbeiten.

Share this post


Link to post
makze
Posted

Also ich kann dann hier ja auch mal das Programm darstellen, an welches ich gedacht hatte:

 

Ziel: eine Tagesprognose für Dax (kann dann in der weiteren Entwicklung erweitert werden)

Grund: CFD-Handel auf Tagesbasis im Dax

 

Wie soll dies geschehen?

 

1. Die Daten der Daxer werden von dem Programm auf Tagesbasis aus dem Internet aktualisiert beim Start

2. Indikatoren etc werden auf Grundlage der Kurshistorie berechnet

3. Interpretation der Indikatoren etc der Einzelwerte und Prognose der Einzelwerte

4. Prognose für den Dax durch gewichtete Zusammenfassung der Einzelwertprognose

 

In meiner Überlegung war dies noch nicht so komplex wie von dir beschrieben und auch nicht auf einem Server, sondern auf dem Rechner. Sie Interpretation wäre hier auch erstmal im Anfangsstadium (v1.0) statisch und wenig flexibel, also auf jeden Wert einzel abgestimmt. Also erstmal alles etwas primitiver...

 

Aber sehr intressante Gedanken, vielleicht sollte man gleich etwas komplexer rangehen, obwohl ich SMS-Nachrichten und E-Mails erstmal nicht als entscheidend sehe. Also ich sehe es so, dass man Kauf- bzw. Verkaufsignal angezeigt bekommt, wenn man das Programm am Abend nach Börsenschluss öffnet. Den E-Mail eingang checken kostet ja dann wohl ähnlich viel Zeit.

 

Der Grund für die eigene Programmierung:

Habe gehört, dass AnalyseTools in der Regel nicht kostenfrei sind und um diese Kosten zu umgehen und dabei Erfahrung mit Indikatoren etc zu sammeln kam die Idee der eigenen Programmierung

Share this post


Link to post
makze
Posted

Mich würde der Unterschied zwischen Access und Excel intressieren. Hab in einem Forum gelesen, dass Access sich wohl besser zum Datenspeichern eignet, aber das Rechnen mit den Daten mit Access allein wohl sehr kompliziert ist. Hier soll Excel besser sein, aber irgendeinen Nachteil im Speichern muss Excel ja haben, sonst wäre Access überflüssig oder? Weiss jemand bescheid?

Share this post


Link to post
ipl
Posted · Edited by ipl
Mich würde der Unterschied zwischen Access und Excel intressieren. Hab in einem Forum gelesen, dass Access sich wohl besser zum Datenspeichern eignet, aber das Rechnen mit den Daten mit Access allein wohl sehr kompliziert ist. Hier soll Excel besser sein, aber irgendeinen Nachteil im Speichern muss Excel ja haben, sonst wäre Access überflüssig oder? Weiss jemand bescheid?

Der Unterschied dazwischen dürfte mindestens so groß sein wie zwischen Notepad und Paint.

 

Access ist eine Datenbank, sie speichert Daten und sorgt dafür, dass diese schnell gelesen und geschrieben werden können (nicht von Menschen - von anderen Programmen). Es geht hier um Millionen Datensätze und Millisekunden.

 

Excel ist ein Tabellenkalkulationsprogramm. Damit kann ein Mensch ne Tabelle erstellen und mehr oder weniger stupide Aufgaben (wie z.B. eine Spalte aufaddieren) automatisieren.

 

Dein Vorhaben ist mit beidem schwer zu realisieren, wenn du von Grund auf neu anfängst, dazu musst du auf jeden Fall ordentlich programmieren können. Excel ist aber eindeutig geeigneter, da der Schwerpunkt nicht auf dem Datenzugriff liegt, sondern auf der Mathematik und der Darstellung. Beide verfügen über eingebautes VBA, theoretisch kann man damit also alles Mögliche anstellen.

Share this post


Link to post
makze
Posted

Danke für die Antwort, bei diesem Vorhaben hoffe ich auch meine Programmierfertigkeiten zu trainieren. Wenn dich ein Profi fragen würde in welcher Sprache er dies machen soll, ob java, c, c++, sql, excel, access etc. Welche Sprache (oder welche Kombination z.B. Java+SQL) ist wohl am besten geeignet um den Datenzugriff und das berechnen möglichst schnell zu gestalten, wenn man die Fähigkeiten des Programmierers mal aussenvor lässt?

Share this post


Link to post
ipl
Posted
Danke für die Antwort, bei diesem Vorhaben hoffe ich auch meine Programmierfertigkeiten zu trainieren. Wenn dich ein Profi fragen würde in welcher Sprache er dies machen soll, ob java, c, c++, sql, excel, access etc. Welche Sprache (oder welche Kombination z.B. Java+SQL) ist wohl am besten geeignet um den Datenzugriff und das berechnen möglichst schnell zu gestalten, wenn man die Fähigkeiten des Programmierers mal aussenvor lässt?

Ein "Profi" würde nicht fragen. Und einem Kunden würde ich sagen, ich machs für 4800+MwSt. B)

 

Naja, das hängt stark von eigenen Präferenzen ab. Ich persönlich habe nie viel mit Excel zu tun gehabt, ich würde mich da einarbeiten müssen. Für mich ist es effizienter, auf vorhandenes Wissen zurückzugreifen und ich würde für das Programm selbst Python nehmen. Wenn du aber sowieso alles neu lernen musst, kann es sein, dass Excel da schon viele nützliche Funktionen bietet. Das musst du einen Excel-Experten fragen. Die grafischen Charts kannst du damit auf jeden Fall einfacher erstellen - aber willst du das überhaupt?

 

Für die Daten würde ich PostgreSQL oder MySQL nehmen, die sind beide kostenlos und hinreichend. Aber das ist in dem Fall nicht so wichtig, kannst auch MS Access nehmen. Der Zugriff darauf erfolgt natürlich mit SQL.

 

Wenn du nur einige Tausend Werte analysieren willst, ist die Performance des Programms unwichtig, das schaffst du auch mit high-level Spachen wie Python, Visual Basic, C# oder Java. Wenn du aber irgendwas sehr rechenintensives mit sehr vielen Werten oder mit sehr hoher Kursauflösung anstellen willst, kannst du für den performancehungrigen Teil eine C++ DLL schreiben, evtl. sogar mit inline-Assembler.

 

 

Generell habe ich den Eindruck, dass du die Komplexität des Ganzen etwas unterschätzt. Schließlich scheinst du noch keine richtige Vorstellung zu haben, wo der fundamentale Unterschied zwischen Excel, SQL und Java ist. Aber vielleicht hast du wirklich eine Menge Zeit und Willen, das alles zu lernen. :)

Share this post


Link to post
Horza
Posted
Danke für die Antwort, bei diesem Vorhaben hoffe ich auch meine Programmierfertigkeiten zu trainieren. Wenn dich ein Profi fragen würde in welcher Sprache er dies machen soll, ob java, c, c++, sql, excel, access etc. Welche Sprache (oder welche Kombination z.B. Java+SQL) ist wohl am besten geeignet um den Datenzugriff und das berechnen möglichst schnell zu gestalten, wenn man die Fähigkeiten des Programmierers mal aussenvor lässt?

 

ipl hat ja schon fast alles gesagt...

 

Erstmal solltest du dir überlegen, ob du das tool nur lokal laufen lassen willst, oder wie oben beschrieben eine Web-anwendung entwickeln willst oder irgendwann daraus eine werden soll.

Im ersteren fall wären Excel oder Access eine option, "Programmieren" im engeren sinn wirst du so nur begrenzt lernen. Wenn's doch eines davon sein soll, würde ich Excel nehmen, das alles klingt nicht so kompliziert, als dass es den zusatzaufwand für Access rechtfertigen würde. Und Access anwendungen auf neue versionen portieren ist selten witzig.

 

Für eine Web-anwendung musst du dir erstmal über den Hosting-service gedanken machen: eigener V-server oder so das übliche standard-paket, meist mit PHP oder vlt auch noch Java, MySQL ist eigentlich immer dabei. Beim V-server kannst du dir die umgebung mehr oder weniger selbst zusammenstellen, dann ginge auch z.B. Python. Wenn du die sprache hast, kannst du dich entscheiden, ob du alles selbst machen willst oder einen Web-Framework nutzen willst, davon gibt's mittlerweile hunderte mit tausenden blogs, die diese vergleichen.

 

Ich denke auch gerade darüber nach, über meinen weihnachtsurlaub so was zu starten, meine aktuelle vorstellung: Web-anwendung, Script-sprache auf JVM (Java-Virtual-Machine) - vermutlich Jython, Rhino oder Clojure, Stripes als Web-Framework und Postgres als Datenbank.

 

Jetzt erstmal viel spaß beim forschen...

Share this post


Link to post
makze
Posted · Edited by makze

Das sich sowas mit Excel relativ schnell basteln lässt ist mir auch schon aufgefallen, Web-Anfragen machen sich quasi von allein, Haufen vordefinierter Funktionen z.B. Summe, Mittelwert etc. Hab damit auch schon angefangen und mir mitten im Prozess die Frage gestellt ob dies in Zukunft auch noch so praktisch ist oder nicht. Im Moment habe ich noch nicht den Anspruch mir ne E-Mail oder SMS senden zu lasse, aber das kann sich ja auch ändern, weshalb ich dann gleich von Grund auf richtig anfangen will. Bringt dann ja auch wenig, wenn ich im Moment 100 Werte beobachten möchte, womit Excell noch keine Probleme hat, aber dann in einiger Zeit der Anspruch auf 1000 wächst und man wieder von vorne anfängt. In Meinem Studium habe ich mit Java zu tun, sicher noch nicht in dem Umfang, dass ich mich als erfahren bezeichnen würde, aber wird ja noch.

 

Also ich denke nun mal laut:

Ich speichere die Kursdaten und Kennzahlen in einer SQL-Datenbank und die Berechnung und Oberfläche mache ich in Java, da ich davon ausgehe, dass diese Kombination auch Web-fähig werden kann. Und Java haben viele User schon auf dem Rechner. (Die Komplexe Oberfläche von ABN-AMRO-marketindex ist ja auch in Java, muss ja nen Grund haben)

 

Da die Tipps sich über alle mir bekannten Sprachen erstrecken, scheint der Unterschied hier nicht signifikant zu sein. Sollte meine Wahl irgendwelche Nachteile haben oder andere Wahlen vorzüge, dann immer schreiben.

 

Hab oben nochmal gesehen, dass c++ wohl rechenintensive prozesse besser löst? also doch c++ statt java?

Share this post


Link to post
tatanka
Posted
Ich speichere die Kursdaten und Kennzahlen in einer SQL-Datenbank und die Berechnung und Oberfläche mache ich in Java, da ich davon ausgehe, dass diese Kombination auch Web-fähig werden kann. Und Java haben viele User schon auf dem Rechner. (Die Komplexe Oberfläche von ABN-AMRO-marketindex ist ja auch in Java, muss ja nen Grund haben)

 

Da die Tipps sich über alle mir bekannten Sprachen erstrecken, scheint der Unterschied hier nicht signifikant zu sein. Sollte meine Wahl irgendwelche Nachteile haben oder andere Wahlen vorzüge, dann immer schreiben.

 

Hab oben nochmal gesehen, dass c++ wohl rechenintensive prozesse besser löst? also doch c++ statt java?

Vorweg: Ich denke auch, dass der Aufwand für eine solche Anwendung meist unterschätzt wird.

 

Wenn Du einige Papiere speichern möchtest, kommen für die Kursdaten schnell etliche Datensätze zusammen. Würde in keinem Fall Excel nehmen, sondern eine SQL-fähige Datenbank. Für 'schnelle' Ergebnisse tut's vielleicht diese kostenlose Lösung:

 

Visual Studio Express

 

In Verbindung mit dem SQL-Server Express sollte sich die Datenbankanbindung recht gut erledigen lassen. Ich würde bei freier Auswahl (Randbedingungen bezüglich der Programmierkenntnisse mal außer Acht gelassen) C++ und nicht Java wählen.

Share this post


Link to post
Horza
Posted
Das sich sowas mit Excel relativ schnell basteln lässt ist mir auch schon aufgefallen, Web-Anfragen machen sich quasi von allein, Haufen vordefinierter Funktionen z.B. Summe, Mittelwert etc. Hab damit auch schon angefangen und mir mitten im Prozess die Frage gestellt ob dies in Zukunft auch noch so praktisch ist oder nicht. Im Moment habe ich noch nicht den Anspruch mir ne E-Mail oder SMS senden zu lasse, aber das kann sich ja auch ändern, weshalb ich dann gleich von Grund auf richtig anfangen will. Bringt dann ja auch wenig, wenn ich im Moment 100 Werte beobachten möchte, womit Excell noch keine Probleme hat, aber dann in einiger Zeit der Anspruch auf 1000 wächst und man wieder von vorne anfängt. In Meinem Studium habe ich mit Java zu tun, sicher noch nicht in dem Umfang, dass ich mich als erfahren bezeichnen würde, aber wird ja noch.

 

Also ich denke nun mal laut:

Ich speichere die Kursdaten und Kennzahlen in einer SQL-Datenbank und die Berechnung und Oberfläche mache ich in Java, da ich davon ausgehe, dass diese Kombination auch Web-fähig werden kann. Und Java haben viele User schon auf dem Rechner. (Die Komplexe Oberfläche von ABN-AMRO-marketindex ist ja auch in Java, muss ja nen Grund haben)

 

Da die Tipps sich über alle mir bekannten Sprachen erstrecken, scheint der Unterschied hier nicht signifikant zu sein. Sollte meine Wahl irgendwelche Nachteile haben oder andere Wahlen vorzüge, dann immer schreiben.

 

Hab oben nochmal gesehen, dass c++ wohl rechenintensive prozesse besser löst? also doch c++ statt java?

 

Der thread webt einen gefährlichen pfad; wenn du nun auch noch nach dem besten Editor fragst, wird das Forum für die lieblingsfragen aller entwickler ge-hijackt <_<

 

Nur weil du mit Excel leicht Web-anfragen bauen kannst, ist Excel sicher keine Web-umgebung. Tausend gründe dagegen, z.B. Multi-user-zugriff, lokalisierung, portabilität. Ist sehr produktiv für eine Single-user, single-system installation und gut zum Rapid-prototyping, für alles andere würde ich es nie in erwägung ziehen.

 

C++ ist definitiv keine anfängersprache und war auch nie als solche gedacht. Java ist nicht toll, aber allein, dass du einen garbage-collector hast, spart dir als anfänger tageweises debuggen nach memory-leaks - und für eine Web-anwendung wirst du die suchen. Ab 1.5 und vor allem mit Java 6 ist Java akzeptabel schnell, oft und typischerweise nur im bereich 1.x .. 3 langsamer als C/C++ und bei anwendungen, die datenbanken lesen/schreiben und was aufs UI bringen, ist das nicht merkbar. Wenn du aber nach wochen immer noch nach einem 'delete' statt 'delete[]' suchst, ist das merkbar.

 

Typischerweise entwickelst du heute eine anwendung "agil" mit einer skriptsprache, um features schnell testen und an den/die anwender bringen zu können. Wenn du performance-engpässe hast, setzt du nur die in eine Low-level-sprache um - eben z.B. Python oder Lua mit C oder eine der JVM-sprachen mit Java. Alternativ gibt es vor allem ein paar Lisps/Schemes, die nach C übersetzt werden und recht schnell sind oder sprachen, die üblicherweise ausreichend schnell und trotzdem produktiver als C++/Java sein können, z.B. Scala oder Ocaml.

 

Die performance wird dein geringstes problem sein, lege die plattform fest (windows nativ, .NET, java, RIA, HTML, ...) und suche dann nach guten bibliotheken und hilfreicher community.

Share this post


Link to post
makze
Posted

@Horza:

In Bezug auf Excel seh ich es genauso wie du. Da ich anfänglich noch nicht an Webumgebung und Multi-User-Zugriff gedacht habe war Excel die erste Wahl. Mitlerweile bin ich auch der Meinung, dass Excel bei diesem Problem keine effektive, professionelle Endlösung bieten kann. Dennoch sehe ich in Excel eine gute und schnelle Möglichkeiten eigene Indikatoren zu schreiben, eigene Indizes zusammenzustellen, Indikatorkombinationen zu testen und auswerten zu lassen und somit ein "Analyse-Tool" zu bauen, wo man selbst ganz genau weiss was es tut und so auch kleinste Parameter, Perioden und Variablen einstellen kann. Und da denke ich nicht, dass dieses Projekt zu groß für mich ist.

Warum denkst du ist C keine Anfängersprache? In welchen Bereichen siehst du Probleme? Und was ist für dich eine Anfängersprache?

 

Ich verstehe aber eure Meinung zur Performance nicht. Also bei Excel z.B. ist die Performance schon ein Problem, weshalb ich auch auf die Idee gekommen bin von Excel abzuweichen. Schon bei den 30 Dax-Werten war ich der Meinung, dass eine aufwendige, variable Analyse und Kursdatenaktualisierung recht viel Rechenzeit in Anspruch nimmt. Aber wahrscheinlich denkt ihr hier nur an den Vergleich von Java, C, Python und Co. Ich hab da noch Excel (was ja keine Sprache ist) mit im Kopf gehabt.

Share this post


Link to post
makze
Posted · Edited by makze

@tatanka:

Hab nur einen kurzen Blick eben auf Visual Studio Express geworfen und bin überrascht. Erinnert mich ein wenig an Delphi. Hab immer ein völlig falsches Bild von Visual Studio Express gehabt. Also berichtige mich, wenn ich falsch liege, aber Benutzeroberflächen lassen sich hier einfach per Mausdruck zusammenstellen und ich denke, da SQL und C bei Visual drin ist, wird die Kombination sicher einfacher gehen als ohne. Bin also guter Dinge, dass ich hier meine Antwort auf die Frage gefunden habe. Aber warum haben die dort kein Java mehr integriert?

 

Irgendwelche Bedenken in Bezug auf Visual Studio Express? Sollte ja eigentlich SQL und C sein, SQL zum speichern, C zum berechnen und eine Oberfläche mit Hilfe von MS um Parameter etc eigeben und Analysen ausgeben zu lassen!?

Share this post


Link to post
Horza
Posted
@Horza:

In Bezug auf Excel seh ich es genauso wie du. Da ich anfänglich noch nicht an Webumgebung und Multi-User-Zugriff gedacht habe war Excel die erste Wahl. Mitlerweile bin ich auch der Meinung, dass Excel bei diesem Problem keine effektive, professionelle Endlösung bieten kann. Dennoch sehe ich in Excel eine gute und schnelle Möglichkeiten eigene Indikatoren zu schreiben, eigene Indizes zusammenzustellen, Indikatorkombinationen zu testen und auswerten zu lassen und somit ein "Analyse-Tool" zu bauen, wo man selbst ganz genau weiss was es tut und so auch kleinste Parameter, Perioden und Variablen einstellen kann. Und da denke ich nicht, dass dieses Projekt zu groß für mich ist.

Warum denkst du ist C keine Anfängersprache? In welchen Bereichen siehst du Probleme? Und was ist für dich eine Anfängersprache?

 

Ich verstehe aber eure Meinung zur Performance nicht. Also bei Excel z.B. ist die Performance schon ein Problem, weshalb ich auch auf die Idee gekommen bin von Excel abzuweichen. Schon bei den 30 Dax-Werten war ich der Meinung, dass eine aufwendige, variable Analyse und Kursdatenaktualisierung recht viel Rechenzeit in Anspruch nimmt. Aber wahrscheinlich denkt ihr hier nur an den Vergleich von Java, C, Python und Co. Ich hab da noch Excel (was ja keine Sprache ist) mit im Kopf gehabt.

 

Erstmal C und C++unterscheiden: C wirst du heute kaum mehr verwenden, wenn du ein UI brauchst (ausser natives X Window) oder für Windows entwickelst, also wird's schnell C++. In C und C++ wirst du gegen die Pointerarithmetik und gegen die manuelle Memory-allocation kämpfen, in C++ ausserdem noch gegen templates, operator overloading, STL, compiler-inkompatibiläten, ... . C ist eine nette sprache für ihren einsatzzweck, wenn man sie kann und wirklich braucht, C++ wurde im lauf der zeit ein sprachmonster, das leute verwenden können/müssen, die es täglich brauchen. Ich hatte mal Anfängerkurse in programmieren, erst Pascal (jaja, lange her...), dann C und in C waren verglichen mit Pascal nach den 2 semestern höchstens 1/3 der teilnehmer annähernd produktiv.

 

Python - s. ipl - kommt für mich am nächsten an das ideal einer sprache, die man einfach lernen und lesen kann, die aber trotzdem leistungsfähig und produktiv ist und mit der man wachsen kann. Sie ist eine der vier erlaubten Google-sprachen (der "erfinder" arbeitet bei Google), #6 auf TIOBE und wird als Jython mittlerweile auch von Sun für die JVM unterstützt. Python hat verglichen mit nativen compilern keine besonders gute performance; es gibt zwar ein natives C-interface und ein paar tools und tricks zum beschleunigen, aber C oder Java wird es nicht erreichen.

 

Wenn du unbedingt den ausweg nach C haben willst, ist Lua eine alternative: das C-interface ist viel einfacher als das von Python, die sprache selbst ist nicht schwerer, die community kleiner aber voll von cleveren leuten. Ein paar Schemes bieten das gleiche, aber Lua ist für mich der bessere tipp.

 

Performance kann für deine anwendung natürlich ein problem werden, aber sie wird nicht wegen der sprache kommen, da du eine DB liest/schreibst, da du deine daten von einem web-server bekommst, der 99% der zeit auf seine HTTP requests wartet und da die algorithmik, die du brauchen wirst, für jeden seit jahren üblichen rechner eine fingerübung ist. Ausserdem: mittlerweile hast du multi-cores und du wirst keine multi-threading anwendung in C schreiben wollen und du wirst einen geeignet schnell algorithmus in C kaum bis nie, in z.B. aber Python doch hinbekommen können.

 

Die ideale umgebung wirst du nie finden, es gibt mittlerweile eine riesenauswahl von brauchbaren lösungen (keine davon näherungsweise so produktiv wie die guten alten Mainframes, aber die meisten machen mehr spaß...), nimm' dir zwei wochenenden zum stöbern, installiere eine und leg' los.

 

P.S.: Visual Studio unterstützt natürlich kein Java (mehr), da Java komplett gegen das MS geschäftsmodell läuft. Freie IDEs für Java wären Eclipse oder Netbeans. Deine erste entscheidung noch vor der sprache ist wie oben geschrieben, ob du für windows native, .NET, Java, oder LAMP entwickeln willst. Nur wenn es unbedingt windows sein darf, kannst du über VS nachdenken. Selbst dann ist für mich in deinem anwendungsfall VSC++ schwachsinn, dann noch eher VB oder wenn's was modernes sein darf, F#.

Share this post


Link to post
ipl
Posted · Edited by ipl
@tatanka:

Hab nur einen kurzen Blick eben auf Visual Studio Express geworfen und bin überrascht. Erinnert mich ein wenig an Delphi. Hab immer ein völlig falsches Bild von Visual Studio Express gehabt. Also berichtige mich, wenn ich falsch liege, aber Benutzeroberflächen lassen sich hier einfach per Mausdruck zusammenstellen und ich denke, da SQL und C bei Visual drin ist, wird die Kombination sicher einfacher gehen als ohne. Bin also guter Dinge, dass ich hier meine Antwort auf die Frage gefunden habe. Aber warum haben die dort kein Java mehr integriert?

 

Irgendwelche Bedenken in Bezug auf Visual Studio Express? Sollte ja eigentlich SQL und C sein, SQL zum speichern, C zum berechnen und eine Oberfläche mit Hilfe von MS um Parameter etc eigeben und Analysen ausgeben zu lassen!?

Mh, ja. Schön, dass dich Visual Studio an Delphi erinnert. *g* Nur so am Rande, Visual Studio eine Entwicklungsumgebung und Delphi ist eine Sprache. Es gibt sogar Delphi für Visual Studio... Im Übrigen ist ein graphischer GUI-Editor nichts außergewöhnliches, da würden dich noch ganz andere Entwicklungsumgebungen an die Standard-IDE von Delphi "erinnern".

 

C ist bei VS nicht mit drin, dafür C++ und C#. C ist wieder eine andere (ältere) Sprache. Java war dort nie integriert, sondern nur die Microsoft-Variante Java#, die nun fallen gelassen wurde. Visual Basic.NET, C# und Java# sind alles nur unterschiedliche Sprachen zur Ansteuerung des .NET Frameworks, welche davon man nun benutzt, ist also egal. Sie können/konnten meines Wissens alle exakt gleich viel.

 

"Oberfläche mit Hilfe von MS"? MS = Microsoft, du meinst wahrscheinlich den GUI-Editor von Visual Studio.

 

Also ja, Visual Studio ist eine mögliche Wahl, damit ist die Aufgabe sicherlich auch zu bewältigen, wie mit vielen anderen Werkzeugen auch. Denk nur dran, das Komplexe ist nicht die Auswahl der Werkzeuge. ;) Eine graphische Oberfläche ersetzt nicht das Wissen, das du brauchen wirst, um Web-Abfragen, Datenbank, die Mathematik hinter der Analyse und die Oberfläche zu verbinden... Ich will dich nicht davon abhalten, aber du wirst einen langen Atem brauchen und plan schon mal 5 bis 15 mal so viel Zeit ein, wie du jetzt zu brauchen glaubst. ;) Kommt drauf an, wie optimistisch du grad bist. *g*

 

 

Edit:

@horza, sorry, wir haben uns zeitlich überschnitten und ich habe einige deiner Aussagen unfreiwillig wiederholt. :)

 

Übrigens, Python zusammen mit anderen Sprachen zu verwenden (z.B. eben C++) ist kein Problem. Dafür ist es aber durchaus ein Problem, in Python Gebrauch von mehreren Cores zu machen, Stichwort GIL.

Share this post


Link to post
Horza
Posted
Übrigens, Python zusammen mit anderen Sprachen zu verwenden (z.B. eben C++) ist kein Problem.

Kommt darauf an, wie du "kein Problem" definierst. Gehen tut es natürlich, da das C-Python ja genau so seinen Core bekommt. Allerdings ist das Python-C-Interface alles andere als trivial (ref-count, ...) und die Windows-entwicklungsumgebung dazu auch nicht, Lua dagegen wurde (vereinfacht gesagt, sie HOPL-Lua) genau mit dem ziel entwickelt, leicht durch C erweitert werden zu können. Das macht im ergebnis einen ordentlichen unterschied, auf den ich anstandshalber hinweise...

 

Dafür ist es aber durchaus ein Problem, in Python Gebrauch von mehreren Cores zu machen, Stichwort GIL.

Kommt darauf an, wie du "Problem" definierst. Eine menge multi-threading geht, multi-processing sowieso und die sprache/bibliotheken helfen dir - nicht so in C. Klar wäre der nächste schritt bei dem thema ganz en-vogue der hinweis auf funktionale sprachen, aber dann wird's ganz verwirrend - und es wäre auch nicht unbedingt ein guter einsteigertipp.

 

Sind beides themen, zu denen tausende schlaue leute zu jeweils 50/50 zwei schlaue meinungen haben, deshalb ist es ja so verwirrend. Wir sollten ihn jetzt mal stöbern und entscheiden lassen :)

Share this post


Link to post
ipl
Posted
Kommt darauf an, wie du "kein Problem" definierst. Gehen tut es natürlich, da das C-Python ja genau so seinen Core bekommt. Allerdings ist das Python-C-Interface alles andere als trivial (ref-count, ...) und die Windows-entwicklungsumgebung dazu auch nicht, Lua dagegen wurde (vereinfacht gesagt, sie HOPL-Lua) genau mit dem ziel entwickelt, leicht durch C erweitert werden zu können. Das macht im ergebnis einen ordentlichen unterschied, auf den ich anstandshalber hinweise...

Von Python wird ebenfalls behauptet, es wäre mit dem Ziel entwickelt worden, mit anderen Sprachen einfach kooperieren zu können. Aber kann natürlich sein, dass LUA sich da besser macht, vor allem, wenn LUA speziell auf C zugeschnitten ist.

 

Kommt darauf an, wie du "Problem" definierst. Eine menge multi-threading geht, multi-processing sowieso und die sprache/bibliotheken helfen dir - nicht so in C. Klar wäre der nächste schritt bei dem thema ganz en-vogue der hinweis auf funktionale sprachen, aber dann wird's ganz verwirrend - und es wäre auch nicht unbedingt ein guter einsteigertipp.

Noch verwirrender ist es, wenn man bedenkt, dass in Python auch funktional programmiert werden kann. Dennoch geht Multithreading in Python hauptsächlich nur auf dem Papier. Multiprocessing ist zwar ein möglicher Umweg, aber da muss man sich noch um den gemeinsamen Speicher kümmern. Was aber geht, ist echt-paralleles Multithreading im eingebundenen C/C++ Code. *g*

 

Da ich mich für unsere Forschungsgruppe an der Uni mit beidem rumschlagen muss, meine ich beurteilen zu können, was aufwändiger und fehleranfälliger ist, deshalb meine Einschätzung "Problem" <-> "kein Problem". ;) Natürlich ist das subjektiv...

 

Das nur so am Rande, der Threadersteller hat sicher erstmal andere Fragen zu klären.

Share this post


Link to post
makze
Posted

Also wie ihr ja sicher gemerkt habt, bin ich nich so fit, was die Materie angeht. Hab gedacht, dass man sagen kann, dass eine sprache sich mehr eignet als andere, aber die Grenzen scheinen hier ja nicht so klar zu sein. Danke schonmal für eure Informationen.

Also, dass SQL als Datenbank optimal ist, da scheinen ja alle übereinzustimmen. Fazit: SQL ist ein Muss.

Da hier keine Sprache als extrem vorteilhaft erwähnt wurde, habe ichmich jetzt entschieden das ganze mit Visual Studio Express zu erledigen.

 

Die Gründe:

1. leicht gestaltete Windows-Oberflächen. Sowas allein zu basteln ist für mich denke ich noch zu kompliziert und VS gibt mir die Möglichkeit das ganze ansehnlich zu gestalten.

2. dadurch, dass die Oberfläche einfach geht, kann ich mich auf das Programmieren der Indikatoren etc konzentrieren.

3. die entstehende Abhängigkeit von VS und Windows-Systemen stört mich nicht, da es ersteinmal nur für mich entsteht.

4. Verbindung zwischen SQL und C++/Basic ist mit 3 Mausklicks erledigt.

 

Die Sprache wird wohl durch VS C++ werden (2 Semester Erfahrung und Meinung von tatanka). Alternativen hier sind ja nur C# und Basic. Aber solange Basic oder C# keine dollen Vorteile bieten bleibts dabei.

Share this post


Link to post
ipl
Posted
Also wie ihr ja sicher gemerkt habt, bin ich nich so fit, was die Materie angeht. Hab gedacht, dass man sagen kann, dass eine sprache sich mehr eignet als andere, aber die Grenzen scheinen hier ja nicht so klar zu sein. Danke schonmal für eure Informationen.

Also, dass SQL als Datenbank optimal ist, da scheinen ja alle übereinzustimmen. Fazit: SQL ist ein Muss.

Da hier keine Sprache als extrem vorteilhaft erwähnt wurde, habe ichmich jetzt entschieden das ganze mit Visual Studio Express zu erledigen.

 

Die Gründe:

1. leicht gestaltete Windows-Oberflächen. Sowas allein zu basteln ist für mich denke ich noch zu kompliziert und VS gibt mir die Möglichkeit das ganze ansehnlich zu gestalten.

2. dadurch, dass die Oberfläche einfach geht, kann ich mich auf das Programmieren der Indikatoren etc konzentrieren.

3. die entstehende Abhängigkeit von VS und Windows-Systemen stört mich nicht, da es ersteinmal nur für mich entsteht.

4. Verbindung zwischen SQL und C++/Basic ist mit 3 Mausklicks erledigt.

 

Die Sprache wird wohl durch VS C++ werden (2 Semester Erfahrung und Meinung von tatanka). Alternativen hier sind ja nur C# und Basic. Aber solange Basic oder C# keine dollen Vorteile bieten bleibts dabei.

Nochmal: SQL ist keine Datenbank, sondern eine Sprache. Dazu in der Praxis eine nicht komplett standardisierte, es gibt also viele SQL-Dialekte, die datenbankspezifisch sind (die Unterschiede sind jedoch nicht so groß). Da alle gängigen Datenbanken mit SQL angesteuert werden, hast du mit "SQL ist ein Muss" recht. Welche Datenbank (Access, Oracle, MySQL, Postgre, MS SQL Server...) du nimmst, steht damit aber immer noch nicht fest. Die Verbindung zu Datenbanken ist meist kein Problem, danach würde ich bei der Entscheidung für eine Sprache nicht gehen. Es kommt nur darauf an, dass du verstehst, wie eine relationale Datenbank funktioniert und mit SQL umgehen kannst.

 

Wenn schon Visual Studio, dann halte ich Visual Basic für einfacher und produktiver als C++, da du dich dort um viel weniger low-level Details wie Speicherverwaltung kümmern musst, aber auch das hängt von der Erfahrung ab. Wenn du C++ schon kannst und Basic nicht, dann nimm natürlich C++. Zu C# kann ich nichts sagen.

 

Halte uns auf dem Laufenden. ;)

Share this post


Link to post
makze
Posted

Du sagst, dass die Verbindung zu Datenbanken kein Problem ist, aber auch das müsste ich mir erst aneignen und ich denk mir nun einfach mal, dass MS das da schon recht stimmig hingebaut hat. Du sagst ja auch die Unterschiede sind minimal. Der einzige Unterschied wäre dann ja die Speicherkapazität und hier ist MS SQL-Server auf Platz 3 hinter Postgre und Oracle und die maximale Datenbankgröße von 1 Million Terabyte werde ich wohl vorerst nicht überschreiten.

Die Gründe für VSE hab ich ja geschrieben, hab halt 0 Ahnung davon, wie man vom normalen compiler zu nem schicken Programm kommt.

Aber Frage: Java ist ja um einiges später entstanden als Basic, c und c++. Sollte es nicht logisch sein, dass Java dann auch schneller und effektiver arbeitet, weil der Wissensstand bei Entstehung höher war? Warum verweisen immernoch alle auf die Uraltsprachen?

 

Und, wenn Basic sich besser eignet, weil es weniger Fehlerquellen bietet, dann werd ich Basic nehmen

Share this post


Link to post
ipl
Posted
Aber Frage: Java ist ja um einiges später entstanden als Basic, c und c++. Sollte es nicht logisch sein, dass Java dann auch schneller und effektiver arbeitet, weil der Wissensstand bei Entstehung höher war? Warum verweisen immernoch alle auf die Uraltsprachen?

 

Und, wenn Basic sich besser eignet, weil es weniger Fehlerquellen bietet, dann werd ich Basic nehmen

Java ist 1991 entstanden, C# 2001 und Visual Basic.NET 2002. Sprachlich ist Java an C++ aus dem Jahre 1983 angelehnt, das wiederum auf C aus dem Jahr 1972 aufbaut. Visual Basic hat, wie Java und C# auch, uralte Wurzeln und ist für mich wie die anderen beiden auch keine moderne Sprache, auch wenn die 3 und ihre Verwandten zu den meistverwendeten nicht-Web Sprachen zählen dürften. Wirklich moderne Sprachen wie Python (obwohl auch schon 1990 entstanden, aber von Grund auf neu) oder Ruby sind viel intuitiver, "menschlicher" und eleganter. Allerdings ist PHP erst 1995 entstanden und ich habe selten eine so hässliche Sprache erlebt. Sie wurde anfangs von Leuten ohne Plan und Theoriegrundwissen entwickelt und das merkt man heute noch...

 

Mit der Geschwindigkeit haben die Erkenntnisse zum Zeitpunkt der Entstehung der Sprache jedoch wenig zu tun. Moderne Compiler für uralte Sprachen sind genauso effektiv wie moderne Compiler für neue Sprachen.

 

Über die Geschwindigkeit entscheidet hauptsächlich die Art und Weise, wie die Programme ausgeführt werden. C++ und Assembler Compiler erzeugen binären Code, der direkt der CPU zugeführt werden kann. Java erzeugt Bytecode, der von der Java Virtual Machine ausgeführt wird, die zwischen dem System und dem Programm ist, somit ist zusätzlicher Aufwand für die Ausführung notwendig. Der Vorteil davon ist, dass Javaprogramme plattform- und hardwareunabhängig sein können, der Nachteil ist die Geschwindigkeit. Python erzeugt ebenfalls plattformunabhängigen Code, der erst interpretiert werden muss, deshalb sind Pythonprogramme langsamer als C++ und auch als Java Programme. C# und modernes Visual Basic (.NET) erzeugen Code, der auf dem .NET Framework aufbaut, da ist also auch eine Schicht dazwischen.

 

Außerdem werden modernere Sprachen prinzipiell immer langsamer, da sie dem Programmierer immer mehr Routineaufgaben abnehmen, die vom Compiler nicht immer so perfekt optimiert werden können, wie von einem Menschen. Da aber die Rechenzeit immer billiger wird und die menschliche Arbeitszeit ungefähr gleich teuer bleibt, ist dieser Trade-Off in der Regel sinnvoll.

 

Hier waren recht viele Verallgemeinerungen und Pauschalisierungen enthalten, aber im Prinzip gehts in die Richtung.

Share this post


Link to post
makze
Posted

@ ipl:

Vielen Dank, das war eine Erklärung, wie ich sie mir gewünscht habe. Klingt auch alles schlüssig.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...