SlideShare a Scribd company logo
1 of 20
Download to read offline
カッコつけないプログラミング
光成滋生(サイボウズ・ラボ)
Cプログラマのための
の勧め
自己紹介

好きな言語
‣ C++, Xbyak(自作x86/x64用C++用JITアセンブラ)
‧ C++WG小委員会エキスパート

まあまあ使う言語
‣ Python, JavaScript, Haskell

サイボウズ・ラボで最近やってること
‣ 暗号の高速実装研究
‣ 自然言語処理(まだ始めたばかり)
普通じゃないプログラミング2010 9/21 / 202
昨今の言語

多機能,高度な概念
‣ C++0x
‧ 型推論,ラムダ式,move semanticsなどが追加される
‣ Haskell
‧ 高階関数,参照透過性,モナド,非正格評価…
普通じゃないプログラミング2010 9/21 / 203
難しい概念は理解も使用も大変

人にものを教えるには,その7倍の理解が必要
(要出典)

プログラマが難しい概念を使うと間違えやすい
‣ 簡単な概念しか使わないでプログラムを書こう!
普通じゃないプログラミング2010 9/21 / 204
例題

引数に与えられたnまでの階乗を表示する
‣ 引数がなければn = 1とする
http://e-arrows.sakura.ne.jp/2010/08/is-lisp-really-has-too-many-parenthesis.html
普通じゃないプログラミング2010 9/21 / 205
>./fac 9
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
>./fac
1! = 1
普通の回答
普通じゃないプログラミング2010 9/21 / 206

#include <stdio.h>

#include <stdlib.h>

int fac(int n)

{

 return n == 1 ? 1 : fac(n - 1) * n;

}

int main(int argc, char *argv[])

{

 int n = argc == 1 ? 1 : atoi(argv[1]);

 for (int i = 1; i <= n; i++)

 printf("%d! = %d¥n", i, fac(i));

}
普通の回答の駄目なところ(1/7)
普通じゃないプログラミング2010 9/21 / 207
関数の定義に再帰を使ってる
‣ 再帰なんて難しい

int fac(int n)

{

 return n == 1 ? 1 : fac(n - 1) * n;

}
普通の回答の駄目なところ(2/7)
普通じゃないプログラミング2010 9/21 / 208

条件演算子は分かりにくい

int fac(int n)

{

 return n == 1 ? 1 : fac(n - 1) * n;

}
普通の回答の駄目なところ(3/7)
普通じゃないプログラミング2010 9/21 / 209

ループなんて時代遅れ

for (int i = 1; i <= n; i++)

 printf("%d! = %d¥n", i, fac(i));
普通の回答の駄目なところ(4/7)
普通じゃないプログラミング2010 9/21 / 2010

ぶらさがりfor
‣ インデントが崩れてると読み間違える

for (int i = 1; i <= n; i++)

 printf("%d! = %d¥n", i, fac(i));
普通の回答の駄目なところ(5/7)
普通じゃないプログラミング2010 9/21 / 2011

副作用のあるコードなんて論外
‣ 時代は参照透過性

for (int i = 1; i <= n; i++)

 printf("%d! = %d¥n", i, fac(i));
普通の回答の駄目なところ(6/7)
普通じゃないプログラミング2010 9/21 / 2012

型安全でないprintf
‣ %dの代わりに%sを使うと落ちるかも

for (int i = 1; i <= n; i++)

 printf("%d! = %d¥n", i, fac(i));
言語による解決法

ループ
‣ foreach, xrangeなどの専用構文, リスト内包表記

ぶら下がりfor
‣ Pythonではインデントで明示化

副作用のある式
‣ Haskellでは副作用のあるコードは書けない

型安全でないprintf
‣ いくつかの言語で型推論による安全なprintf
普通じゃないプログラミング2010 9/21 / 2013

でも難しそうな概念は習得も大変そう
普通じゃないプログラミング2010 9/21 / 2014
ところで先程のblogの(本当の)目的

