Welche Zweitsprache? Python oder Perl?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
wanne
Moderator
Beiträge: 7462
Registriert: 24.05.2010 12:39:42

Re: Welche Zweitsprache? Python oder Perl?

Beitrag von wanne » 15.02.2014 20:18:17

Compilierende Sprachen sind ungerecht. Und endrekursive Varianten in Lisp und C zählen nur als Interativ:

C:

Code: Alles auswählen

#include <stdio.h>
#include <gmp.h>

int main(int arg, char** argv)
{
        if(arg!=2)
                exit(1);
        unsigned long to = atol(argv[1]);
        MP_INT num;
        mpz_init_set_ui(&num,2UL);
        for(unsigned long i=3;i<=to;i++)
                mpz_mul_ui(&num,&num,i);
        char* out=NULL;
        printf("0x%s",mpz_get_str(out,16,&num));
}

Code: Alles auswählen

$ time ./cfakt 10000 > /dev/null 

real    0m0.016s
user    0m0.008s
sys     0m0.004s

Code: Alles auswählen

$ time ./cfakt 100000 > /dev/null 

real    0m2.168s
user    0m1.820s
sys     0m0.000s
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
novalix
Beiträge: 1909
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Re: Welche Zweitsprache? Python oder Perl?

Beitrag von novalix » 16.02.2014 00:29:17

An die Laufgeschwindigkeit von C kommt man mit Lisp nicht wirklich ran.
Ich mit Sicherheit nicht:

Code: Alles auswählen

(time (fact-tail 30000))
Evaluation took:
  0.879 seconds of real time
  0.896000 seconds of total run time (0.888000 user, 0.008000 system)
  [ Run times consist of 0.080 seconds GC time, and 0.816 seconds non-GC time. ]
  101.93% CPU
  1,752,832,040 processor cycles
  796,106,064 bytes consed
Endrekursiv mit Typendeklaration.
An dem C-Beispiel sieht man aber auch, dass es recht aufwendig ist, optimierte Programme zu schreiben. Optimierter Lisp code sieht dann auch irgendwann aufgeblähter und kryptischer aus.
Bleibt der Vorteil, dass man mit Lisp arbeiten kann wie mit einer interpretierten Skript-Sprache, auch wenn wie im Falle von sbcl jeglicher code on the fly kompiliert wird. Die Performancewerte liegen dabei meist näher an C als an Perl et al.
Das Wem, Wieviel, Wann, Wozu und Wie zu bestimmen ist aber nicht jedermannns Sache und ist nicht leicht.
Darum ist das Richtige selten, lobenswert und schön.

Antworten