Forsida

Temaer

Sjangere

Raskeste måte å bytte to tall

Tema: Vitenskap; sjanger: Artikler
Skrevet av Andreas Nordal den 12. oktober 2009 kl 03:47:21; Kommentarer: 8

Å bytte om verdiene på to tall er en problemstilling som man ofte kommer over når man programmerer. Det er en viktig del av mange algoritmer, særlig sorteringsalgoritmer, og selvfølgelig en masse andre som man ikke skulle tro hadde noe med bytting av tall å gjøre. Dessuten er det en typisk operasjon som dataprogrammet kanskje gjør veldig mange ganger. Dette er så enkelt og viktig at det fins liten unnskyldning for å gjøre det feil.

Testprogram

Jeg har testet de 4 metodene i C/C++ som jeg syns var mest aktuelle (i håp om å finne den raskeste), samt 3 assembly-modifikasjoner av disse. Til sammen 7 tester nummerert fra 0 til 6. Følgende kildekode i C/C++ vil, som vi straks skal se, kunne kompileres til 4 forskjellige programmer.

/* testbenk.c */

#include <stdio.h>
#include <inttypes.h>
#ifdef __cplusplus
# include <algorithm> //std::swap
#endif


int main(){
#ifdef SWAP
        int a=666, b=13;
        register int32_t i=0;
        do{//Bytt om a og b 2^32 ganger
# if SWAP==0
                a ^= b;
                b ^= a;
                a ^= b;
# elif SWAP==1
#  ifndef __cplusplus
#  error "Dette er C++"
#  endif

                std::swap(a, b);
# elif SWAP==2
                int temp = a;
                a = b;
                b = temp;
# elif SWAP==3
                register int temp = a;
                a = b;
                b = temp;
# endif
        }while(++i);
        printf("%d %d\n", a, b);
#endif //defined SWAP
        return 0;
}

Gransking av assembly

Når vi kompilerer, la oss gå veien om assembly, og titte på hva den stakkars prosessoren plages med:

gcc -S -DSWAP=0 testbenk.c -o swap0.s
g++ -S -DSWAP=1 testbenk.c -o swap1.s
gcc -S -DSWAP=2 testbenk.c -o swap2.s
gcc -S -DSWAP=3 testbenk.c -o swap3.s

Her ser vi utdrag av hva kildekoden koker ned til av instruksjoner i hvert av de 4 tilfellene. Merk at assemblykode er forskjellig fra maskin til maskin; disse utdragene er fra den første testen (se resultater). Det som har med tallbytting å gjøre er markert med feit skrift.

Utdrag fra swap0.s:

        movl    $666, -8(%rbp)
        movl    $13, -4(%rbp)
        movl    $0, -20(%rbp)
.L2:
        movl    -4(%rbp), %eax
        xorl    %eax, -8(%rbp)
        movl    -8(%rbp), %eax
        xorl    %eax, -4(%rbp)
        movl    -4(%rbp), %eax
        xorl    %eax, -8(%rbp)

        addl    $1, -20(%rbp)
        cmpl    $0, -20(%rbp)
        jne     .L2

Utdrag fra swap1.s:

_ZSt4swapIiEvRT_S1_:
        pushq   %rbp
        movq    %rsp, %rbp
        movq    %rdi, -24(%rbp)
        movq    %rsi, -32(%rbp)
        movq    -24(%rbp), %rax
        movl    (%rax), %eax
        movl    %eax, -4(%rbp)
        movq    -32(%rbp), %rax
        movl    (%rax), %edx
        movq    -24(%rbp), %rax
        movl    %edx, (%rax)
        movq    -32(%rbp), %rdx
        movl    -4(%rbp), %eax
        movl    %eax, (%rdx)

        leave
        ret
        movl    $666, -4(%rbp)
        movl    $13, -8(%rbp)
        movl    $0, -20(%rbp)
.L4:
        leaq    -8(%rbp), %rsi
        leaq    -4(%rbp), %rdi

        call    _ZSt4swapIiEvRT_S1_
        addl    $1, -20(%rbp)
        cmpl    $0, -20(%rbp)
        setne   %al
        testb   %al, %al
        jne     .L4

Utdrag fra swap2.s:

        movl    $666, -12(%rbp)
        movl    $13, -8(%rbp)
        movl    $0, -20(%rbp)