括弧((), [], {})の数の少なさを競う
‣ Perl, Haskell, Ruby, Pythonでは0も可能
‣ 我等がCでは...
普通じゃないプログラミング2010 9/21 / 2015
言語 Java Scheme Java
Script
Clojure Common
Lisp
Perl
括弧の数 24 20 16(6) 18 12 4(0)
普通の回答の駄目なところ(7/7)

括弧の数が22個もある!
普通じゃないプログラミング2010 9/21 / 2016

#include <stdio.h>

#include <stdlib.h>
int fac(int n) {

 return n == 1 ? 1 : fac(n - 1) * n;

}
int main(int argc, char *argv[]) {

 int n = argc == 1 ? 1 : atoi(argv[1]);

 for (int i = 1; i <= n; i++)

 printf("%d! = %d¥n", i, fac(i));

}
やさしいCプログラムを書こう

そのためには
‣ 副作用のあるコードを書かない
‣ ループなんて書かない
‣ 再帰はもちろんしない
‣ printfも使わない
‣ 条件演算子も使わない

加えて
‣ 括弧も使わない
普通じゃないプログラミング2010 9/21 / 2017
カッコつけないプログラム
/ 2018

#include <stdio.h>

#include <stdlib.h>

a = atoi;

b = printf;

c = 0x20216425;

d = 0x7525203d;

e = 0x0000000a;

main = 0x55535756;

f = 0x000000e8;

g = 0x6c8b5e00;

h = 0xfd831424;

i = 0x8b127401;

j = 0x8b18246c;
普通じゃないプログラミング2010 9/21

k = 0x8b55046d;

l = 0xd5ffe36e;

m = 0x8904c483;

n = 0x0cec83c5;

o = 0x89eb468d;

p = 0x768b2404;

q = 0x43db31e7;

r = 0xaf0fdf89;

s = 0x245c89fb;

t = 0x247c8904;

u = 0x43d6ff08;

v = 0xee76eb39;

w = 0x5d0cc483;

x = 0xc35e5f5b;
解説

#include <stdio.h>

#include <stdlib.h>

a = atoi; b = printf;

c = 0x20216425; d = 0x7525203d;

e = 0x0000000a; main = 0x55535756;

f = 0x000000e8; g = 0x6c8b5e00;

h = 0xfd831424; i = 0x8b127401;

j = 0x8b18246c; k = 0x8b55046d;

l = 0xd5ffe36e; m = 0x8904c483;

n = 0x0cec83c5; o = 0x89eb468d;

p = 0x768b2404; q = 0x43db31e7;

r = 0xaf0fdf89; s = 0x245c89fb;

t = 0x247c8904; u = 0x43d6ff08;

v = 0xee76eb39; w = 0x5d0cc483;

x = 0xc35e5f5b;
普通じゃないプログラミング2010 9/21 / 2019
‣ 型名が無い
‣ 変数の宣言のみ
‣ 副作用が無い
‣ ループが無い
‣ 条件演算子もifも無い
‣ もちろん再帰も無い
‣ というか関数が無い
とても易しい
デモ

x86(32bit)のWindows, Linux, Mac上で動作
‣ Visual Studioなら>cl fac.c
‧ OSによってはDEPをoffにする必要あり
‣ gccなら>gcc fac.c -m32 –z execstack
‣ 古いMac OSだと何もしなくても動く
‧ 新しいMacは?
普通じゃないプログラミング2010 9/21 / 2020

More Related Content

What's hot

Anaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモAnaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
ayohe
 

What's hot (20)

不揮発メモリ(NVDIMM)とLinuxの対応動向について
不揮発メモリ(NVDIMM)とLinuxの対応動向について不揮発メモリ(NVDIMM)とLinuxの対応動向について
不揮発メモリ(NVDIMM)とLinuxの対応動向について
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
CuPy解説
CuPy解説CuPy解説
CuPy解説
 
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
 
