mandag 20. februar 2012 Diverse prosjekter Polyglot
For 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:
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.
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.
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.
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!