SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
『ストラウストラップのプログラミング入門』
   で語られなかったいくつかのこと
       Programming

                     高橋 晶(Akira Takahashi)
                        id:faith_and_brave
                                @cpp_akira

          わんくま東京勉強会 2011/08/27(土)
動機
C++の始祖Bjarne Stroustrupによる名著『Programming』。
この本では「プログラミングとは何か」というところから始まり、幅
広い話題について広く掘り下げて解説されている。

この発表では、『Programming』で扱われなかったいくつかの重
要なプログラミングの分野について解説していきます。
お題
•   並列処理
•   ネットワーク
•   コンピュータビジョン
•   メタプログラミング
Chapter 1
            並列処理
       Parallel Processing
タダ飯の時間はとっくに終わってる

• 昔々、そんなに昔ではないけれど、
  遅いプログラムを組んでも、ムーアの法則によってコン
  ピュータが速くなるのを待っていればいい時代がありました。

• ムーアの法則に限界が見えて、コンピュータが単純には速く
  ならなくなった時代が到来したとき
    「The Free Lunch is Over(タダ飯の時間は終わりだ)」
  という宣言がなされ、並列プログラミングの時代がやってきま
  した。
並行と並列

シングルスレッドで動かすプログラムは単純にはこれ以上速く
ならない。そこでとられた2つのアプローチ:

• スレッドやプロセスによる擬似的な複数同時処理
• 複数CPUによる完全な複数同時処理

前者を並行コンピューティング(Concurrent Computing)
後者を並列コンピューティング(Parallel Computing)
と呼び、両方合わせて並列コンピューティングと呼ぶ場合もある。
(並行は、実行環境によって並列になり得る。)
並行と並列 – 並行コンピューティング

スレッド/プロセスによる並行コンピューティングは、1つのCPUで
複数の処理を同時に行う。
1つのCPUの性能を分割して複数の操作を行うため、それぞれ
の処理性能は低下する。
 // 関数fと関数gを同時に動かす
 thread t1(f);
 thread t2(g);

 …

 // 終わるまで待つ
 t1.join();
 t2.join();
並行と並列 - 並列コンピューティング

並列コンピューティングは、複数CPUによって同時に複数処理を
行う。これはCPUのコア数 (などのハードウェア並行性)分だけ真
に同時に動かすことができる。

 // CPUの個数分、コンテナvの各要素に対して
 // 関数fを同時に適用していく
 parallel_for_each(v, f);
並列プログラミングの難しさ
•   並列プログラミングでは、複数のタスクから同じ変数にアクセスする場合
    に問題が起こる。
    これは原因の追いにくいバグを生み出しやすい。
    (ミューテックスと呼ばれる仕組みによって、同時に1人しかアクセスできな
    いようロックすることができるが、デッドロックや管理の複雑化などで問題
    が起き得る)
•   独立したタスクになるよう強く意識して設計する必要がある。

    static int x = 0;

    void f() { … x = 1; }
    void g() { … x = 2; }

    thread t1(f);
    thread t2(g);

    // xの値はどうなるだろう?
並列プログラミングの抽象化

並列プログラミングの難しさに対処するため、大きく2つの抽象
化モデルが登場した。

•アクターモデル
メッセージパッシングによって並行プログラミングの安全地帯を
提供する。

•STM(Software Transactional Memory)
トランザクションによって競合を検知する。

これらは、現代の多くの言語で標準、もしくはサードパーティライ
ブラリによって提供され始めている。
関数型プログラミング

並列プログラミングが難しいのは、「状態が変更されるから」である。
あちこちでデータを書き換えたりせず、状態の変更を最小限にすれば、
並列プログラミングの難しさはかなり緩和される。

近年、関数型プログラミング(Functional Programming)というパラダイ
ムがようやく脚光を浴び始めた。
純粋な関数型プログラミングは、「関数は同じ引数を与えたら必ず同
じ値を返す」というポリシーの元、データの不変性を基礎としたプログ
ラミング手法である。

C#, C++0x, Scalaのような近年のプログラミング言語では、関数型プロ
グラミングの特徴を多く取り入れ始め、状態の変更を最小限にできる
ような言語機能やライブラリを提供し始めている。
他の並列プログラミングのアプローチ

• Lock-free
  ミューテックスによる共有変数のロックは重いため、Compare and
  Swap(CAS)と呼ばれる軽量の競合チェック + 破壊的操作を行う
  Lock-freeという手法が浸透してきている。
  (抽象の中に隠すのが一般的)