【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017札幌】乱数完全マスター 【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017札幌】乱数完全マスター
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
 
CXL_説明_公開用.pdf
CXL_説明_公開用.pdfCXL_説明_公開用.pdf
CXL_説明_公開用.pdf
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門
 
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモAnaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
 
基礎から学ぶ組み込みAndroid
基礎から学ぶ組み込みAndroid基礎から学ぶ組み込みAndroid
基礎から学ぶ組み込みAndroid
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
 
Gpu vs fpga
Gpu vs fpgaGpu vs fpga
Gpu vs fpga
 
バグハンターの哀しみ
バグハンターの哀しみバグハンターの哀しみ
バグハンターの哀しみ
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
 
Assembly Definition あれやこれ
Assembly Definition あれやこれAssembly Definition あれやこれ
Assembly Definition あれやこれ
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
 
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
 
Tensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャTensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャ
 

Viewers also liked

『データ解析におけるプライバシー保護』勉強会 #2
『データ解析におけるプライバシー保護』勉強会 #2『データ解析におけるプライバシー保護』勉強会 #2
『データ解析におけるプライバシー保護』勉強会 #2
MITSUNARI Shigeo
 
『データ解析におけるプライバシー保護』勉強会
『データ解析におけるプライバシー保護』勉強会『データ解析におけるプライバシー保護』勉強会
『データ解析におけるプライバシー保護』勉強会
MITSUNARI Shigeo
 
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
崇之 清水
 
Backdoors with the MS Office file encryption master key and a proposal for a ...
Backdoors with the MS Office file encryption master key and a proposal for a ...Backdoors with the MS Office file encryption master key and a proposal for a ...
Backdoors with the MS Office file encryption master key and a proposal for a ...
MITSUNARI Shigeo
 

Viewers also liked (20)

GoogleのSHA-1のはなし
GoogleのSHA-1のはなしGoogleのSHA-1のはなし
GoogleのSHA-1のはなし
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
 
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
 
Cybozu Tech Conference 2016 バグの調べ方
Cybozu Tech Conference 2016 バグの調べ方Cybozu Tech Conference 2016 バグの調べ方
Cybozu Tech Conference 2016 バグの調べ方
 
From IA-32 to avx-512
From IA-32 to avx-512From IA-32 to avx-512
From IA-32 to avx-512
 
『データ解析におけるプライバシー保護』勉強会 #2
『データ解析におけるプライバシー保護』勉強会 #2『データ解析におけるプライバシー保護』勉強会 #2
『データ解析におけるプライバシー保護』勉強会 #2
 
『データ解析におけるプライバシー保護』勉強会
『データ解析におけるプライバシー保護』勉強会『データ解析におけるプライバシー保護』勉強会
『データ解析におけるプライバシー保護』勉強会
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
 
Uncertainty Awareness in Integrating Machine Learning and Game Theory
Uncertainty Awareness in Integrating Machine Learning and Game TheoryUncertainty Awareness in Integrating Machine Learning and Game Theory
Uncertainty Awareness in Integrating Machine Learning and Game Theory
 
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
 
インフラ野郎AzureチームOCP Summit US 2017号外
インフラ野郎AzureチームOCP Summit US 2017号外インフラ野郎AzureチームOCP Summit US 2017号外
インフラ野郎AzureチームOCP Summit US 2017号外
 
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
 
スマホマーケットの概要と、 マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
スマホマーケットの概要と、 マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
 
Memory sanitizer
Memory sanitizerMemory sanitizer
Memory sanitizer
 
Slide dist
Slide distSlide dist
Slide dist
 
改ざん検知暗号Minalpherの設計とIvy Bridge/Haswellでの最適化
改ざん検知暗号Minalpherの設計とIvy Bridge/Haswellでの最適化改ざん検知暗号Minalpherの設計とIvy Bridge/Haswellでの最適化
改ざん検知暗号Minalpherの設計とIvy Bridge/Haswellでの最適化
 