.L2:
        movl    -12(%rbp), %eax
        movl    %eax, -4(%rbp)
        movl    -8(%rbp), %eax
        movl    %eax, -12(%rbp)
        movl    -4(%rbp), %eax
        movl    %eax, -8(%rbp)

        addl    $1, -20(%rbp)
        cmpl    $0, -20(%rbp)
        jne     .L2

Utdrag fra swap3.s:

        movl    $666, -8(%rbp)
        movl    $13, -4(%rbp)
        movl    $0, -20(%rbp)
.L2:
        movl    -8(%rbp), %edx
        movl    -4(%rbp), %eax
        movl    %eax, -8(%rbp)
        movl    %edx, -4(%rbp)

        addl    $1, -20(%rbp)
        cmpl    $0, -20(%rbp)
        jne     .L2

Optimalisering av assembly

swap4.s: Når det fornuftstridig viste seg under testene at såkalt registerswap var treigere enn vanlig temp-swap, tydet det på at koden i swap3.s ikke var optimal. Like fullt, det er mulig å se at swap3.s burde ha vært raskere enn swap2.s. Et bevis for dette er at ved å gjøre om "-8(%rbp)" til "-12(%rbp)" og "-4(%rbp)" til "-8(%rbp)" i swap3.s, og å variere bruken av registere litt i swap2.s, oppnår vi at den eneste forskjellen mellom disse 2 filene er 2 linjer ekstra i swap2.s, samtidig som virkemåten til begge programmene er bevart:

; swap2.s (modifisert)
movl    -12(%rbp), %edx
movl    %edx, -4(%rbp)
movl    -8(%rbp), %eax
movl    %eax, -12(%rbp)
movl    -4(%rbp), %edx
movl    %edx, -8(%rbp)
; swap3.s (modifisert) aka swap4.s
movl    -12(%rbp), %edx

movl    -8(%rbp), %eax
movl    %eax, -12(%rbp)

movl    %edx, -8(%rbp)

Den modifiserte swap3.s ble lagret som swap4.s.


5: En skulle kanskje tro at xchg (exchange) hørtes ut som en ideell instruksjon for vårt formål. Med utgangspunkt i swap4.s lagde jeg swap5.s:

; swap5.s
movl    -12(%rbp), %eax
xchgl   -8(%rbp), %eax
movl    %eax, -12(%rbp)

6: Ved hjelp av "inc" i stedet for "add" og å bruke registeret eax som tellevariabel, ble swap4.s forbedret til swap6.s:

        movl    $666, -12(%rbp)
        movl    $13, -8(%rbp)
        movl    $0, %eax
.L2:
        movl    -12(%rbp), %edx
        movl    -8(%rbp), %ebx
        movl    %ebx, -12(%rbp)
        movl    %edx, -8(%rbp)
        incl    %eax
        cmpl    $0, %eax
        jne     .L2

Testprosedyre

gcc -s swap0.s -o swap0
g++ -s swap1.s -o swap1
gcc -s swap2.s -o swap2
gcc -s swap3.s -o swap3
gcc -s swap4.s -o swap4
gcc -s swap5.s -o swap5
gcc -s swap6.s -o swap6
gcc -s swap7.s -o swap7

Hadde det ikke vært for at vi må bruke g++ i ett tilfelle:

for i in *.s; do gcc -s $i -o ${i%.?}; done

bash$ time ./swap1
666 13 #Uinteressant: Programmet virker.

real 0m27.270s #Uinteressant: Så lang tid det faktisk tok.
user 0m27.226s #Interessant: CPU-tid i user-mode.
sys 0m0.040s #Interessant: CPU-tid i protected-mode.

Kjøretiden ble målt som i eksempelet over. Som antydet, er det summen av CPU-tid som teller, altså user + sys. Når det står flere tall i samme celle i tabellen, er det fordi jeg har testet flere ganger. Tiden er i sekunder.

Resultater

