Preben <64bit@mailme.dk> writes:
>>>ML, Haskell, Objective-C, Scheme, Ruby, Smalltalk, Perl... Der er
>>>mange typer programmøre der kunne komme med den slags udtalelser.
>> Du glemte Ada-programmører
>
>
> Alle disse sprog.. Hvor stammer de fra? Jeg kender kun Perl og har
> hørt om Smalltalk, men kender intet til det...
Der er langt flere. Jeg sad engang med en to, tre andre og i løbet af
en times tid fik vi skrevet omkring 50 forskellige sprog op hvorfra vi
havde programmeret i omkring 35 af dem.
> Hvor stammer de fra og hvad er deres stærke/svage sider?
Scheme er en LISP-dialekt. Det er et funktionelt sprog, hvilket vil
sige at man normalt ikke arbejder med variable og tilstande. Man
bruger derfor heller ikke løkker (iteration) med rekursion:
Fakultetsfunktionen beregnet iterativt:
function fak(n)
res = 0
for i = 1 to n do
res = res * i
done
return res
Fakultetsfunktionen beregnet rekursivt (men ikke i scheme-syntaks):
function fak(n)
if n = 1 then
res = 1
else
res = n * fak(n-1)
end
return res
Scheme er utypet og har en syntaks man kun kan være glad for hvis man
skal parse kode eller frit vil veksle mellem data og
programkode. Desuden bruger man meget højerordens funktioner. Det vil
sige funktioner der tager andre funktioner som et af argumenterne. For
eksempel kan en sorteringsfunktion tage en sammenligningsfunktion som
argument så samme sorteringsfunktion kan sorterer numering, leksikalt,
stigende og falndende.
ML og Haskell er også funktionelle sprog men er har et stærkt
typesystem. Typesystemet er polymorfisk, det vil sige at en funktion
både kan arbejde på lister af heltal og lister af
tekststrenge. (Templates i C++ kan noget lignende med er langt mere
primitive). Typer bliver automatisk udledt af sproget.
De har begge en mere kendt syntaks.
Ruby er et scriptingsprog der på mange måder ligner Perl. Det er dog
rent objekt orienteret og generelt meget pænere.
Objective-C er en anden objekt orienteret udvidelse af C. Hele dens
objektsystem er baseret på Smalltalk og derfor på mange måder
anderledes edn C++. Desuden har de vidst ikke samme ide om at sproget
skal være 'multi-paradigme' og derfor et renere sprog.
Ovenstående indenholder nok en god del af min holdning og mine
fordomme.
Opfølgning bør ske i dk.edb.programmering.
--
Peter Makholm | Wisdom has two parts:
peter@makholm.net | 1) having a lot to say, and
http://hacking.dk | 2) not saying it