PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welche Programmiersprache (+ Datenbank) für unser Softwareprojekt?


Eazy
2003-10-28, 15:53:27
Hi,

ich bräuchte mal die Hilfe von den Programmierern unter Euch.

Und zwar habe ich dieses Semester (studiere Wirtschaftsinformatik / FH) ein Softwareprojekt bekommen. Wir bearbeiten dieses in einer Gruppe von 4 Leuten. Zusätzlich zu der Software müssen wir auch noch Präsentationen, Pflichtenheft und Projektmanagement für dieses Projekt machen und die normalen Vorlesungen laufen natürlich auch weiter.

In unserem Projekt geht es um eine Anwendung für Amateurfunker. Die Anwendung soll die Amateurfunker bei Funkwettbewerben unterstützen. Während solch eines Wettbewerbs versuchen die Funker möglichst viele Verbindungen zu anderen Funkern herzustellen. Die Daten dieser Verbindungen (z.B. Rufzeichen und Standort des Gegenübers, Qualität der Verbindung, Datum, laufende Nummer) sollen in Echtzeit in unsere Anwendung eingegeben und in einer Datenbank gespeichert werden. Aus diesen Daten werden über die überbrückten Kilometer des Funkers seine Punktzahl im Wettbewerb errechnet.

Folgende Funktionen muss das Programm nun erfüllen können:

- Die Daten sollen auf verschiedene Arten graphisch dargestellt werden (z.B. Standorte der Funker als Punkt auf einer Europakarte, Balkendiagramme, ...) und diese Grafiken sollen auch ausgedruckt werden können. Der Aufbau der Graphiken darf höchstens 2 Sekunden dauern!

- Die Datenbank soll durchsucht werden können, Wildcards (z.B. "*") sollen auch unterstützt werden. (Suchdauer max. 500ms)

- Listen aus der Datenbank sollen angezeigt + gedruckt werden

- Daten sollen in die Datenbank importiert werden können

Nun stehen wir vor der Entscheidung, welche Programmiersprache und welche Datenbank wir verwenden wollen.

An die Programmiersprache haben wir folgende Anforderungen:

- einfache, leistungsfähige und schnelle Graphikdarstellung und -erstellung und gute Druckmöglichkeiten (z.B. Punkte und Vektoren auf einer Landkarte, Balkendiagramme)

- schneller und unkomplizierter Datenbankzugriff und -verbindung

wir haben folgende Sprachen in Betracht gezogen (haben mal Brainstorming betrieben und Vor- und Nachteile aufgeschrieben, Kritik und Verbesserungen erwünscht):

1. Java
- wir haben schon alle etwas Erfahrung mit Java
- langsam, wir benötigen die komplizierten Graphiken mit 100ten Vektoren in unter 2 Sekunden
- schlechte, komplizierte und lagsame Graphikausgabe? (Swing, AWT)
- wir benötigen KEINE plattformunabhängigkeit, verwenden höchstwahrscheinlich Windows ;-(
- kompliziert, die Vorteile Javas kommen in unserer Anwendung nicht zur Geltung
- Druckeransteuerung ?
- würden wir gerne besser kennenlernen (tolle Webmöglichkeiten, kein M$)

2. Visual Basic
- haben alle schon etwas Erfahrung
- einfache Syntax + Entwicklungsumgebung
- gute, leistungsfähige + einfache Integration in Windows
- viele fertigen Objekte und Steuerelemente für die Windowswelt
- neue, aktuelle .Net Version
- gute? Graphikfunktion
- einfache Druckerausgabe unter Windows
- würden wir damit nicht soviel lernen wie mit Java?

3. Delphi
- noch keine Erfahrung mit Delphi
- schnell
- einfache Syntax

4. PHP
- zusätzlicher Webserver wird benötigt
- generell teilweise langsam
- Graphikausgabe in 2 Sekunden????

Wäre nett, wenn Ihr uns eine Empfehlung geben könntet oder unsere Liste korrigieren bzw. erweitern würdet. Aber bitte nur objektive Meinungen (ich mag M$ auch net, aber wir wollen einfach die am besten passendste, effektivste und sinnvollste Sprache wählen, weil wir in diesem Semester auch viele andere Vorlesungen haben und somit nicht hunderte Stunden in das Projekt stecken können)

Als Datenbank käme mySQL oder MSSQL in betracht (oder auch was anderes? Access?). Ist mySQL eigentlich wirklich ein "Kinder DBS"? Hat unser DABAS Prof. mal gemeint. (Wir haben übrigens voraussichtlich nur 1-2 Tabellen, werden zur Modellierung wohl ein CASE Tool verwenden)

- Die Datenbank wird im Testbetrieb ca. 100000 !! Datensätze haben und muss einfachere Abfragen teilweise in 200ms erledigen, kompliziertere in 500ms
- Die Datenbank sollte somit schnell sein
- Sollte auf einem normalen x86 System laufen (Athlon XP, P4)
- Sollte auch relativ unkompliziert mit Windows heruntergefahren und neu gestartet werden können, weil sie auf dem normalen (Windwows) Desktoprechner des Amateurfunkers laufen wird. (Wir kennen uns mit Datenbank Systemen und deren Administration bisher nicht gut aus)


Wir sind für jeden Tipp, Kritik und Empfehlung dankbar.

Danke und Gruß
Eazy

huha
2003-10-28, 16:25:01
Ich würde VB empfehlen.
Erstens ist VB wie gesagt ne sehr einfache Sprache und da es nicht um komplexe *Berechnungen* in *extrem* kurzer Zeit geht, dürfte sie gut gehen.
VB soll auch gut mit Datenbanken umgehen können - für die Grafikausgabe könntest du entweder VBs built-in-Grafik verwenden (ich kenn VB.NET nicht, aber bei VB6 arschelahm), die Windows-API (recht ordentlich schnell) oooder DirectDraw, was wohl das Nonplusultra wäre.
Außerdem ist die EInarbeitungszeit in VB extrem kurz, sodaß ich sozusagen direkt anfangen könnt.
Ansonsten: C++

-huha

Haarmann
2003-10-28, 19:30:47
Eazy

Sofern ihr die SW "gratis" kriegt, Delphi Enterprise Edt.

Trap
2003-10-28, 19:45:12
Mal darüber nachgedacht welchen Sinn das Projekt hat? Ich hab im Info-LK ein Abschlussprojekt zu dritt gemacht. Etwas über 100 Stunden Arbeit.
Ich hab alles mögliche dabei gelernt, aber programmiertechnisch fast nichts. Achte auf alles andere, aber nicht auf die Programmieraufgabe, im Programmieren hast sicher schon Übung, da musst du nicht extra drauf achten.

Ich weiß nicht ob ihr schon Projektmanagement als Thema hattet, aber 4 Leute sind für so ein Projekt viel zuviele. Da verbringt man mehr Zeit mit irgendwelchen Abstimmungsfragen als mit dem Programmieren (besonders wenn die verschiedenen Leute unterschiedlich gut Programmieren können und man keinen richtigen Arbeitsplatz als Gruppe hat). Oder es arbeitet nur einer am Projekt und die anderen drehen Däumchen...
Wenn man zu zweit an einem Rechner programmiert (einer programmiert, der andere guckt zu und gibt Kommentare) könnte das helfen, einerseits habt ihr dann weniger Leute zum aufeinander abstimmen und andererseits ist jeder Programmcode schon einmal Korrekturgelesen.

Ich würde dir auch empfehlen VB zu nehmen. Man kann im Projekt genug lernen ohne eine neue Programmiersprache anzufangen.
Die Anforderungen sind nicht schwer zu erfüllen. Es ist eher schwer sie nicht zu erfüllen. Die Datenbank sind vielleicht 20 MB, wenn man die nicht in 0,2 s durchsucht bekommt macht man irgendwas sehr falsch (RAM kann man mit mindestens 1500 MB/s lesen). Ein paar Grafiken in brauchbarer Geschwindigkeit anzeigen kann ja selbst Excel ;)

