SlideShare a Scribd company logo
1 of 6
線形型のある言語で 
LEDを光らせる 
低レイヤーソフトウェア開発の未来 
2014年12月6日NGK2014B 小笠原(@OSI IRE)
関数プログラミングはこの10年で本当 
に普及しました。 
Scalaは多くの会社で採用され実績ができた。 
Haskellといえば大半のプログラマが名前は聞いたことがある。 
TIOBEではF#が16位! 
Java8にはついにラムダ式が導入された。 
低レイヤーの開発にも 
関数プログラミングの力を!
低レイヤーに関数プログラミングを 
導入する際にぶつかる問題点 
【欲しい機能】【環境からの制約】 
関数プログラミングは高階関数や無名 
関数を上手に応用する。 
 レキシカルクロージャーは欲しい。 
 静的でリッチな型システムも欲しい。 
 型推論も欲しい。 
 GabageCollectionはリソースやタイミ 
ング制御の問題から導入できない。 
 メモリを直接読み書きできる必要が 
ある。 
 メモリアロケーションは確保量が読め 
なくなるので動的にはしたくない。 
× 
OCaml Haskell SML C言語C++ Perl, Python, Ruby, PHP 
我々は諦めるしかないのか?
ATS2という選択肢 
MLライクな文法。関数プログラミング可能。 
C言語のコードを出力する。ランタイムなしGC不要! 
線形型と依存型いう強力な型システムにより、クロー 
ジャーやリソースを安全に管理可能。 
http://www.ats-lang.org/ 
線形型とは? 
線形論理に由来する型。一度変数を用 
いると消費されて使えなくなる。メモリやハ 
ンドラなど、クローズ処理が必要なリソース 
を安全に管理できる。 
依存型とは? 
値に依存して変化する型。配列外アクセ 
スを型で禁止できるなど強力な制限が可 
能。
LEDチカチカ(mbed LPC1768) 
CPU: NXP LPC1768 (ARM Cortex-M3 32-bit) 
Flash ROM: 512 KiB 
RAM: 32 KiB 
ATS2コード片 
fun loop (): void = begin 
c_set_gpio1_fiopin (0x40000); // 1 << 18 
c_wait_us (BLINK_DELAY_US); 
c_set_gpio1_fiopin (0x0); 
c_wait_us (BLINK_DELAY_US); 
loop (); 
end
Metasepiではヒトバシラを募集中! 
Metasepi maps Unix-like kernel design into the functional sea.

More Related Content

Viewers also liked

青mbedをもっと安価に バンバン使おう! mbed祭り2015夏(en129)
青mbedをもっと安価に バンバン使おう! mbed祭り2015夏(en129)青mbedをもっと安価に バンバン使おう! mbed祭り2015夏(en129)
青mbedをもっと安価に バンバン使おう! mbed祭り2015夏(en129)
en129
 
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
Ryosuke MATSUMOTO
 
Fuji sakuraでmbedを!
Fuji sakuraでmbedを!Fuji sakuraでmbedを!
Fuji sakuraでmbedを!
Tetsuya Noguchi
 

Viewers also liked (20)

函数プログラミングの エッセンスと考え方
函数プログラミングのエッセンスと考え方函数プログラミングのエッセンスと考え方
函数プログラミングの エッセンスと考え方
 
「JIRA」「JIRA Agile」デモによる活用紹介
「JIRA」「JIRA Agile」デモによる活用紹介「JIRA」「JIRA Agile」デモによる活用紹介
「JIRA」「JIRA Agile」デモによる活用紹介
 
これからのソフトウェア開発でのプロジェクト管理の展望 ~アトラシアン製品の価値
これからのソフトウェア開発でのプロジェクト管理の展望 ~アトラシアン製品の価値これからのソフトウェア開発でのプロジェクト管理の展望 ~アトラシアン製品の価値
これからのソフトウェア開発でのプロジェクト管理の展望 ~アトラシアン製品の価値
 
Lebesgue可測性に関するSoloayの定理と実数の集合の正則性
Lebesgue可測性に関するSoloayの定理と実数の集合の正則性Lebesgue可測性に関するSoloayの定理と実数の集合の正則性
Lebesgue可測性に関するSoloayの定理と実数の集合の正則性
 
実数の集合はどこまで可測になれるか?
実数の集合はどこまで可測になれるか?実数の集合はどこまで可測になれるか?
実数の集合はどこまで可測になれるか?
 
Freer Monads, More Extensible Effects
Freer Monads, More Extensible EffectsFreer Monads, More Extensible Effects
Freer Monads, More Extensible Effects
 
無料Webセミナー:効率的な情報共有によるプロジェクト管理・運用の改善方法
無料Webセミナー:効率的な情報共有によるプロジェクト管理・運用の改善方法無料Webセミナー:効率的な情報共有によるプロジェクト管理・運用の改善方法
無料Webセミナー:効率的な情報共有によるプロジェクト管理・運用の改善方法
 
