Gå til innhold

Skal begynne med C++


Anbefalte innlegg

søppel: Her er eksemplet ditt.

 

Min valgte CL-implementasjon er SBCL. Det finnes en implementasjons-uavhengig FFI, men denne er en smule tungvint, og vanligvis ikke verdt det. SBCL er uansett fri programvare...

 

Så vidt jeg vet kan ikke SBCL grense direkte mot C++, men man kan aksessere C++-funksjoner via C, så det er ikke så mye ekstra arbeid. Jeg kan dog ta feil; det er ingen egentlig grunn til at det ikke er mulig.

 

Her er et enkelt eksempel som bruker atoi, skjønt denne funksjonen finnes i Lisp-biblioteket også. ;)

Gi eventuelt en C-prototype om du vil ha noe spesifikt.

 

Først, la oss definere den. Dette er ikke nødvendig å gjøre på forhånd, men det er raskere:

 

> (sb-alien:define-alien-routine "atoi" int

(str c-string))

 

Normalt må vi laste inn biblioteket først, men atoi finnes i libc, så det er unødvendig.

Det finnes nå en funksjon kalt "atoi", som oppfører seg akkurat som alle andre Lisp-funksjoner. La oss prøve den:

 

> (atoi "NAN") -> 0

> (atoi 12) -> feilmelding; den vil ha en streng.

> (atoi "1s4") -> 1

 

Jepp, den oppfører seg akkurat som atoi i C... ikke akkurat merkelig.

Lenke til kommentar
Videoannonse
Annonse

Hvordan lærer man seg Lisp? Har aldri hørt om språket før og jeg finner ingen bøker om Lisp på nettsida Datajungelen.

 

I bruk er helt sikkert Lisp et godt språk å kunne, men jeg tipper at en lærer mye mer av å sette seg inn i C++. Uansett om man skal bruke det mye eller lite, så er det kjekt å kunne når man skal lære seg andre språk. C++ er på en måte et "grunnleggende" språk.

Lenke til kommentar

Mitt tips for nybegynnere er enten C++, Java eller C# (avhengig av hva du ønsker å lage).

 

Alle disse språkene er ganske like på syntaks. C++ har en del elementer som ikke Java og C# har, så det er nok enklere å lære Java og C#. Men hvis du kan C++, bruker du ikke lang tid på å lære Java og C# (tar nok litt lengre tid andre veien). Det som eventuelt vil ta litt tid er å bli vant til klassebibliotekene/pakkene.

 

Hvis du velger Lisp skal du være klar over at det ikke på noen måte ligner de mest populære språkene som C++, Java, C# og PHP. Ja, du kan gjøre mye i Lisp på få linjer, men er det et mål i seg selv da? For meg betyr lesbarhet mye mer! Lispkode ser ofte ganske "grumsete" ut selv for et godt trent øye. Det er heller ikke noe problem å lære seg Lisp senere hvis en skulle ønske det. Og kanskje er Python et bedre alternativ?

Lenke til kommentar
Mitt tips for nybegynnere er enten C++, Java eller C# (avhengig av hva du ønsker å lage).
Eller D? Selv ser jeg C++ som forholdsvis gammeldags (foretrekker det like fullt framfor Java), D har f.eks kvittet seg med C-preprosessoren. Sannsynligvis vil man komme bort i C/C++ før eller senere i forbindelse med eksisterende kode, men for å lære faget er det etter min mening like greit å starte med et mer moderne språk.
Lenke til kommentar

Det er sant at det ikke er spesielt utbredt, men det bør ikke være noe stort problem å lære seg andre språk i C-familien når først det grunnleggende sitter (som kan ta en stund).

Edit: Sant å si heller jeg egentlig til Python som førstespråk.

Edit1: Et åpenbart problem med D for en nybegynner vil jo være begrensede læringsressurser (bøker etc.), av en eller annen grunn falt ikke dette meg inn med det samme (begynner å bli blasert med åra?) :|

Endret av A_N_K
Lenke til kommentar

Jeg er enig i det. Men for meg er det ganske vesentlig hva det finnes av gammel kode/kodeeksempler, dokumentasjon og bøker. D er fortsatt i utviklingsfasen og er vel ikke i nærheten av å bli standardisert i løpet av de nærmeste årene? D har mange spennende elementer i seg, men det gjenstår å se om det noen gang vil bli utbredt. Det er jo allerede snakk om D 2.0 eller D++... (eller E, hehe).

 

Edit: så ikke at du hadde oppdatert posten din angående læringsressurser...

Endret av kjetil7
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...