grakaman
2003-10-28, 19:47:53
Das klingt interessant. Mich würde nur interessieren, wie ihr die Daten denn in die DB bekommt? Und wie wollt ihr den genauen Standpunkt bestimmen? Dazu müsste man doch einen GPS Empfänger haben und dann diese Daten verarbeiten.
Ansonsten würde ich auf jeden Fall den SQL Server empfehlen, euer Prof hat schon vollkommen Recht.

MfG

Gast
2003-10-28, 20:00:33
[SIZE=1]Original geschrieben von Trap
Mal darüber nachgedacht welchen Sinn das Projekt hat? Ich hab im Info-LK ein Abschlussprojekt zu dritt gemacht. Etwas über 100 Stunden Arbeit.

ähm ja....
Uni ist ja das selbe wie ein LK :D


Ich weiß nicht ob ihr schon Projektmanagement als Thema hattet, aber 4 Leute sind für so ein Projekt viel zuviele. Da verbringt man mehr Zeit mit irgendwelchen Abstimmungsfragen als mit dem Programmieren (besonders wenn die verschiedenen Leute unterschiedlich gut Programmieren können und man keinen richtigen Arbeitsplatz als Gruppe hat). Oder es arbeitet nur einer am Projekt und die anderen drehen Däumchen...
Wenn man zu zweit an einem Rechner programmiert (einer programmiert, der andere guckt zu und gibt Kommentare) könnte das helfen, einerseits habt ihr dann weniger Leute zum aufeinander abstimmen und andererseits ist jeder Programmcode schon einmal Korrekturgelesen.


Das zeugt nur von mangelnder Teamfähigkeit und/oder schlechtes Programmdesign. Warum sollten nicht Leute an unterschiedlichen Programmteilen schaffen können ohne viel Abstimmungsarbeit ?
4 Leute sind jetzt echt nicht viel


So aber nun zum Thema :)
Wenn ihr Java ja könnt verwendets auch. Es langt von der Geschwindigkeit her locker. Mit VB versaut ihr euch nur euren Programmierstil.
Die Datenbank ist wahrscheinlich unkritisch, solange ihr nicht zu den Rufzeichen die passenden Daten in der AFu-Datenbank raussuchen müsste. Die Funker wären dafür aber bestimmt dankbar ;)
Für die Ergebnisse könnt ihr ja noch ein kleines PHP-Skript schreiben, dass die Ortsverbände dann noch auf die Homepage machen können.


Und wie wollt ihr den genauen Standpunkt bestimmen? Dazu müsste man doch einen GPS Empfänger haben und dann diese Daten verarbeiten.


Für die Koordinaten haben Amateurfunker ihre "Codes". Für den eigenen Standort zu bestimmen gibts extra Karten. Die Daten werden ausgetauscht und so ists kein Problem die Entfernung zu berechnen.

grakaman
2003-10-28, 20:07:05
Original geschrieben von Gast
Für die Koordinaten haben Amateurfunker ihre "Codes". Für den eigenen Standort zu bestimmen gibts extra Karten. Die Daten werden ausgetauscht und so ists kein Problem die Entfernung zu berechnen.

Und wie gelangen nun die Daten in die DB? Ich habe keine Ahnung von Funken, aber irgendwie müssen die Geräte ja die Daten an das Programm geben. Außerdem war ja die rede von "Echtzeit", also wird da wohl kaum jemand die Daten eintippen.

Crushinator
2003-10-28, 20:26:04
Original geschrieben von Eazy
Als Datenbank käme mySQL oder MSSQL in betracht (oder auch was anderes? Access?). Ist mySQL eigentlich wirklich ein "Kinder DBS"? Hat unser DABAS Prof. mal gemeint. (Wir haben übrigens voraussichtlich nur 1-2 Tabellen, werden zur Modellierung wohl ein CASE Tool verwenden) Euer Prof. hat wohl nicht mal die geringste Ahnung von mySQL. Eine "Kinder DBS" ist nämlich irgendwas XBase-basierndes. mySQL mag im Vergleich zu MSSQL viele Sachen nicht gleich "out of the box" mitbringen, aber ich kann Dir zumindest versichern, daß fast all meine DB-basiernden gewerblich geschriebenen Anwendungen heutzutage mit mySQL viel performanter liefen, obwohl man sie zu 90% mit MSSQL ausliefert. ;)

Jetzt mal konkret: VB hört sich in soweit gut an, weil Ihr Euch schon damit auskennt. Als DB-Engine würde sogar Access reichen, vorausgesetzt die Tabellen bekämen die richtigen Indizes. Ich persönlich hätte wohl Delphi genommen und es erstmal mit Access als DB versucht. Wenn sich letztere als Schwachstelle rausstellen würde, griffe ich auf mySQL. Größere DB-Engines wären für dieses Vorhaben IMHO ein Overkill.

