Kategoriarkiv: 2018

Texter från 2018

Dagen då jordens naturresurser tog slut

Den 11 april tog jordens naturresurser slut. Liknande formuleringar har dykt upp på nyhetssajter i form av fängslande rubriker. Den är dock lite missvisande: de naturresurser som jorden kan förnya under ett år tog slut. Men det är inte heller hela sanningen. Den korrekta meningen skulle vara: den 11 april 2018 tog de naturresurser som jorden kan förnya under ett år slut, ifall hela mänskligheten konsumerade som vi i Finland gör. Denna mening är dock inte alls lika dramatisk som den inledande men betydelsen var åtminstone för mig aningen chockerande.

Några länders specifika ”Overshoot Days” 2017.

Jag har levt med en naiv världsbild som säger att vi i Finland tänker miljösmart. Inte att vi går i bräschen för miljövänliga lösningar, men nog att vi skulle vara bättre än vad vi tydligen är. Enligt Earth Overshoot Day [1] så skulle det behövas 3,6 jordklot för att täcka mänsklighetens behov ifall alla konsumerade som vi i Finland gör. På Global Footprint Networks [2] hemsida finns stora mängder statistik på flera länders ekologiska fotavtryck. Finland är inte på något vis sämst i denna statistik. De länder som har minst (och således bäst) fotavtryck är oftast mindre industrialiserade.

Befolkningsmängden på jorden mellan 1950 och 2100 enligt FN:s rapport från 2017.

Ett ur globalsynvinkel mera intressant datum är den så kallade ”Den ekologiska skuldens dag” (eng. ”Overshoot Day”). Denna inföll år 2017 den 2 augusti. Då tog jordens, under ett år förnybara, naturresurser slut. Denna uppskattning är gjord med alla länders förbrukning av naturresurser i beaktande. Detta betyder att det skulle krävas 1,7 jordklot för att upprätthålla den konsumtion som mänskligheten har just nu. Då är frågan: konsumerar vi människor för mycket eller finns det för många av oss?

Överbefolkning tycks vara en av de vanligaste premisserna i moderna katastroffilmer och post-apokalyptiska thrillers. Men det är inte enbart ett billigt Hollywoodtrick. Överbefolkning är ett växande problem på många håll i världen och enligt FN:s prognos från 2017 [3] så kommer jordens befolkning vara över 11 miljarder år 2100. Detta som resultat av den fortgående stora befolkningstillväxten i Afrika (Afrika kommer enligt prognosen år 2100 tävla mot Asien om titeln som jordens folkrikaste världsdel).

Uppskattningarna som Earth Overshoot Day presenterar i form av nödvändiga antal jordklot har från flera håll fått kritik för att vara överdramatiserade publiceringsknep som tar felaktig fakta och statistik i beaktande. Personligen måste jag hålla med om att en stor del av informationen som presenteras på deras hemsida har bristfälliga källhänvisningar.

Ett faktum kvarstår dock: fortsätter vi i den takt vi håller nu så finns det en risk att framtiden kommer föra mera negativt än positivt med sig. Det är möjligt att varje enskild individ måste bidra för att en ljusare framtid ska säkras. Jag är ingen miljöaktivist, jag kommer inte heller kasta omkull min vardag för att säkerställa kommande generationers tillvaro och jag kommer definitivt inte kräva att andra gör det. Men jag kommer göra någonting. Jag kommer att försöka ta det miljösmarta alternativet ibland när tillfället ges. Och jag önskar att flera skulle försöka samma.

Sebbe H, ibland miljömedveten fysiker.

Källor:
[1] https://www.overshootday.org/
[2] https://www.footprintnetwork.org/
[3] https://esa.un.org/unpd/wpp/Publications/Files/WPP2017_KeyFindings.pdf

Standardhävningstidens påverkan på pünschenprestationen

Tjohejsan,

Nu är det igen dags att läsa en ny väldigt nyttig pünschenartikel! Denna gång undersökte jag (helt på teoretisk nivå) hur den totala tiden för pünschenprestationen påverkas av tiden det tar att fylla, häva, samt ge flaskan vidare .

Vi gör följande approximationer: varje påfyllning samt tömmande av stopet tar en specifik standardhävningstid (hädanefter sht) och att man alltid fyller hela stopet (dvs. antalet gånger detta händer är variabeln antalStop = 11.6666…). Den tolfte påfyllningen tar lika länge som de tidigare även om den inte är 3cl. Detta pga att domarna måste hinna reagera för att godkänna att flaskan är tom! Därtill antar vi att tömmandet av fatet tar 1.5s (hävarna är rutinerade och spiller ej mycket). Efter detta är prestationen godkänd.

