Deep C: Et kurs for erfarne C og C++ programmerere

C++

Programmering er vanskelig. Å skrive korrekt C og C++ er veldig vanskelig. Det er faktisk sjelden man ser kode som ikke inneholder feil i form av udefinert eller uspesifisert oppførsel, og dette gir gjerne bugs som er svært vanskelig å finne. Hvorfor skriver dyktige programmerere slik kode? En vanlig feil er å bruke antagelser fra andre programmeringsspråk og tro at C (og derfor også C++) oppfører seg på samme måte – det blir ofte veldig feil. C er egentlig ikke et skikkelig høynivåspråk, det er mer som en portabel assembler hvor man hele tiden må ta hensyn til den underliggende maskinvaren.

I dette to–dagers kurset vil vi systemetisk gå igjennom de fundamentale byggeklossene for å danne grunnlaget for en dyp forståelse av programmeringsspråket C. Vi vil også gjøre noen øvelser i grupper og deretter diskutere sammen hva som er god og dårlig kode.

"Dette er et slags lynkurs for de som godt kunne tenkt seg langt skjegg, sandaler og 30 års erfaring med C programmering."

I KURSET VIL DU LÆRE MER OM

  • Evaluation order and sequence points
  • Undefined and unspecified behavior
  • The different C standards (K&R, ANSI C, C99, C11)
  • The history and spirit of C
  • Portability and optimization issues
  • Good library design
  • Working with pointers, arrays and structures
  • Preprocessing, translation, linking and execution
  • The memory model
  • Modern development techniques
  • C++ as a superset of C
  • Secure coding

HVEM KURSET PASSER FOR

Kurset er beregnet for C og C++ programmerere med en del års erfaring. Jo mer erfaring du har, jo mer utnytte vil du sannsynligvis ha av å delta på kurset. Dyktige programmerere med annen bakgrunn kan kanskje også ha glede av kurset, men da må man beregne en del ekstra innsats i forkant. Det forventes at alle kursdeltagere stiller med egen maskin og et fungerende C utviklingsmiljø (gcc/clang og emacs/vi er et godt valg).

Tid

09:00 - 16:15

Emner

Evaluation order and sequence points

Undefined and unspecified behavior

The different C standards (K&R, ANSI C, C99, C11)

The history and spirit of C

Portability and optimization issues

Good library design

Working with pointers, arrays and structures

Preprocessing, translation, linking and execution

The memory model

Modern development techniques

C++ as a superset of C

Secure coding