HellHorse
2003-10-28, 20:29:25
Datenbank:
Kommt ihr legal und gratis an MS SQL Server? (Ja, das ist wichtig)
Falls nicht:
Wenn es nicht unter Windows zu laufen braucht, ist wohl PostgreS am geilsten (ok, geht mit Cygwin, aber es soll ja simpel sein). Ansonsten müsst ihr wohl zu MySQL greiffen.

Nachteile:
- Foreign Key/Cascade geht zwar, aber nur mit InnoDB's es müssen und Indizes erstellt werden
- keine Trigger, braucht ihr wahrscheinlich nicht
- keine Stored Procedures, braucht ihr wahrscheinlich noch weniger nicht
- falls ihr Strings wollt, die länger als 256 Zeichen sind (nicht TEXT, da man den nicht als key verwenden kann), braucht ihr die 4.1 alpha

Vorteile:
- schnell
- einfach zu installieren, starten, runterfahren
- gute gratis Tools wie MySQLCC

Java:

- langsam, wir benötigen die komplizierten Graphiken mit 100ten Vektoren in unter 2 Sekunden

Hält sich das also immer noch. Siehe:
http://www.forum-3dcenter.org/vbulletin/showthread.php?s=&threadid=99944

- schlechte, komplizierte und lagsame Graphikausgabe? (Swing, AWT)

hä?

- wir benötigen KEINE plattformunabhängigkeit, verwenden höchstwahrscheinlich Windows ;-(
- kompliziert, die Vorteile Javas kommen in unserer Anwendung nicht zur Geltung

das ist kein Grund gegen Java, allerdings auch nicht dafür

- Druckeransteuerung ?

Kein Problem. Wenn ihr's in einem Fenster ausgebt, könnt ihr den gleichen Code für die Druckerausgabe verwenden.

Datenbankzugriff über JDBC ist simpel.

Gast
2003-10-28, 20:46:56
Original geschrieben von grakaman
Und wie gelangen nun die Daten in die DB? Ich habe keine Ahnung von Funken, aber irgendwie müssen die Geräte ja die Daten an das Programm geben. Außerdem war ja die rede von "Echtzeit", also wird da wohl kaum jemand die Daten eintippen.

Wie sollen die Daten denn sonst irgendwohin kommen?
Das ganze geht immer noch über Sprache bzw Morsen(aber weniger). Und keine Spracherkennung wird noch jm verstehen, den normale Menschen auch nicht im Rauschen wahrnehmen.
Die Geräte mögen zwar HighEnd sein, aber Daten austauschen tun sie auch nicht.
Ausserdem sitzen da immer genug Leute rum die grad nix machen ausser diskutieren und Biertrinken ;)
Alternativ könnte man auch über das Rufzeichen den Wohnort des Funkers ermitteln. Ist allerdings nicht so gut, weil es 1. der Wohnort und nicht der Aufenthaltsort ist und 2. die Daten in den Datenbanken nicht immer aktuell sind.

El Fantastico
2003-10-28, 21:36:06
Ich glaube Du solltest das Problem noch etwas näher erläutern... Mir stellen sich eigentlich unzählige Fragen, z.B.:

Bei so einem Wettbewerb sitzen da eine Menge Leute und stellen Verbindungen her zu anderen (nicht anwesenden) Personen - richtig?
Die Menge der Verbindungen/andere Verbindungsdaten könnt ihr automatisch erfassen?
Wieviel Daten werden pro Sekunde maximal generiert?
Existiert das Programm, das die Daten in die Datenbank einträgt schon?
Gibt es mehrere Messtationen, die mit der Datenbank über ein Netzwerk verbunden sind (dann könnte nämlich eher die Netzwerkbandbreite euer Problem werden als die DB- Geschwindigkeit)?
Die Positionsauswertung wurde ja schon angesprochen...

Für den Client ist Java denke ich völlig ausreichend (es sei denn ihr müsst zur Auswertung alle Datensätze verarbiten), die Grafikausgabe ist gar nicht so langsam wie Du vielleicht denkst ;) Falls ihr die Daten wirklich so schnell (selbst) in die DB schaufeln müsst ist Delphi wohl ganz gut - nicht zu kompliziert und schnell.

Eazy
2003-10-28, 21:44:23
Danke an alle für Eure Tipps!

Als Programmiersprachen kommen jetzt also noch Java, Visual Basic und Delphi in Betracht (C++ wollen wir eigentlich nicht unbedingt verwenden, da wir ja alle schon etwas Java programmieren können, und diese sich IMO doch relativ ähnlich sind).

Wir werden also wohl erstmal mit einer kleineren Datenbank kalkulieren, da die benötigte Performance ja anscheinend von allen DBs (inkl. Access) gebracht wird.

@Haarmann

Delphi scheint gut geeignet zu sein. Manche unserer Kommilitonen haben sich für das selbe Projekt bereits auf Delphi festgelegt (die kennen es aber bereits). Allerdings ist Delphi von den 3 Sprachen die einzigste, in der keiner von uns Erfahrung hat.

@grakaman

Die Daten werden wirklich per Hand eingegeben. Den Standort bekommt man über einen Standortkenner (nennt sich QTH), dem einen der Gegenüber mitteilt. Über diesen QTH kann man nun über eine mathematische Formel den Standort des anderen Funkers bestimmen und damit ausrechnen, wieviele Kilometer der andere Funker von einem entfernt ist. (Diese Berechnung übernimmt natürlich unser Programm)

@HellHorse

Wir würden höchstwahrscheinlich kostenlos an den MS SQL Server kommen (bietet unsere FH an). Von der Leistungsfähigkeit ist Java also auch OK.

@Gast

Danke für die Anregungen. Vielleicht können wir das mit dem PHP Script noch einbauen.

Eazy
2003-10-28, 22:08:01
Original geschrieben von El Fantastico
Ich glaube Du solltest das Problem noch etwas näher erläutern... Mir stellen sich eigentlich unzählige Fragen, z.B.:

Bei so einem Wettbewerb sitzen da eine Menge Leute und stellen Verbindungen her zu anderen (nicht anwesenden) Personen - richtig?
Die Menge der Verbindungen/andere Verbindungsdaten könnt ihr automatisch erfassen?
Wieviel Daten werden pro Sekunde maximal generiert?
Existiert das Programm, das die Daten in die Datenbank einträgt schon?
Gibt es mehrere Messtationen, die mit der Datenbank über ein Netzwerk verbunden sind (dann könnte nämlich eher die Netzwerkbandbreite euer Problem werden als die DB- Geschwindigkeit)?
Die Positionsauswertung wurde ja schon angesprochen...

Für den Client ist Java denke ich völlig ausreichend (es sei denn ihr müsst zur Auswertung alle Datensätze verarbiten), die Grafikausgabe ist gar nicht so langsam wie Du vielleicht denkst ;) Falls ihr die Daten wirklich so schnell (selbst) in die DB schaufeln müsst ist Delphi wohl ganz gut - nicht zu kompliziert und schnell.

Stimmt, der Funker kommuniziert nacheinander mit möglichst vielen anderen Funkern aus Europa. Für jede Verbindung bekommt er Punkte (je nach Entfernung). Die Punkte berechnet das Programm durch die Eingabe des Standortkenners (QTH) des Partners (der eigene Standortkenner muss natürlich bekannt sein).

Die Daten werden vom Funker selbst bzw. meist durch einen Kumpel/Assistenten per Hand in das Programm eingegeben ;-) und dann in der DB gespeichert. Die Datensätze pro Sekunde sind also eher niedrig ;-). Datenbank und Anwendung laufen auf dem selben Rechner (nicht gerade professionell, aber welcher Funker hat schon einen Server im Keller stehen). Man könnte das Programm also eventuell auch mobil mit einem Notebook einsetzen.

In der Graphik werden voraussichtlich nur die Datensätze eines Contests dargestellt. Ein Contest besteht aus ca. 1300 Datensätzen, also müssen auch ca. 1300 Vektoren bzw. Punkte auf die Graphik. Diese Punkte und Vektoren müssen allerdings vor dem Zeichnen noch einzeln berechnet werden (aus dem QTH-Kenner muss glaube ich über den Azimuth der Längen- und Breitengrad des Standorts berechnet werden und aus diesen dann der Vektor bzw. Punkt in der Graphik, bin mir aber nicht 100%ig sicher, mit dieser Materie kenne ich mich gar nicht aus!).

Da in der Datenbank allerdings mehrere Contests (ist das der Plural?) gespeichert sind, kann die DB aus über 100000 (100k) Datensätzen bestehen. Die Suchfunktion muss also innerhalb 200-500ms die gesamten 100000 Datensätze durchsuchen.



Die Sprache muss also gute Graphikfunktionen, Druckeransteuerung und Datenbankunterstützung (möglichst für verschiedene DBS) bieten und relativ schnell sein.

Die DB sollte auch Wildcards unterstützen. Ist das eventuell ein Problem oder gibt es da so etwas wie einen "like"-Operator?

Danke und Gruß
Eazy

El Fantastico
2003-10-28, 22:55:11
Original geschrieben von Eazy
Die Daten werden vom Funker selbst bzw. meist durch einen Kumpel/Assistenten per Hand in das Programm eingegeben ;-) und dann in der DB gespeichert. Die Datensätze pro Sekunde sind also eher niedrig ;-). Datenbank und Anwendung laufen auf dem selben Rechner

Ahh okay, jeder Funker hat seine eigene DB... Ich hatte irgendwie ein Client-Sever System im Kopf ;)
Original geschrieben von Eazy
In der Graphik werden voraussichtlich nur die Datensätze eines Contests dargestellt. Ein Contest besteht aus ca. 1300 Datensätzen, also müssen auch ca. 1300 Vektoren bzw. Punkte auf die Graphik.

Ich weiss ja nicht, wie komlex die Vorberechnungen sind, aber 1300 Linien/Punkte innerhalb von zwei Sekunden darzustellen schafft mein Athlon/1000 locker mit dem Sun JDK 1.4.1 (hab allerdings nur eine Skalierung als Vorberechnung)
Original geschrieben von Eazy
Da in der Datenbank allerdings mehrere Contests (ist das der Plural?) gespeichert sind, kann die DB aus über 100000 (100k) Datensätzen bestehen. Die Suchfunktion muss also innerhalb 200-500ms die gesamten 100000 Datensätze durchsuchen.

Da würde ich Dir einfach einen kleinen Benchmark vorschlagen, ein Programm zum Füllen der DB mit Zufalls-Testdaten dürfte relativ fix geschrieben sein. Hab mit MySQL bis jetzt nur gute Erfahrungen gemacht, so grosse Datenbanken hatte ich allerdings nicht.
Original geschrieben von Eazy
Die Sprache muss also gute Graphikfunktionen, Druckeransteuerung und Datenbankunterstützung (möglichst für verschiedene DBS) bieten und relativ schnell sein.

Also Grafik lässt sich mit Java eigentlich sehr einfach programmieren. Mit der Druck-API hab ich keine Erfahrung. Für MySQL gibt es einen JDBC Treiber (von MySQL AB).
Original geschrieben von Eazy
Die DB sollte auch Wildcards unterstützen. Ist das eventuell ein Problem oder gibt es da so etwas wie einen "like"-Operator?

LIKE sollte mit MySQL funktionieren.

Viel Erfolg schonmal! :)

Trap
2003-10-29, 00:15:57
Original geschrieben von Gast
ähm ja....
Uni ist ja das selbe wie ein LK :D

Das zeugt nur von mangelnder Teamfähigkeit und/oder schlechtes Programmdesign. Warum sollten nicht Leute an unterschiedlichen Programmteilen schaffen können ohne viel Abstimmungsarbeit ?
4 Leute sind jetzt echt nicht viel

Für eine Arbeit die ein Programmierer in einer Woche Vollzeitarbeit erledigt schon. Die Firma will ich sehen, die darauf 4 Leute ansetzt.
Mangelnde Teamfähigkeit, hmm, das war bei meinem Projekt durchaus dabei. Macht aber nix, je mehr Fehler man macht, desto mehr kann man dabei lernen.

Ob man ein Projekt im Rahmen der Uni oder im LK macht macht garnix aus, wichtig ist wer im Team dabei ist, wieviel vorgegeben wird und wie bewertet wird.

ethrandil
2003-10-29, 00:22:53
Original geschrieben von Eazy Ein Contest besteht aus ca. 1300 Datensätzen, also müssen auch ca. 1300 Vektoren bzw. Punkte auf die Graphik. Diese Punkte und Vektoren müssen allerdings vor dem Zeichnen noch einzeln berechnet werden.


Wenn du die Grafik mit einem 'refresh' haben willst, dann kannst du theoretisch die Vektoren cachen, die du schon berechnet hast, und dann jeweils nur die neu dazugekommenen zeichnen und berechnen.
Das dürfte sehr performant sein. Für neuzeichenaktionen, denen keine datenveränderungen zugrundelegen kann man einfach das gespeicherte Bild anzeigen.
Die Grafikfunktionen sind auch eher Komfortabel. Und Beim Drucken könnte man dann sogar Antialiasing benutzen ;-)

Datebnabkunterstützung für Java gibt es per Treiber, den es aber für die gängigsten DBs (incl. MySQL) gibt. Wie Schnell die sine weiß ich nicht genau, bei mir wars nie ein Problem. MySQL benutze ich auch (eigentlich nur), und habe keine schlechten Erfahrungen gemacht. Bis auf dass es keine Trigger oder Stored Procedures gibt. Das braucht ihr aber ja nicht :)

Die DB sollte auch Wildcards unterstützen. Ist das eventuell ein Problem oder gibt es da so etwas wie einen "like"-Operator?
Ja, gibt es. bei (My)SQL sieht das so aus:
SELECT * FROM tabelle WHERE name LIKE "bla%bla"
dabei entspricht % einem *. Das kann man ja mit ner funktion umformen.

Javaintern gäbe es auch echte Reguläre Ausdrücke, aber dazu müsstet ihr alle Datensätze lokal haben. -> zu vermeiden.

Ich würde auch Java nehmen.

Eth

P.S.:
Bei Java müsst ihr aufpassen, dass ihr die GUIs richtig baut, denn wenn nicht kanns schonmal langsam und unübersichtlich werden ;-). Ihr könntet ja mal das aktuelle 'Java Magazin' lesen ...

Crushinator
2003-10-29, 10:40:57
Original geschrieben von Eazy
Die Sprache muss also gute Graphikfunktionen, Druckeransteuerung und Datenbankunterstützung (möglichst für verschiedene DBS) bieten und relativ schnell sein. Dann muß ich meinen Tipp von vorhin (VB besonders die .Net Version) relativieren. In diesem Falle werdet Ihr mit Delphi wahrscheinlich glücklicher. Außerdem hätten Delphi/JAVA auch noch den Vorteil, daß sich damit die Ergebnisse eines ordentlichen OO-CASE-Tools einfacher umsetzen lassen. Ich bezweifle nur einwenig, daß man mit JDBC die anvisierten Antwortzeiten hinbekommt. Rein technisch fände ich eine JAVA-Lösung auf alle Fälle viel interessanter als eine mit VB.
Die DB sollte auch Wildcards unterstützen. Ist das eventuell ein Problem oder gibt es da so etwas wie einen "like"-Operator? "SELECT BLA FROM BLUPP WHERE BLA LIKE 'Me%r';" würde bei jeder ODBC/JDBC Verbindung funktionieren. Manche (z.B. Access) wollen aber * anstatt % haben. :)

Eazy
2003-10-29, 10:54:31
Wir haben uns jetzt nach langer Diskussion vorläufig mal für Visual C++ entschieden ;-). Mal wieder alles über den Haufen geworfen.

Meint Ihr, dass dies eine gute Wahl ist? Wie ist die Graphikfunktionalität von Visual C++? Ist das Drucken einer Graphik unter Windows einfach?

Als Datenbank wollen wir höchstwahrscheinlich mySQL verwenden. Funzt das mit Visual C++ zusammen?

Sollen wir die .Net Version verwenden und was hat es eigentlich mit diesem Visual C# auf sich?

Vielen Dank nochmal für Eure Hilfe.

Gruß
Eazy

grakaman
2003-10-29, 11:26:16
Original geschrieben von Eazy
Wir haben uns jetzt nach langer Diskussion vorläufig mal für Visual C++ entschieden ;-). Mal wieder alles über den Haufen geworfen.
Meint Ihr, dass dies eine gute Wahl ist? Wie ist die Graphikfunktionalität von Visual C++? Ist das Drucken einer Graphik unter Windows einfach?


Das musst schon du wissen. Viel wichtiger ist, dass ihr euch in einer Sprache richtig gut auskennt.


Als Datenbank wollen wir höchstwahrscheinlich mySQL verwenden. Funzt das mit Visual C++ zusammen?


Davon kann ich nur dringlichst abraten. Die MSDE reicht ja auch aus und ist imho kostenlos (zumindest liegt sie kostenlos bei MS Office/Entwickler Produkten bei).


Sollen wir die .Net Version verwenden und was hat es eigentlich mit diesem Visual C# auf sich?


Wäre vom Vorteil. Vor allem, weil ja euer Programm eigentlich geradezu nach WebServices schreit. Auch eine P2P Implementation würde ich in deinem Fall in Erwägung ziehen. Da bietet .NET einfach schon viele Klassen, die einen das Leben leichter machen. Ansonsten schließt sich hier der Kreis zu deiner ersten Frage. Es ist wichtig, dass du dich in einer Sprache gut auskennst.

MfG

Eazy
2003-10-29, 11:33:47
Original geschrieben von grakaman
Das musst schon du wissen. Viel wichtiger ist, dass ihr euch in einer Sprache richtig gut auskennt.



Davon kann ich nur dringlichst abraten. Die MSDE reicht ja auch aus und ist imho kostenlos (zumindest liegt sie kostenlos bei MS Office/Entwickler Produkten bei).



Wäre vom Vorteil. Vor allem, weil ja euer Programm eigentlich geradezu nach WebServices schreit. Auch eine P2P Implementation würde ich in deinem Fall in Erwägung ziehen. Da bietet .NET einfach schon viele Klassen, die einen das Leben leichter machen. Ansonsten schließt sich hier der Kreis zu deiner ersten Frage. Es ist wichtig, dass du dich in einer Sprache gut auskennst.

MfG