Maskin0: XOR-swap1: std::swap2: temp-swap3: register­swap (gcc)4: register­swap (fiksa)5: xchg-swap6: Så bra jeg kan i assembly
ny laptop: Intel Core 2 Duo T8100 2,1GHz (2 kjerner), GCC 4.3.2, Linux 2.6.27.29 x86_6434,226s 34,066s27,266s 27,306s11,629s 11,805s12,485s 12,565s9,737s 9,781s72,569s 72,817s9,465s 9,397s
gammel stasjonær: AMD Athlon XP 2600+ 1,9GHz, GCC 4.3.0, Linux 2.6.27.25 i68639,19s47,20s14,16s16,17s12,41s49,47s8.93s
ny server: Intel Xeon 3,2 GHz (4 prosessorer), GCC 4.2.4, Linux 2.6.24-24 i68620,48s 20,35s40,77s 40,44s10,61s 10,72s8,18s 8,26s6,92s 7,13s
gammel server: Intel Pentium III Copper­mine 936MHz (2 prosessorer), GCC 4.1.1, Linux 2.6.18 i68687,34s 87,38s111,22s 109,07s36,85s 36,83s23,39s 23,79s18,41s 18,40s
gammel laptop: Intel Pentium 4 2,0GHz, GCC 4.3.2, Linux 2.6.27 i686116,471s 116,219s105,799s 100,218s40,050s 37,802s28,274s 27,65022,333s 21,786s
server: Intel Xeon 2,83 GHz, GCC 4.2.4, Linux 2.6.2428,12s23,88s10,16s8,74s7,71s

Diskusjon

0 (XOR-swap): Så elegant, men akk så treigt. XOR-swap fører til stans i prosessorens samlebånd, fordi hver instruksjon må vente på resultatet av den forrige. Grunnen til at moderne prosessorer kan ha klokkefrekvenser over et par hundre MHz er bruken av samlebånd.

1 (std::swap): Et funksjonskall tar ekstra tid, og indirekte adressering gir lang kode. Programmet swap1 ble forresten 8 byte større enn hver av de andre. Std::swap er rett og slett dømt til å være treig.

2-4 (temp-swap vs registerswap): Jeg kan ikke kåre noen vinner mellom disse 2. Selv om all fornuft sier at det skal være raskere å bruke et register til mellomlagring framfor å bruke RAM, stemte det ikke med mitt program i C. Jeg har vist at dette skyldes GCCs ugunstige plassering av variablene på stakken, og at registerswap faktisk ble raskere enn temp-swap ved å plassere variablene som i temp-swap. Ikke vet jeg om fenomenet skyldes cache-kollisjon eller hva det er. Det ser ut til å være reproduserbart på flere maskiner, men det hele kan jo være en tilfeldighet ved akkurat mitt program.

5 (xchg): Er dette en ubrukelig instruksjon?

6 (Så bra jeg kan i assembly): Dette vil funke i alle fall på i386.


Herschel & Planck i bane

Tema: Vitenskap; sjanger: Artikler
Skrevet av Andreas Nordal den 14. mai 2009 kl 16:06:50; Kommentarer: 0

De to romteleskopene tok av i en Ariane-5-rakett fra Fransk Guyana ved 15:30-tiden i dag og har nettopp skilt lag i rommet som planlagt. Begge vil bli plassert i bane rundt lagrangepunkt 2, som er i skyggen av jorda i en avstand på ca 1,5·109 m. De vil være framme om 2 måneder, Herschel først.

Les mer på esa.eu


Kroppens selvforsvar; immunforsvaret

Tema: Vitenskap; sjanger: Artikler
Skrevet av Stig Magnus Halvorsen den 28. februar 2008 kl 22:34:01; Kommentarer: 1

Har du noen gang lurt på hvordan kroppen klarer å helbrede seg selv? Eller hvorfor man kun får vannkopper en gang, mens man kan få forkjølelser flere ganger i året? På barneskolen lærer man at det er de hvite blodcellene som er kroppens soldater. De dreper og spiser sykdomsbakterier, og gjør slik at man ikke får samme sykdom igjen. Sannheten er at de hvite blodcellene er litt mer kompliserte, og de kan ikke berge deg fra alt.

Immunforsvaret kan deles opp i to grupper; det ytre og det indre forsvaret. Men hvorfor skal vi ha et ytre forsvar, når problemene oppstår på innsiden? Det er fordi det ytre forsvaret stopper mange bakterier og virus fra å komme inn i kroppen. Hvis man først blir syk, så har bakterien eller viruset kommet inn igjennom en av kroppens åpne innganger. Kroppens åpne innganger er munnen, nesa, øret, kjønnsåpningen, anus, og øyne. Det viktigste ytre forsvaret som kroppen har er huden, den hindrer at bakterier trenger inn og den dreper uønskede organismer. Når man har tørr og/eller syk hud kan det bli sprekker i huden, og bakterier kan komme inn. Det kan føre til infeksjoner eller sykdom.

