Enviar pesquisa
Carregar
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
•
Transferir como PPTX, PDF
•
4 gostaram
•
2,700 visualizações
Fujio Kojima
Seguir
2009-10-23 FITEA最新技術ミニセミナー http://fitea.org/?p=112
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 88
Baixar agora
Recomendados
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
Fujio Kojima
(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#
ssusera3d157
iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"
Ryohei Suzuki
The evolution of c#
The evolution of c#
leverages_event
Swiftによる関数型プログラミング超入門
Swiftによる関数型プログラミング超入門
Hisakuni Fujimoto
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
Shingo Sato
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
keroyonn
金沢アプリ塾デザインパターンとオープンデータ
金沢アプリ塾デザインパターンとオープンデータ
Masayuki KaToH
Recomendados
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
Fujio Kojima
(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#
ssusera3d157
iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"
Ryohei Suzuki
The evolution of c#
The evolution of c#
leverages_event
Swiftによる関数型プログラミング超入門
Swiftによる関数型プログラミング超入門
Hisakuni Fujimoto
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
Shingo Sato
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
keroyonn
金沢アプリ塾デザインパターンとオープンデータ
金沢アプリ塾デザインパターンとオープンデータ
Masayuki KaToH
第一回関数型言語勉強会 大阪
第一回関数型言語勉強会 大阪
Naoki Kitora
C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!
TATSUYA HAYAMIZU
Phpstormちょっといい話
Phpstormちょっといい話
Hisateru Tanaka
Eclipse xtext 紹介
Eclipse xtext 紹介
Akira Tanaka
Rのコードをキレイに見せたい
Rのコードをキレイに見せたい
mangantempy
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Roy Kim
Python勉強会 2015-12-02
Python勉強会 2015-12-02
WoodPecker (Shizuoka Univ)
Xtext 紹介
Xtext 紹介
Akira Tanaka
FunScript:F#からJavaScriptへのコンパイラー
FunScript:F#からJavaScriptへのコンパイラー
Alfonso Garcia-Caro
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
Takaaki Suzuki
F#事例発表
F#事例発表
bleis tift
これから Haskell を書くにあたって
これから Haskell を書くにあたって
Tsuyoshi Matsudate
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
Monad tutorial
Monad tutorial
Hideyuki Tanaka
入門自然言語処理入門
入門自然言語処理入門
Hiromu Shioya
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
Yusuke Kon
PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」
Preferred Networks
Flang kkd1
Flang kkd1
florets1
Object-Funcational Analysis and design
Object-Funcational Analysis and design
Tomoharu ASAMI
ノーコード・ローコード開発の意義
ノーコード・ローコード開発の意義
千紘 佐野
線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる
啓 小笠原
PHPカンファレンス2015
PHPカンファレンス2015
Daisuke Kasuya
Mais conteúdo relacionado
Mais procurados
第一回関数型言語勉強会 大阪
第一回関数型言語勉強会 大阪
Naoki Kitora
C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!
TATSUYA HAYAMIZU
Phpstormちょっといい話
Phpstormちょっといい話
Hisateru Tanaka
Eclipse xtext 紹介
Eclipse xtext 紹介
Akira Tanaka
Rのコードをキレイに見せたい
Rのコードをキレイに見せたい
mangantempy
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Roy Kim
Python勉強会 2015-12-02
Python勉強会 2015-12-02
WoodPecker (Shizuoka Univ)
Xtext 紹介
Xtext 紹介
Akira Tanaka
FunScript:F#からJavaScriptへのコンパイラー
FunScript:F#からJavaScriptへのコンパイラー
Alfonso Garcia-Caro
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
Takaaki Suzuki
Mais procurados
(10)
第一回関数型言語勉強会 大阪
第一回関数型言語勉強会 大阪
C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!
Phpstormちょっといい話
Phpstormちょっといい話
Eclipse xtext 紹介
Eclipse xtext 紹介
Rのコードをキレイに見せたい
Rのコードをキレイに見せたい
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Python勉強会 2015-12-02
Python勉強会 2015-12-02
Xtext 紹介
Xtext 紹介
FunScript:F#からJavaScriptへのコンパイラー
FunScript:F#からJavaScriptへのコンパイラー
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
Destaque
F#事例発表
F#事例発表
bleis tift
これから Haskell を書くにあたって
これから Haskell を書くにあたって
Tsuyoshi Matsudate
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
Monad tutorial
Monad tutorial
Hideyuki Tanaka
入門自然言語処理入門
入門自然言語処理入門
Hiromu Shioya
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
Yusuke Kon
Destaque
(6)
F#事例発表
F#事例発表
これから Haskell を書くにあたって
これから Haskell を書くにあたって
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Monad tutorial
Monad tutorial
入門自然言語処理入門
入門自然言語処理入門
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
Semelhante a 最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」
Preferred Networks
Flang kkd1
Flang kkd1
florets1
Object-Funcational Analysis and design
Object-Funcational Analysis and design
Tomoharu ASAMI
ノーコード・ローコード開発の意義
ノーコード・ローコード開発の意義
千紘 佐野
線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる
啓 小笠原
PHPカンファレンス2015
PHPカンファレンス2015
Daisuke Kasuya
デザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリング
kei takakuda
No more Legacy documents
No more Legacy documents
bleis tift
TypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdf
Ryo Higashigawa
2011年10月21日
2011年10月21日
nukaemon
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Tomoharu ASAMI
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
Deep Learning JP
ゲーム組み込み用スクリプト言語を作ってみた
ゲーム組み込み用スクリプト言語を作ってみた
MASA_T_O
プログラミング言語として考えたTensor flow
プログラミング言語として考えたTensor flow
Keisuke Umezawa
TVMの次期グラフIR Relayの紹介
TVMの次期グラフIR Relayの紹介
Takeo Imai
Object-Functional Analysis and Design and Programming温泉
Object-Functional Analysis and Design and Programming温泉
Tomoharu ASAMI
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
健太 田上
2009 splc-a framework for constructing semantically composable feature models...
2009 splc-a framework for constructing semantically composable feature models...
n-yuki
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
2014年の社内新人教育テキスト #1(プログラミング言語概論)
2014年の社内新人教育テキスト #1(プログラミング言語概論)
Shin-ya Koga
Semelhante a 最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
(20)
PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」
Flang kkd1
Flang kkd1
Object-Funcational Analysis and design
Object-Funcational Analysis and design
ノーコード・ローコード開発の意義
ノーコード・ローコード開発の意義
線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる
PHPカンファレンス2015
PHPカンファレンス2015
デザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリング
No more Legacy documents
No more Legacy documents
TypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdf
2011年10月21日
2011年10月21日
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
ゲーム組み込み用スクリプト言語を作ってみた
ゲーム組み込み用スクリプト言語を作ってみた
プログラミング言語として考えたTensor flow
プログラミング言語として考えたTensor flow
TVMの次期グラフIR Relayの紹介
TVMの次期グラフIR Relayの紹介
Object-Functional Analysis and Design and Programming温泉
Object-Functional Analysis and Design and Programming温泉
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
2009 splc-a framework for constructing semantically composable feature models...
2009 splc-a framework for constructing semantically composable feature models...
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
2014年の社内新人教育テキスト #1(プログラミング言語概論)
2014年の社内新人教育テキスト #1(プログラミング言語概論)
Mais de Fujio Kojima
Burikaigi 2023「C# Live Coding!」 小島の分
Burikaigi 2023「C# Live Coding!」 小島の分
Fujio Kojima
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
Fujio Kojima
.NET 6 時代のデスクトップ アプリケーション開発
.NET 6 時代のデスクトップ アプリケーション開発
Fujio Kojima
BuriKaigi 2022 「C# Live Coding!」 小島の分
BuriKaigi 2022 「C# Live Coding!」 小島の分
Fujio Kojima
C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~
Fujio Kojima
.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~
Fujio Kojima
.NETラボ 勉強会 2021年1月 「C#で機械学習」
.NETラボ 勉強会 2021年1月 「C#で機械学習」
Fujio Kojima
『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~
『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~
Fujio Kojima
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
Fujio Kojima
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
Fujio Kojima
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
Fujio Kojima
『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui
『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui
Fujio Kojima
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編
Fujio Kojima
機械学習 (AI/ML) 勉強会 #1 基本編
機械学習 (AI/ML) 勉強会 #1 基本編
Fujio Kojima
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
Fujio Kojima
機械学習入門
機械学習入門
Fujio Kojima
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう
Fujio Kojima
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
Fujio Kojima
「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」
「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」
Fujio Kojima
.NET MVP によるドキドキ・ライブコーディング! 小島の分
.NET MVP によるドキドキ・ライブコーディング! 小島の分
Fujio Kojima
Mais de Fujio Kojima
(20)
Burikaigi 2023「C# Live Coding!」 小島の分
Burikaigi 2023「C# Live Coding!」 小島の分
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
.NET 6 時代のデスクトップ アプリケーション開発
.NET 6 時代のデスクトップ アプリケーション開発
BuriKaigi 2022 「C# Live Coding!」 小島の分
BuriKaigi 2022 「C# Live Coding!」 小島の分
C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~
.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~
.NETラボ 勉強会 2021年1月 「C#で機械学習」
.NETラボ 勉強会 2021年1月 「C#で機械学習」
『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~
『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui
『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #1 基本編
機械学習 (AI/ML) 勉強会 #1 基本編
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
機械学習入門
機械学習入門
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」
「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」
.NET MVP によるドキドキ・ライブコーディング! 小島の分
.NET MVP によるドキドキ・ライブコーディング! 小島の分
Último
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Último
(9)
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
1.
最新C#動向と関数型言語Haskell ~命令型/静的プログラミングから 関数型プログラミングへのシフト~
十 月 二三 日 (金 ) 日直 小島 富 治 FITEA最新技術ミニセミナー雄
2.
自己紹介 2
3.
3
4.
FITEA 福井情報技術者協会[FITEA] http://fitea.org
4
5.
マイブーム 自転車通勤 “bicycle
commute” ジャグリング “juggling” 英語の勉強 “learning English”
6.
アジェンダ マルチパラダイム! 関数型プログラミング!
C# vs. Haskell!
7.
マルチパラダイム!
8.
プログラミング言語のトレンド マルチパラダイム
9.
マルチパラダイム 関数型 ⇔
手続き型 ⇔ オブジェクト指向型 宣言型⇔ 命令型 動的型無し⇔ 静的型付き Generic 並列プログラミング 9
10.
(噂によると、マルチパラダイム な言語として、 “Scala
” というのが いけてるらしい。)
11.
背景 マルチパラダイム プログラミングが現実的に。
• C# など言語の進化 • Visual Studio などツールの進化
12.
C# は、 最新のものほど、
マルチパラダイム プログラミング言語化
13.
C#の進化 C#1.0 C#2.0
C#3.0 C#4.0 オブジ ェクト 指向! ジェネ リック! 宣言型! 関数型! 動的! 並列処 理!
14.
並列プログラミング 14
15.
ムーアの法則の破れ 15 「半導体に集積される
トランジスタの数は 18~24カ月ごとに 「今から10年後、15年後に、 われわれは極めて根本的な 問題に直面する」 2007/09/18 倍増する」 ムーアの法則1965 ゴードン・ムーア (インテルの共同創業者)
16.
マルチコアCPU 16
17.
プログラマは どうすればいいか 17
James Hughes氏 (サンマイクロシステムズ副社長) マルチスレッディング を有効に活用するため の並列プログラミング 技術が必要 2008/12/03
18.
宣言型プログラミング “What” を記述
⇔ 命令型プログラミング •“How” を記述 (C# 2.0以前など)
19.
各のパラダイムの限界 手続き型の限界 オブジェクト指向の限界
→ 適材適所のパラダイム → マルチパラダイム 19
20.
Q.パラダイムによって ソースコードは 大きく変わる?
21.
デモ 命令型・オブジェクト指向型 •
例. “OOPアンケート” 宣言型・関数型 •例. “FPアンケート”
22.
まったく同じ 実行結果だが…
23.
美しさが異なる 保守性が異なる •変更容易性
•テスト容易性
24.
別の例
25.
アセンブリ言語 mov dx,
msg mov ah, 0x09 int 0x21 xor al, al mov ah, 0x4C int 0x21 msg db "Hello World!$"
26.
を、なんで
27.
C# class Program
{ static void Main() { System.Console.WriteLine("Hello World!"); } } printfn "Hello world!" F#
28.
のように書く ようになってきたのか?
29.
「動けばいい」のなら、 どっちでも良いはず。
30.
何の違いが ソースコードの違いを 生むのか?
31.
ソースコードが異なる ↑ プログラマーが
意図したモデル が異なる。
32.
モデル (=関心のある/コミュニケーション したい部分を抽出したもの)
の記述により近いもの が使われる。
33.
私の認識
34.
プログラミング というのは、実装のみを行う のではない。
35.
プログラミング は、 「設計+実装+テスト」。
36.
プログラミング というのは、 「検証可能な
設計/実装モデル」 を作ること。
37.
プログラミング という行為は モデリング。
38.
モデリングなので、 モデリングのための 言語・ツールが重要。
39.
プログラミング言語が重要 モデルを書くのに適した言語 •
進化したC# など
40.
「プログラミングで 作られるモデル」 =ソースコード
(が理想)
41.
モデルとは そのコンテキストでの関心事を 抽出したもの。
モデルの目的: •関心事に限定した コミュニケーション。
42.
誰とのコミュニケーション?
43.
ソースコードで誰とコミュニ ケーションするのか? 古くは:
• コンピュータとコミュニケーション 時代が進んで: • コンパイラとコミュニケーション 今は: • 人とコミュニケーション • 人=ステークホルダー
44.
プログラミングでは: Q. 何をモデリングするのか?
=何を関心事として抽出するか? A. 意図をモデリング。 意図がソースコード(=モデル) で表現されるべき。
45.
例
46.
例えば… C# では、
「従業員名簿内の全ての各従業員を 画面に出力する」 のソースコードは、 従業員名簿.ForAll(各従業員=> 各従業員.出力(画面)); と書かれたりする。 宣言型プログラミング
47.
なんで 従業員名簿.ForAll(各従業員=> 各従業員.出力(画面));
このソースコードが、 for (int i = 0; i < 従業員名簿.Count; i++) 出力(従業員名簿[i]); より良いか? 命令型プログラミング
48.
「この場合は」、 「整数i を0
にし、i が従業員名簿のCount ま での間、i をインクリメントしながら、従業員名簿 のi 番目を出力」 という意図のモデルじゃなく、 「従業員名簿内の全ての各従業員を 画面に出力する」 のモデルだから。
49.
つまり、 「従業員名簿内の全ての各従業員を 画面に出力する」
のモデルとしては、 従業員名簿.ForAll(各従業員=> 各従業員.出力(画 面)); の方が(ベストではないが) ベター。
50.
もし仮に、 「整数i を0
にし、i が従業員名簿のCount までの間、 i をインクリメントしながら、従業員名簿のi 番目を出力」 という意図のモデルだったら、 for (int i = 0; i < 従業員名簿.Count; i++) 出力(従業員名簿[i]); の方が、ベター。
51.
よりピュアなモデルが 書けている方がベター。
52.
モデルがピュアである ことが重要か? そう。
モデルはピュアであることが重要。
53.
なぜならば、
54.
モデルとは 「関心事を抽出したもの」 だから。
55.
例えば… 「従業員名簿内の全ての各従業員を画面に出力する」 が意図なら、
for (int i = 0; i < 従業員リスト.Count; i++) 出力(従業員リスト[i]); の場合、 「int」、「i」、「=」、「<」、「Count」、「i++」、「[i]」 は「意図以外」のもの。 (=モデルにとっては「ノイズ」)
56.
「この場合は」、 for (int
i = 0; i < 従業員リスト.Count; i++) 出力(従業員リスト[i]); よりは、 命令型プログラミング 従業員リスト.ForAll(各従業員=> 各従業員.出力(画面)); の方がノイズが少ない。 (=SN比が高い) 宣言型プログラミング
57.
どんな風に プログラミング したいか
57
58.
どんな風にプログラミングしたいか シンプルに書きたいこと だけを書く
•モデル記述 (モデル= 関心事が分離されたもの) 58
59.
どんな風にプログラミングしたいか CPUに指示するようでなく コンパイラに指示するよう
でなく 人が人に話すように 59
60.
そのためには
61.
状況に適したパラダイムの採用 手続き型プログラミング ⇔
オブジェクト指向型プログラミング ⇔ 関数型プログラミング 命令型プログラミング ⇔ 宣言型プログラミング テキスト型プログラミング ⇔ 図解型プログラミング ジェネリック・プログラミング 並列プログラミング などの組み合わせ
62.
関数型プログラミング!
63.
関数型言語 純粋ハイブリッド 静的型付けHaskell
Scala 動的型付けScheme C# OCaml F# Erlang LISP
64.
関数型プログラミング 宣言的 数学的
65.
関数型プログラミング プログラムは関数の集まり ⇔
手続きの集まり ⇔ オブジェクトの集まり
66.
関数型プログラミング 関数脳が必要? ⇔
手続き脳 ⇔ オブジェクト脳
67.
見える化 してみた
68.
Haskellの脳内 関数 関数
関数 関数 関数 関数 関数 関数 関数 関数 関数 関数 関数 関数 関数
69.
C#の脳内 物 物
物 物 物 物 物 物 物手続 関数関数 物 物 物 物 物 物 物 物 手続 手続 手続 物 物 関数
70.
より 分かりやすく 見える化
71.
Haskell たん
72.
C#たん
73.
関数型プログラミング 代入文がない •副作用がない
•状態を持たない
74.
関数型プログラミング 参照透明 •実行順序を気にしなくてよい
•副作用がないので、いつどの 式を評価しても同じ •制御フローがない
75.
C# vs. Haskell!
76.
C# vs. Haskell
C# はHaskell に 近づけたのか?
77.
C# マイクロソフト社によって 同社の.NET戦略の一環とし
て開発されたオブジェクト 指向プログラミング言語
78.
Haskell 純粋関数型言語。 名前は、米国の数学者
Haskell B. Curry に由来。
79.
Haskell 遅延評価 強い静的型付け
型推論 静的多相型付け 高階関数 参照透過性 再帰的関数 副作用がない パターンマッチング カリー化
80.
Haskell 『ふつうのHaskell プログラミング
ふつうのプログラマのため の関数型言語入門』 392ページ ソフトバンククリエイティブ 2006/06/01
81.
Haskell 『Real World
Haskell ―実戦で学ぶ関数型言語 プログラミング』 720ページ オライリージャパン 2009/10/26
82.
第一試合. 再帰的関数 お題
「階乗」 •サンプル“Factorial”
83.
第二試合. パターンマッチング そのままサンプル
“Factorial”
84.
第三試合. 遅延評価 お題
「無限長のリストを扱う」 •サンプル“YieldSample”
85.
第三試合. 遅延評価 お題
「一から十まで足す」 •サンプル“Sum”
86.
第四試合. 宣言的プログラミング お題
「クイックソート」 •サンプル“QuickSort”
87.
参考: クイックソート 5
3 8 2 9 1 6 4 7 3 2 1 4 5 8 9 6 7 2 1 3 4 1 2 6 7 8 9 6 7
88.
ご清聴ありがとう ございました
Baixar agora