Filendelser - med lettfattelige eksempler.

| | Comments (4) | TrackBacks (0)

Det har blitt mye tilbakemeldinger på mitt innlegg om filnavn. Noe tror jeg bygger på misforståelser eller en trang til personangrep, men noe er også god kritikk.

Premissene

Det jeg vil ha frem var at det er merkelig at vi (i dag) blander sammen filnavn og filtype og lagrer dette i samme enhet. Jeg er klar over at dagens teknologier er bygget på tanken om at slutten på filnavnet angir typen. Men er det sannsynlig at vi holder oss til disse begrensningene i fremtiden? Vil vi om 30 år fortsatt bruke tre bokstaver i filnavnet til å angi filens type? Om 50 år?

  • Jeg mener altså ikke at vi alle burde slutte øyeblikkelig med hvordan vi navngir filer.
  • Jeg vet altså at hvis vi våknet opp i morgen uten filendelser på filene våre så ville det blitt problemer.
  • Jeg er klar over hva dette innebærer med tanke på filtype må overføres ved filoverføring og endringer i lesing og skriving av filer i operativsystem.

Den meste av kritikken går på å ramse opp hva det er med dagens filbehandling og filoverføring som gjør at et bytte i neste uke ikke vil fungere. Det er ikke særlig vanskelig. Det jeg påstår er at om vi ser bort fra dagens begrensninger og ser hvor vi vil i fremtiden, så er det naturlig å skille mellom navn og type. Jeg påstår at grunnen til måten vi gjør det på i dag er historisk heller enn at det å blande navn og type er en god idé.

Det er også ingenting som hindrer oss i å beholde informasjon om typen både i filnavn og som metadata i en 20-30 år, eller så lenge vi måtte ønske.

Eksempel 1

Jeg kan prøve å illustrere det med et eksempel:

Se for deg at vi i dag skulle designe et nytt OS fra bunnen - uten av vi var klar over historikken og konvensjonene knyttet til hvordan filer navngis.

  • Vi kommer frem til at vi må ha en form for filer som representerer programmer og en rekke typer forskjellig informasjon.
  • Om disse filene er vi interessert i å lagre en del informasjon (hvem eier filen, når ble den sist åpnet, når ble den opprettet).
  • Vi vil også lagre noe som forteller oss hva denne filen inneholder.

Jeg har vanskelig med å se for meg hvordan disse hypotetiske designerne tenker at “informasjon om filene lagres som metadata - med unntak at informasjonen som sier hvilken type fil dette er. Den putter vi inn sammen med filnavnet.”

Hvis noen mener de vet noen god grunn til at dette er en god løsning, så må de gjerne opplyse meg.

Eldre OS skiller mellom navn og type.

Når tidlige OS ble designet blandet de ikke sammen navn og type (DOS skiller for eksempel mellom filnavn og filtype). Det var satt av 8 bytes til navn, og 3 bytes til type.

Dagens OS skiller ikke mellom navn og type, men stoler på konvensjoner. (De siste ca 3-5 bokstavene etter siste punktum i navnet angir hva jeg skal gjøre med denne filen).

Eksempel 2

Sett at du jobber som programutvikler. Hvis du bruker navnefeltet i en database til å angi personens type (kjønn), så får sannsynligvis kjeft.

  • “Fornavn Etternavn.mann” er en dårlig løsning fordi den blander informasjon om navn med informasjon om kjønn. Den baserer seg på at et punktum skiller navn og kjønn. Skillet kommer ikke frem i måten dataene er strukturert.
  • “Fornavn Etternavn” og et eget felt for kjønn er selvfølgelig bedre. Det skilles klart mellom navn og kjønn. (Det beste er selvfølgelig i tillegg å skille for- og etternavn)

Legg merke til at det er ingenting som hindrer deg fra å lese inn eller vise dataene på formen “Fornavn Etternavn.mann”.

Svar

For å referere til filer.

Det skrives at “filetternavn” er en god måte å referere til filer. Det nevnes et eksempel der readme.txt og readme.html ligger i samme katalog.

Det er selvfølgelig helt rett. Dette er nettopp det som er grunnen til at punktum opprinnelig ble innført som separator. Det jeg mener er at OS bør skille mellom navn og type basert på noe annet enn konvensjoner. Ditt OS bør skille mellom navn og type. Navn og type bør lagres som separate data. Jeg sier altså ikke at du ikke bør kunne referere til dine filer som readme.txt, (men det kan hende fremtidens OS presenterer filer anderledes)

Sortering

Du vil fortsatt kunne sortere filene dine om typen lagres separat. Dette klarte du i DOS. Du klarer å sortere basert på for eksempel dato i dag.

Ikke klag - det er bare å skru av i Windows.

