Slideshare.net (beta)

 
Post: 
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons

All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 1 (more)

C: A Humbling Language

From guestaa63aa, 9 months ago

OSDC 2007 opening keynote. Not sure it makes sense if you weren't more

1315 views  |  0 comments  |  0 favorites  |  51 downloads  |  1 embed (Stats)
 

Tags

osdc2007

 
 

Groups / Events

 
Embed
options

More Info

This slideshow is Public
Total Views: 1315
on Slideshare: 1314
from embeds: 1

Slideshow transcript

Slide 1: OSDC 2007 A Humbling Language Rusty Russell

Slide 2: Time Better Spent tcmalloc ● http://goog-perftools.sourceforge.net/doc/tcmalloc.html – tdb ● – ftp://ftp.samba.org/pub/unpacked/tdb lguest ● http://lguest.ozlabs.org –

Slide 3: ABCDEFG HIJKLM NOPQRST UVWXYZ

Slide 4: BCD G LM NOP RS UVW Z

Slide 5: C LM NO S VW Z

Slide 6: C O S

Slide 7: C O S

Slide 8: C S

Slide 9: C S

Slide 10: C

Slide 11: C

Slide 12: C

Slide 13: C: A Historic Language

Slide 14: http://www.thorstenkoerner.de/uploads/thompson_ritchie.jpg

Slide 15: += register entry

Slide 16: foo.c

Slide 17: foo.c preprocessor

Slide 18: foo.c #define FOO 17 preprocessor

Slide 19: foo.c #define FOO(x) (17*(x)) preprocessor

Slide 20: foo.c #ifdef LINUX ... #else preprocessor ... #endif

Slide 21: foo.c #include "foo.h" preprocessor

Slide 22: foo.c #include "foo.h" foo.h preprocessor

Slide 23: foo.c #include "foo.h" foo.h preprocessor #include <stdio.h>

Slide 24: foo.c #include "foo.h" foo.h preprocessor #include <stdio.h> stdio.h

Slide 25: foo.c #include "foo.h" foo.h preprocessor #include <stdio.h> stdio.h # include <features.h> # include <stddef.h> # include <bits/types.h> #include <libio.h> # include <stdarg.h> #include <bits/stdio_lim.h> #include <bits/sys_errlist.h> # include <getopt.h> # include <bits/stdio.h> # include <bits/stdio2.h> # include <bits/stdio-ldbl.h>

Slide 26: foo.c preprocessor

Slide 27: foo.c preprocessor

Slide 28: foo.c preprocessor foo.i

Slide 29: foo.c preprocessor compiler

Slide 30: foo.c preprocessor compiler

Slide 31: foo.c preprocessor compiler foo.s

Slide 32: foo.c preprocessor compiler assembler

Slide 33: foo.c bar.c baz.c preprocessor compiler assembler

Slide 34: foo.c bar.c baz.c preprocessor compiler assembler linker

Slide 35: foo.c bar.c baz.c preprocessor compiler assembler linker foobarbaz

Slide 36: foo.c bar.c baz.c make preprocessor compiler assembler linker foobarbaz

Slide 37: foo.c bar.c baz.c make preprocessor compiler ccache assembler linker foobarbaz

Slide 38: foo.c bar.c baz.c make preprocessor compiler ccache distcc assembler linker foobarbaz

Slide 39: foo.c bar.c baz.c make preprocessor ccontrol compiler ccache distcc assembler linker foobarbaz

Slide 40: foo.c bar.c baz.c make gcc *.c preprocessor ccontrol compiler ccache distcc assembler linker foobarbaz

Slide 41: 1988

Slide 42: entry void const volatile enum function prototypes

Slide 43: 1999

Slide 44: inline

Slide 45: foo.c bar.c baz.c preprocessor int compiler foo(int x)... assembler linker foobarbaz

Slide 46: foo.c bar.c baz.c preprocessor int compiler foo(int x)... assembler linker foobarbaz

Slide 47: foo.c bar.c baz.c preprocessor foo.h compiler assembler linker foobarbaz

Slide 48: foo.c bar.c baz.c preprocessor foo.h inline int foo(int x)... compiler assembler linker foobarbaz

Slide 49: WTF?

Slide 50: WTF? This isn't a scripting language!

Slide 56: Images from Wikipedia

Slide 57: C

Slide 58: C C

Slide 59: C C CC

Slide 60: C ontrol

Slide 61: C ycles

Slide 62: C ore

Slide 63: C ache

Slide 64: “Sell Me a C!”

Slide 65: The Magic

Slide 66: The Magic

Slide 68: struct list_head { struct list_head *next, *prev; };

Slide 69: struct list_head { struct list_head *next, *prev; }; struct thing { struct list_head elem; ... };

Slide 70: void *kmalloc(size_t size, gfp_t flags);

Slide 71: Just a little magic?

Slide 72: long f(struct foo *a, struct foo *b) { return b – a; }

Slide 73: Magic to get closer to the machine...

Slide 74: struct elems { unsigned int num_elems; struct elem[0]; };

Slide 75: #define memcpy(t, f, n) (__builtin_constant_p(n) ? __constant_memcpy((t),(f),(n)) : __memcpy((t),(f),(n)))

Slide 76: Magic to strengthen language features...

Slide 77: DANGER! Magic to strengthen language features...

Slide 78: #define new(type) ((type *)malloc(sizeof(type))

Slide 79: #define min(x,y) ({ typeof(x) _x = (x); typeof(y) _y = (y); (void) (&_x == &_y); _x < _y ? _x : _y; })

Slide 80: _Bool

Slide 81: #include <stdbool.h>

Slide 82: #include <stdbool.h> #define bool _Bool

Slide 84: #define begin { #define end }

Slide 86: talloc(context, type)

Slide 94: valgrind

Slide 96: C