• GPGPU(General-purpose computing on GPU)
  近年のGPUは1,000を超える大量のコアを持っているため、同時処
  理に向いている。GPGPUは、GPUの能力をGPU本来の計算以外の
  用途に応用する技術である。

• 分散処理
  もはや一つのマシンだけでは処理しきれない巨大データや計算を
  扱うために、複数のサーバーに処理を分散させる手法である。
Chapter 2
    ネットワークプログラミング
    Network Programming
ネットワークプログラミング

• PCやモバイル端末がインターネットに接続できることが前提
  となる現代において、ネットワークプログラミングは欠かすこ
  とのできないものとなった。
• もはやスタンドアロンで目的を達成できるアプリケーションの
  分野はかなり限られる。
ネットワークプログラミングとは何か

• ネットワークプログラミングとは、ネットワークを介して相手と
  データのやりとりを行うプログラミングのことである。

• サーバーに要求を行い結果を得るクライアント、
  クライアントからの要求を受け結果を渡すサーバー、
  というクライアントサーバーモデルが一般的である。
ネットワークプログラミングの領域は拡大している
ネットワークプログラミングが当たり前となってきた現代において、そ
の用途もまた多岐にわたるようになった。

•Peer to Peer(P2P)
お互いがクライアントにもサーバーにもなり得る対等な関係の通信モ
デル。モバイル端末同士の通信で対戦ゲームなどで使用されている。

•巨大データの分散処理
ひとつのPCでは処理しきれないほど巨大なデータを複数のサーバー
を使って処理する手法。ネットワークを介して他のサーバーに処理を
依頼する。ログの統計や科学計算などで使用されている。

•ユーザー操作の統計
「ユーザーがどんな行動をとり、どれくらいの時間でプレイを中断し、
二度と復帰しなくなったか」 といった情報は、ソフトウェア開発者に
とって重要な情報となり得る。ソーシャルゲームの分野では、ユー
ザーのあらゆる操作を集計し、次回作のために役立てている。
C++におけるネットワークプログラミング

• C++では、ネットワークプログラミングの方法として、Boost Asio
  Libraryを利用する方法がある。これは、非同期処理全般を扱うラ
  イブラリで、次期標準*の候補としても挙がっている。

  asio::io_service io_service;
  tcp::socket socket(io_service);

  …
  // 非同期にデータを送信する
  std::string request = “Hello”;
  async_write(socket, buffer(request), on_send);

  …
  // 送信終了時にこの関数が呼ばれる
  void on_send(const error_code& error)
  {
      if (!error)
          std::cout << “正常終了” << std::endl;
  }                                                * C++0xの後
通信で使用されるデータ形式

通信で使用される主なデータ形式は以下:

•XML
   HTMLライクな、タグで囲んで値を記述する形式
•JSON
   名前と値の組でデータを表現し、短い表記で型を表現できるデータ形式
•MessagePack
   言語間通信を意図した汎用バイナリ形式。データは現在のところ
   最も小さくなる。


ライブラリを使用して、ユーザー定義型をこれらのデータ形式に
シリアライズして通信で送受信するのが一般的である。
Chapter 3
       コンピュータビジョン
        Computer Vision
コンピュータビジョンとは

• 画像処理、画像認識といった、画像に対する操作、カメラか
  ら得られた情報を解析する操作などの分野がコンピュータビ
  ジョンと呼ばれている。

• この分野は古くから研究/利用されてきてはいるが、コン
  ピュータの速度がネックになっていたため日の目を見なかっ
  た。処理速度が向上したことで複雑な処理でもようやく現実
  的に使えるようになってきた。
画像処理

• 画像に対する処理は、様々な分野において利用されている。
  簡単なところで言うと、画像の各ピクセルのRGB値に対して、
  ある値を掛けるとグレースケールになる:
        Y (輝度) = r * 0.229 + g * 0.587 + b * 0.114;
        r = Y;
        g = Y;
        b = Y;
画像認識

• 画像認識は、画像データや映像データから特定のパターン
  を認識して情報を抽出する技術である。
  物体検出や、人の顔認識、指紋認識やOCRなどが画像認識
  に当たる。
コンピュータビジョンはどこで使われるか

• 画像処理自体は、ゲームや、一般的なソフトウェアでも使われてい
  るが、近年は画像認識がより身近になってきた。

• 拡張現実(AR : Augmented Reality)と呼ばれる、現実の映像と仮想
  的な物体を合成してユーザーに提示する技術が注目されてきてい
  る。

