Opus Polyglotis II

introductioFor halvannet år siden lagde jeg en blogserie jeg kalte Ping Ring, hvor jeg implementerte ett og samme program i en rekke forskjellige språk. Nå har jeg tenkt å gjøre det samme igjen; dette er mitt Opus Polyglotis del II.

Det jeg vil forsøke denne gangen er å implementere et program hvor jeg får brukt mange forskjellige elementer som kan være viktige for en som vil starte med språket. Alle implementasjonene vil inneholde:

  • Bruk av kommandolinje-parametre
  • Lesing og parsing av en semikolonseparert  fil
  • En eller annen form for looping
  • Konstruksjon og manipulasjon av strenger
  • Bruke av regulære uttrykk eller tilsvarende
  • Dispatch mellom ulike strategier
  • Og selvfølgelig utskrift til konsollet

Jeg vil i større grad enn sist gang forsøke å vise ulike måter å designe en løsning på. Målet er ikke så mye det å sammenligne språkene, men å utforske ulike løsningsmodeller. I tillegg bør programmene kunne fungere som praktiske og reelle (men likevel korte og overkommelige) nybegynner-eksempler for hvert av språkene. Derfor vil jeg i så stor grad som mulig forsøke å følge idiomene som finnes i språket.

Hva skal programmet gjøre?

Programmet jeg skal lage skal formatere data fra ett format til et annet. Det tar to parametre: første parameter avgjør output-format og andre parameter er stien til en CSV-fil som skal leses og transformeres. Formatene som skal støttes er JSON og XML. I bildet nedenfor ser du hvordan formatene ser ut.

formats

Jeg har ingen planer om å gjøre programmet ufeilbarlig eller 100% robust, men jeg skal håndtere et par spesialtilfeller. I CSV-filen kan du legge merke til at tekstverdier kan være omsluttet av hermetegn, men kun må være det om teksten inneholder semikolon. Legg også merke til at JSON-formatet skiller mellom tekst og tall, og at programmet må støtte desimaltall.

Et av hovedfokusene er å vise ulike måter å implementere ulike strategier på. Programmet bør være enkelt å utvide med flere strategier (dvs. flere output-formater). For å illustrere dette skal programmet også godta et tredje format (YAML), men svare med at det ikke er implementert enda.

flow

Det er altså ikke et veldig komplisert program dette her, men spennende nok til at det kan gi verdi både til meg selv og mine lesere. Så da håper jeg du har lyst til å følge med.., gjør deg klar for første akt!

Kategorier: Diverse prosjekter, Polyglot.
RSS feed for kommentarene. Tilbaketråkk.

5 kommentarer til “Opus Polyglotis II”

  1. Svein Arne Ackenhausen Says:

    Høres spennende ut. Gleder meg til å følge med :-)

  2. Ameth Says:

    Kult, gleder meg.

    Her er en løsning i haskell, btw: http://hpaste.org/64031

  3. Torbjørn Says:

    Haskell er ikke et av språkene jeg har tenkt å bruke, så takk for den. Interessant CSV-parsing med parser combinators ser jeg. Jeg kommer også til å vise frem en innebygd og ganske fancy parser i en av artiklene i serien (klarer du å gjette i hvilket språk?).

  4. Ameth Says:

    Hmm, parser innebygget i språket … Perl 6 rules? REBOL?

  5. Torbjørn Says:

    Godt mulig du traff på den siste der ja :)

Skriv en kommentar

Tillatte tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


Alf Kåre Lefdal: Distributed Podcast er også ganske interessant. De tar opp tema som fx. ...

Stian: +1 for 6er til This Developer's Life! Min definitive favoritt. Jeg trengte også...

Torbjørn: Takk for flere tips, Vegard. Deep Fried Bytes ligger på oversikten min fra 2009...

Vegar: Og glemte helt ios: Nsbrief og ideveloper live. Har du hørt på deep fried byt...

Vegar: Mye kjekt her. TDL, hanselminutes og .net rocks ligger i en klasse for seg. Suv...

Torbjørn: Helt enig, arkivet til Software Engineering Radio er en gullgruve om man vet hva...

Einar W. Høst: Jeg synes at det kuleste med se-radio er backloggen av intervjuer... det er noen...

arnab: fantastisk :)...

Olav: Glimrende blogg ! Modellen av hjernens arbeid passer ikke bare på nyskaping: ...

Torbjørn: Ja, flydesign trekkes ofte frem som et eksempel på dette fenomenet. Design av b...

Mulig relaterte linker

 Hold deg oppdatert

Søk i bloggen

Ferske innlegg

  • NodeJS vs. ASP.NET
  • Pulten min..
  • No ifs and buts
  • Community-fiskebolle på ROOTS 2012
  • Kategorier

  • .net ninja (37)
  • Bøker (18)
  • Diverse prosjekter (37)
  • DSL (10)
  • Erlang (10)
  • F# (5)
  • Hardware (1)
  • Jobb (78)
  • Julekalender (51)
  • kjempekjekt.com (23)
  • LISP/Clojure (34)
  • NDC (4)
  • NNUG / community (63)
  • O/RM & databaser (10)
  • Off topic (118)
  • OO-design/clean code (31)
  • Podcasts (15)
  • Polyglot (82)
  • Ruby (29)
  • Silverlight / RIA (3)
  • Software/verktøy (20)
  • Softwareutvikling (24)
  • Testing / TDD (30)
  • the contiki strip (13)
  • User experience (3)
  • WCF (3)
  • Webutvikling (34)
  • WPF (9)
  • WTF (13)
  • Last ned Wallpaper

    Programmeringsbloggens tøffe skrivebordsbakgrunn med snippets fra ulike språk laster du ned her!

    Abonner via epost

    Om du vil kan du få alle nye blogposter tilsendt til din epost. Abonner nå, det er kjempeenkelt!

    Meta