Læser vi stadig kode nok ?

Jeg sad og forleden og nød noget kvalitetsarbejde i 6809 maskinkode fra ca.1977: floatingpoint kode skrevet af nogle HP nørder.

Ikke alene er det elegant assemblerkode, det er også intelligent talbehandling, en dejlig udfordring at gennemskue.

Noget af det mest kedelige man kan gøre, er at gå på kunstmuseeum med en kunstner: De kan studerer Mondrians penselstrøg i timevis, eller prøve at regne ud hvor mange mejselslag per cm² Thorvaldsen fandt optimalt i en bestemt kvalitet marmor.

Ligeledes ville det sikkert være utroligt kedeligt at høre mig fortælle om HP5370B's til formålet geniale floating-point format, så det skal jeg spare jer for.

At læse andre folks kode handler ikke kun om at finde fejl deri, det handler også om at finde inspiration til at forbedre eget håndværk og som alle der har prøvet at skaffe sig kompetent code-review i Open Source ved, er det ikke noget der sker nær nok.

Hvordan får vi folk til at læse mere kode ?

Der burde være marked for et par kaffebordsbøger med highlights fra nogle af de bedste programmer i verden ?

Men har vi overhovedet nogen ide om hvilke programmer det er ?

Hvis du kun kunne skrive et program ud og tage med til en øde ø, hvilket program ville det så blive ?

phk

Kommentarer (15)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Jesper Louis Andersen

Jeg kan godt lide at læse andre folks kode fordi den er en projektion af deres tanker. Man kan med andre ord lære lidt om hvordan de tænkte da de skrev koden. Man kan desværre bare ikke lære det hele, men sådan er det nu engang.

Hvis jeg skulle ud på en øde ø lige nu ville det helt klart være source-koden til Agda2.2.8 jeg vil tage med. Men bare fordi jeg finder den interessant lige nu er det ikke givet at det har almen interesse.

Mere generelt ville jeg gå efter "perler" hvor der er nogen rigtigt fede eksempler imellem. Konferencer for programmeringssprog har som regel en kategori hvori disse underfundige programmer præsenteres på linie med ny forskning. Det synes jeg er en rigtigt god ide.

Jeg er helt sikker på at man kan finde tilsvarende eksempler i den virkelige verden rundt omkring i diverse kodebaser.

  • 0
  • 0
Thomas Hansen

Nej i forhold til din overskrift.

Man har hverken tid eller overskud til at læse noget som helst som verden ser ud idag.

Selvom asm på sin vis er kommet igen pga. busybox. Og stort set alle de steder det bliver brugt ( router, tv, tvbox, osv ). Så er det bare ikke godt at være "nørd"

Når vi har højniveausprog som c,c++, osv. hvem gider så at sætte sig ind i processorarkitektur?

  • 0
  • 0
Torben Rahbek Koch

Hvem gider sætte sig ind i processorarkitektur? Heldigvis gider de mennesker, der skriver f.eks. operativsystemer, at sætte sig ind i den slags.

Som "almindelig" udvikler kan det nu også være ganske praktisk at have bare et minimalt kendskab til hvordan en computer rent faktisk virker ;-)

  • 0
  • 0
Poul-Henning Kamp Blogger

Det lader til at nogen af jer har misforstået og tror at det kun er assemblerkode jeg taler om.

Det er det naturligvis ikke, der er frit slag på alle hylder, bare man bliver klogere af det.

Poul-Henning

  • 0
  • 0
Mogens Ludvigsen

Jeg husker stadig de dage, hvor jeg på få instruktioner fik en 8085 til at gange med ti :-), pseudokoden er:
add a,a ; a = a + a
mov b, a; b = a dvs b= 2 * a => 2 gange oprindelig a
add a,a ; a = a + a dvs a = 4 gange oprindelig a
add a,a ; a = a + a dvs a = 8 gange oprindelig a
add a,b ; a = a + b dvs de 8 a + 2 a = 10a

a er nu 10 gange oprindelig a :-)

God søndag

  • 0
  • 0
Thomas Peter Berntsen

Hvis jeg skulle barrikadere mig med en palle udskrifter af kildekode på en øde ø, så skulle det nok være koden til SAGE, som er et utroligt interessant system til sporing af fly og early-warning, der startede tilbage i de gode, gamle 1950'ere.