• また、Kinectというデバイスによって、高機能なセンサによる画像
  認識が低価格で可能となったため、一般ユーザーが画像認識とい
  う技術に触れる機会が多くなってきた。

一般のソフトウェア開発者にもコンピュータビジョンを扱う技術・知識
 が求められるようになってきている。
OpenCV

• コンピュータビジョンでは、OpenCVというオープンソースのラ
  イブラリが広く使われており、C++にも対応している。

• このライブラリは、コンピュータビジョンの専門的な技術を抽
  象化し、クラス・関数として提供しているため、専門知識がそ
  れほどなくても使用することができる。

• 最近では、OpenMPによる並列処理や、CUDAによるGPGPU
  への対応なども行われている。
Chapter 4
        メタプログラミング
        Metaprogramming
メタプログラミング

メタプログラミングとは、プログラムに関するプログラムである。

• コードの自動生成を行うもの
  (e.g. Cプリプロセッサ、Template Haskell)
• 構文木を操作するもの
  (e.g. Lispマクロ、Template Haskell)
• 型の操作を行うもの
  (e.g. C++テンプレート、Haskellのfundepsとtype families)
• EDSL(Embedded Domain Specific Language)の作成
  (e.g. 演算子オーバーロード、関数の中置記法)

などがある。
コード生成系メタプログラミング

• 言語の通常の構文では抽象化しきれないコードを自動生成
  するためにメタプログラミングが使われることがある。
  C++03における型安全な可変引数を生成するために使われ
  たりする。

• MicrosoftのT4 Templateも、広義においてはコード生成系メタ
  プログラミングの一種ととることができる。

• コピー&ペーストがどうしても必要になってしまう場面で、コー
  ド生成を自動化すれば1箇所直せば全て直る、という利点が
  あり、メンテナンスが容易である。
構文木操作系メタプログラミング

• 構文木操作系メタプログラミングは、言語に対してユーザー
  が独自の構文を追加したり、任意のコンパイル時エラー、警
  告を発生させたりするのに使用することができる。

• 言語機能としては、Lispマクロ、GroovyのAST変換、D言語に
  搭載予定のマクロあたりが代表例である。

• また、近年ではコンパイラプラグインという形で、コンパイラ
  が持っている構文木等のメタ情報を抽出し、操作できる機能
  を提供しているところも出てきた(例: GCC, Clang, Scala)。
  これは、IDEの作成に使えるのはもちろんのこと、絶対コー
  ディング標準なども作り出すことができる。
型操作系メタプログラミング

• 型操作系メタプログラミングは、型や、型の要件を集めたコン
  セプトごとに最適な実装を選択させる、最適化やアダプトの
  機構として使われることが多い。

• ユーザー定義型はコンパイラの最適化が届かない領域であ
  るため、こういったことが必要になる。
  「抽象化にはコストがともなう」と言われる問題へのアプロー
  チ。

• コンパイル時に戦略を切り替えるPolicy-based Designは、抽
  象化された実装をひとつだけ用意するのではなく、あらゆる
  要求に応えるために用途別の最適な実装を切り替えるのに
  使用される。
EDSL(Embedded Domain Specific Language)の作成

• データベース操作や構文解析といった特定のドメインのため
  の構文がほしくなることがある。
  そういった場合に、演算子などに新たな意味を持たせて言語
  内言語を作ることで有用となり得る。

• 例:
  –   EBNFライクな構文解析をC++上で行うBoost.Spirit
  –   C++03でラムダ式を表現するBoost.Lambda
  –   Erlangライクな構文でアクターモデルを表現するScalaのActor
  –   Scalaでデータベース操作のためのRogue
まとめ


• プログラミングの分野は広い。

• 自分がどの分野に興味があるのか確かめるためにも、いろ
  んな情報を常に仕入れ、飛び込んでいこう。

Contenu connexe

Tendances

PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装Hirokatsu Kataoka
 
ニューラルネットワークの数理
ニューラルネットワークの数理ニューラルネットワークの数理
ニューラルネットワークの数理Task Ohmori
 
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用)
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細(様々なメモリの利用)2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細(様々なメモリの利用)
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用) 智啓 出川
 
TensorFlowとCNTK
TensorFlowとCNTKTensorFlowとCNTK
TensorFlowとCNTKmaruyama097
 
深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術孝昌 田中
 
コンピュータビジョン 1章
コンピュータビジョン 1章コンピュータビジョン 1章
コンピュータビジョン 1章motimune
 
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミングNorishige Fukushima
 