Men de seks inngangene har også egne forsvarsmekanismer, om de ikke hadde det ville vi ha vært mye oftere syke. I svelget, eller halsen har vi små flimmerhår som stopper bakteriene som vi puster inn igjennom munnen. Det er også disse flimmerhårene som gjør at du kan hoste, og på den måten slippe bakteriene ut igjen. Flimmerhårene er også med på å fange opp store objekter, for eksempel når man setter noe fast i halsen. De hjelper til, slik at du kan hoste opp det som sitter fast. Forskning har vist at røyking ødelegger disse verdifulle flimmerhårene, så dermed øker faren for å bli syk ved røyking. Hvis man slutter å røyke, vil hårene gradvis vokse ut igjen.

Tårer er ikke noe som nødvendigvis kommer av frykt, sorg eller andre følelser. De er en del av det ytre immunforsvaret, for å hindre uønskede organismer å komme inn i øyet. Samtidig holder tårene øyet rent. At øynene begynner å svi og renne når man skjærer løk er øynenes forvarsreaksjon mot partikler fra den sterke løken.

Om ikke det ytterste forsvaret er nok, så har vi også et siste forsvar før bakteriene blir det indre forsvarets problem. Det er slimhinnene, et cellelag som ligger mellom det indre og det ytre i nesa, munnen og tarmen (endetarmen regnes som et ytre organ). Et eksempel på dette er snørr. Det er en blanding av vann, proteiner, sukkerarter og bakteriedrepende stoffer. Snørr blir produsert i nesas slimhinne, og dets oppgave er å fange opp støv, bakterier, virus, pollen og lignende. Det hindrer da at det kommer inn i kroppen sammen med lufta vi puster. For å hindre at snørret kommer ned i lungene, er nesa full av små flimmerhår som snørret fester seg til. Om man ikke snyter, eller nyser ut snørret, vil det etter hvert tørke rundt partiklene som det har fanget, og bli til det vi kaller en ”buse”. Når man nyser blir snørr og luft skutt ut av nesa i en hastighet på over 100km/t. Grunnen til at snørret renner når man er forkjøla, eller har allergi, er at slimhinnene produserer ekstra mye snørr. Snørret er som oftest gjennomsiktig og tynt, men det kan også bli grønt eller gult. Da tyder det på infeksjon.

I det indre immunforsvaret spiller blodet en viktig rolle. Blodet består av en blodplasma og blodceller. Blodplasma er en fargeløs veske som blodet blir transportert gjennom. Blodcellene blir delt inn i tre grupper; røde blodceller, hvite blodceller og blodplater. De røde blodcellene er de som frakter oksygen og næring rundt i kroppen, og er de cellene som først blir angrepet når man får malaria. De hvite blodcellene er kroppens eget selvforsvar. Blodplater er det som gir blodet evnen til å størkne, og er der for å stanse blødninger. Blodplatene utgjør ca. 45% av blodets volum (innhold) og er det som danner skorper på sår når vi skader oss. Skorpen lukker det åpne såret slik at uønskede organismer ikke kan trenge inn i kroppen. I blant kommer det også verk i såret, og dette hjelper til med å drepe organismene. Verk er en gulfarget veske. Blodet får sin rødfarge fra et jernholdig protein som finnes i blodcellene, kalt ”hemogloblin”.

Blodet kan også brukes til å finne ut om man er syk. Hvis man tapper en liten mengde blod og lar det stå, vil de røde og de hvite blodcellene skille seg ifra hverandre. Hvis det da er mest hvite og lite røde blodceller betyr dette at personen er syk. Dette er fordi at når man er syk blir det sendt signaler til lymfekjertler som vi har på kroppen (blant annet i halsen). Det er disse som produserer de hvite blodcellene, og de produserer ekstra mye når man er syk. Da kan produksjonen øke så mye at lymfekjetlene svulmer opp, og man får kuler ett eller flere steder på kroppen.

I kroppen finnes det forskjellige typer hvite blodceller. De deles inn i hovedkategoriene: antistoffproduserende celler, huskeceller, eteceller (makrofag), og angrepsceller. Og de har alle forskjellige og viktige oppgaver. Definisjonen på et serum er proteiner, antistoffer, og mange forskjellige hvite blodceller.

