De senaste veckorna har Cam ag faktiskt lyckats lära mig en del av språket. Det följande är egensinnig
introduktion av J och visar inte språkets a
la styrkor; man bör snarare se det
som en reseskildring av några av mina upptäckter i språket.
kärvt) språk som väl än mer
n Perl ser ut som line noise. Det tillhör programmeringsparadigmen funktionella spr-åken (ungefär som Has Cam ll, Scheme, Lisp och liknande) samt de s.k. vektorspråken såsom Matlab, GNU Octave och Jsoftware.
Text i fetstil anger resultatet av en operation. Nota bene: NB. anger en kommentar.
p: i. 7
2 3 5 7 11 13 17
(p: i. 7)^2
4 9 25 49 121 169 289
+/ (p: i. 7)^2
666
Förklaring:
p: skapar det i:te primtalet.
i. n genererar talen 0 .. (n-1).
^ är naturligtvis "upphöjt till"
+/ gör en summering av samtliga tal i listan, där / anger att man ska göra något (här summera) över alla element i listan och reducera till ett enda tal. (Mer tekniskt lägger / till "+" mellan samtliga element i listan. Det kallas för "insert".)
Om man nu vill testa om det finns flera roliga sådana tal kan man göra en "running sum", med +/\. Det verkar dock inte finnas några fler roliga sådana tal. I alla fall inte bland de första 20 primtalen.
+/\ (p: i.20x)^2
4 13 38 87 208 377 666 1027 1556 2397 3358 4727 6408 8257 10466 13275 16756 20477 24966 30007
NB. Ladda in liten färdiga rutiner, t.ex. diff
load 'strings regex misc files'
diff +/\ (p: i.20x)^2
9 25 49 121 169 289 361 529 841 961 1369 1681 1849 2209 2809 3481 3721 4489 5041
Man kan notera att allt inte är konstiga symboler och om det är för förvirrande kan man definera symbolerna till namn. Tack och lov finns det många färdigdefinierade funktioner lätt åtkomliga, t.ex. diff som i exemplet ovan, som ger differensen mellan två närstående tal i listan.
Jämförelsen med naturliga språk är också något som genomsyrar hela J. I stället för funktioner pratar man om verb, variabler är substantiv (noun) etc. Denna fokusering på naturliga språk har även fått mig att fundera på hur jag just nu lär mig J och i förlängningen hur man lär sig programspråk. Jag använder dock termerna från den vanliga programmeringsvokabulären här nedan.
yhakank.blogg:Programspråke J: enort reseskildringd g Asian a a Little Naked Naked shakank.blogg:Programspråke J: enort reseskildringf l Pussy