Tænk: Distribueret, datacentre med to computere, kontinuerligt fejltjek og hot-swap (og op til 3 MW strømforbrug pr. computer), innovative input- og outputmuligheder med bl.a. projektor, CRT og input via lyspen oma. godt... I slutningen af 1950'erne... Dang. Dét trigger min indre nørd, for det er en enorm bedrift.

Fra Wikipedia:

»
The Semi-Automatic Ground Environment (SAGE) was an automated control system for tracking and intercepting enemy bomber aircraft used by NORAD from the late 1950s into the 1980s. In later versions, the system could automatically direct aircraft to an interception by sending instructions directly to the aircraft's autopilot.
«

På mange områder et i historien lidt glemt pionérprojekt fra en tid, hvor finansiering til den slags enorme forsvarsprojekter vist ikke var det store problem. ;-)

En god primer til SAGE er denne video om projektet, produceret af IBM og regeringen (og også indeholdende en god omgang propaganda): http://www.youtube.com/watch?v=tf1h6aGE5Zo

Thomas

  • 0
  • 0
Jens Dalsgaard Nielsen

...
Selvom asm på sin vis er kommet igen pga. busybox. Og stort set alle de steder det bliver brugt ( router, tv, tvbox, osv ). Så er det bare ikke godt at være "nørd"

Når vi har højniveausprog som c,c++, osv. hvem gider så at sætte sig ind i processorarkitektur?
...

Det var måske en ide at sætte sig lidt ind i tingene inden man farer i blækhuset...

busybox er ren C - den skal jo netop kunne oversættes til forskellige arkitekturer... LIge bladret lidt på git.busybox.net C, C og atter C :-)

At kode i C betyder ikke nødvendigvis at man altid undgår hardware og processor kendskab. Arduino, linux på xxx, freertos, uden OS, PC IO kort, osv osv osv

  • 0
  • 0
Thomas Hansen

At koder er skrevet i et højniveausprog, betyder ikke at man bare kan overføre dem til en hvilken som helst arkitektur og platform.

Men jeg tror også jeg har lavet en afsporing i forhold til hvad PHK har efterspurgt.

  • 0
  • 0
Kristian Nielsen

Der er vel ikke nogen som bliver en god forfatter uden at læse en masse romaner. Og jeg har længe ment at det burde være det samme med kode. Så enig!

Jeg kan ikke huske at jeg blev præsenteret for kodelæsning på nogle kurser på Universitetet (men jeg gjorde det selvfølgelig i stor stil alligevel!). Det burde der laves om på, og det tror jeg faktisk også der er blevet, jeg har da hørt om flere projekter hvor der arbejdes med GCC, MySQL, Linux kernen osv.

Nu er der jo en gren af branchen som ikke synes det er en god ide at læse hinandens kode (jeg kan egentlig ikke forstå hvorfor vi beskytter kode med ophavsret uden at kræve den samme åbenhed om "opskriften" som vi kræver for at give beskyttelse med patenter). Men der findes nu så meget Open Source programmel tilgængelig at det ikke bør være nogen hindring.

Lad os få læst noget mere kode, og alle forskellige slags! Ikke noget med fine fornemmelser ogdiskussioner om hvilken kode der er "pæn nok" til de letpåvirkelige studerende. De beskæftiger sig vel også med lægeromaner og triviallitteratur på Dansk-studiet ...

  • 0
  • 0
Martin Juhl Jørgensen

Kiggede en overgang på nogle open source spil, fordi synes det ville være sjovt at bidrage med noget samtidig med at jeg så ville få stillet min lyst til at lave computerspil :)

Der var to spil der stod ud (for mig):
1. UFO: Alien Invasion (http://ufoai.ninex.info)
2. OpenTTD (http://www.openttd.org)

Jeg blev mere end overrasket da jeg kiggede i kildekoden til projekterne; det ene var et rent kaos af at sætte sig ind i. Det andet var pænt skrevet, med kommentarer, let forståelige navne og en stringent formattering.

Så hvis jeg skulle have noget kode med ud på en øde ø så ville det nok blive OpenTTDs fortolkning af Transport Tycoon Deluxe :)

  • 0
  • 0
Log ind eller Opret konto for at kommentere