Antistoffer er proteiner som kjenner igjen fremmede organismer, og sender signaler til andre celler om hva disse cellene skal gjøre med organismet. Antistoffene er formet som en Y og fester seg til organismene, de vil da si ifra om dette er en uønsket organisme.

En B-celle er en antistoffproduserende celle. Når et antistoff sender ut signal om at den oppdager en uønskede organisme, vil b-cellen motta signalet og den vil da starte å formere seg og antistoffer blir produsert. Den vil igjen sende signaler til etecellen, slik at den kommer og spiser opp den fremmede organismen. Etter at B-cellen har gitt fra seg fremmedelementet til etecellen, vil den bli omdannet til huskeceller.

Huskeceller er det som gjør kroppen immun mot sykdommer. Hvis du har hatt vannkopper som barn, vil huskecellene huske dette. Slik at neste gang dette viruset rammer kroppen din, vet huskecellene akkurat hva de skal gjøre for å bekjempe det. Da blir det bekjempet før det rekker å påvirke kroppen. Det er derfor det eksisterer sykdommer som vi kun kan ha en gang.

Sykdommer kan deles inn i to typer infeksjoner; primærinfeksjon og sekundærinfeksjon. Et godt eksempel på primærinfeksjon er forkjølelse, det er når cellene bruker all energien til å bekjempe infeksjonen. Sekundærinfeksjon er mer alvorlig. Et eksempel på dette er bihulebetennelse. Det er en infeksjon som sniker seg inn mens immunforsvaret fortsatt er opptatt med å bekjempe primærinfeksjonen. Det finnes også sykdommer som dekker seg med menneskeceller og på den måten blir skjult for immunforsvaret, som da tror at det ikke er en trussel. Eksempler på dette er tuberkulose (bakterie), spedalskhet (bakterie), og Borreliose som man kan få fra flått. Disse legger fra seg små spor som immunforsvaret legger merke til. Da blir det sendt signaler til angrepsceller. Da kommer angrepscellen og spiser opp hele cellen, og på den måten starter kroppen å spise opp seg selv.

Det finnes flere måter å forhindre sykdom på. Noe av det viktigste er å ha en god helse og å være sunn. Spis sunn mat, ha god hygiene og beveg deg (trene). En annen viktig faktor er å ikke stresse. Stress lurer kroppen til å tro at stresset er det viktigste, og da tar den fokus vekk fra immunforsvarets funksjon. Det er også noen sykdommer som kroppen selv ikke klarer å bekjempe og for disse tar vi vaksiner. Alle barn i Norge blir vaksinert på grunnskolen. Eksempler på vaksiner som blir tatt er polio, BCG (mot tuberkulose), og stivkrampe. Når man vaksinerer seg, sprøyter man inn en liten mengde av en sykdom (for eksempel en bakterie), slik at kroppen utvikler huskeceller mot sykdommen. Da blir man immun. Det blir også brukt klonede bakterier. Disse bakteriene er sykdommer som har vært igjennom en kjemisk prosess flere ganger, slik at den mister funksjonen som kan skade kroppen. Men allikevel klarer immunforsvaret å produsere huskeceller, slik at kroppen kan forsvare seg mot sykdommen.

Som nevnt tidligere, har kroppen en mulighet til å bli immun mot mange sykdommer, og det finnes sykdommer hvor kroppen krever vaksine og kjemisk hjelp (medisin) for å bli frisk. Antibiotika er en hjelper for immunforsvaret som hjelper kroppen med å utrydde en sykdom, uten at kroppen nødvendigvis blir immun. Antibiotika virker kun på celler og levende organismer. Antibiotika dreper ikke menneskeceller siden disse ikke har en cellevegg (hinne rundt cellene). Antibiotika ødelegger celleveggen til uønskede celler og bakterier, og da klarer de ikke å formere seg. Til slutt blir de da utryddet. Eksempler på antibiotika er penicilin (det første man prøver), en type antibiotika som blir produsert i sopp. En annen er Tetracyklin, som brukes mot kviser men har bivirkningen at den ødelegger tennene.

