Gå til hovedindhold
Version2 it for professionelle
Forsiden

Hovedmenu

  • It-nyheder
  • Blogs
  • It-job
  • It-firmaer
  • Whitepapers
  • Opret bruger
  • Log ind
Du kan logge ind med din e-mail-adresse
Der er forskel på store og små bogstaver i adgangskoden.
Glemt adgangskode?
Se kommentarer (8)
Emner

API design, hjemmearbejde

Af Poul-Henning Kamp 17. august 2007 kl. 08:34

Så er ferien forbi, hiv havemøblerne ud af øregangene, sæt jer og hør efter!

API, Application Programming Interfaces, er mursten og mørtel for programmering.

Desværre.

Hvor byggefaget har vidreudviklet sig og anvender forspændt beton og selvbærende konstruktioner, så slås vi i computerbranchen stadig med håndstrøgne sten af tilfældigt ler og klumpet mørtel.

Er helt simpelt eksempel: Posix Threads API har ikke en "assert mutex (not) held" facilitet.

Her er tre artikler, to gamle af undertegnede og en frisk af Michi Henning om API design:

Userland/Kernel Interfaces (Daemonnews 2003/05)

Complex and extensible configuration interfaces (Daemonnews 2003/08)

API: Design Matters (ACM Queue Magazine 2008/08)

Når I har læst dem, skal i besvare følgende spørgsmål:

1: Hvorfor skal der stadig 5-7 funktionskald til at åbne en TCP forbindelse til en server hvis man bruger C ?

2: Hvor er API'et til WLAN netværk defineret ?

3: Definer et kriterie for hvad der er et API og hvad der ikke er.

phk

Send Tweet
Udskriv
Billede af Poul-Henning KampOm Poul-Henning Kamp

Poul-Henning er selvstændig systemprogrammør, kernekoder, Varnish-forfatter, data-arkæolog og brokkehoved uden særlig portefølje.

Follow @bsdphk

Kommentarer (8)

Opret en konto eller log ind for at følge indhold på Version2 - og bliv opdateret via e-mail eller rss

Følg kommentarer
Torben Mogensens billede
Torben Mogensen 17. aug. 2007 - 10.22
 
DSL -- et alternativ til API

I mange tilfælde kan et domænespecifikt sprog (DSL) være et godt alternativ til en API. Med et DSL får du dels en mere naturlig syntaks (og undgår dermed de 5-7 kald for at åbne en TCP-forbindelse), og du kan få statisk check af konsistens o.lign.

Med et API presses alt ned i den prokrustiske seng, der hedder metode- eller funktionskald, og man skal ofte angive parametre som tekststrenge eller heltal, hvorved man mister både statisk check og semantisk gennemskuelighed. Og man kan sjældent opnå de optimeringer, som global oversættelse af et DSL kan, da oversætteren ikke kender betydningen af de enkelte kald og deres interaktion.

Se for eksempel på forskellen på at programmere en søgning i et XML-dokument med DOM (et API) eller med XQuery (et DSL).

  • Stem op 0
  • Stem ned 0
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer
Martin Rytter 17. aug. 2007 - 11.09
 
Øh?

Torben. Jeg forstår dine ord men jeg forstår ikke hvad du mener. Er det DSL ikke lidt overkill for at åbne en TCP forbindelse? For ikke at tale om problemet med at huske at få den lukket igen.

Personligt foretrækker jeg at indkaplse den slags på lignende vis som http://www.research.att.com/~bs/bs_faq2.html#finally.

Det er da simpelt og til at forstå. Bare fordi man har et gammelt API som ikke kan ændres, behøver det jo ikke betyde at man skal blive ved med at benytte det. Kan det ikke gøres lidt bedre? Jo det tror jeg nok det kan.

/mrj

  • Stem op 0
  • Stem ned 0
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer
Død Profil 17. aug. 2007 - 11.42
 
API(er)

Nu lige for at tage brownie-point-#1 fra din artikel, så peger begge links i denne artikel på den samme ;)

Fordi TCP forbindelser skal bruge 5-7 kald i et givent API, så er der jo ikke noget der forhindrer dig i at abstrahere det væk i et "højere" API. Der er sikkert nogen som vil kunne bruge begge abstrationsniveauer alt efter hvad man lige sidder med.

  • Stem op 0
  • Stem ned 0
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer
Tania Andersen 17. aug. 2007 - 12.00
 
Josh Bloch

Joshua Bloch har skrevet en hel del kloge ord om API'er. En et-times præsentation om emnet fra januar i år kan findes på Google Video:

http://video.google.com/videoplay?docid=-3733345136856180693

  • Stem op 0
  • Stem ned 0
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer
Poul-Henning Kamps billede
Poul-Henning Kamp 17. aug. 2007 - 12.31
 
Tak Søren