2015年度GPGPU実践プログラミング 第11回 画像処理
2015年度GPGPU実践プログラミング 第11回 画像処理2015年度GPGPU実践プログラミング 第11回 画像処理
2015年度GPGPU実践プログラミング 第11回 画像処理智啓 出川
 
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術智啓 出川
 
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化marsee101
 
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例智啓 出川
 
2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)
2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)
2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)智啓 出川
 
LSTM (Long short-term memory) 概要
LSTM (Long short-term memory) 概要LSTM (Long short-term memory) 概要
LSTM (Long short-term memory) 概要Kenji Urai
 
cvsaisentan20141004 kanezaki
cvsaisentan20141004 kanezakicvsaisentan20141004 kanezaki
cvsaisentan20141004 kanezakikanejaki
 
【DL輪読会】Perceiver io a general architecture for structured inputs &amp; outputs
【DL輪読会】Perceiver io  a general architecture for structured inputs &amp; outputs 【DL輪読会】Perceiver io  a general architecture for structured inputs &amp; outputs
【DL輪読会】Perceiver io a general architecture for structured inputs &amp; outputs Deep Learning JP
 
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ智啓 出川
 
はじめての人のためのDeep Learning
はじめての人のためのDeep Learningはじめての人のためのDeep Learning
はじめての人のためのDeep LearningTadaichiro Nakano
 
2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)
2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)
2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)智啓 出川
 
2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割
2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割
2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割智啓 出川
 

Tendances (20)

PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装
 
ニューラルネットワークの数理
ニューラルネットワークの数理ニューラルネットワークの数理
ニューラルネットワークの数理
 
画像処理の高性能計算
画像処理の高性能計算画像処理の高性能計算
画像処理の高性能計算
 
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用)
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細(様々なメモリの利用)2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細(様々なメモリの利用)
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用)
 
TensorFlowとCNTK
TensorFlowとCNTKTensorFlowとCNTK
TensorFlowとCNTK
 
深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術
 
コンピュータビジョン 1章
コンピュータビジョン 1章コンピュータビジョン 1章
コンピュータビジョン 1章
 
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング
 
2015年度GPGPU実践プログラミング 第11回 画像処理
2015年度GPGPU実践プログラミング 第11回 画像処理2015年度GPGPU実践プログラミング 第11回 画像処理
2015年度GPGPU実践プログラミング 第11回 画像処理
 
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
 
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
 
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
 
2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)
2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)
2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)
 
LSTM (Long short-term memory) 概要
LSTM (Long short-term memory) 概要LSTM (Long short-term memory) 概要
LSTM (Long short-term memory) 概要
 
cvsaisentan20141004 kanezaki
cvsaisentan20141004 kanezakicvsaisentan20141004 kanezaki
cvsaisentan20141004 kanezaki
 
【DL輪読会】Perceiver io a general architecture for structured inputs &amp; outputs
【DL輪読会】Perceiver io  a general architecture for structured inputs &amp; outputs 【DL輪読会】Perceiver io  a general architecture for structured inputs &amp; outputs
【DL輪読会】Perceiver io a general architecture for structured inputs &amp; outputs
 
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
 
はじめての人のためのDeep Learning
はじめての人のためのDeep Learningはじめての人のためのDeep Learning
はじめての人のためのDeep Learning
 
2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)
2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)
2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)
 
2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割
2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割
2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割
 

Similaire à Bjarne dont speaking

2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会Kimikazu Kato
 
20160728 hyperscale #03
20160728 hyperscale #0320160728 hyperscale #03
20160728 hyperscale #03ManaMurakami1
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門Daiyu Hatakeyama
 
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGA
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGAAn Introduction of DNN Compression Technology and Hardware Acceleration on FPGA
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGALeapMind Inc
 
なにわテック20180127
なにわテック20180127なにわテック20180127
なにわテック20180127Natsutani Minoru
 
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装Yuto Takei
 
機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編Daiyu Hatakeyama
 
Rustで3D graphics programming
Rustで3D graphics programmingRustで3D graphics programming
Rustで3D graphics programmingKiyotomoHiroyasu
 
kagami_comput2016_14
kagami_comput2016_14kagami_comput2016_14
kagami_comput2016_14swkagami
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表Hirotaka Kawata
 
【2017年】ディープラーニングのフレームワーク比較
【2017年】ディープラーニングのフレームワーク比較【2017年】ディープラーニングのフレームワーク比較
【2017年】ディープラーニングのフレームワーク比較Ryota Suzuki
 
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)Yaboo Oyabu
 
これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島なおき きしだ
 
Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門Tatsuya Tojima
 
kagamicomput201714
kagamicomput201714kagamicomput201714
kagamicomput201714swkagami
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性Hibiki Yamashiro
 
20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdf20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdfKazuaki Ishizaki
 
会議室を現場にする! リアルタイム共同編集によるプロトタイピング
会議室を現場にする! リアルタイム共同編集によるプロトタイピング会議室を現場にする! リアルタイム共同編集によるプロトタイピング
会議室を現場にする! リアルタイム共同編集によるプロトタイピングMasaru Nagaku
 

Similaire à Bjarne dont speaking (20)

2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会
 
20160728 hyperscale #03
20160728 hyperscale #0320160728 hyperscale #03
20160728 hyperscale #03
 
Runtime c++editing
Runtime c++editingRuntime c++editing
Runtime c++editing
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
 
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGA
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGAAn Introduction of DNN Compression Technology and Hardware Acceleration on FPGA
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGA
 
なにわテック20180127
なにわテック20180127なにわテック20180127
なにわテック20180127
 
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
 
機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編
 
Rustで3D graphics programming
Rustで3D graphics programmingRustで3D graphics programming
Rustで3D graphics programming
 
kagami_comput2016_14
kagami_comput2016_14kagami_comput2016_14
kagami_comput2016_14
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表
 
Math works gdlc2019
Math works gdlc2019Math works gdlc2019
Math works gdlc2019
 
【2017年】ディープラーニングのフレームワーク比較
【2017年】ディープラーニングのフレームワーク比較【2017年】ディープラーニングのフレームワーク比較
【2017年】ディープラーニングのフレームワーク比較
 
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
 
これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島
 
Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門
 
kagamicomput201714
kagamicomput201714kagamicomput201714
kagamicomput201714
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdf20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdf
 
会議室を現場にする! リアルタイム共同編集によるプロトタイピング
会議室を現場にする! リアルタイム共同編集によるプロトタイピング会議室を現場にする! リアルタイム共同編集によるプロトタイピング
会議室を現場にする! リアルタイム共同編集によるプロトタイピング
 

Plus de Akira Takahashi (20)

Cpp20 overview language features
Cpp20 overview language featuresCpp20 overview language features
Cpp20 overview language features
 
Cppmix 02
Cppmix 02Cppmix 02
Cppmix 02
 
Cppmix 01
Cppmix 01Cppmix 01
Cppmix 01
 
Modern C++ Learning
Modern C++ LearningModern C++ Learning
Modern C++ Learning
 
cpprefjp documentation
cpprefjp documentationcpprefjp documentation
cpprefjp documentation
 
C++1z draft
C++1z draftC++1z draft
C++1z draft
 
Boost tour 1_61_0 merge
Boost tour 1_61_0 mergeBoost tour 1_61_0 merge
Boost tour 1_61_0 merge
 
Boost tour 1_61_0
Boost tour 1_61_0Boost tour 1_61_0
Boost tour 1_61_0
 
error handling using expected
error handling using expectederror handling using expected
error handling using expected
 
Boost tour 1.60.0 merge
Boost tour 1.60.0 mergeBoost tour 1.60.0 merge
Boost tour 1.60.0 merge
 
Boost tour 1.60.0
Boost tour 1.60.0Boost tour 1.60.0
Boost tour 1.60.0
 
Boost container feature
Boost container featureBoost container feature
Boost container feature
 
Boost Tour 1_58_0 merge
Boost Tour 1_58_0 mergeBoost Tour 1_58_0 merge
Boost Tour 1_58_0 merge
 
Boost Tour 1_58_0
Boost Tour 1_58_0Boost Tour 1_58_0
Boost Tour 1_58_0
 
C++14 solve explicit_default_constructor
C++14 solve explicit_default_constructorC++14 solve explicit_default_constructor
C++14 solve explicit_default_constructor
 
C++14 enum hash
C++14 enum hashC++14 enum hash
C++14 enum hash
 
Multi paradigm design
Multi paradigm designMulti paradigm design
Multi paradigm design
 
Start Concurrent
Start ConcurrentStart Concurrent
Start Concurrent
 
Programmer mind
Programmer mindProgrammer mind
Programmer mind
 
Boost.Study 14 Opening
Boost.Study 14 OpeningBoost.Study 14 Opening
Boost.Study 14 Opening
 

Bjarne dont speaking