Hvordan framtiden for immunforsvaret og sykdom vil bli, er alltid usikkert. I dagens situasjon er det stadig forskning på diverse sykdommer, og utvikling av nye vaksiner er i full gang. Blant annet prøver forskere å finne en løsning på HIV og AIDS. Men selv om vi klarer å bekjempe flere sykdommer, vil det alltid dukke opp nye, som igjen vil føre til mer forskning. Det er også snakk om å innføre nanoteknologi. Det vil være små chiper som blir sprøytet inn i kroppene våre og kan gi informasjon om vår helse. De vil kunne si ifra om sykdommer som vi har og kunne fortelle oss når vi holder på å bli syke. På den måten kan sykdommer som kreft oppdages raskere, og da behandles mer effektivt. Men det er en ulike meninger om dette teknologiske gjennombruddet, da faren for at nanoteknologi kan bli misbrukt er stor. Allikevel får vi håpe på en stabil fremtid med enda færre alvorlige sykdommer uten at det går på bekostning av moral og etikk.


Kilder:
Foredrag om immunforsvaret – Louise Kausmally
Cappelen – Heskerstad, Lerstad, og Liebich: Kosmos påbyggingsboka – 2. Utgave, 1. opplag - 2005
http://no.wikipedia.org/wiki/Immunforsvar
http://no.wikipedia.org/wiki/Blod
http://no.wikipedia.org/wiki/Blodcelle
http://no.wikipedia.org/wiki/Snørr


Alternativer til fossile brennstoffer

Tema: Vitenskap; sjanger: Artikler
Skrevet av Martin den 28. april 2007 kl 23:23:55; Kommentarer: 6

Å bruke fossile brenstoffer blir stadig mer upopulært, fordi man innser at det kan skade miljøet på jorda. Dessuten tar de en gang slutt for en lang periode, og da er det viktig at vi lærer oss å bruke andre energi-kilder og -bærere.

Først og fremst er det viktig å kjenne til forskjellen mellom energikilder og energibærere. Energikilder er ressurser hvor man kan utvinne energi, f.eks. fossefall, fossile brennstoffer eller solstråler. Energibærere brukes derimot bare for å frakte energi, ved f.eks. galvaniske elementer eller hydrogengass.

Fossile brennstoffer har ligget lagra under bakkenivå i lang tid. Det er en stor samling av potensiell energi. Når dette graves opp, og vi tenner på det, blir energien frigjort, mye av det som termisk energi. Det er imidlertid det samla CO2-utslippet de fleste kritikere av fossile brennstoffer er bekymra for. Derfor spekuleres det i å bruke såkalte "rene" energikilder istedet for fossile brennstoffer. Det er i hovedsak solkraft, vannkraft (med bølgekraft), vindkraft og geotermisk energi som regnes som de rene energikildene. Den mest brukte metoden for å bruke disse er å gjøre om krafta til elektrisk strøm. Men vi kan ikke bruke elekrisitet til å drive alt mulig framover. Elektrisk drevne biler har korte rekkevidder på grunn av tunge batterier, og flyene ville bli for tunge til at de kunne lette. Derfor trengs det lettere energibærere.

Hydrogen

Hydrogen er en mulig energibærer. Det kan enkelt framstilles ved eletrolyse av vann, og det krever nesten like lite energi som det man får igjen av å bruke hydrogenet. Men det å lagre hydrogen, er en utfordring. Luft i atmosfæren har ca 15 ganger høyere massetetthet enn hydrogengass. Det betyr at hydrogengass fortrenger et veldig stort volum, og den velkjente problemstillinga er derfor hvordan man kan få det til å bli mer kompakt. Her er to enkle lagringsmetoder:

Det spekuleres også i å binde hydrogen til større molekyler. I noen inngår både oksygen og karbon, og det vil resultere i uønska CO2 som avfall.

En stor fordel med å bruke hydrogen som energibærer er at det kan brukes i brenselceller. Det er en fordel fordi brenselceller er mye mer effektive enn forbrenningsmotorer. Uansett om man bruker en brenselcelle eller en forbrenningsmotor, vil avfallstoffet være H2O. Det er en liten detalj som gjør meg litt skeptisk til det å bruke hydrogen som energibærer i biler. Tenk hva som vil skje om vinteren i Norge hvis noen millioner biler daglig vanner veiene. Det vil gjøre veiene ganske glatte og farlige å ferdes på. Men kanskje global oppvarming i lengden fører til at vi likevel ikke får noen vintre igjen, hvertfall sør i Norge.

