fredag 13. desember 2013 Julekalender
I dag skulle man finne frem til et programmeringsspråk basert på litt info om språket. Det alle fikk vite var:
Det har kommet inn MANGE forslag, så la oss ta en titt på dem, og på hvorfor det ikke var noen av disse.
APL | Er fra 1964 |
Ada | Har reserverte ord som if, then, else, while, for, etc. |
Awk | Er fra 1977 |
Argus | Basert på CLU, har reserverte ord, bruker = |
BASIC | Er fra 1964 |
Clojure | Er fra 2007 |
Common Lisp | Siden jeg sa at det delte kvaliteter med Lisp så er vi ikke ute etter en Lisp. |
D | Er fra 2001 |
Eiffel | Har reserverte ord |
Erlang | Ikke spesielt enkel syntaks, har reserverte ord |
Forth | Er fra 70-tallet, men foruten det var det ikke så dumt tenkt! |
Fortran | Er fra 1957 |
Go | Er fra 2009 |
Haskell | Er fra 1990 (ikke langt unna), men har f.eks. også reserverte nøkkelord |
ISLISP | Ikke hørt om, men se Common Lisp |
Io | Er fra 2002, men dette synes jeg også var et godt forslag! |
J | Er fra 1990, og jeg synes i alle fall at syntaksen ser kompleks og vanskelig ut. |
L | Virker å være relatert til det faktiske svaret, men for nytt |
Lua | Er fra 1993 |
occam | Har reserverte ord som PROC, INT, SEQ, WHILE, TRUE etc |
Objective-C | Har absolutt ikke enkel syntaks, og bruker = |
Perl | Perl 5 bruker punktum for konkatenering av strenger. Perl 6 bruker tilde. |
Postscript | Er usikker, kan ikke nok... |
Prolog | Er fra 1972 |
R | Er usikker, kan ikke nok... |
Rebol | Deler endel kvaliteter med Lisp, men er fra 1997 |
Rexx | Er fra 1979, og bruker = til tilordning |
Rpl | Såvidt jeg kan se har det reserverte nøkkelord |
Scheme | Er en Lisp, og dermed diskvalifisert. Er også fra 1975. |
Self | Et bra forslag. Jeg vet desverre ikke nok om det (enda) til å si hva som diskvalifiserer det. Kanskje noen kan hjelpe? |
SmallTalk | Er fra 1972 |
Standard ML | Vil ikke påstå at syntaksen er spesielt enkel i alle fall, eller at alt kan bli redefinert og overstyrt (såvidt jeg vet) |
T | Er en dialekt av Scheme. |
Tickle | Her antar jeg at den som svarte visste hva svaret var, men svarte med uttalen av navnet i stedet for hvordan det korrekt skrives :O |
Tcl, som tidligere stod for Tool Command Language men som nå ikke står for noen ting, er et fasinerende språk. Det ser ut som et lite skriptspråk ala Perl, men har noen egenskaper som i alle fall er spennende for en språk-geek.
Koden består kun av kommandokall. Hver "linje" starter med navnet på en kommando etterfulgt av argumentene. Jeg sier "linjer" i hermetegn fordi en linje kan inneholde linjeskift hvis disse er i en streng. Og siden en streng gjerne starter og stopper med {
og }
så kan en linje raskt se ut som kode i et hvilket som helst annet språk:
proc sreverse {str} { join [loop i 0 [string length $str] { string index $str end-$i }] "" }
Her kaller vi altså en kommando som heter proc
. Den tar tre argumenter, som alle er strenger: "sreverse"
, "str"
, og den siste strenger som går over flere linjer. Det proc gjør er å tolke innholdet i siste parameter. Innholdet blir da gjort om til nye kommando-kall, som også kan inneholde strenger som i sin tur vil bli tolket (som linje 3).
På samme måte som at alt er lister i Lisp kan man derfor si at alt er strenger i Tcl. Filosofien er mye lik.
Raskeste utvikler til å svare riktig 12. desember var Daniel T Johansen, som går på Nord-Troms videregående skole. Gratulerer!