3 von uns (inkl. mir) kennen sich mit C noch gar nicht aus. Einer hat schon etwas Erfahrung. Allerdings können wir bereits Java programmieren und der Unterschied scheint ja nicht sooo rießig zu sein. Wir wollen aber alle viel lernen, deswegen haben wir uns auch gegen Visual Basic entschieden.

Meinst Du echt, dass es bei Visual C++ und mySQL Probleme geben wird? Kann man da nicht ODBC verwenden?

Die Webfähigkeit ist eigentlich unwichtig, da wir nach Ende des Projektes wahrscheinlich nicht mehr all zu viel mit dem Programm machen werden. Gibt es sonst noch relevante Unterschiede zwischen Version 6 und .Net?

Gruß
Eazy

Crushinator
2003-10-29, 11:53:20
Original geschrieben von Eazy
Wir haben uns jetzt nach langer Diskussion vorläufig mal für Visual C++ entschieden ;-). Mal wieder alles über den Haufen geworfen. Oha, wenn Ihr Euch damit nicht etwas übernommen habt. :kratz2:
Meint Ihr, dass dies eine gute Wahl ist? Wie ist die Graphikfunktionalität von Visual C++? Ist das Drucken einer Graphik unter Windows einfach? Nichts gegen VC++ an sich, aber wenn man NICHT gerade ein GUI-Designer dazu parat hat oder sich sehr gut mit MFC auskennt, ist es genau so angebracht wie mit Panzerfaust oder einem Leo2 auf Ameisen schiessen zu üben. Oder noch präziser: Wie ohne GPS eine Rakete zum 5000 Km entfernten Ziel führen zu wollen.
Als Datenbank wollen wir höchstwahrscheinlich mySQL verwenden. Funzt das mit Visual C++ zusammen? Ja, das geht damit mind. genau so gut wie unter den anderen Sprachen.
Sollen wir die .Net Version verwenden und was hat es eigentlich mit diesem Visual C# auf sich? :???: Wie meinen? Meinst Du jetzt C++ oder C#? Das wären nämlich zwei verschiedene paar Schuhe. C# ist nicht C++ und damit kann man nur .Net Apps erstellen. C++ hingegen ist auch für vollwertige Anwendungen zu gebrauchen. Ist denn die Notwendigkeit gegeben eine .Net Anwendung zu realisieren? Wenn ja, was genau ist die Begründung? Wenn ich das richtig verstanden habe soll die Anwendung nicht gerade verteilt über mehrere Rechner laufen, oder doch? (OK, hat sich im späteren Posting geklärt)
(...) Gibt es sonst noch relevante Unterschiede zwischen Version 6 und .Net? Die 6 kann kein .Net (Ach was :D) und die MFC kann von Haus aus (sehr zusammengefasst gesagt) auch einwenig weniger. ODBC ist dort schon mehr als sehr gut unterstützt. Zusammengefasst: Die 6 kann von Haus aus mehr als Ihr je hierfür brauchen werdet.

grakaman
2003-10-29, 12:08:23
Original geschrieben von Eazy
3 von uns (inkl. mir) kennen sich mit C noch gar nicht aus. Einer hat schon etwas Erfahrung. Allerdings können wir bereits Java programmieren und der Unterschied scheint ja nicht sooo rießig zu sein. Wir wollen aber alle viel lernen, deswegen haben wir uns auch gegen Visual Basic entschieden.


Dann benutzt eben Java. Das mit VB halte ich für ein Gerücht. Es gibt genügend Menschen, die professionell in VB programmieren. Man muss halt nur generell Ahnung von Programmiertechniken/Softwaredesign haben. Wenn es dir nur ums Lernen geht, musst du eh viele Bücher lesen. Denn was nützt dir schon die tollste Sprache mit den tollsten Klassen, wenn du noch nie etwas davon gehört hast.


Meinst Du echt, dass es bei Visual C++ und mySQL Probleme geben wird? Kann man da nicht ODBC verwenden?


Probleme vielleicht nicht, aber mySQL kann doch nichts groß. MySql benutzen doch nur Trolle und Heiseleser.
Außerdem würde ich nie meine DB mit einem ODBC Treiber ansprechen, verwende lieber einen nativen Treiber.



Die Webfähigkeit ist eigentlich unwichtig, da wir nach Ende des Projektes wahrscheinlich nicht mehr all zu viel mit dem Programm machen werden. Gibt es sonst noch relevante Unterschiede zwischen Version 6 und .Net?


Das hat doch nicht zwangsweise mit dem Internet zu tun. WebServices würden sich aber prima anbieten, wenn es um die Berechnung der Koordinaten geht oder eben generell Remoting. Sö könnte jemand die Daten an einen Service schicken, der bearbeitet diese, löst ein Ereignis aus und übergibt dem Eventhandler die Daten als Argument. Oder ihr macht eben eine P2P Applikation, bei der jeder Client jeden Client benachrichtigt, falls sich seine Daten ändern.
Ich kenn mich zwar mit VB6 nicht weiter aus, aber im Vergleich zu .NET liegen Welten.

MfG

Crushinator
2003-10-29, 12:32:10
Original geschrieben von grakaman
(...) Probleme vielleicht nicht, aber mySQL kann doch nichts groß. MySql benutzen doch nur Trolle und Heiseleser.
Außerdem würde ich nie meine DB mit einem ODBC Treiber ansprechen, verwende lieber einen nativen Treiber. (...) Ohne Dir zu nahe treten zu wollen, aber a) lautet die Anforderung: DB soll einfach austauschbar sein und b) befinden wir uns wohl gerade auch auf einem Troll-Forum, denn dieses hier läuft auf mySQL. ;)

Exxtreme
2003-10-29, 12:38:31
Original geschrieben von crushinator
Ohne Dir zu nahe treten zu wollen, aber a) lautet die Anforderung: DB soll einfach austauschbar sein und b) befinden wir uns wohl gerade auch auf einem Troll-Forum, denn dieses hier läuft auf mySQL. ;)
ROFL, ich werde nachher Leonidas fragen ob er sich mit Heiseleser und/oder Troll identifizieren kann. ;)

grakaman
2003-10-29, 12:38:32
Original geschrieben von crushinator
Ohne Dir zu nahe treten zu wollen, aber a) lautet die Anforderung: DB soll einfach austauschbar sein und