Alkoholer

Løsningen kan være alkoholer. Alkoholer brukes mange steder som brennstoff allerede. Brasil er den største eksportøren i dag. Alkoholer er enklere og mer energirike bindinger enn bensin. Det betyr at hvis man skal ha en viss mengde av en alkohol og bensin som begge kan frigjøre like mye energi ved forbrenning, vil man trenge mindre alkohol enn bensin.

Alkoholer er både energi-kilder og -bærere. For å produsere alkohol, trengs det sukker oppløst i vann tilsatt en spesiell gjærsopp. Sukkeret kan komme fra en hvilken som helst sukkerplante. Disse plantene trenger lys, vann og CO2 for å produsere sukker og oksygengass. Plantene gjør derfor samme nytten som solcellepaneler, og de "gjenvinner" CO2-gassen som senere blir tømt ut igjen i atmosfæren. Bruk av alkoholer skal derfor på ingen som helst måte kunne påvirke balansen mellom andeler av forskjellige gasser i jordas atmosfære.

For å bruke alkoholer trengs det riktignok forbrenningsmotorer. Bruk av hydrogengass i brenselceller vil være mye mer effektivt, men så langt strekker ikke teknologien til ennå. Alkoholer har også den fordelen at de er energikilder, i motsetning til hydrogen. Dessuten hadde det ikke gjort noe om alkohol som brennstoff tok over mer av dagens marked, siden det jo er kompatibelt med de fleste av dagens forbrenningsmotorer.


Hvorfor er det vann på jorda?

Tema: Vitenskap; sjanger: Meninger
Skrevet av Andreas Nordal den 18. april 2007 kl 21:17:41; Kommentarer: 0

Vann er det som kjennetegner vår planet. 70,8% av overflaten er dekt av vann. Et naturlig spørsmål er jo selvfølgelig: Hvor kommer alt dette vannet fra?

Det er ikke så altfor mange teorier om dette. En av dem er at det var mye vann, eller kanskje hydrogen- og oksygengass, i det området hvor kloden vår ble dannet. Men bortsett fra jorda, så finnes det ikke noe særlig H2O andre steder enn i det ytre solsystemet, det vil si Kuiperbeltet og kometer fra Oorts sky. Derfor er det også mange som mener at vannet kan ha kommet derfra sammen med annet rusk og rask. Men jeg syntes ikke noen av disse teoriene greier å sannsynliggjøre hvorfor alt vannet havnet hos oss. Hvis fordelingen av vann i solsystemet var så tilfeldig som disse teoriene innebærer, så ville tilfeldighetene fordelt vannet mer jevnt enn det faktisk ble. Vi har så utrolig mye H2O, mens det knapt finnes spor etter det på andre planeter, se bare på naboplaneter som Mars og Venus.

Jordkloden har en gang vært ganske varm. Jeg tror det var på grunn av den kinetiske energien til himmellegemene som deiset sammen og omsider ble til vår planet. La oss anta at Jorda består av den samme typen stein som Mars, det vil si store mengder jernoksid. Jeg mener å huske at ved høy temperatur vil jernoksid spaltes til jern og oksygen, tror det var omkring 3200°C. Jeg har googlet ganske mye uten å finne det ut. Et annet problem er at jernoksid ikke bare er jernoksid. Det er flere forbindelser, som Fe2O3 og FeO(OH). Mars har aldri vært like varm som Jorda, så spaltingen skjedde ikke der. Venus kan godt ha hatt jernoksidspalting som jorda, men der har nok i så fall oksygenet gått med til å lage den 9,3 MPa tette atmosfæren av CO2 og CO. Min teori er at jorda på grunn av jernoksidspalting har hatt en oksygenrik atmosfære helt fra starten, og at solvinden har tilført ladde partikler som elektroner og protoner sakte men sikkert over 5*10^9 år, mens følgende reaksjoner skjedde:
elektron + proton -> H
2H + O -> H2O

Jeg er svært usikker på hvor sannsynlig denne teorien er. Jeg har foreslått den på fysikk.no, men siden 3/5 av svarene var useriøse, har jeg ikke giddet å diskutere med dem i det siste. Likevel er jeg er interessert i tilbakemeldinger, så ikke nøl med å kommentere.