SlideShare une entreprise Scribd logo
1  sur  78
50 万行オーダーのプロジェクトを俺 Lisp で書く
[object Object],[object Object]
プロフィール ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
WWW,Mail ,[object Object],[object Object],[object Object]
ゼンリン電子地図帳 Zi ,[object Object],[object Object],[object Object],[object Object]
ゼンリン地図+ナビ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
10 年の月日が流れ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
プロジェクトを楽にしたい! つらい思いはしたくない!
目的はプロジェクトの成功! ,[object Object],[object Object],[object Object],[object Object],[object Object]
実際問題として Lisp しか選択肢がなかった ,[object Object],[object Object],[object Object]
チーム開発では ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
L4u ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
L4u 誕生の経緯 ,[object Object],[object Object],[object Object],[object Object],[object Object]
L4u の特徴 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
プロトタイプから最適化 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
超並列型はチーム開発に向いている ,[object Object],[object Object],[object Object]
実行速度、メモリーや コードサイズは? ,[object Object],[object Object],[object Object],[object Object],[object Object]
現在動作しているプラットフォーム ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
みんなに使ってもらうために エディタも作りました ,[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
まずは S 式
tuple を導入 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
XHTML ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
tuple を使うと・・ L4u SXML ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
まずは JSON で開発してもらって・・ ,[object Object],[object Object],[object Object],[object Object]
まずは JSON で開発してもらって・・ 後で S 式に置き換える。 ,[object Object],[object Object]
JSON で作っていたつもりが・・・ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
JSON で作っていたつもりが・・・ いつの間にか S 式でやり取りされてる! ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
まとめ ,[object Object]
どこでも REPL
携帯電話上でデバッグ可能 ,[object Object],[object Object],[object Object]
携帯電話にリモートデバッグ ,[object Object],[object Object],[object Object],[object Object]
サーバーサイド L4u
携帯でもサーバーでも同じ言語が動く ,[object Object],[object Object]
smarty もどき ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
変換された l4u のコードを eval するだけ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ホスト言語との連携
ホスト言語との連携を前提にする ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
reflection が使えれば ,[object Object],[object Object],[object Object],[object Object]
Integer クラスの実装 その1 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Integer クラスの実装 その2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
delegate/cc ,[object Object],[object Object],[object Object],[object Object]
delegate/cc の例 doja で IME を使って文字を入力 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
プリプロセッサ、マクロ
L4u のソースコード処理の流れ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
C 言語みたいなプリプロセッサ ,[object Object],[object Object],[object Object]
プリプロセッサの例 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
もはや S 式じゃない? マクロより凶悪な S 式いじり ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
もはや S 式じゃない? マクロより凶悪な S 式いじり ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Dylan みたいだけど S 式を捨てたわけじゃない ,[object Object],[object Object],[object Object]
L4u は超並列指向
L4u の超並列指向 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
メッセージパッシングでの並列処理を前提で考えるといろいろ楽ちん ,[object Object],[object Object]
簡単な並列化 フィボナッチ数 オリジナル ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
簡単な並列化 フィボナッチ数 計算部分を並列化 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
他のプロセスにメッセージを送る ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
他のプロセスからの メッセージを受ける ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
L4u は人にやさしい Lisp を 目指した構文 心理学とか脳生理学にに凝っている男が作った Lisp
例えば… ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
人にやさしい構文とは ,[object Object],[object Object],[object Object],[object Object],[object Object]
日本語が使える ,[object Object],[object Object],[object Object],[object Object],[object Object]
右脳で直感的に理解できる構文 例えば  if ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
やりたいことを明示する continue,break,return を持つ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
冗長でも、 やりたいことを明示するをもつ ,[object Object],[object Object],[object Object],[object Object],[object Object]
loop の例 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
repeat の例 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
見た目は Algol 系でも 最終的には S 式で処理される ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
かっこを減らせ! その 1 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
かっこを減らせ! その 2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
第一引数を特別扱い ,[object Object],[object Object],[object Object],[object Object],[object Object]
高階関数の引数の順番が逆 ,[object Object],[object Object],[object Object],[object Object],[object Object]
関数呼び出しの優先順位 ,[object Object],[object Object],[object Object],[object Object]
非 CLOS なオブジェクトシステム ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
非 CLOS なオブジェクトシステム ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
SLOT じゃなければ、コピペで抜き出して簡単にテストできるよ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
なぜ CLOS があるのに Java っぽいクラスを使うか ,[object Object],[object Object],[object Object],[object Object],[object Object]
まとめ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ありがとうございました 開発者募集中! 2009 年オープンソースで登場予定

Contenu connexe

Tendances

Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
CHY72
 

Tendances (20)

C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料
 
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 
Reactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単にReactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単に
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
 
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014
 
PHPの今とこれから2020
PHPの今とこれから2020PHPの今とこれから2020
PHPの今とこれから2020
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
 
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11
 
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
 
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
 
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
HHVM Hack
HHVM HackHHVM Hack
HHVM Hack
 
Deep Dive C# 6.0
Deep Dive C# 6.0Deep Dive C# 6.0
Deep Dive C# 6.0
 
More C++11
More C++11More C++11
More C++11
 
C++でCプリプロセッサを作ったり速くしたりしたお話
C++でCプリプロセッサを作ったり速くしたりしたお話C++でCプリプロセッサを作ったり速くしたりしたお話
C++でCプリプロセッサを作ったり速くしたりしたお話
 
最速C# 7.x
最速C# 7.x最速C# 7.x
最速C# 7.x
 

En vedette

Oportunidades en Finlandia para la oferta colombiana
Oportunidades en Finlandia para la oferta colombianaOportunidades en Finlandia para la oferta colombiana
Oportunidades en Finlandia para la oferta colombiana
ProColombia
 
دليل الخير لمشاريع النجاة الخيرية في جمهورية باكستان
دليل الخير لمشاريع النجاة الخيرية في جمهورية باكستاندليل الخير لمشاريع النجاة الخيرية في جمهورية باكستان
دليل الخير لمشاريع النجاة الخيرية في جمهورية باكستان
جمعية النجاة الخيرية
 

En vedette (14)

Beyond Hacktivism - why #policymatters - Zan Markan - Codemotion Milan 2016
Beyond Hacktivism - why #policymatters - Zan Markan - Codemotion Milan 2016Beyond Hacktivism - why #policymatters - Zan Markan - Codemotion Milan 2016
Beyond Hacktivism - why #policymatters - Zan Markan - Codemotion Milan 2016
 
SC recomendó a FESFUT licitar transmisión de partidos
SC recomendó a FESFUT licitar transmisión de partidosSC recomendó a FESFUT licitar transmisión de partidos
SC recomendó a FESFUT licitar transmisión de partidos
 
Robots II. ¿Pagarán los robots nuestras pensiones?
Robots II. ¿Pagarán los robots nuestras pensiones?Robots II. ¿Pagarán los robots nuestras pensiones?
Robots II. ¿Pagarán los robots nuestras pensiones?
 
How to Ensure that Sales Training Sticks
How to Ensure that Sales Training SticksHow to Ensure that Sales Training Sticks
How to Ensure that Sales Training Sticks
 
Oportunidades en Finlandia para la oferta colombiana
Oportunidades en Finlandia para la oferta colombianaOportunidades en Finlandia para la oferta colombiana
Oportunidades en Finlandia para la oferta colombiana
 
دليل الخير لمشاريع النجاة الخيرية في جمهورية باكستان
دليل الخير لمشاريع النجاة الخيرية في جمهورية باكستاندليل الخير لمشاريع النجاة الخيرية في جمهورية باكستان
دليل الخير لمشاريع النجاة الخيرية في جمهورية باكستان
 
Resumen: Propuesta: Ministerio de M.A.R. para Chile.
Resumen: Propuesta: Ministerio de M.A.R. para Chile.Resumen: Propuesta: Ministerio de M.A.R. para Chile.
Resumen: Propuesta: Ministerio de M.A.R. para Chile.
 
Els beneficis de l'activitat física enfront els perjudicis de l'esport obsessiu
Els beneficis de l'activitat física enfront els perjudicis de l'esport obsessiuEls beneficis de l'activitat física enfront els perjudicis de l'esport obsessiu
Els beneficis de l'activitat física enfront els perjudicis de l'esport obsessiu
 
The path to self disruption: Nine steps of a digital transformation journey
The path to self disruption: Nine steps of a digital transformation journeyThe path to self disruption: Nine steps of a digital transformation journey
The path to self disruption: Nine steps of a digital transformation journey
 
Invisible Aerosols : Dentists beware of them
Invisible Aerosols : Dentists beware of themInvisible Aerosols : Dentists beware of them
Invisible Aerosols : Dentists beware of them
 
Como Planejar sua Campanha Promocional com Brindes | Apresentação 3 de 3
 Como Planejar sua Campanha Promocional com Brindes | Apresentação 3 de 3 Como Planejar sua Campanha Promocional com Brindes | Apresentação 3 de 3
Como Planejar sua Campanha Promocional com Brindes | Apresentação 3 de 3
 
No le cuentes cuentos
No le cuentes cuentosNo le cuentes cuentos
No le cuentes cuentos
 
The Importance of Good Posture To Health
The Importance of Good Posture To Health The Importance of Good Posture To Health
The Importance of Good Posture To Health
 
8 barriers to realizing mindfulness
8 barriers to realizing mindfulness8 barriers to realizing mindfulness
8 barriers to realizing mindfulness
 

Similaire à 2008.10.18 L4u Tech Talk

Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perl
Jiro Nishiguchi
 
Open Source System Administration Framework - Func
Open Source System Administration Framework - FuncOpen Source System Administration Framework - Func
Open Source System Administration Framework - Func
Gosuke Miyashita
 
ザ・ドキュメント~うまくいかないNoSQL~
ザ・ドキュメント~うまくいかないNoSQL~ザ・ドキュメント~うまくいかないNoSQL~
ザ・ドキュメント~うまくいかないNoSQL~
Akihiro Kuwano
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
Ransui Iso
 
アプリコンテスト
アプリコンテストアプリコンテスト
アプリコンテスト
Tomonori Yamada
 
Php in ruby
Php in rubyPhp in ruby
Php in ruby
do_aki
 

Similaire à 2008.10.18 L4u Tech Talk (20)

Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perl
 
PHP, Now and Then 2011
PHP, Now and Then 2011PHP, Now and Then 2011
PHP, Now and Then 2011
 
オープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリオープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリ
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワーク
 
Lt会01_uetch
Lt会01_uetchLt会01_uetch
Lt会01_uetch
 
Open Source System Administration Framework - Func
Open Source System Administration Framework - FuncOpen Source System Administration Framework - Func
Open Source System Administration Framework - Func
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
ザ・ドキュメント~うまくいかないNoSQL~
ザ・ドキュメント~うまくいかないNoSQL~ザ・ドキュメント~うまくいかないNoSQL~
ザ・ドキュメント~うまくいかないNoSQL~
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
 
webを飾る技術
webを飾る技術webを飾る技術
webを飾る技術
 
CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」
CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」
CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」
 
アプリコンテスト
アプリコンテストアプリコンテスト
アプリコンテスト
 
Windows スクリプトセミナー 基本編
Windows スクリプトセミナー 基本編Windows スクリプトセミナー 基本編
Windows スクリプトセミナー 基本編
 
プログラムの読み方
プログラムの読み方プログラムの読み方
プログラムの読み方
 
Windows® API Code Pack for Microsoft® .NET Framework
Windows® API Code Pack for Microsoft® .NET FrameworkWindows® API Code Pack for Microsoft® .NET Framework
Windows® API Code Pack for Microsoft® .NET Framework
 
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
 
ゆるかわPhp
ゆるかわPhpゆるかわPhp
ゆるかわPhp
 
Php in ruby
Php in rubyPhp in ruby
Php in ruby
 

Dernier

Dernier (7)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

2008.10.18 L4u Tech Talk