Fråga
Jag planerar att utveckla en numerisk matematikprogramvara (som en eklare Mathlab) med stöd för egendefinierade algoritmer, 2-, 3- och högredimensionella grafer, analys- och geometrifunktioner m.m., och har mycket svårt att bestämma mig för vilket programspråk jag skall välja.
Jag har programmerat i Borland Delphi sedan jag var tio år, så det språket kan jag utan och innan. Jag har också en kopia av den enklaste versionen av Delphi 7. Dock börjar miljön kännas gammal, och jag provade att ladda ner Microsoft Visual C++ Express 2005. Jag misstänker att den senare miljön egentligen är mer anpassad för ändamålet (prestanda m.m.) och mer framtidssäker (.NET), men att lära sig ett nytt språk och en helt ny miljö samtidigt som (eller strax före) man påbörjar ett gigantiskt projekt känns mycket jobbigt.Svar
Man skulle kunna hävda att Haskell skulle kunna vara ett alternativ för detta ändamål, fördelen med detta språk är att det innehåller många mekanismer som underlättar matematiska beräkningar. Till nackdelarna hör att det inte är ett procedurellt språk som du är van vid (såsom Delphi/Pascal, C++, Java etc.), utan funktionellt vilket kan höja inlärningströskeln radikalt för dig. Jag skulle alltså inte rekommendera dig att ta denna vägen.
Utan tester kan vi bara spekulera i hur mycket prestandan skiljer mellan Delphi och att Microsofts C++ miljö, men då båda kompilatorer producerar maskinkod optimerad för den aktuella platformen är skillnaden troligen marginell. Som du själv säger är Delphi kanske inte det mest framtidssäkra alternativet, och dessutom låser du ju dig till en specifik miljö som dessutom bara Borland levererar. Å andra sidan kan du säkerligen få upp något fungerande mycket snabbare i denna miljön eftersom du är så hemma i den. Till mer framtidssäkra alternativ hör som du själv nämner .NET, om du väljer C++ (managed) eller C# i detta fallet spelar nog ingen större roll, då båda kommer att använda sig av en virtuell maskin. Program gjorda i .NET använder sig av en JIT (just in time) kompilator vilket innebär att de analyseras och optimeras efter första körningen, så prestandan är även här god. Två andra alltid aktuella alternativ är förstås också Java och C++ (unmanaged, dvs. utan .NET), varav båda kan anses mycket framtidssäkra. Ytterligare fördelar med att använda .NET, Java, och i en (liten) mån C++, är att du får en mer plattformsoberoende lösning. Det kanske kan vara idé att först fundera ut en mindre prototyp av ditt projekt. På så sätt kan du prova att implementera den i olika miljöer och språk och lära dig deras inbördes styrkor och svagheter innan du gör ditt val.