Seite 2 von 2 ErsteErste 12
Ergebnis 21 bis 38 von 38

Thema: Programmiersprachen vergleichen durch einfache Programme

  1. #21
    MuadDib, deine Swing-Version sprengt das Forum (bei 1152x864, normale Zeichengröße). Vielleicht solltest du ein paar Zeilen teilen oder sie weniger stark einrücken.

    BTW, Swing ist eine API. ^_~

  2. #22
    Zitat Zitat
    Original geschrieben von Jesus_666
    MuadDib, deine Swing-Version sprengt das Forum (bei 1152x864, normale Zeichengröße). Vielleicht solltest du ein paar Zeilen teilen oder sie weniger stark einrücken.
    besser so?
    sorry, bei meiner Auflösung fällt mir das nicht auf...

    Zitat Zitat
    BTW, Swing ist eine API. ^_~
    Swing ist in der Standard Java-CL, ich hätte gedacht, dass nur zusätzliche Libraries angegeben werden sollten (eben wie z.B.: fulltick)

  3. #23
    Ich hab hier noch son bisschen was schönes gemacht:
    Code:
    #!perl
    
    print "Hallo Welt.\n";
    print "Bitte erste Zahl eingeben: ";
    chomp($a = <STDIN>);
    print "Bitte zweite Zahl eingeben: ";
    chomp($b = <STDIN>);
    do {
      print "Bitte Operation waehlen + - * / ";
      $operator = <STDIN>
    } until $operator =~ /[\+\-\*\/]/;
    
    print "$a $& $b = ", eval("$a$&$b");
    print "\nDanke fuer die Benutzung. Zum Beenden Enter druecken";
    <STDIN>
    Jetzt nurnoch 370bytes groß, allerdings noch ohne Features.

    Noch was feines, was als "Abfallprodukt" bei der Bearbeitung rumkam (die Extremversion des HalloWelt-Rechners[260bytes], jetzt mit Tribut an die Ausmaße)
    Code:
    #!perl
    
    print "Hallo Welt.\n";
    print "Bitte eine Rechenaufgabe eingeben. "
    print "Erlaubt sind + - * / () ^ sqrt()\n";
    chomp($a = <STDIN>);
    
    $b = $a;
    $a =~ s/\^/**/;
    
    print "$b = ", eval("$a");
    print "\nDanke fuer die Benutzung. Zum Beenden Enter druecken";
    <STDIN>
    [edit]
    Noch ein Paar Anmerkungen zu der Pascal-Version:
    Ich hätte op als [1] von dem eingelesenen definiert, und dann, da das Ergebnis vom Typ char ist, nen case drübergejagt. Außerdem hätte die Schleife durch "until op in ['+', '-', '*', '/']" kürzer terminiert werden können (wobei ich nicht weiß, welches laufzeittechnisch günstiger ist), nur mal so als Vorschlag[/edit]

    Geändert von Reaperman (16.12.2003 um 05:26 Uhr)

  4. #24
    Zitat Zitat
    Original geschrieben von Reaperman
    Noch ein Paar Anmerkungen zu der Pascal-Version:
    Ich hätte op als [1] von dem eingelesenen definiert, und dann, da das Ergebnis vom Typ char ist, nen case drübergejagt. Außerdem hätte die Schleife durch "until op in ['+', '-', '*', '/']" kürzer terminiert werden können (wobei ich nicht weiß, welches laufzeittechnisch günstiger ist), nur mal so als Vorschlag[/edit] [/B]
    Dann akzeptierst du auch eine Eingabe der Form "+abcd"... Ich würde sagen, laufzeittechnisch ist es ziemlich egal, um Vergleiche kommst du sowieso nicht herum...

  5. #25
    Warum sollte ich eine Eingabe der Form "+abcde" nicht akzeptiern? Das machten meine, bis auf die Extremversion, auch. Meiner kannst du auch Fred und Barney (danke Randal L. Schwartz) als Zahlen liefern, das Ergebnis ist dann halt 0 (mit Außnahme von Divisionen). Diese Toleranz und das automatische Konvertieren von numerischen und Stringwerten finde ich einfach geil:
    Code:
    $i++
    $i = "0$i" if length($i)==1

  6. #26
    Ich hab hier noch was kleines zum Thema Programmiersprachen-Vergleich:

    Ein simples 600x400 px großes Fenster an der Stelle 20x40, mit "Hello World" auf Position 100x100 (auf der Hello World Seite hab ich diese Beispiele nicht gefunden, allerdings ganz interessant...).

    Das erste zeigt das Problem gelöst mit Standard ANSI-C. Ich habe kein Toolkit verwendet, auch keinen GUI-Ersteller, sondern from-scratch den Code reingehackt (war übrigens mein erstes C-Windows Programm) ... das ganze ist 127 Zeilen lang (wenn man bedenkt, dass man - sollte man die WINAPI wirklich auf diese Weise programmieren - für jeden Button und jedes lächerliche Objekt so ziemlich den gleichen Code nochmal braucht, ganz zu schweigen von den ganzen Resourcen, muss man froh sein, dass es Toolkits gibt).

    Source

    Das zweite zeigt das ganze in Java. Stellt komplett dasselbe dar, benötigt allerdings nur 23 Zeilen...

    Source

  7. #27
    das kann man noch toppen ... in delphi brauchst du dafuer gar keinen code .. zumindest keinen selbstgeschriebenen ^^

  8. #28
    Zitat Zitat
    Original geschrieben von Ineluki
    das kann man noch toppen ... in delphi brauchst du dafuer gar keinen code .. zumindest keinen selbstgeschriebenen ^^
    zeigen

  9. #29
    Zitat Zitat
    Original geschrieben von MuadDib
    besser so?
    sorry, bei meiner Auflösung fällt mir das nicht auf...

    Swing ist in der Standard Java-CL, ich hätte gedacht, dass nur zusätzliche Libraries angegeben werden sollten (eben wie z.B.: fulltick)
    1.) Yup, danke.
    2.) Laut Sun ist Swing eine API. Und ich denke, daß unter "API" jegliche APIs angegeben werden sollten.
    Ich gebe unter "benötigt" alles an, was (abgesehen vom Compiler) zum Kompilieren benötigt wird; die offensichtilichen Sachen (wie die C++-STL) kann man eigentlich aber auch weglassen.


    Zitat Zitat
    Original geschrieben von Ineluki
    das kann man noch toppen ... in delphi brauchst du dafuer gar keinen code .. zumindest keinen selbstgeschriebenen ^^
    Das gilt auch für Visual Basic. Moment mal, das gilt für alle IDEs!

  10. #30
    das Rechen-dingens nochmal als perl version mit read-line support.
    D.h. das die gleichungen in einem stueck angegeben werden koennen
    ex: 12+44*17/9+80-20 etc...
    Wird dann komplett zusammengerechnet und ausgegeben, punkt vor komma wird aber nicht beachtet.

    Code:
    Lines:              18
    Size:              412 Bytes
    Binary Size: 2.034.275 Bytes (PAR: http://par.perl.org/)
    Code:
    #!/usr/bin/perl -w
    
    use strict;
    use Term::ReadLine;
    
    my $term = new Term::ReadLine "Input";
    my $r = $term->readline("Enter Calculation: ")."+";
    $r =~ s/[^0-9\+\-\*\/]//g;
    
    my @calc;
    sub AddOp($$) { push (@calc,@_); }
    $r =~ s/(.*?)([\+\-\*\/]+)/&AddOp($1,$2)/ge;
    pop(@calc);
    
    my $result=$calc[0];
    my $i=1;
    while($i<=$#calc)
    {
      $result = eval("$result$calc[$i]$calc[$i+1]");
      $i+=2;
    }
    
    print "Result: $result\n";
    @Reaperman: bitte bitte benutz "use strict;"

    Geändert von raiel (16.12.2003 um 22:02 Uhr)

  11. #31
    @Quisazaderach .. aehm ich mein Muaddib ...

    Wie soll ich dir das zeigen, das man keinen Quellcode selber schreiben muss ? ... soll ich ein video davon machen ? ^^

    Das ist ebend so bei visuellen RADs

  12. #32
    Zitat Zitat
    Original geschrieben von Ineluki
    RADs
    Ah, das Wort fehlte mir, als ich in meinem letzten Post "IDEs" geschrieben habe.

  13. #33
    @Ineluki
    So gut das Werkzeug auch sein mag, soviel Arbeit es dir auch abnimmt bei der Codegenerierung - was dein Programm tun soll mußt du nunmal selbst schreiben.
    Delphi versteckt den Aufbau des Fensters komplett vor dir, was du mit Java/Swing in den Code reinschreiben mußt schreibt Delphi in die .DFM Datei, gehört also IMHO auch zum Sourcecode.

  14. #34
    Zitat Zitat
    Original geschrieben von Ineluki
    Wie soll ich dir das zeigen, das man keinen Quellcode selber schreiben muss ? ... soll ich ein video davon machen ? ^^

    Das ist ebend so bei visuellen RADs
    Achso... das ganze ist also nur ein WYSIWYG-Editor der dir die ganze Code-Arbeit abnimmt..., das is ja langweilig
    Jetzt wird mir auch klar, warum deine Delphi-Programme so verdammt kurz sind

    Zitat Zitat
    Jesus
    Laut Sun ist Swing eine API. Und ich denke, daß unter "API" jegliche APIs angegeben werden sollten.
    Ich gebe unter "benötigt" alles an, was (abgesehen vom Compiler) zum Kompilieren benötigt wird; die offensichtilichen Sachen (wie die C++-STL) kann man eigentlich aber auch weglassen.
    Nun, wie auch immer... das Teil lässt sich in einer Sekunde in das Java-AWT Format konvertieren ... Swing hat nur mehr Stil

  15. #35
    Zitat Zitat
    Original geschrieben von Master of Disaster
    @Ineluki
    So gut das Werkzeug auch sein mag, soviel Arbeit es dir auch abnimmt bei der Codegenerierung - was dein Programm tun soll mußt du nunmal selbst schreiben.
    Delphi versteckt den Aufbau des Fensters komplett vor dir, was du mit Java/Swing in den Code reinschreiben mußt schreibt Delphi in die .DFM Datei, gehört also IMHO auch zum Sourcecode.
    Das Gleiche gilt an sich auch für GUI-Toolkits und die C++-Standardbibliothek.

    Mit FLTK und den verwendeten STL-Includes hat mein GUI-Rechner einen Codeumfang von ca. 1,5 MiB.

  16. #36
    Zitat Zitat
    Original geschrieben von Jesus_666
    Das Gleiche gilt an sich auch für GUI-Toolkits und die C++-Standardbibliothek.

    Mit FLTK und den verwendeten STL-Includes hat mein GUI-Rechner einen Codeumfang von ca. 1,5 MiB.
    Na, ich würde da schon einen Unterschied machen. Bei der Standard Library schreibst du ja keinen Code bzw. lässt dir keinen Code generieren, sondern schnappst einfach vorgefertigte Dinge. Fulltick oder Delphi erstellen dir den Code, sprich: nehmen dir selber Programmierarbeit ab. Wenn du fulltick nicht verwendet hättest wäre dein Source auch wesentlich länger geworden

  17. #37
    Zitat Zitat
    Original geschrieben von Master of Disaster
    @Ineluki
    So gut das Werkzeug auch sein mag, soviel Arbeit es dir auch abnimmt bei der Codegenerierung - was dein Programm tun soll mußt du nunmal selbst schreiben.
    Delphi versteckt den Aufbau des Fensters komplett vor dir, was du mit Java/Swing in den Code reinschreiben mußt schreibt Delphi in die .DFM Datei, gehört also IMHO auch zum Sourcecode.
    Ich hab ja auch nie gesagt, dass das nicht zum Code gehoehrt .. ich hab immer geschrieben, dass ich keinen Code selber schreiben musste .. und das ist ein enormer unterschied ..

    In diesem Thread gehts ja um den vergleich, wieviel Aufwand man mit einer Ptogrammiersprache treiben muss, um zum gleichen Ergebnis zu kommen ... und gerade, da Delphi ein RAD ist, ist es sehr geeignet um Windows Applicationen schnell erstellen zu koennen

    Zudem gibt dir ja Delphi auch die moeglichkeit, von grund auf alles selber zu scripten, also auf die RAD zu verzichten .. und dann sogar noch in 2 Moeglichkeiten .. sozusagen als Plain Pascal mit WinAPI genau so, wie man es in reinem C++ machen wuerde oder aber unter benutzung der VCL, jedoch dann mit per Hand Setzen der Eigenschaften, statt mit dem ObjectInspector

    @Muaddib
    Zitat Zitat
    Achso... das ganze ist also nur ein WYSIWYG-Editor der dir die ganze Code-Arbeit abnimmt..., das is ja langweilig
    Jetzt wird mir auch klar, warum deine Delphi-Programme so verdammt kurz sind
    Na ja .. ganz so ist es ja auch nicht .. du entwirfst halt visuell das layout und belegst dann die Komponenten mit Ereignissen, schreibst also im prinzip nur noch die OnClick-Funktion ... natuerlich haben die Programme wie alle Windowsprogramme auch eine Messageloop, aber die Steckt gleich mit in den Bibliotheken drinne und die bekommst du im normalfall nie zusehen

    Es gibt bei einem Programm eine Variable vom Typ TApplication und der werden dann Variablen vom Typ TForm (bzw von TForm abgeleitete Klasen) zugewiesen, welche dann unterkomponenten haben .. z.B. TLabel fuer static text oder TEdit fuer eingabefelder oder TButton ... und diese haben dann Eigenschaften, die auf methoden deiner abgeleiteten Klasse zeigen .. also z.B. TForm1.OnButtonClick ... der rest wird nur intern behandelt, so dass man sich aufs wesentliche konzentrieren kann, naemlich auf dass, was TForm1.OnButtonClick machen soll

    Geändert von Ineluki (17.12.2003 um 21:49 Uhr)

  18. #38
    Zitat Zitat
    Original geschrieben von Ineluki
    @Muaddib Na ja .. ganz so ist es ja auch nicht .. du entwirfst halt visuell das layout und belegst dann die Komponenten mit Ereignissen, schreibst also im prinzip nur noch die OnClick-Funktion ... natuerlich haben die Programme wie alle Windowsprogramme auch eine Messageloop, aber die Steckt gleich mit in den Bibliotheken drinne und die bekommst du im normalfall nie zusehen
    Exakt das, was eine RAD eben tut und exakt der Grund, warum RADs für Einsteiger so gut geeignet sind.

    Zitat Zitat
    Es gibt bei einem Programm eine Variable vom Typ TApplication und der werden dann Variablen vom Typ TForm (bzw von TForm abgeleitete Klasen) zugewiesen, welche dann unterkomponenten haben .. z.B. TLabel fuer static text oder TEdit fuer eingabefelder oder TButton ... und diese haben dann Eigenschaften, die auf methoden deiner abgeleiteten Klasse zeigen .. also z.B. TForm1.OnButtonClick ... der rest wird nur intern behandelt, so dass man sich aufs wesentliche konzentrieren kann, naemlich auf dass, was TForm1.OnButtonClick machen soll
    Exakt das, was auch jedes von Normalsterblichen verwendbare GUI-Toolkit etc. tut. Ehrlich - wen interessiert es, wie die Hauptschleife eines Toolkits etc. funktioniert, wenn er nur ein Fenster damit machen will?

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •