SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
Scalaがもたらす
言語の進化
高橋晶(Akira Takahashi)
はてな : id:faith_and_brave
Twitter : @cpp_akira
1/21
自己紹介 1/2
• C++標準化委員会のひと
• 言語好き
(言語を学び、
おもしろい機能をC++で実現する)
• 魔導書作ってます
(そろそろvol.2はじめます) 株式会社ロングゲート – 製品案内
http://longgate.co.jp/products.html
2/21
自己紹介 2/2
• ないと生きていけないライブラリ
・Boost.Fusion – スーパーウルトラハイパータプル
・Boost.Spirit.Qi – Fusionを基礎とする構文解析器
・Boost.MultiIndex – 複数のインデックスを持てるコレクション
Scalaにもほしいですね!
• P-Stade C++ LibrariesのOven Range Libraryのメン
テもしてます。
http://p-stade.sourceforge.net/
http://sourceforge.net/projects/p-stade/
3/21
やりたかった内容
• 言語の設計思想
• どの言語からどの機能を取り入れてきたのか
• 言語拡張の際の互換性のポリシー
4/21
やりたかった内容
• 言語の設計思想
• どの言語からどの機能を取り入れてきたのか
• 言語拡張の際の互換性のポリシー
→ Oderskyさんがこのへんについてほとんど何も書いてない。
「JavaやC#と対話しやすいようにした」くらい。
推測で書けるけどあまりおもしろくないのでやめました。
5/21
今日やる内容
• Scalaの設計と特徴的な機能
• それによって今後の言語にどのような影響を
与えるか
6/21
Scalaとはどんな言語か
• オブジェクト指向と関数型のハイブリット言語
→ マルチパラダイム言語
• Java VM上に実装されていて、Javaのライブラリをそ
のまま使える
• .NET版は(おそらく人手不足で)開発が停滞中
7/21
Scalaは
言語の進化を促進させるための言語
• 私にとって、Scala自体は理想的な言語ではない
• Scalaは、理想の言語を生み出すため、
オブジェクト指向から関数型へのパラダイムシフトを促し、
マルチパラダイム + DSLという今後のプログラミング言語の
在り方、方向性を広めるための言語だと考えている
8/21
マルチパラダイムの重要性 1/3
• Javaは、1.5でGenericsが入る前までは
純粋なオブジェクト指向言語だった。
これは、プログラミング初心者に(もしくはどんなバカにでも)
オブジェクト指向プログラミングを強制させるのに役立った。
• Haskellも純粋な関数型言語という意味ではJavaと同じ。
その言語らしいプログラミングを強制させることができた。
• しかし、これらが十分に浸透した今、プログラミングスタイル
を縛るだけではなく、より強力な表現力が求められる。
9/21
マルチパラダイムの重要性 2/3
オブジェクト指向と関数型、
他のパラダイムは互いに相容れないものではない。
互いを組み合わせることにより、互いが苦手とする
分野を補完し合い、さらにより良く強力な
プログラミングが可能となる。
マルチパラダイムは、複数の考えの組み合わせによって
プログラミングに無限の可能性を与えうるものである。
これはC++が言語拡張なしにライブラリだけで今日でも
成長し続けていることが証明していると言える。
「アイデアというものは、無数の小さなアイデアの
組み合わせによってのみ生み出される」
10/21
マルチパラダイムの重要性 3/3
「科学的基盤を導入しようと色々努力しても、プログラミン
グはまず間違いなく、小手先仕事として教えられることに
なる。普通、1つ(か、ほんの少し)のプログラミング言語(例
えば、Javaとそれを補うHaskell、Scheme、またはProlog)の
枠の中で教えられる。…
ツールと概念がごちゃごちゃになっている。それに輪をか
けて、オブジェクト指向、論理型、関数型等の「パラダイム
(paradigm)」と呼ばれる、プログラミングの異なる見方に基
づく、考え方の異なる流派がはびこっている。流派それぞ
れが独自の科学を持つ。1つの学問としてのプログラミン
グの統一性は失われた。…」
マルチパラダイムは、プログラミングを体系的に学ぶ
のにも役立つ。
教育の場において、オブジェクト指向プログラミングを
教えるのにはJavaを使い、関数型プログラミングを教え
るのにはHaskellを使う、というような方法では学生を混
乱させるだけで、本質的なことに集中して教育すること
ができない。
11/21
言語の進化としてのScalaの功績 1/5
1. オブジェクト指向と関数型をうまく融合させた
・immutable
不変の式を表現できるようになったことで、ユーザーが副作用について意識する
ようになった。
また、Concurrent/Parallelなプログラミングが必須となる時代にうまく適合した。
言語(Odersky)がvarよりもval, mutableコレクションよりimmutableコレクションを推
奨していることも重要。
immutableは、Concurrentプログラムの最適化の可能性、プログラムをTestableに
しやすい等々利点がいっぱい。
・パターンマッチ
手続き的言語ベースの構文の中でパターンマッチをうまく表現した。
case classのアイデアは、さらに改良されて他の言語にも今後取り入れられるだろう。
パターンマッチがなかったころは、形式チェックと値取り出し、変数定義と分解を分け
て行わなければならなかったため、間にバグが入り込みやすかった。
12/21
言語の進化としてのScalaの功績 2/5
2. Concurrentプログラムの抽象化
・アクターモデルの採用
生のスレッドを使う時代はFree Lunch(*)とともに終わった。
共有メモリにアクセスするためにlock/unlockを書くような危険な行為は、ユーザー
にさせてはいけない。
Scalaはアクターモデルを採用することで、Concurrentプログラムにおける
「安全地帯」を生み出した。
13/21
* 昔々、プログラムもコンピュータも遅かったころ、プログラムの改良をせずに
ムーアの法則でコンピュータが速くなるのを待ってるだけでよかった時代があった。
シングルコアの改良に限界がきてマルチコアの時代が訪れたとき
「Free Lunch Is Over(タダ飯の時間は終わりだ)」という宣言がなされ、
並列プログラミングの時代がはじまった。
言語の進化としてのScalaの功績 3/5
3. Genericsの進化
・Structual Subtypingの採用
Scalaでは、「Tという型はfooというメソッドを持っていれば継承関係になくていい」と
いうのを表現できるようになったため、インタフェースの定義/実装にとらわれずに
よくなった。
// ※継承関係にない
class Rectangle { def draw = println(“Rectangle”) }
class Circle { def draw = println(“Circle”) }
// drawというメソッドを持っていればいい
type Drawable = { def draw: Unit }
// 同じリストに入れる
val ls = List[Drawable](new Rectangle, new Circle)
ls foreach(_.draw)
14/21
言語の進化としてのScalaの功績 4/5
4. 例外を必要としないエラーハンドリング
・さよならtry/catch
try/catchはプログラムを冗長にした。
Scalaでは、
・パターンマッチ
・Option(無効/エラー値と正常値を表現)
・Either(エラー情報付きOption。なぜかあまり使われていない)
を標準で採用することで、しばしば冗長になるtry/catchを事実上不要にした。
ここで重要なのは、例外が必須(デフォルト)ではなくなったことにより、例外が真に
必要なケースを議論できるようになったこと。
15/21
言語の進化としてのScalaの功績 5/5
5. 言語内DSLを作りやすい設計
・復活の演算子オーバーロード、ようこそユーザー定義演算子
ユーザー定義型は組み込み型と同じように振る舞えるようにできるという思想の
元にC++で採用された演算子オーバーロード。
デバッグしにくいという理由でJavaは不採用とし、「演算子オーバーロードは悪」と
いう文化を産み出してしまった。
Scalaでは、C++(演算子オーバーロード)やHaskell(ユーザー定義演算子)の思想を
正しく引き継ぎ[要出典(*)]、これらを採用した。
これにより、ベクトルや行列といったクラスを設計する際に演算子が使用できるよ
うになり、言語内DSLのためにユーザーが好きに意味を持たせることのできる演算
子を定義できるようになった。
* Odersky先生がこのへん何も書いてない・・・
16/21
言語の普及のさせ方
• Scalaは、Java/C#と対話しやすい言語を目指し、これら
の言語からユーザーを獲得しようと目論んでいる。
• これはC++がCに対して行った戦略と酷似している。
• C++はこの方法によりたしかに普及したが、
多くのレガシーコードを産み出してしまった。
• Scalaコミュニティはこの過去から学ばないといけない。
17/21
Scalaへの不満/今後に向けて 1/3
1. 可変長型引数がない。
それを表現するためのコードジェネレート(マクロ)機能が言語に備わっていない。
メタプログラミング周りのサポートが弱い。
これを実現している言語は現状、私が知る限りC++とDしかない。Scalaでは可変
長型引数がないため、コピペコードが標準ライブラリ内でも量産されている。
18/21
Scalaへの不満/今後に向けて 2/3
2. ScalaのGenericsはそれでもテンプレートに勝てない(まだ発展
途上)。
C++で言うところの部分特殊化、パラメータ化継承を表現でき
ない等、型引数に対する操作が制限されている。
パラメータ化継承は、いまのErasureベースのGenericsではム
リらしい(みずしまさん談)
19/21
テンプレートは、不明瞭なコンパイラメッセージの欠陥が
あるにも関わらず、いまだgenericity hillのkingである。
- Herb Sutter
Scalaへの不満/今後に向けて 3/3
3. 定数式が弱い。
静的型付け言語の特徴として、コンパイル時にできる限りの
エラーをとる、というものがあるが、コンパイル時に可能な限
りの計算を行えるのもまた静的型付け言語ならでは。Scalaは
それを生かしきれていない。
Javaは携帯ゲームの開発といったパフォーマンス、サイズ制
限の厳しい環境でも使われているため、Scalaが定数式の強
力なサポートを導入すればJavaを置き換える理由になりえる。
コンパイル時計算はD言語が強力で、文字列操作、数値計
算、関数呼び出し、if、foreach等、かなりのことをコンパイル
時に解決する。コンパイルタイムデバッガまである。
20/21
まとめ
これは私の個人的な見解をまとめたに過ぎません。
マルチパラダイムや言語の進化について考えるには
より多くの意見が必要です。
ぜひみなさんの意見も聞かせてください。
21/21

Más contenido relacionado

Destacado

Destacado (7)

Rpscala18th
Rpscala18thRpscala18th
Rpscala18th
 
Rpscala2011 0601
Rpscala2011 0601Rpscala2011 0601
Rpscala2011 0601
 
Scala repl
Scala replScala repl
Scala repl
 
rpscala35-scala2.9.0
rpscala35-scala2.9.0rpscala35-scala2.9.0
rpscala35-scala2.9.0
 
Scala design pattern
Scala design patternScala design pattern
Scala design pattern
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
Grass
GrassGrass
Grass
 

Similar a Scala lang evolution

LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介Shoken Fujisaki
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築You&I
 
S01 t1 tsuji_pylearn_ut_01
S01 t1 tsuji_pylearn_ut_01S01 t1 tsuji_pylearn_ut_01
S01 t1 tsuji_pylearn_ut_01Takeshi Akutsu
 
RustでWebSocketな自社APIを使う
RustでWebSocketな自社APIを使うRustでWebSocketな自社APIを使う
RustでWebSocketな自社APIを使うSatoshi Yoshikawa
 
ローカルストレージでの永続化キューの方式を本気で比較してみた
ローカルストレージでの永続化キューの方式を本気で比較してみたローカルストレージでの永続化キューの方式を本気で比較してみた
ローカルストレージでの永続化キューの方式を本気で比較してみたStudy Group by SciencePark Corp.
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデルYuta Kashino
 