Das ist eine Frage des guten Softwaredesigns und die Aufgabe des DAL. Wenn man eben auf eine neue DB switchen will, muss man nur noch den DAL anpassen, was i.d.R. in wenigen Minuten erledigt ist.


b) befinden wir uns wohl gerade auch auf einem Troll-Forum, denn dieses hier läuft auf mySQL. ;)

Ja, und wie oft ist das Forum hier nicht erreichbar? Das ist genauso wie bei Heise, dort ist das DBMS auch MySQL und das Forum ist arsch langsam. Abgesehen davon kann ja MySQL wirklich gar nichts. Zumindest als ich das letzte mal damit zu tun hatte, konnte man ja nicht einmal Unterabfragen damit machen.

MfG

Exxtreme
2003-10-29, 12:54:20
Also mein Senf zum Topic. :)

Für DB-Anwendungen würde ich keine "Overkill-Programmiersprache" nehmen wie C/C++. Hier bietet sich IMHO VB oder Delphi an. Java und PHP könnten zu langsam sein.

Als DB könnte auch PostgreSQL in Frage kommen. Das Teil ist eigentlich ganz flott, kostenlos und kann viel mehr als MySQL. :)
Der SQL-Server von Microsoft ist auch sehr gut. Damit kann man auch wirklich nichts falsch machen. Sehr flott, sehr stabil und zuverlässig. Kostet aber insgesamt gesehen eine schöne Stange Geld.


Was den Funktionsumfang von MySQL angeht, da gebe ich grakaman übrigens recht. :)

ethrandil
2003-10-29, 12:58:05
Original geschrieben von grakaman MySQL und das Forum ist arsch langsam. Abgesehen davon kann ja MySQL wirklich gar nichts. Zumindest als ich das letzte mal damit zu tun hatte, konnte man ja nicht einmal Unterabfragen damit machen.
Ja, aber das ist auch nicht notwendig :-)
Das Forum ist nicht vergleichbar mit der Anwendung, die gefordert ist.
Dort werden keine größeren Datenmengen pro Datensatz gefordert.
Das Forum jedoch besteht aus rel. langen Datensätzen, die auch noch indiziert sind ...

Und zu C++: Ja, das ist _viel_ schwerer, und bissl anders auch ;-)
Nehmt dann lieber gleich Java, das finde ich persönlich wesentlich übersichtlicher.

Eth

El Fantastico
2003-10-29, 13:04:24
Original geschrieben von Eazy
3 von uns (inkl. mir) kennen sich mit C noch gar nicht aus. Einer hat schon etwas Erfahrung. Allerdings können wir bereits Java programmieren und der Unterschied scheint ja nicht sooo rießig zu sein.
Wenn das so ist, würde ich von C++ lieber die Finger lassen - ihr werdet genug mit euren eigentlichen Aufgaben zu tun haben, als das ihr euch in C++ einarbeiten könnt. Der Unterschied zu Java ist immens, ich würde mich da von der ähnlichen Syntax nicht blenden lassen! C++ ist SEHR komplex und hat Konzepte, an die ihr euch wahrscheinlich erst gewöhnen müsst (Destruktoren, nichtvirtuelle Klassenmethoden etc.)
Original geschrieben von Exxtreme
Als DB könnte auch PostgreSQL in Frage kommen. Das Teil ist eigentlich ganz flott, kostenlos und kann viel mehr als MySQL. :)
...
Was den Funktionsumfang von MySQL angeht, da gebe ich grakaman übrigens recht. :)
Mag alles sein, tut aber nichts zur Sache... Entscheident ist doch, ob MySQL die Anforderungen erfüllt oder nicht ;) Wenn ja ist es eine gute Wahl, weil kostenlos und unter Windows lauffähig.

Crushinator
2003-10-29, 14:14:39
Auch an grakaman,
Original geschrieben von Exxtreme
(...) Was den Funktionsumfang von MySQL angeht, da gebe ich grakaman übrigens recht. :) Das ist ja auch nicht aus der Welt zu schaffen. Ich finde nur unser lieber grakaman schiesst mit seinen Anforderungen an einer für dieses Projekt in Frage kommenden DB-Engine etwas am Ziel vorbei. Man hat es da nur mit ~2 Tabellen zu tun und braucht soweit ich es überblicken kann weder Trigger, noch sp noch Unterabfragen auf DB-Ebene. Hier geht es schlicht um Geschwindigkeit auf herkömmlicher Hardware, und davon kann mySQL eine Menge.

Zumal ich in den letzten 5 Jahren nur zugern einen MSSQL-Server gesehen hätte, der je in der Lage gewesen wäre überhaupt soviele Connections wie z.B. im Heiseforum mit Ergebnissen zu beliefern ohne dabei einen Windows Advanced-Server - mit entsprechender CPU-Anzahl (mehr als 2) und dem "/bigmem" Parameter versehen - vorauszusetzen und dabei trotzdem zusammenzubrechen.

Lange Rede kurzer Sinn: Die Diskussion um Vor- oder Nachteile von mySQL sollte IMHO immer im Zusammenhang mit den Anforderungen geführt werden, da es sonst fast immer zu einem Glaubenskrieg führt.

Haarmann
2003-10-31, 17:40:52
crushinator

Das stimmt wohl nicht mitem MS SQL ... Ich denke Autoscout24 kommt auf ne ansehnliche Zahl Abfragen/Clients und läuft auf ner recht normalen Kiste, resp auf deren 3, wobei eines ne FW darstellt, dazu WEB und DB Server, weil der Hoster das ned hinkriegt ;).

Als kleiner "Insidertip" wäre noch Firebird zu nennen als SQL DB. Gewissen Leuten war diese DB mal unter nem alten Namen bekannt... Der grösste Vorteil ist eigentlich, dass es die für fast alle Plattformen gibt.

http://firebird.sourceforge.net/

