Gå til innhold

Anbefalte innlegg

Hei, hvordan er egentlig livet for folk som jobber med programmering? Underbevisstheten min har sagte men sikkert klart å konstruere et vagt bilde av hvordan all denne kodinga henger sammen. Alt er abstraksjon på abstraksjon på abstraksjon med nuller og enere i bånn. Ofte når man lærer seg programmering på skolen, i hvert fall det jeg har jobbet med hittil, legges mye fokus på oppgaver som:

"Lag en rekursiv metode som reverser en tekst input, og sjekk om det er polindrom."

Samtidig så VET JEG at det finnes bibloteker, som har kode for veldig mye. Som feks å reverse teksten så jeg slipper å skrive koden, snakker kun med erfaring fra Java dog. Jeg skjønner det pedagogiske ved å kode slike små ting, men i jobb sammenheng, skrives det mye egen kode? eller er det veldig mye som går på gjenbruk?

 

Og foresten, har de fleste programmerings språk bibloteker som Java? Ikke identiske, men bibloteker til ulike ting som å lage GUI, lese filer, blabla ... Tenker kanskje å prøve på å gli over fra Java til C++ en liten periode.

Endret av mushin
Lenke til kommentar
Videoannonse
Annonse

Akkurat nå for å lære litt Direct3D 10 i C++ skriver jeg en OpenGL 1.1->Direct3D 10 wrapper. Mye kode kan jeg hente fra mesa3d for eksempel, som er referanseimplementasjonen av OpenGL, men mye Direct3D kode må jeg skrive selv. All koden er derimot relativt triviell, men det er likevel mye som må gjøres.

Lenke til kommentar

Skjønte noe av hva du skrev, men du er tydeligvis mer dreven i feltet enn meg. Er C++ veien å gå for en som jobber på spreng for å få realfagsbakgrunn for å kunne drive med spill/modellerings programmering senere? Og ligger det mye læringsverdi i å lese andres kode? Har trua på 10 000 timers regelen, dvs at hvis man har nok timer arbieds input så får man en god skill output.

 

Siden du nevner grafikk (Direct 3D, OpenGL ...) Hvordan er det egentlig spill programmeres, tenker på alt fra klassikere som Super Mario Bros 3, Mega Man etc på NES, Super Mario 64, Zelda Ocerina of Time til N64, Resident Evil 2, til PS, og mer moderne spill som WoW, HL2, etc. Sitter folk å koder slike spill?

Lenke til kommentar

Spillprogrammering er typisk i dag C++ (mulig litt assembly i kjernerutiner som må være ekstremt raske) på engine-nivå, med ofte høynivå-skripting for spill-logikk som ikke krever veldig god ytelse. Skal nevnes at jeg ikke er spesielt spill-programmerer selv, så ta det med en klype salt.

 

Super Mario Bros. 3 - Nintendo og Super Nintendo var rein assembly. Å programmere for disse konsollene står det respekt av. Jaffe på forumet her blant annet har koda en del for NES, men det virker som at det ikke er spesielt enkelt :D

 

N64/PSX var typisk rein C. Grafikken var neppe OpenGL, men mulig mere måtte gjøres manuelt. På N64 var det noen som tilogmed kodet mikrokode (lavere nivå enn selv maskinkode!) for å yte maks fra grafikkortet. Mulig det var litt vanlig assembly (MIPS) med i bildet også. Moderne spill er nok C++.

 

Definitivt les andres kode. Mange open source prosjekter man kan lære av. Er kanskje ikke spesielt lurt å lese spillengine-kode sånn med en gang siden det fort blir litt arcane å forstå optimiserte rutiner for ditt og datt.

Lenke til kommentar

Takk TheMaister, programmering er en aktivitet som blir fetere og fetere jo mer man skjønner. Alt virket ganske arcane og grått/tørt med engang man starter med det. Denne koden skriver "Hello World" ut på skjermen, woho, so what. Fort for å ikke se hvor mye koding, tenkning og kreativitet som står bak alt det mange tar for gitt idag.

 

Mulig jeg styrer hele praten litt off-topic nå, men hvordan organiseres kode i ikke-objekt orienterte programmerings språk? Tenker på C, Haskell, ... etc

Jeg tenker på systemer som har mye kode. Det å lagre ting i objekter er en helt genial måte å få komprimert mye kode inn i en kapsel av noe slag.

