Verzweiflung an den "höheren Programmiersprachen"

Post Reply
Message
Author
Freddy

Verzweiflung an den "höheren Programmiersprachen"

#1 Post by Freddy »

Hi all!

Dies ist diesmal keine Frage, sondern lediglic eine Feststellung meinerseits wie schlecht "höhere Programmiersprachen" sind.

Ich hatte früher mit GW-Basic angefangen und hatte später in QBasic programmiert. VisualBasic kann ich nicht, hingegen GFA-Basic, das dem QBasic sehr ähnlich ist.
Und irgendwie ist für mich Basic immer noch meine Lieblings-Programmiersprache.

Später hatte ich auch noch ANSI-C gelernt, doch damit kann man bekantlich nur Text-Modus Programme entwickeln.


Also guckte ich mir vor einiger Zeit Java an.
Java - plattformunabhängig und die AWT/Swing-Programmierung wird in jedem Java-Buch beschrieben.
Nachteile: Im Gegensatz zu C++ gibt es dort nicht die Möglichkeit Funktionen (oder besser gesaGT Module) zu überladen.
Außerdem wenn man den Dateinamen ändert um ein zweites Programm mit einer kleinen Abwandlung zu schreiben, muß man auch im Programm den Klassenname verändern. Und damit bei vielen Programmen auch andere Stellen im Programm wo der Klassenname vorkommt. So nimmt ein simples Umbenennen des Programmnamens viel Arbeit in Anspruch. <img src="http://www.pl-forum.de/UltraBoard/Images/Sad.gif" border="0" align="middle">
Und dann die grafische Programmierung: Man kann Linien, Ellipsen und Rechtecke (mit und ohne abgerundeten Ecken) erstellen (mit dem JDK1.1). Jedoch gibt es keinen Befehl um einen einfachen Pixel an eine bestimmte Fensterposition zu setzen!!!
Und wenn man die Lienienänge oder den Kreisradius möglichst klein hält, damit auch nur _ein_ Pixel erscheint, dann dauert es doch bei vielen Pixeln viel zu lange, da der Rechner für jeden Pixel versucht einen Kreis oder eine Linie zu berechnen. Die komplizierteren geometrischen Figuren sind mit Java mögich, docj soetwas simples wie ein Pixel nicht. <img src="http://www.pl-forum.de/UltraBoard/Images/Sad.gif" border="0" align="middle">
Und dann betrachte man sich Swing, das vollständig in Java geschrieben wurde und wo mit Sicherheit einzelne Pixel für verwendet wurden. Laut den Entwicklern von der freie VM Kaffe, hat Sun mit Swing auf eine nicht dokumentierte API zugegriffen !!!
Ja warum gibt es denn Teile die nicht dokumentiert sind?
Angenommen man klickt in einem Swing-Programm in einem Menü auf "Datei", dann öffnet sich bekanntlich ein Untermenü, das _nicht_ ins Fenster gezeichnet wird, denn es kann auch über das Fenster hinausragen. Es wurde also (von der AWT-Sicht aus betrchtet) bei der Entwicklung von Swing (welches vollständig in Java geschrieben wurde), ein vom Fenster unabhängiger Bereich auf dem Bildschirm reserviert und verwendet, der sich jedoch am Fenster in sofern orientiert, indem das Fenster bstimmt, wo auf dem Bildschirm drauf los gezeichnet werden soll.
Aber wie realisiert man soetwas in AWT? Dann könnte man doch auch Unix-Programme wie oneko (die kleine Katze, die dem Mauszeiger hinterherrennt) in Java programmieren. Doch solche grundlegenen Funktionen sind natürlich nicht dokumentiert, genauso wie das erstellen von Pixeln nicht dokumentiert ist.

Dann gibt es jedoch noch C-Sharp. Dort gibt es das Überladen von Funktionen (wovon C-Sharp auch regen Gebrauch macht), man kann den Dateinamen ändern ohne das Programm ändern zu müssen, und es gibt ein Haufen anderer Vorteile gegenüber Java.
Wenn man dort im grafischen Modus etwas erstellen will, so kann man Linien, Ellipsen (gefüllt oder leer), Rechtecke (gefüllt und Leer), Ellipsenböegen, "Tortenstücke", Bezierkurven u.ä. erstllen. Einen Befehl um einen einfachen Pixe zu zeichnen, habe ich jedoch auch dort nicht gefunden (Gucke demnächst auch mal in ander DLLs, als
System.Drawing.DLL).

Und wenn man denkt, bei C/C++ sei alles besser, dann irrt man sich. Wenn man in GTK+ programmiert, dann kann man auch wieder Linien, Ellipsen und Rechtecke zeichen, jedoch fehlen auch dort wieder einfache Pixel.


Ich muß sagen, daß ich die Entwickler von höheren Programmiersprachen einfach nicht verstehen kann.
Aus einfachen Dingen (wie Pixeln), kann man immer etwas komplexeres aufbauen (wie Linien oder Kreise), doch warum wird einem bei höheren Programmiersprachen nur das komplexere angeboten, so daß man in seinen Möglichkeiten, andere kompexere Dinge zu erstellen, einfach eingeschränkt wird?


Grüße
Freddy - der sehnsuchtsvoll in eine schöne Basic-Zeit zurückblickt

Markus

Re: Verzweiflung an den

#2 Post by Markus »

Hi Freddy,

also bei Qt gibt's durchaus die Möglichkeit einzelne Pixel zu setzen

void Painter::drawPoint ( int x, int y )

Ich weiß jedoch nicht wie es da mit der Geschwindigkeit aussieht. <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

Gruß,
Markus

Homo Faber

Re: Verzweiflung an den

#3 Post by Homo Faber »

> Nachteile: Im Gegensatz zu C++ gibt es dort
> nicht die Möglichkeit Funktionen (oder
> besser gesaGT Module) zu überladen.

public class Overloading {

public static void main(String[] args) {
testf(42);
testf(42.8);
}


public static void testf(int i) {
System.out.println("testf(int), "+i);
}

public static void testf(double d) {
System.out.println("testf(double), "+d);
}

}


$ java Overloading
testf(int), 42
testf(double), 42.8
$


Was funktioniert da nicht?

(was du mit "Module überladen" meinst, ist mir allerdings unklar)


> Angenommen man klickt in einem
> Swing-Programm in einem Menü auf "Datei",
> dann öffnet sich bekanntlich ein Untermenü,
> das _nicht_ ins Fenster gezeichnet wird,
> denn es kann auch über das Fenster
> hinausragen

Ja, das machen sie intern über eine nicht dokumentierte JNI-Anbindung, die die entsprechende Funktionalität der Plattform nutzt (das wird also nicht vollständig in Java implementiert).

Das hindert trotzdem niemenden daran, Swing zu re-implementieren (man müsste dann ein analoges JNI-Interface schreiben).


> Aber wie realisiert man soetwas in AWT?

Geht nicht portabel.

> Dann könnte man doch auch Unix-Programme wie
> oneko (die kleine Katze, die dem Mauszeiger
> hinterherrennt) in Java programmieren. Doch
> solche grundlegenen Funktionen sind

"grundlegenen Funktionen"? Naja...

Post Reply