Hvis du har lest helt hit så håper jeg du ikke tror mitt problem er at det er plagsomt å se på filendelser. Det er ikke poenget. Jeg er blitt anklaget for å skrive 90% microsoft-hat til å være en Windows-bruker basert på samme innlegg.

Hvert OS sin tilnærming.

Det som kommer klart frem av debatten er at forskjellige OS forholder seg til filtyper på forskjellige måter. Det er uklart hvordan filens type skal avgjøres.

Konvensjonen sier at de tre (enkelte ganger fire eller fem) bokstavene etter siste punktum angir hvilken type fil det er. Etter hver som vi får flere og flere filtyper, blir det trangt om plassen og mange typer brukes til forskjellige formål.

Si at du får tilsendt en fil som har navnet “navn.img”. Ditt operativsystem må finne ut av hva denne filen er og hvordan den eventuelt skal åpnes. I følge filext.com er det 24 alternativer.

Enkle OS slår bare opp program basert på filtypen, mens andre bruker andre metoder for å gjette seg frem. Det innebærer mye gjetting, og jeg mener vi i fremtiden bør kunne løse dette bedre. Ikke at løsningen er å kutte ut filtypen.

0 TrackBacks

Listed below are links to blogs that reference this entry: Filendelser - med lettfattelige eksempler..

TrackBack URL for this entry: http://www.int9.net/mt/mt-tb.cgi/41

4 Comments

jonas tangen said:


Gjør som amiga og linux, man leser headern på filen. Det er vel strengt tatt kun windows som er avhengig av extensions.

Espen said:

Er forsåvidt enig i at filtype og filnavn kan separeres bedre enn det gjøres i dag. Identifisering av filtypen ved en ekstensjon av filnavnet har dog flere sider:

  • Interoparabilitet - Å tro at man i overskuelig framtid skal komme til enighet om utveksling av metadata for forskjellige filsystemer er nok i beste fall naïvt. Eksplisitt typegiving som en del av filnavnet fungerer faktisk overraskende bra.
  • Navnerom - Dersom man faktisk ønsker å ha ett filnavn som representerer flere filtyper (f.eks. filnavn.avi og filnavn.srt), så er faktisk filtypen en del av navnerommet. Hvordan vil du identifisere den filen som faktisk skjuler seg bak "file://en/katalog/filnavn"? At man identifiserer en fil ved hjelp av en (filnavn, filtype) tuple er i praksis det samme som å si at filtypen er en del av filnavnet.
  • Søkeoptimering - Ved å spesifisere filtypen som en del av filnavnet kan man mer effektivt søke etter gitte filer uten å måtte ty til stat(2)-liknende systemkall for hver fil. Dette kan selfvølgelig "fikses" ved hjelp av nye systemkall.
asdf said:

Espen:

Å tro at man i overskuelig fremtid kommer til å gå over til IPv6 er også naivt. Allikevel har protokollen vært klar i 10+ år. Felles for de begge er at før eller siden vil problemene med det gamle (mangel på adresser eller tre-bokstavers filtyper) bli smertefull nok til at en overgang til være å foretrekke.

Det er ingenting i veien for å beholde muligheten til å referere til filer som "fil.ext". Grunnen til at punktumet i det hele tatt ble innført var jo nettopp dette.

Det jeg sier er at TOPS-10, OS/8, RT-11, CP/M og DOS skiller mellom navn og type. Windows etter NTFS gjør det ikke (eksplisit). Vi har altså skillt mellom navn og type i 30 år, mens vi i det siste 10-året blander disse sammen og stoler på "huskeregler" om at filens navn er alle tegn frem til siste punktum, bokstaver etter det siste punktumet gir et hint om filens type.

Når det gjelder søking henger jeg ikke helt med. ls (eller dir) har ingen problemer med å forholde seg til dato eller eiere på filer. Dette gjaldt også i DOS sine dager. Det kan hende jeg misforstår hvilket du mener med "søkeoptimering".

vidarlo said:

Ein grunn til at filtype vart spesifisert med extension, og ikkje i anna metadata, er at anna metadata er relativt unyttig om ein skal kopiere fila til anna system, eller til og med totalt uønska.

Filformat er derimot ønske om å få med når ein kopierer, og difor var extensions minste fellesnemnar; alle OS støtta den.

Det er ikkje ei optimal løsning, og ein burde oppbevart metadata i tillegg, men ikkje istadenfor IMHO. Enkelt og greit fordi file extensions er så innarbeida, fungerer så utmerka, blir presentert såpass greit og er så utruleg portabelt.

Leave a comment

About this Entry

This page contains a single entry by int9 published on April 28, 2008 7:13 PM.

Hvordan: hindre at ditt pass kringkaster personopplysninger. was the previous entry in this blog.

Find recent content on the main index or look in the archives to find all content.