Den så kallade punschfunktionen (här kallad med variabeln totalTid) är en grov approximation för hur själva prestationen framlöper. Den är till 100% en approximation av skrivaren själv (tar inget ansvar för att den skulle vara realistisk), men här följer en förklaring till den:

  1. I början tar det en stund för båda hävarna att vänja sig till den kalla punschens viskositet (eftersom den kraftigt kan variera från gång till gång). Därför tillsätts 0.2s till båda hävarnas första hävning, varefter det går snabbare och hävningen tar sht + 0.1s.
  2. Den tredje hävningen fortlöper igen bättre, och hävningstiden blir sht.
  3. De snabbaste hävningstiderna är de fjärde hävningarna för båda hävarna, samt den femte hävningen för hävare 1. Nu är hävningstiden sht – 0.1s.
  4. Vid den femte hävningen börjar hävare 2 redan fundera att flaskan börjar ta slut småningom och häver sitt stop med tiden sht.
  5. De sjätte hävningarna börjar bli redan lite försiktigare för att båda hävarna vet att prestationen närmar sitt slut och man vill ju såklart minimera spillet, men fortfarande minimera antal hävningar som måste utföras (med andra ord så siktar de på den optimala mängden hävningar som är antalStop). Därför blir hävningstiden sht + 0.1s.
  6. Hävare 2 har den sista hävningen från stopet. Då finns det dock endast 0.666…cl kvar, men för att domarna är endast människor tar det en kort stund för att reagera samt meddela hävarna att ”flaskan är tom”, därför blir hävningstiden även här sht + 0.1s.
  7. Hävarna är rutinerade och spiller ej mycket, men för att det hör till att man slickar fatet som sista grej, samt att domarna skall hinna reagera när (det tomma) fatet slår i bordet och tidtagningen tar slut, läggs ännu 1.5s till den slutliga prestationen.

Den använda ”pünschenfunktionen” (samt övriga variabler) som förklarades just ser ut som:

totalTid = 2*(sht+0.2) + 2*(sht+0.1) + 2*sht + 3*(sht-0.1) + sht + 2*(sht+0.1)+1.5;

punschFlaskaVolym = 35;
stopVolym = 3;
antalStop = punschFlaskaVolym/stopVolym;

Till följande granskar vi hur snabb den totala pünschenprestationen blir med olika sht.

sht  totalTid
3.5   44.0
3.7   46.4
3.9   48.8
4.1   51.2
4.3   53.6
4.5   56.0
4.7   58.4
4.9   60.8
5.1   63.2
5.3   65.6
5.5   68.0
5.7   70.4

_Frans

Språk och tolkning

Eftersom jag har kodat på ett skolprojekt under hela veckoslutet tänkte jag  skriva en artikel om det. Uppgiften var att skriva en programtolk för det simpla MiniPL programmeringsspråket (tekniska specifikationen finns här för de nyfikna).

En vad?

En programtolk/interpretator (eng. interpreter) är ett program som tar in kod av ett specifikt språk och gör/kör det som koden begär. Detta är skillnad till en kompilator, som helt enkelt översätter kod från ett språk till ett annat. Programtolken är ofta uppdelad i 4  huvudsakliga delar: lexikal-, syntax- och semantisk analys, som tillsammans skapar en mängd programinstruktioner, och till sist själva körningen av instruktionerna.

Tolkningen börjar med lexikalanalys där karaktärer grupperas till ”symboler” eller ord (eng. tokens). Vi tar som exempel meningen ”Datorer har en von Neumann-arkitektur.” Karaktärerna kan grupperas till följande symboler: ”Datorer”, ”har”, ”en”, ”von Neumann”, ”-”, ”arkitektur” och till sist ”.”-tecknet. Till symbolerna tillsätts tilläggsdata, som att symbolen ”Datorer” är ett substantiv i plural, symbolen ”har” är ett verb osv.

Syntaxanalysen tar in dessa symboler, och försöker bygga upp satser och meningar av dessa, enligt specifierade grammatikregler. Satserna och meningarna sparas i ett så kallat (abstrakt) syntaxträd. Av exempelmeningen kan man bygga upp följande träd:

I programmeringsspråk är det ytterst viktigt att man kan tolka de givna symbolerna bara på ett visst sätt, dvs. språket får inte vara tvetydigt. Olikt en människa vet inte datorn vad den skall göra då en kod kan betyda två olika saker. Tvetydighet uppkommer oftast i syntaxanalysen, då man inte kan utgöra hurdant syntaxträd som ska byggas upp med hjälp av grammatikreglerna. Grammatiken måste omformas för att fixa problemet.

Efter att syntaxet är granskat så söker den semantiska analysen efter ”meningen” bakom meningarna — vad den givna koden eller texten betyder. En syntaktiskt korrekt mening behöver inte vara semantiskt korrekt. Ett typexempel är ”Färglösa gröna idéer sover häftigt.” Meningen är inte alls vettig (så länge man inte är alltför poetisk av sig), men följer ändå de svenska grammatikreglerna.

Vi tittar igen på exemplet ”Datorer har en von Neumann-arkitektur.” Den semantiska analysen för detta påstående kan bland annat bestå av att svara dessa frågor: Är datorer saker med en ”arkitektur”? Är ”von Neumann-arkitektur” en egenskap som en dator kan ha? Syntaxträdet omvandlas eller påfylls sedan med den information som man har samlat och rent syntaktiska element skärs bort, som punkter och bindestreck.

I semantisk analys av programmeringsspråk granskas det att variabel-/funktiontyperna är överensstämmande och att de variabler/funktioner som används är definierade. Syntaxträdet omvandlas samtidigt till en mängd programinstruktioner (oftast ändå i formen av ett träd) samt en ”symboltabell”, där definitionerna av variabler och funktioner sparas.

Efter allt detta kan instruktionerna köras. Under körningen sparas variabelvärden i symboltabellen, varifrån de kan återhämtas senare. Programtolken borde innehålla en liten mängd basfunktioner (som aritmetik och loopar) som sedan kan användas av programmerare för att bygga upp mer komplexa funktioner. Eller varför inte en ny programtolk?