D vs OWKN Language at LLnagoya

45
D言語 vs C pLus pLus 2011/11/5 LL名古屋 #llnagoya

description

Nagoya Kowai!

Transcript of D vs OWKN Language at LLnagoya

Page 1: D vs OWKN Language at LLnagoya

D言語 vs C pLus pLus2011/11/5

LL名古屋 #llnagoya

Page 2: D vs OWKN Language at LLnagoya

お前誰よ• @repeatedlly

• Come from Tokyo!

• I can write D Programming Language

• カンスウガタゲンゴガスキデス

• Please give me native F# compiler!

• Twitter monitored by Ganglia

Page 3: D vs OWKN Language at LLnagoya

history

Page 4: D vs OWKN Language at LLnagoya

普通

http://www35.atwiki.jp/futsuu/pages/1.html

Page 5: D vs OWKN Language at LLnagoya

http://jubat.us/

Page 6: D vs OWKN Language at LLnagoya

Fluent

http://atnd.org/events/21711

Page 7: D vs OWKN Language at LLnagoya

D言語 vs C++

Page 8: D vs OWKN Language at LLnagoya

vsにすらならない…

Page 9: D vs OWKN Language at LLnagoya
Page 10: D vs OWKN Language at LLnagoya

買って下さい

Page 11: D vs OWKN Language at LLnagoya

Red BuLL

Page 12: D vs OWKN Language at LLnagoya

One more thing...

Page 13: D vs OWKN Language at LLnagoya

D is LL

Page 14: D vs OWKN Language at LLnagoya

rdmd --eval='writeln("hoge");'

Page 15: D vs OWKN Language at LLnagoya

dmd 2.056!

Page 16: D vs OWKN Language at LLnagoya

Broken trunk in Mac!

Page 17: D vs OWKN Language at LLnagoya

GDC into GCC!

Page 18: D vs OWKN Language at LLnagoya

strong point!

Page 19: D vs OWKN Language at LLnagoya

short name :)

Page 20: D vs OWKN Language at LLnagoya

semi-colonless

Page 21: D vs OWKN Language at LLnagoya

struct RedBull{ int countPerDay = 2;} // ← Cool!

Page 22: D vs OWKN Language at LLnagoya

Goodbye arrow!

Page 23: D vs OWKN Language at LLnagoya

void f(Foo* foo){ foo.func(0);}

Page 24: D vs OWKN Language at LLnagoya

すいろん!

C++ 11const auto num = foo.func();

Page 25: D vs OWKN Language at LLnagoya

too long...

Page 26: D vs OWKN Language at LLnagoya

すいろん!

Dconst num = foo.func();

Page 27: D vs OWKN Language at LLnagoya

Many signatures!

@safe @property pure nothrowintout(int)[] func(inout(int)[] arg) const;

Page 28: D vs OWKN Language at LLnagoya

すいろん!

{}

void delegate() pure nothrow @safe

Page 29: D vs OWKN Language at LLnagoya

すいろん!MinType!(T1, T2, T) min(T1, T2, T...)(T1 a, T2 b, T xs)

@safe int f(int a, int b) pure nothrow{ return min(a, b);}

pure nothrow @safe int(int a, int b, () xs)

Page 30: D vs OWKN Language at LLnagoya

*

int[] foo(int[] a, int x) {}

const(int)[] foo(const(int)[] a, int x) {}

immutable(int)[] foo(immutable(int)[] a, int x) {}

inout(int)[] foo(inout(int)[] a, int x) {}

Page 31: D vs OWKN Language at LLnagoya

CTFE

array

associative array

struct

if

for

foreach

new(without class)

function template

regex

Page 32: D vs OWKN Language at LLnagoya

普通に書く

Page 33: D vs OWKN Language at LLnagoya

疑似乱数ulong gen(){ Random r; popFrontN(r, 1000); return r.front;}

Page 34: D vs OWKN Language at LLnagoya

正規表現 (仮)

string hogeMatch(string line){ enum re = ctRegex(“hoge”); const matched = match(line, re); return matched.hit;}

Page 35: D vs OWKN Language at LLnagoya

try - catch - finally!static assert({ int n; try { n = 2; } catch (Exception e) {} finally { n = 3; }}());

Page 36: D vs OWKN Language at LLnagoya

Class in CTFE

https://github.com/donc/dmd/tree/ctfeclass

We will use CT Exception :)

Page 37: D vs OWKN Language at LLnagoya

僕と契約して(ry

Boost.Contractとか(ry

class C{ invariant() {} int func(int a) in { assert(a > 10); }

out(r) { assert(r > a * 2); } body { /* */ }}

Page 38: D vs OWKN Language at LLnagoya

Orbit Package Manager

https://github.com/jacob-carlborg/orbit

Page 39: D vs OWKN Language at LLnagoya

Orbit Spec example

name "orbit"summary "Orbit is a package manager"version "0.0.1"files Dir["**/*.{d,rb,conf}"]executables %w[orb]bindir "bin"build "dsss"

Ruby like :)

Page 40: D vs OWKN Language at LLnagoya

No, it’s Ruby!

Page 41: D vs OWKN Language at LLnagoya

Walter is weak in D

Page 42: D vs OWKN Language at LLnagoya

Wishlist

• Compiler as a Library

• Thread Local GC

• Truly IO module

• STM

• Light-weight Thread (me!)

• Concurrent Revisions (me!)

Page 43: D vs OWKN Language at LLnagoya

HaskeLL

Page 44: D vs OWKN Language at LLnagoya

買って下さい

Page 45: D vs OWKN Language at LLnagoya

Nagoya kowai!