En riktig kodhjälte!

Nu när påsken nalkas är det sista skriket att dela ut de sista julklapparna! Här kommer en till alla er kodare där ute som inte redan förtrollats av hackdayprojektet Untrusted

 

Untrusted är ett rougelikt meta-Javascriptäventyr där du tar på dig rollen av en hjälte som ska befria sig själv från sina tillfångatagare.

Till din hjälp har du din dator som med hjälp av din Javascriptkod kan ändra på mjukvaran som driver världen.

Lycka till och mycket nöje!

Glöm inte att ge Alex en välförtjänt stjärna på Github.

The Zen of Python

$ python
Python 2.7.2 (default, Oct 11 2012, 20:14:37)
Type "help", "copyright", "credits" or "license" for more information.
>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
>>>

Also this video is worth watching

Transistorer, hur de kan vara miljarder.

Din telefon är idag med största sannolikhet mer kraftfull än min speldator var år 2004. Detta tack vare enorma teknologiska framsteg i mikroelektronikindustrin, speciellt bland processortillverkare som Intel, AMD och ARM.

Nyckeln till att få en så snabb processor som möjligt är att ha så många transistorer i den som bara möjligt. Transistorer i olika kopplingar skapar “logiska portar” som klarar av mycket enkla påståenden som ” x och y”, “x eller y”, “varken x eller y” etc. Dessa påståenden i enorma kluster kan lösa enorma problem.

Säg till exempel att du överväger att gå till gymmet. Du kanske ser det som en enkel “x eller y” fråga; antingen går jag till gymmet eller så degar jag i soffan. Men det är mer som spelar in här: hur länge sedan du var på gymmet, om du har ont efter senast, om du sovit dåligt etc. Ju flera “logiska portar” en processor har, desto fler parametrar kan processorn väga in på samma gång och då ge ett komplett svar på frågan snabbare än om den skulle behöva väga några parametrar i taget.

Rent teknisk sett skulle man kunna göra processorer lika stora som fotbollsplan med enorm prestanda men det finns några anledningar till varför detta inte är att eftersträva.

För det första är råvarorna man använder väldigt dyra, processorer byggs av kemiskt ren kisel som kostar mer per gram än guld; storlek är alltså en prisfråga i en konkurrensutsatt industri där man konstant pressar priserna.

För det andra spelar storleken in på strömförbrukningen. Ju större transistorer desto mer ström krävs. Detta blir en nöt att knäcka när man försöker få in en riktigt kraftull processor i en telefon med begränsad strömtillförsel.

Sist men inte minst så är det otroligt otympligt att gå runt med en fotbollsplan i fickan.

Mer om detta längre ner. Alla vet inte vad en transistor är eller hur de funkar, så här kommer en snabb genomgång.

En transistor kan ses som en strömbrytare; den har två lägen: av och på ( 4 lägen finns men för enkelhetens skull utelämnar vi två ) . Precis som en traditionell strömbrytare finns ett reglage som gör att man kan reglera strömmen, skillnaden är att en transistor inte har några rörliga delar.

 

transistor-bild

“stor” transistor

Hur funkar då en transistor? Den har tre stycken kontakter som är skilda från varandra med en platt isolator i kisel som hindrar strömmen från att flöda igenom.

Bilden ovan visar en teoretisk överblick över en NPN-transistor. De kommer i olika varianter men teorin är densamma.

Emittern är negativt laddad och förser kretsen med elektroner, kollektorn är positivt laddad och redo att ta emot elektronerna. V+ är positiv volt och agerar den faktiska brytaren.  Den blå rektangeln är en isolator. I dagens elektronik är alla transistorer tillverkade av halvledaren Kisel. Isolatorn är då tillverkad av extremt ren Kisel medan emittern och kollektorn innehåller föroreningar som t.ex. svavel, vilket gör dem till helledare.

Emittern kopplas mot minuspolen i en godtycklig krets och kollektorn till pluspolen. Dessa får då ett överskott respektive ett underskott av elektroner vilket gör att det uppstår en skillnad i elektrisk potential mellan dem; om de inte skulle vara isolerade från varandra skulle strömmen flöda från kollektorn till emittern.

Vi har nu en en väldigt ensidig strömbrytare som är fast i läget “av”. Här kommer tricket.

Kisel i sin rena form är en otroligt bra halvledare vilket innebär att den kan leda ström, men även agera som en elektrisk isolator. Om vi nu kopplar isolatorn mot en positiv spänning kommer hela isolatorn bli positivt laddad. Kiselplattan attraherar elektroner som börjar forma en kedja längs med isolatorn från emittern till kollektorn.

När den kedjan når kollektorn får vi en sluten krets.

Tar vi bort den positiva volten finns det inget som attraherar elektronerna längre och kedjan (strömmen) bryts.

Nu till dagens mikroprocessorer.  För att visa hur stora transistorerna är används måttet nanometer. Det är alltså det Intel menar när de pratar om att deras kretsar kör på 32 nm eller 22 nm arkitekturer. Måttet pekar på avståndet mellan Source och Drain för varje individuell transistor. Satt i perspektiv så är dagens 4de generation I7:or byggda med 22nm transistorer, avståndet mellan emittern och kollektorn motsvarar då ~80 uppradade Kiselatomer .

Om en fotboll skulle representera en transistor i en modern processor skulle själva processorkärnan (inte hela processorn man håller i handen) motsvara arean av stadsdelen Sundbyberg, eller ~10km2.

Hoppats att detta ger lite klarhet i hur imponerande svårt det är att lyckats klämma in 1.4 miljarder transistorer på 2 cm2.