20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのか20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのかKatsunori Kanda
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開Hideki Takase
 
gRPCをちょこっと調べた話
gRPCをちょこっと調べた話gRPCをちょこっと調べた話
gRPCをちょこっと調べた話Shuzo Kashihara
 
Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014Yoshiki Shibukawa
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったHironobu Saitoh
 
研究生のためのC++ no.6
研究生のためのC++ no.6研究生のためのC++ no.6
研究生のためのC++ no.6Tomohiro Namba
 
実際、 東京と福岡の Shop チームは 仲がよいのかどうかについて
実際、東京と福岡の Shop チームは仲がよいのかどうかについて実際、東京と福岡の Shop チームは仲がよいのかどうかについて
実際、 東京と福岡の Shop チームは 仲がよいのかどうかについてLINE Corporation
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発Kota Mizushima
 
Swiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみようSwiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみようKanako Kobayashi
 
WikiWikiアジャイル
WikiWikiアジャイルWikiWikiアジャイル
WikiWikiアジャイルFumio Kawakami
 

Similar a Scala lang evolution (20)

LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
Boost container feature
Boost container featureBoost container feature
Boost container feature
 
Cppmix 01
Cppmix 01Cppmix 01
Cppmix 01
 
S01 t1 tsuji_pylearn_ut_01
S01 t1 tsuji_pylearn_ut_01S01 t1 tsuji_pylearn_ut_01
S01 t1 tsuji_pylearn_ut_01
 
RustでWebSocketな自社APIを使う
RustでWebSocketな自社APIを使うRustでWebSocketな自社APIを使う
RustでWebSocketな自社APIを使う
 
ローカルストレージでの永続化キューの方式を本気で比較してみた
ローカルストレージでの永続化キューの方式を本気で比較してみたローカルストレージでの永続化キューの方式を本気で比較してみた
ローカルストレージでの永続化キューの方式を本気で比較してみた
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
 
20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのか20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのか
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
 
gRPCをちょこっと調べた話
gRPCをちょこっと調べた話gRPCをちょこっと調べた話
gRPCをちょこっと調べた話
 
Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
 
研究生のためのC++ no.6
研究生のためのC++ no.6研究生のためのC++ no.6
研究生のためのC++ no.6
 
Recommend scala
Recommend scalaRecommend scala
Recommend scala
 
実際、 東京と福岡の Shop チームは 仲がよいのかどうかについて
実際、東京と福岡の Shop チームは仲がよいのかどうかについて実際、東京と福岡の Shop チームは仲がよいのかどうかについて
実際、 東京と福岡の Shop チームは 仲がよいのかどうかについて
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
Swiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみようSwiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみよう
 
WikiWikiアジャイル
WikiWikiアジャイルWikiWikiアジャイル
WikiWikiアジャイル
 
Sphinx/reST
Sphinx/reSTSphinx/reST
Sphinx/reST
 

Más de Akira Takahashi

Más 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
 
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 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
 
Executors and schedulers
Executors and schedulersExecutors and schedulers
Executors and schedulers
 
Improvement future api
Improvement future apiImprovement future api
Improvement future api
 

Último

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Último (9)

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

Scala lang evolution