Backdoors with the MS Office file encryption master key and a proposal for a ...
Backdoors with the MS Office file encryption master key and a proposal for a ...Backdoors with the MS Office file encryption master key and a proposal for a ...
Backdoors with the MS Office file encryption master key and a proposal for a ...
 
バックドア耐性のあるパスワード暗号化の提案
バックドア耐性のあるパスワード暗号化の提案バックドア耐性のあるパスワード暗号化の提案
バックドア耐性のあるパスワード暗号化の提案
 
Emcjp item33,34
Emcjp item33,34Emcjp item33,34
Emcjp item33,34
 
emcjp Item 42
emcjp Item 42emcjp Item 42
emcjp Item 42
 

Similar to Cプログラマのためのカッコつけないプログラミングの勧め

関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
 
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
Atsushi Tadokoro
 
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk
mitamex4u
 

Similar to Cプログラマのためのカッコつけないプログラミングの勧め (20)

20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)
 
第2回勉強会スライド
第2回勉強会スライド第2回勉強会スライド
第2回勉強会スライド
 
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
 
20130819 jjugnslt
20130819 jjugnslt20130819 jjugnslt
20130819 jjugnslt
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in Dart
 
Tokyo.R 白熱教室「これからのRcppの話をしよう」
Tokyo.R 白熱教室「これからのRcppの話をしよう」Tokyo.R 白熱教室「これからのRcppの話をしよう」
Tokyo.R 白熱教室「これからのRcppの話をしよう」
 
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたWASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
 
Shinyユーザのための非同期プログラミング入門
Shinyユーザのための非同期プログラミング入門Shinyユーザのための非同期プログラミング入門
Shinyユーザのための非同期プログラミング入門
 
No More Noprototype Function
No More Noprototype FunctionNo More Noprototype Function
No More Noprototype Function
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
 
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011 Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011
 
C#のコード解析ってなんだ@20160825 CenterCLR.学生 #1
C#のコード解析ってなんだ@20160825 CenterCLR.学生 #1C#のコード解析ってなんだ@20160825 CenterCLR.学生 #1
C#のコード解析ってなんだ@20160825 CenterCLR.学生 #1
 
20130316 プログラミング言語Go
20130316 プログラミング言語Go20130316 プログラミング言語Go
20130316 プログラミング言語Go
 
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
 
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
 
Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code reading
 
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk
 
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
 

More from MITSUNARI Shigeo

Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
MITSUNARI Shigeo
 

More from MITSUNARI Shigeo (20)

暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル
 
暗認本読書会13 advanced
暗認本読書会13 advanced暗認本読書会13 advanced
暗認本読書会13 advanced
 
暗認本読書会12
暗認本読書会12暗認本読書会12
暗認本読書会12
 
暗認本読書会11
暗認本読書会11暗認本読書会11
暗認本読書会11
 
暗認本読書会10
暗認本読書会10暗認本読書会10
暗認本読書会10
 
暗認本読書会9
暗認本読書会9暗認本読書会9
暗認本読書会9
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
 
暗認本読書会8
暗認本読書会8暗認本読書会8
暗認本読書会8
 
暗認本読書会7
暗認本読書会7暗認本読書会7
暗認本読書会7
 
暗認本読書会6
暗認本読書会6暗認本読書会6
暗認本読書会6
 
暗認本読書会5
暗認本読書会5暗認本読書会5
暗認本読書会5
 
暗認本読書会4
暗認本読書会4暗認本読書会4
暗認本読書会4
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
 
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
 
楕円曲線と暗号
楕円曲線と暗号楕円曲線と暗号
楕円曲線と暗号
 
HPC Phys-20201203
HPC Phys-20201203HPC Phys-20201203
HPC Phys-20201203
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用
 

Cプログラマのためのカッコつけないプログラミングの勧め