Crushinator
2003-10-31, 19:15:49
Original geschrieben von Haarmann
Das stimmt wohl nicht mitem MS SQL ... Ich denke Autoscout24 kommt auf ne ansehnliche Zahl Abfragen/Clients und läuft auf ner recht normalen Kiste, resp auf deren 3, wobei eines ne FW darstellt, dazu WEB und DB Server, weil der Hoster das ned hinkriegt ;). Ich möchte zwar ganz stark in Frage stellen, daß Autoscout24 auf soviele gleichzeitige Connections kommt, aber wenn doch wäre ich auch mal positiv überrascht. Meine letzten Erfahrungen mit über 1000 Usern, die gleichzeitig ein relativ simples XML-(nennen wir's)Redaktionssystem (aufgeteilt in App- und DB-Server) auf MSSQL2K-Basis nutzen sollten führten zu einer 4 CPU-Kiste mit 4 GB RAM, um dann festzustellen, daß die Antwortzeiten auf einer halb so großen Maschine unter normalem SMP Kernel 2.4 RedHat + mySQL 4.0b a) überhaupt da waren b) dann auch noch unterhalb von 2 Sek. ganz zu schweigen von den c) praktisch nicht vorhandenen Lizenzkosten. Am Ende entschieden wir uns dann doch lieber für DB2 auf RedHat-Linux, da die Performance auf alle Fälle besser war als beide zuvorgenannten, und der Kunde keine LowCost-DB auf seinen tollen xSeries dulden wollte, zumal beim fallen des Wortes DB2 keinem der AS/400- pardon iSeries-Freaks der Firma mehr das Lächeln aus dem Gesicht zu entfernen war. :banghead:
Als kleiner "Insidertip" wäre noch Firebird zu nennen als SQL DB. Gewissen Leuten war diese DB mal unter nem alten Namen bekannt... Der grösste Vorteil ist eigentlich, dass es die für fast alle Plattformen gibt. ... und für die Anforderungen hier mehr als ausreicht, um nicht die hervorragenden InterBase-Native-Treibern in Delphi und Co. zu erwähnen, die gerade zu danach schreien benutzt zu werden. :up:

Marcel
2003-11-01, 02:11:28
Original geschrieben von Eazy
Als Datenbank käme mySQL oder MSSQL in betracht (oder auch was anderes? Access?). Ist mySQL eigentlich wirklich ein "Kinder DBS"? Hat unser DABAS Prof. mal gemeint. (Wir haben übrigens voraussichtlich nur 1-2 Tabellen, werden zur Modellierung wohl ein CASE Tool verwenden)


Wenn Euer Prof wirklich "Kinder DBS" zu MySQL gesagt hat, dann frag ihn doch mal ganz unschuldig nach dem Unterschied zwischen einem DBS und einem DBMS...;)
MySQL ist halt nicht Codd-vollständig. Es ist auf den Betrieb als HTTP-Server-Datenlieferant optimiert und wird langsam vollständig. Checkt einfach in der Designphase, ob Ihr Unterabfragen und den Rest, der bei MySQL fehlt, braucht.

Seid nicht zu optimistisch bezüglich Austauschbarkeit des DBMS. Ich will nicht sagen, dass das nicht geht. Aber als ich eine VB-App dazu gebracht habe, per ODBC sowohl auf MySQL als auch auf .mdb-Dateien zuzugreifen, ist mit viel Schweiß eine sehr lange MySQL-SQL-zu-Access-SQL-Übersetzungsroutine entstanden. Erschwerend kam hinzu, dass Access sowas schönes wie Limit x,y gar nicht unterstützte. Grmpf.
Testet das vorher, bevor Ihr solch ein Feature mit einplant.
Wenn gar nicht mehrere Benutzer gleichzeitig auf einen Datenbestand zugreifen können müssen, dann ist die Frage, ob überhaupt ein SQL-Server nötig ist. Gibt Vor- und Nachteile, aber eine Single-User-Lösung ist mit Delphi und Paradox-Tabellen fix realisiert.
Ich persönlich favorisiere Delphi. Hat eine feine Datenbankanbindung und feine Reporting-Komponenten (für Drucklisten).
Erfahrung in einer Programmiersprache ist aber durch wenig zu ersetzen, wenn es einen Zeitrahmen gibt.(Und, nicht zu vergessen: In der WI ist Java sehr beliebt.)

PHP wäre das allerletzte, was ich einsetzen würde.

Haarmann
2003-11-01, 09:26:16
crushinator

Also wenn ich den "Vater" vom Autoscout mal wieder sehe, dann frage ich ihn über die Abfragedichte mal genau. Die Konkurrenz in der Schweiz jedenfalls versuchte es mal mit Java und Co ;). 7 Server brachen gleich sofort zusammen... Und die Seite ist natürlich kleiner als die Autoscout24.de Version.
Da ich ja lieber Delphi mag, lag das mitem Firebird ja auf der Hand. Ich wollte nur nichts von Interbase sagen.

Marcel

Tja.. bei Delphi Versionen mit BDE wechselst die DB wirklich schneller und einfacher aus. Allerdings wär ich nie auf die Idee gekommen es mit Access zu probieren - das ist keine DB. Von Paradox zu SQL was auch immer jedenfalls wars recht einfach, solange man die SQL Strings einfach hielt.

HellHorse
2003-11-01, 12:25:01
Original geschrieben von Marcel
....
Seid nicht zu optimistisch bezüglich Austauschbarkeit des DBMS. Ich will nicht sagen, dass das nicht geht.
....
JDBC, einfach eine andere DataSource holen.
Aufwand:
- eine neue Methode zum holen der Datasource, 6 - 8 Zeilen.
- eine Zeile ändern, nämlich die, wo die Methode zum holen der DataSource aufgerufen wird

Die SQL Syntax muss natürlich vom DBMS verstanden werden ;)

Marcel
2003-11-01, 12:56:40
Original geschrieben von HellHorse
JDBC, einfach eine andere DataSource holen.
Aufwand:
- eine neue Methode zum holen der Datasource, 6 - 8 Zeilen.
- eine Zeile ändern, nämlich die, wo die Methode zum holen der DataSource aufgerufen wird

Die SQL Syntax muss natürlich vom DBMS verstanden werden ;)

Ja, eben, die SQL-Snytax ist der springende Punkt. Ansonsten ist es in Delphi auch nur eine Sache einer Handvoll Zeilen.

grakaman
2003-11-01, 13:01:38
Original geschrieben von Marcel
Ja, eben, die SQL-Snytax ist der springende Punkt. Ansonsten ist es in Delphi auch nur eine Sache einer Handvoll Zeilen.

Deswegen ist es auch sinnvoll Sprocs zu verwenden, da man damit nicht die Applikation neu kompilieren muss, sondern lediglich die entsprechende Logik in der DB ändern muss.

MfG