Yesterday! Today! Tomorrow!
Yesterday! Today! Tomorrow!Yesterday! Today! Tomorrow!
Yesterday! Today! Tomorrow!
 
型! 型!
型! 型!型! 型!
型! 型!
 
Alloy論理データモデル
Alloy論理データモデルAlloy論理データモデル
Alloy論理データモデル
 
青mbedをもっと安価に バンバン使おう! mbed祭り2015夏(en129)
青mbedをもっと安価に バンバン使おう! mbed祭り2015夏(en129)青mbedをもっと安価に バンバン使おう! mbed祭り2015夏(en129)
青mbedをもっと安価に バンバン使おう! mbed祭り2015夏(en129)
 
「Ambientの紹介」@mbed祭り2016、札幌
「Ambientの紹介」@mbed祭り2016、札幌「Ambientの紹介」@mbed祭り2016、札幌
「Ambientの紹介」@mbed祭り2016、札幌
 
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
 
Fuji sakuraでmbedを!
Fuji sakuraでmbedを!Fuji sakuraでmbedを!
Fuji sakuraでmbedを!
 
mbedでスペースプローブ(探査衛星)を作って、ロケットで飛ばしてみませんか?
mbedでスペースプローブ(探査衛星)を作って、ロケットで飛ばしてみませんか?mbedでスペースプローブ(探査衛星)を作って、ロケットで飛ばしてみませんか?
mbedでスペースプローブ(探査衛星)を作って、ロケットで飛ばしてみませんか?
 
Embedded application designed by ATS language
Embedded application designed by ATS languageEmbedded application designed by ATS language
Embedded application designed by ATS language
 
ATS/LF for Coq users
ATS/LF for Coq usersATS/LF for Coq users
ATS/LF for Coq users
 
Metasepi team meeting #19: ATS application on Arduino
Metasepi team meeting #19: ATS application on ArduinoMetasepi team meeting #19: ATS application on Arduino
Metasepi team meeting #19: ATS application on Arduino
 
ATSプログラミングチュートリアル
ATSプログラミングチュートリアルATSプログラミングチュートリアル
ATSプログラミングチュートリアル
 
Metasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's APIMetasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's API
 

Similar to 線形型のある言語でLEDを光らせる

Similar to 線形型のある言語でLEDを光らせる (20)

Scala採用の背景とその後 @ hitomedia night #5
Scala採用の背景とその後 @ hitomedia night #5Scala採用の背景とその後 @ hitomedia night #5
Scala採用の背景とその後 @ hitomedia night #5
 
Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみて
 
デザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリングデザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリング
 
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
Next Language Scala
Next Language ScalaNext Language Scala
Next Language Scala
 
Kaleidox
KaleidoxKaleidox
Kaleidox
 
インターネット広告の概要とシステム設計
インターネット広告の概要とシステム設計インターネット広告の概要とシステム設計
インターネット広告の概要とシステム設計
 
俺がモデルだ!問題に立ち向かう
俺がモデルだ!問題に立ち向かう俺がモデルだ!問題に立ち向かう
俺がモデルだ!問題に立ち向かう
 
フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。
 
Clojure REPL: The Good Parts
Clojure REPL: The Good PartsClojure REPL: The Good Parts
Clojure REPL: The Good Parts
 
Oracle APEX概要
Oracle APEX概要Oracle APEX概要
Oracle APEX概要
 
アドテクを支える技術 〜1日40億リクエストを捌くには〜
アドテクを支える技術 〜1日40億リクエストを捌くには〜アドテクを支える技術 〜1日40億リクエストを捌くには〜
アドテクを支える技術 〜1日40億リクエストを捌くには〜
 
インフラ部門で働くCプログラマの話
インフラ部門で働くCプログラマの話インフラ部門で働くCプログラマの話
インフラ部門で働くCプログラマの話
 
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていることSwiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
 
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScala
 
GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...
GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...
GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...
 
Sit tokyo2021 solr_japanese_tokenizer_basics
Sit tokyo2021 solr_japanese_tokenizer_basicsSit tokyo2021 solr_japanese_tokenizer_basics
Sit tokyo2021 solr_japanese_tokenizer_basics
 
Flang kkd1
Flang kkd1Flang kkd1
Flang kkd1
 

More from 啓 小笠原 (6)

Alloy analyzer
Alloy analyzerAlloy analyzer
Alloy analyzer
 
Alloy Analyzer LT
Alloy Analyzer LTAlloy Analyzer LT
Alloy Analyzer LT
 
状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)
状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)
状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)
 
ぱわわっぷOCaml
ぱわわっぷOCamlぱわわっぷOCaml
ぱわわっぷOCaml
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
 
GADTブランチの今
GADTブランチの今GADTブランチの今
GADTブランチの今
 

線形型のある言語でLEDを光らせる