Lenke til kommentar

Kan ikke snakke for Haskell, men i C koder man gjerne pseudo-objektorientert i større prosjekter.

 

I C++ ville man tenkt noe slikt:

 

class Foo
{
  public:
     void do_this() {}
     void do_that() {}
  private:
     int some_variable;
};

 

I C er det ganske vanlig å bruke opaque pointer-teknikken.

 

// foo.h
typedef struct Foo Foo_t;
Foo_t *Foo_new(void);
void Foo_do_this(Foo_t*);
void Foo_do_that(Foo_t*);
void Foo_free(Foo_t*);

// foo.c

struct Foo
{
  int some_variable;
}

// Implementer funksjonene her

 

Interfaces kan gjøres med callback-structs i C, som på en måte simulerer virtual tables i C++.

 

struct Implementation
{
  Implementation_t* (*init)(void);
  void (*do_something)(Implementation_t*);
  void (*free)(Implementation_t*);
};

 

Linux kernelen er kodet objekt-orientert, i C. Er teknikkene som brukes som er viktig, ikke nødvendigvis språket. Men C++ gjør det så klart litt enklere å gjøre det :)

Lenke til kommentar

Hei, hvordan er egentlig livet for folk som jobber med programmering?

 

Fortsat er det rimelig bra, men der er absolutt mørke skyer i horisonten. Flere større norske bedrifter har offshoret det meste til India. Ta f.eks. en bedrift som Telenor der i dag nesten bare består av mellemledere. Al utvikling er offshoret til indere og den siste oppgaven for de norske utviklere er å løre opp indere til å ta over jobben.

 

Som konsulent kommer jeg meg rundt i en del firmaer og dette er desverre noe jeg ser igjen og igjen.

 

For 10 år siden hadde jeg ingen skrubler mot å anbefale IKT bransjen for studerende, til tross for krakket rundt år 2000. Snart kan det være der ikke er jobb igjen for ingeniører engang og man kan lure på hva vi (og landet som helhet) skal leve av.

Lenke til kommentar
..skrives det mye egen kode? eller er det veldig mye som går på gjenbruk?

Det spørs på prosjektets levetid. Er det et one-off-prosjekt som ikke skal vedlikeholdes blir så mye som mulig gjenbrukt. Skal det aktivt utvikles og vedlikeholdes i åresvis er det større sjanse for at mesteparten blir skrevet selv, for da blir utviklingstiden småtteri i det store bildet. Lisens er også viktig da det er mye god kode der ute som ikke har lisens som er kompatibel med låste lisenser.

Lenke til kommentar

Takker for respons folks.

 

TheMaister: C koden ble noe arcane for meg, har kjøpt meg en C++ bok, men kunne vært fett å prøve med litt vanlig C koding først. Er mye av C++ syntaxen arvet fra C?

 

Tigerdyr: Ikke bra det der. Syntes å lese i Aftenposten av det å være programmerer var et av de mest ettertraktede yrkene atm, artikkelen var fra Jan 2011. Skjønner jo at markedet kan skrenkes inn når det finnes mange tusen som kan gjøre jobben billigere enn oss nordmenn, men fortsatt så er det jo mere og mere duppe dingser som skal programmeres. Men igjen, det blir sikkert også flyttet til utlandet. :/

Endret av mushin
Lenke til kommentar
Ta f.eks. en bedrift som Telenor der i dag nesten bare består av mellemledere. Al utvikling er offshoret til indere og den siste oppgaven for de norske utviklere er å løre opp indere til å ta over jobben.

Hehe, men «fordelen» med offshoring er at det så lett kan gå galt ... «Den Norske Programmereren» er langt fra død.

Lenke til kommentar

Joda, men det blir pirk. Enkleste måten å se C++-kodere på i C-kode er nettopp unødvendig casting fra void* :) Noen andre interessante detaljer er:

 

int foo(); vil kunne ta i mot et vilkårlig antall elementer i C, men ingen argumenter i C++.

int main() {} returnerer 0 (eller success) implisitt i C++ (og C99), men er ikke definert i C89.

 

 

Skal nevnes at C99 som jeg foretrekker har divergert en god del fra C++ uansett. Nye C++0x standarden har lånt litt fra C99, men er to ganske forskjellige språk nå.

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å
×
×
  • Opprett ny...