Linket er rettet nu (når v2's cache timer ud ?)

Og du har helt ret søren, jeg kan sagtens abstrahere de 5-7 systemkald ind i et højere API selv, men hvorfor skal alle programmører der skal bruge en tcp-forbindelse i et C-program gøre det selv ?

Burde vi ikke, efter 37 år, have et sådant højrere API i libc ?

Poul-Henning

  • Stem op 0
  • Stem ned 0
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer
Jørn Schou-Rode 17. aug. 2007 - 21.41
 
forspændt beton vs tilfældigt ler

> Hvor byggefaget har vidreudviklet sig og anvender forspændt beton og selvbærende konstruktioner, så slås vi i computerbranchen stadig med håndstrøgne sten af tilfældigt ler og klumpet mørtel.

Vi nørder har jo også miljøer såsom Java og .NET, hvor man ikke bruger 5-7 kald på at åbne en forbindelse. Gad vide om ikke tabet/begrænsningerne, ved at arbejde i sådanne miljøer, svarer nogenlunde til det man oplever ved skiftet fra mursten til forspændt beton?

  • Stem op 0
  • Stem ned 0
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer
Poul-Henning Kamps billede
Poul-Henning Kamp 17. aug. 2007 - 22.28
 
Læs lige d. 3. artikel Jørn...

Læg mærke til hvilket sprog det handler om...

Poul-Henning

  • Stem op 0
  • Stem ned 0
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer
Jørn Schou-Rode 18. aug. 2007 - 16.00
 
RE: Læs lige d. 3. artikel Jørn...

Av, jeg havde ikke fået læst dine links ordenligt igennem. Min forrige kommentar faldt vist ligesom lidt til jorden her :-)

  • Stem op 0
  • Stem ned 0
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer

Tilføj kommentar

Opret en konto eller log ind for at følge indhold på Version2 - og bliv opdateret via e-mail eller rss

Følg kommentarer
Log ind herunder eller opret en bruger for at skrive kommentarer
Du kan logge ind med din e-mail-adresse
Der er forskel på store og små bogstaver i adgangskoden.
Glemt adgangskode?

Seneste nyt

Teenager står frem: Derfor hackede jeg Version2

Udgivet 17. maj 16.40Opdateret 17. maj 16.40

Fredagshumor: Sådan ser indbakkens pestilenser ud i virkeligheden

Udgivet 17. maj 15.00Opdateret 17. maj 15.00

New Zealand dropper softwarepatenter

Udgivet 17. maj 14.09Opdateret 17. maj 14.09

Microsoft gemmer udspekuleret jobanonnce på Bing

Udgivet 17. maj 11.35Opdateret 17. maj 11.35

Ny wifi-standard med gigabit-hastighed er en gave til it-chefen

Udgivet 17. maj 10.54Opdateret 17. maj 10.54

Flere it-nyheder »

Tilmeld dig Version2's it-nyhedsbrev og vind den nye iPad.

Seneste debat

  1. Konkurrence til Raspberry Pi: Ny linux-minicomputer til 260 kroner

    67 comments.
    Last update 2 timer 16 minutter
    Skrevet af Peter Hansen
  2. Teenager står frem: Derfor hackede jeg Version2

    35 comments.
    Last update 7 timer 2 minutter
    Skrevet af Baldur Norddahl
  3. Retten er sat: Kusine stævner fætter om familiedomænet

    33 comments.
    Last update 1 dag 1 time
    Skrevet af Jesper Lund
  4. CPR.dk affejer hacker-video på Youtube som uinteressant: "Vi er sikre nok"

    10 comments.
    Last update 1 dag 5 timer
    Skrevet af Hans-Michael Varbæk
  5. Microsofts talknusere: Danmark vinder Melodi Grand Prix

    9 comments.
    Last update 1 dag 6 timer
    Skrevet af Jacob Smedegård
  6. Hackere på Version2

    14 comments.
    Last update 1 dag 6 timer
    Skrevet af Hans-Michael Varbæk
  7. Hvorfor blev min disk fyldt op?

    20 comments.
    Last update 1 dag 8 timer
    Skrevet af Peter Toft
  8. New Zealand dropper softwarepatenter

    6 comments.
    Last update 1 dag 9 timer
    Skrevet af Jørgen Henningsen

Mere debat »

Information

  • Kontakt redaktionen
  • Job- og annoncesalg
  • Teknisk support
  • Om Version2
  • Brugerbetingelser
  • Cookie- & privatlivspolitik

Aktuelle emner

  • Agil udvikling
  • Business Intelligence
  • Cloud computing
  • Intranet
  • It-sikkerhed
  • NemID
  • Open source CMS
  • Projektledelse
  • Scrum
  • Sharepoint intranet
  • Storage
  • Ubuntu
  • Virtualisering
  • Windows 8
  • Windows Server 2012
  • iOS 6
  • iPhone 5

Tjenester

  • iPhone-app
  • RSS-feeds
Følg @version2dk
Tilmeld dig Version2's it-nyhedsbrev og vind den nye iPad.

Version2 udgives af

  • Mediehuset Ingeniøren A/S work Trekronergade 26 2500 Valby
  • Tlf. work 33265300