Alla inlägg av Waffe

Parentesfrågan

Läsaren har högst antagligen en uppfattning om vad parenteser är och vad deras roll är i en mening. Parenteser (trots namnet) är alltså inte teser, utan de ”… förtydligar, kommenterar, förklarar eller innebär ett sidospår från den övriga texten” (copy paste från Wikipedia). Med ”parenteser” menar jag förstås rundparenteser och inte hak-, klammer-, vinkel- eller piggparenteser, fastän samma grundprincip gäller också för dem.

Inom matematikens teoretiska drömvärld, till skillnad från naturliga språk, används parenteser för att ”ange grupper av termer […] för ordningen av räkneoperationer” (Wikipedia). Vi kan därmed säga att i matematiken har parenteserna olik semantik, vilket leder oss till en fråga: Vilken roll borde parenteser ha inom programmering?

Programmering är till stor del matematik. De första programmeringsstrukturerna härstammade från rena matematiska modeller som förverkligades med hjälp av elektronrör och senare mikroelektronik. Vi tar två konkreta exempel för att illustrera hur parenteser vanligtvis används inom programmering.

(defn kvadrat-summa [n]; summerar n första kvadraterna
(loop [i 0 resultat 0]; sätter variablerna 'i' och 'resultat' som 0
(if (<= i n)
(recur (inc i) (+ resultat (* i i)))
resultat
)))

(print (kvadrat-summa 5))

Ovan är Clojure kod som spottar ut summan på de fem första kvadrattalen. Clojure tillhör LISP familjen av programmeringsspråk där parenteser strukturerar programmet. Notera att all kod är omringad av parenteser som skapar en hierarki av funktioner och värden. Förklarningar och kommentarer placeras inte inom parenteser, utan inleds med semikolon. Koden kan köras här för de intresserade.

!gfortran, gcc version 5.4.0 20160609
!Summerar n första kvadraterna
integer function kvadrat_summa(n) result(summa)
real :: lista(n)

lista = (/(i, i=1,n, 1)/)
lista = lista*lista
summa = sum(lista)
end function kvadrat_summa

program P
print *, kvadrat_summa(5)
end program P

Som ett mindre extremt exempel på parenteser inom programmering kan vi betrakta ett bekant språk för fysiker, Fortran! Du kan köra koden här. Se hur parenteser används för att:

  • generera listor,
  • definiera funktionens resultat samt listans storlek, och
  • för att gruppera parametrar givna till funktioner.

Vi ser att parenteser behandlas liknande som inom matematiken, men varför så? Borde inte kod sträva efter att vara så naturligt läsbart som möjligt?

Svaret på första frågan är simpel; programmeringsspråk skapas av datanördar och inte lingvister. Men för att exemplifiera att naturliga parenteser är möjliga (och kanske även vettiga) inom programmering skrev jag nedan ett exempel på ett påhittat Python-liknande språk. Parenteserna fungerar som kommentarer eller tillägger extra detaljer.

(heltals) funktion kvadrat_summan på n (ett heltal):
(summerar n första kvadraterna)
i = 0
resultat = 0
medan i <= n:
resultat += i * i
i += 1
resultat

visa kvadrat_summan på 5

Mycket snyggare och klarare kod, inte sant? Bara om nån skulle hitta på ett liknande språk som också är körbart…

Fortsättning följer!

😘😉➡️📰📝

📰📝🏃‍♂️🏠💎⤵😱. 📰💻📊📋⤵🍺🏠🧙‍♂️🌊. 👦👦🍺🍻🍻👦👦👦. 🚶‍♂️➡🚾❌💡🆘. 🕖🚶‍♂️🚶‍♂️🚶‍♂️🚶‍♂️🚶‍♂️➡(✖➕👁➕🍵). 🚶‍♂️🚶‍♂️🚶‍♂️🚶‍♂️🚶‍♂️🔫🐱‍👤🐱‍👤💎. 👦🔗👦🔗👦🔗👦🔗👦. 🔑🔒➡🔓👌👌💯🔥🔥. 🎮😎👍.

👀👆🆕📄!

Minne: Kapitel 5

”Sov du gott” frågade Albert.

Runtom sig hör Robben fniss. Han blinkade till. Albert satt med ett leende och blicken emot sina hemuppgifter. Robben lade märkte till att han satt insjunken i soffan med en varm Battery i handen. Panik inträdde honom och han hoppade till.

”Vänta va? Var e Linda? Vem e jag?”

Fnisset utvecklades till ett hjärtligt skratt. Battery rinner ner för Robbens hand och lår, vilket han hastigt torkar upp.

Bland rösterna hördes Felix. ”Haha Robben, jumalauta du e legenda! Sku du int undvika krapulan me att lähte himaa tidigt?”

Albert lade sitt häfte åt sidan och vände sig mot Robben. ”När kom du hit? Du lagg på soffan redan klockan nio.”

Robben kunde inte svara på frågorna, så han ställde en själv. ”Talade vi int redan, Felix? Under föreläsningen?”

Felix skrattade. ”Aj den du just missa? E du helt seko? Du yrar värre än Olle på KJYRen”, svarade Felix.

”Ja håller med”, tillade Olle glatt.

Efter ett djupt andetag återhämtade Robben sig. ”Va e klockan?”

”Snart 12, närmare tio före… Är du hungrig? Eller får du inget ner alls? Bhahaha!” Det var sällan som någon annan var i värre skick än Olle på morgonen efter, så han njöt av denna sälsynta stund. Alla fyra tog sig emot Chemicum och den ökända MekUMak.

* * *

Felix kommentar spelades fortfarande om i Robbens huvud. ”Jag for tidigt hem igår? Men det är ju int vettigt, jag måste ha dragit pünschen!” Robben grubblade för sig själv och märkte inte att han stod stilla främst i kassakön. Han betalade för maten och bad om ursäkt.

”När for jag hem igår?” frågade han.

”Sale jämt ett”, svarade Felix.

Detta påminnde Robben att han hade skickat flera WhatsApp meddelanden åt Linda. Han drar fram telefonen och söker upp meddelandet. Ingen kontakt hittas på namnet Linda.

”Så jag drog alltså int pünschen?”

”Vadå? Nä, du hajpa om de vitusti men sen seli du någo bullshit och så pussy du out.” Felix ögade först misstänksamt på Robben, men hans min förvandlades till en väldigt oskyldig smil.

”På tal om pussy, vem e Linda? Nån pimu du bonga inatt eller?”

Felix, alltid en charmare. I samma ögonblick som Robben skulle förklara sig började han känna sig yr. Världen blir allt suddigare framför honom och kulminerar till en bekant kläpp på kinden.

* * *

Robben var inte i matsalen mera utan låg på golvet av ett mörkt rum.

”Okej, bra att du lever. Eller ja…” Rösten som Robben hörde lät främmande men bekant. Han tittar upp och ser sigsjälv.

Fortsätter om n veckor…