私の名前はGolovach Ivanです。私はScalaに切り替えた10年以上のプログラミング経験(Java EE、J2ME、C、C ++、M言語、Delphi)を持つJavaテクニカルリードプラクティショナーです。
私は、通常のプログラミングコース( Java Core + Junior Java Developer )と特別なコース(JVMのマルチコアプログラミング( 1つおよび2つ ))の両方を準備し、読みました。
現時点では、 Scalaの特別コースを開始しています。このトピックでは、最も興味深く有益な資料を共有したいと思います(コースは1年以上準備されました)。
コースプログラム
材料:「その他」
マテリアル:Scalaでのオブジェクト指向プログラミング
マテリアル:Scalaでの関数型プログラミング
材料:高級な種類
材料:パーサーコンビネーター
マテリアル:メタプログラミング/リフレクション
材料:メタプログラミング/マクロ
材料:スカラズ
材料:網
材料:アッカ
材料:フィナグル
材料:ズーキーパー
資料:金融業界でのFPの使用
コースプログラム
Scala特別コースの目的
1.マクロ、パス依存型、上位のジェネリックなどの「ダークコーナー」を含む言語を詳細に研究する。 内部および外部DSLの作成方法を学びます。 なぜ関数型プログラミング言語が金融業界でこれほど人気があるのかを理解するため。
2.関数型プログラミング言語(特にScala)でコードを記述するときに、代数とカテゴリー理論を参照する数学ライブラリがよく使用される理由を理解します。
3.なぜ最近のスタートアップ(TwitterやLinkedInなど)がScalaでインフラストラクチャを作成するのかをご覧ください。
特別コースは2015年2月27日に始まり、2〜2.5時間の16のウェビナーで構成されます。 期間3か月(週1〜2レッスン)。 すべての講義はビデオに記録され、学生に提供されます。 必要な資料はすべて電子形式で提供されます。 私はウェビナー中とそれ以外の時間の両方で質問に答えます。 Scalaを並行して学習している他の15〜20人の学生とコミュニケーションを取る機会があります。
- モジュール#1(4回の講義):基本的なScala
このモジュールのタスクは、Scalaで「毎日の」タスクを解決する構文と方法を検討することです
- 「その他」
- ローカル型推論、統一型
- 構造型、タプル
- ジェネリック:分散、上限/下限、存在タイプ
- 遅延値、DelayedInit特性、アプリ/アプリケーション
- 暗黙的、ビュー、ビューの境界
- シーケンスの理解
- 注釈、例外
- XMLを操作する
- Scalaのコレクションライブラリ、配列
- オブジェクト指向プログラミング
- クラス、オブジェクト、特性
- 型メンバー、抽象型
- 明示的に型指定された自己参照
- Mixinクラスの構成、複合型、階層線形化
- ケーキ柄
- 関数型プログラミング
- 機能タイプ、匿名関数、ネストされた関数、カリング、部分適用
- メソッド/関数、演算子(プレフィックス、インフィックス、ポストフィックス、結合性)、ゼロビット+非ビット書き込み
- 名前によるコール/値によるコール、名前付きおよびデフォルトのパラメータ
- パターンマッチング、ケースクラス、抽出オブジェクト
- 「その他」
- モジュール#2(4回の講義):高度なScala
モジュールのタスクは、JavaにはないScalaの機能を詳細に調べることです。
- 依存型
- 上位の種類
- パーサーコンビネーター
- メタプログラミング=リフレクション+マクロ
- モジュール#3(4回の講義):Scalaのタイプアクロバティックライブラリ
モジュールのタスクは、(タイプと言語機能のシステムを使用するという意味で)最も高度なライブラリ、それらの記述方法、それらで何ができるかを検討することです。
- Scalaz-ちょっとしたカテゴリー理論(モナド、適用ファンクター、カタモフィズムなど)
- Shapeless-型クラスと依存型ベースの汎用プログラミングライブラリ
- Algebird-またはTwitterが代数を使用する方法(モノイド、グループ、ハーフリング、...)
- モジュール#4(4回の講義):マルチスレッド、ネットワーク、および分散プログラミング
モジュールのタスクは、JVMで最も一般的なネットワークライブラリを検討することです。これは、多くの場合、大規模な分散システムの「ビルディングブロック」です。 TwitterがScalaで書かれている理由を理解してください。
- 網
- あか
- フィナグル
- 飼育係
材料:「その他」
Scala入門記事
これらの記事は、言語の簡単な概要です(15〜20ページ)。 彼らはイデオロギー的/歴史的である可能性が高い-著者自身(Odersky)が彼の発案を見ているので、彼はそれを最も重要/独特/特徴と考えています。
- Scalaプログラミング言語のツアー」 、Odersky + ...
- 「Scalaプログラミング言語の概要」 、2ed、Odersky + ...
- 「Javaプログラマ向けScalaチュートリアル」 、Michel Schinz、Philipp Haller
Scalaスタイルガイド
主要なScalaの記事
これらの記事は、言語の基本的な特徴を明らかにし、明確にします。
- スケーラブルなコンポーネント抽象化 、Odersky + .... 再利用可能なコンポーネントを構築するための3つのプログラミング言語の抽象化を識別します。 抽象型のメンバー 、 明示的なセルフ タイプ 、およびモジュラーミックスイン構成です。 これらの抽象化により、静的プログラムパーツの任意のアセンブリとそれらの間のハードリファレンスを再利用可能なコンポーネントのシステムに変換することができます。
- 「オブジェクトおよび暗黙的としての型クラス」 、Odersky + ...、 型クラスは、もともとアドホックなポリモーフィズムに対する規律のある代替手段としてHaskellで開発されました。 型クラスは、ソフトウェアエンジニアリングやプログラムの遡及的拡張などのプログラミング言語における重要な課題に対する型安全なソリューションを提供することが示されています。 また、 概念ベースの汎用プログラミングの優れたメカニズムとして認識されており、最近では型レベルの計算のメカニズムに進化しています 。 このホワイトペーパーでは、 CONCEPTパターンと暗黙的 (型指定の暗黙的なパラメーター受け渡しメカニズム)を使用したジェネリックを使用した、オブジェクト指向(OO)言語の型クラスへの軽量なアプローチを示します。
- 「パターンとオブジェクトのマッチング」 、Odersky + ...、 Caseクラス / Extractorとの栄光のパターンマッチング +より古典的なソリューションとの比較( Visitor 、 Type-Test / Type-Cast 、...)
Scalaコース/コレクション
小さな本の資料に到達するが、本には到達しない。 「クラシック」から。
- Scalaの学習
- 小口でScalaを学ぶ
- Twitter.com:Scala School!
- Odersky + Coursera = "Scalaの関数型プログラミングの原則"
- Odersky + Coursera =「リアクティブプログラミングの原則」
はい、 Courser自体はScalaで書かれています。
本
Scalaには多数の書籍(約20冊)が市場に出回っていますが、私は次の4冊が一番好き
- 「Scalaでのプログラミング。 2ed " -古典的なOderskyの本は必読
- 「短気のためのスカラ」 -同志ホルストマン、そして管理。 彼の2巻のJavaの本が気に入ったら、試してみる価値があるかもしれません。
- Scalaの詳細 -優れたカバレッジ:基本から高度なポイントまで
- 「DSLの実際」-DSLをScalaに実装する方法
マテリアル:Scalaでのオブジェクト指向プログラミング
- 「式の問題に対する独立して拡張可能なソリューション」 、Odersky + .... 「古典的な」表現問題のScalaソリューションが提案されています。 この問題の解決策の一部は、継承(エンティティの拡張)と訪問者テンプレート(操作の拡張)です。しかし、Oderskyはより興味深い問題を解決します-独立した拡張とエンティティと操作を同時に配置します。
- 「Scala's Selfless Trait Pattern」 、Bill Venners-Scalaで継承を操作するための単なる名前付きテンプレート
- 「ScalaのStackable Traitパターン」 、Bill Venners-名前付きScala継承パターン
マテリアル:Scalaでの関数型プログラミング
Scalaの関数型プログラミングは、Scalazの貢献者の1人による強力な本です。
材料:高級な種類
- 「Fighting Bit Rot with Types」 、Odersky + ...-バージョン2.8向けのScalaコレクションのリファクタリングについて説明します。
材料:パーサーコンビネーター
Scalaには、EBNFに近い形式でScala外部DSL文法を記述するためのツールを提供するパッケージ( scala.util.parsing )が含まれています。 つまり 「外部DSL」を作成するための「内部DSL」です。
Scalaでは、パーサーはモナドとして実装されます。したがって、パーサーのコンビネーターの定義は、シーケンス、交替、またはその他の合成操作を実装するモナド変換にすぎません。
多くのサブジェクト領域で、いくつかのプリミティブ要素(この場合はパーサー)の形式でAPIを構築し、これらの要素を特定の方法で結合する方法(コンビネーター)を作成できます。 この場合、言語のコアには、外部DSLを構築するために必要なものがすべて含まれています。
- 「Parala Combinators in Scala」 、Odersky + ...、-この記事では、独自のライブラリParser Combinatorsを徐々に作成し、scala.util.parsingと比較します。 簡単な算術式、xml、変数バインディングを追跡するラムダ計算のパーサーが構築されます
- 「Combinator Parsing、Chapter 31 Programming in Scala、First Edition」は、Martin Odersky、Lex Spoon、およびBill Vennersによる基本的なチュートリアルです。 算術式のパーサーjsonが構築されます。 2番目のエディションがありますが、パブリックドメインでは利用できません。
- Monadic Parser Combinators 、Hutton + Meijer
-Oderskyと彼の仲間がScalaのパーサーコンビネーターを設計する際に依存した記事の1つ - 「失敗を成功のリストで置き換える方法:遅延関数言語 、Wadler での例外処理、バックトラッキング、およびパターンマッチングの方法
- »解析のための高階関数 " 、Hutton
- 機能的パーサー 、フォッカー
- 「確定的、エラー修正コンバイナパーサー」 、Swierstra + Duponcheel
- 「パーセク:ダイレクトスタイルモナディックパーサーコンビネータ:現実世界のために」
- 「Packrat解析:シンプル、パワフル、レイジー、線形時間」
- 「Haskellのモナディック解析」
- 「Pickler Combinators(機能的な真珠)」 -Haskellのpicklerは、それを「シリアライザー」と呼びます。これは、メモリ内のオブジェクトをバイト配列に変換するための特別な関数です。 基本型のpicklerの組み合わせとして受け取る複雑なデータ構造のpicklerを構築することが提案されています。 この真珠は実際に動機付けられていました:picklerライブラリのSMLバージョンはSML.NETコンパイラ内で使用されます。 picklerコンビネーターの本質的な新しい要素は、ピクルスとアンピクルのアクションを単一の値に結び付けることです。
- 「インスタントピクルス:オブジェクト指向のPicklerコンビネータを生成して高速で拡張可能なシリアル化を実現」 Miller、Haller、Burmako、Odersky-Scalaの同様のアプローチ(前の記事)
- 「解析用の高次関数でも、なぜ6次関数を使用したいのでしょうか?」 (機能的な真珠)」 、クリス岡崎-パーサーは、入力を受け取り、解析の結果を何らかの形式に戻す1次関数です。 パーサーコンビネーターは、1次関数(パーサー)を取り、1次関数(パーサー)を返す2次関数です。 クリス岡崎は合理的な6次関数を見つけることができました!!! パーサーに関連付けられています。
マテリアル:メタプログラミング/リフレクション
マクロの特に興味深い点は、パッケージscala.reflect.apiで提供されるScalaのランタイムリフレクションにも使用される同じAPIに基づいていることです。 これにより、ランタイムリフレクションを利用するマクロと実装間で汎用コードを共有できます。
2.10まで、Scalaには独自のリフレクション機能がありませんでした。 代わりに、JavaリフレクションAPIの一部、つまり、クラスとオブジェクトを動的に検査し、そのメンバーにアクセスする機能を提供するものを使用できます。 ただし、スタンドアロンのJavaリフレクションではScala固有の要素の多くは回復できません。Javaリフレクションは、Java要素(関数、特性なし)および型(存在、高種類、パス依存、および抽象型なし)のみを公開します。 さらに、Javaリフレクションは、コンパイル時に汎用であるJava型のランタイム型情報を回復することもできません。 Scalaのジェネリック型のランタイムリフレクションに引き継がれる制限。
Scala 2.10では、新しいリフレクションライブラリが導入され、Scala固有およびジェネリック型に関するJavaのランタイムリフレクションの欠点に対処するだけでなく、Scalaに汎用リフレクション機能のより強力なツールキットも追加されました。 Scalaタイプとジェネリックの場合...
- 「Scala-lang.org:Reflection:Overview」ミラー、ブルマコ、ハラー
- 「Scala-lang.org:Reflection:Environment、Universes、and Mirrors」ミラー、ブルマコ、ハラー
- 「Scala-lang.org:Reflection:Symbols、Trees、and Types」ミラー、ブルマコ、ハラー
- 「Scala-lang.org:リフレクション:注釈、名前、スコープなど」ミラー、ブルマコ、ハラー
- 「Scala-lang.org:Reflection:TypeTags and Manifests」ミラー、ブルマコ、ハラー
材料:メタプログラミング/マクロ
マクロの特に興味深い点は、パッケージscala.reflect.apiで提供されるScalaのランタイムリフレクションにも使用される同じAPIに基づいていることです。 これにより、ランタイムリフレクションを利用するマクロと実装間で汎用コードを共有できます。
マクロのフレーバーは、タイプセーフと豊富な構文を組み込むように適合されたLispマクロを連想させます。 悪名高いC / C ++プリプロセッサマクロとは異なり、Scalaマクロ:1)本格的なScalaで記述されている、2)生の文字列ではなく式ツリーで動作する、3)Scalaの構文を変更できない [ ここ ]
マクロは、コンパイル中にコンパイラーによって呼び出される関数です。 これらの関数内で、プログラマはコンパイラAPIにアクセスできます。 たとえば、コードを生成、分析、およびタイプチェックすることができます。 マクロの詳細については、ドキュメントをご覧ください。 [ ここ ]
Defマクロは、バージョン2.10.0以降、Scalaの実験的な機能として出荷されています 。 完全な仕様が保留されているdefマクロのサブセットは、Scalaの将来のバージョンの1つで安定するように暫定的にスケジュールされています。
実験的な機能 -また、マクロは実験的で高度な機能と見なされるため、マクロを記述するためにはマクロを有効にする必要があります。 ファイルごとにscala.language.experimental.macrosをインポートするか、コンパイルごとに-language:experimental.macros(コンパイラスイッチを提供)でインポートします。 ただし、ユーザーは何も有効にする必要はありません。マクロは通常のメソッドのように見え、コンパイラの切り替えや追加の構成なしで通常のメソッドとして使用できます。
- "Scala-lang.org:Def Macros" Burmako-scala-lang.orgのマクロの概要
- “ Scala-lang.org:Quasiquotes” Shabalin-準シタットレビュー
- "Scala-lang.org:マクロバンドル" Burmako-マクロバンドルの概要
- Scala Macros、a Technical Report 、Burmako + Odersky
- 「マクロの利点」 、Burmako-マクロはコード生成、静的チェック、ドメイン固有言語に適しています
- 「Scala Macros:私たちの力を組み合わせよう! リッチシンタックスと静的型がメタプログラミングでどのように機能するか» Burmako
- Scala Macros、技術レポート Burmako、Odersky
- 「Scalaの準クォート、テクニカルレポート」 Shabalin、ブルマコ、オーデルスキー-Scalaプログラミング言語の準クォートを紹介します。これは、手動によるツリーの構築と解体の問題を解決します。 含まれるケーススタディは、準クォートが実際にツリー構築のための既存のツールよりも扱いやすいことを示しています。 現在の実装の制限が解除されると、準クォートがツリー操作の究極のツールになります。
- 「Yin-Yang:DSLの深い埋め込みを隠す」 Jovanovic、Shaikhha、Stucki、Koch、Odersky、Nikolaev-マクロを使用して「深く埋め込まれたドメイン固有言語」を構築するツールであるYin-Yangライブラリー
材料:スカラズ
- Learning Scalazは、22レッスンの優れたオンラインチュートリアルです。
- Scalaz-初心者向けリソース -Scalazリンクの大規模な選択
- 「Scalaのカテゴリ理論の紹介」
- 「アプリケーションは一般化されたファンクターです」
- Apocalispブログ -「Functional Programming Scala」著者の古いブログ
- 高次。 哲学と関数型プログラミング。 -「Functional Programming Scala」著者の新しいブログ
- 「Scalaz:残りのために」 -カテゴリの理論を理解せずにScalazでできること
材料:網
Netty-メンテナンス可能な高性能プロトコルサーバーおよびクライアントを迅速に開発するための、非同期でイベント駆動型のネットワークアプリケーションフレームワーク。 Nettyはjava.netを使用するためのデファクトスタンダードです*、NIOおよびNIO.2(AkkaとFinagleはNettyを使用し、ZookeeperはNIO / NIO.2の「内部」で直接使用されます)。 Reactor / Proactor / Asynchronous Completion Token / Acceptor-Connector非同期メッセージ処理テンプレートを直接実装することはできますが、これには多くのテンプレートコードが含まれ、サブジェクト領域の機能がわかりにくくなります。 Nettyの利点は、宣言型コードと、ライブラリがプロトコルコンストラクター(http、ftp、smtp、websockets、...)であるという事実の両方です。
- 例の完全なコード:io.netty.example.echo。* -Nettyの単純なエコークライアントとエコーサーバー
- 例の完全なコード:io.netty.example.telnet。* -Netty上の単純なtelnetクライアントおよびtelnetサーバー
- 例の完全なコード:io.netty.example.factorial。*
- 例の完全なコード:io.netty.example.http。* -Netty上の単純なhttpクライアントおよびhttpサーバー
- 例の完全なコード:io.netty.example.socksproxy。* -Netty上の単純なSOCKS5プロキシ
- Netty Best Practices -Netty in Actionの著者からのヒント
- TwitterのNetty 4:GCオーバーヘッドの削減
- 関連記事 -Nettyが推奨する100以上の記事のリスト。
材料:アッカ
Akkaは、JVMのマルチスレッドおよび分散アクタベースアーキテクチャの事実上の標準フレームワークです。 Scalaバージョン2.10.0から、Akkaはアクターのネイティブ実装に取って代わりました 。
- 用語、概念 -並行性vs. 並列処理、非同期vs. 同期、ノンブロッキングと ブロッキング、デッドロックvs. 飢vと ライブロック、競合状態、ノンブロッキング保証(進行状況)
- アクターシステム -階層構造、構成コンテナー、アクターベストプラクティス
- 俳優とは何ですか? -アクターリファレンス、状態、動作、メールボックス、子供、スーパーバイザー戦略
- スーパーバイザーとモニタリング
- アクターの参照、パス、アドレス
- AkkaとJavaメモリモデル-Javaメモリモデル、アクターとJavaメモリモデル、フューチャーズとJavaメモリモデル、STMとJavaメモリモデル、アクターと共有可変状態
- メッセージ配信配信
- Scala API:アクター
- Scala API:型付きアクター
- Scala API:イベントバス
- Scala API:スケジューラー
- Scala API:先物
- Scala API:データフローの同時実行性
- Scala API:フォールトトレランス
材料:フィナグル
Finagle-高並行性サーバーの構築に使用される、JVM用のプロトコルに依存しない拡張可能なRPCシステム。 twitter.comで作成および使用。 基本原則は「ローカルでプログラミングし、グローバルに通信する必要がある」です。 Twitterスタックの一部(ダチョウ、Zipkin、Mesos、Iago、ZooKeeper、Scaldingとともに)。 Finagleには、負荷分散、接続プーリング、タイムアウト付きの呼び出し、監視、統計収集が含まれます。
- Finagleコンポーネントの簡単な説明:- プロトコル 、 フューチャー 、 サービスとフィルター 、 サーバー 、 クライアント 、 名前 、 メトリック
- Finagle:プロトコルに依存しないRPCシステム -FinagleのTwitter投稿
- 「ScalaとFinagleフレームワークを使用して簡単な分散検索エンジンを構築する方法」 -プロジェクトTwitter.com / Scala schoolのフレームワークでの講義。
- 「Thrift:スケーラブルなクロス言語サービスの実装」は、Thriftプロトコルに関するリファレンス記事です。 このプロトコルは、Finagleで最も人気のある「キャリアプロトコル」です。
材料:ズーキーパー
Zookeeperは、構成情報、ネーミング、分散同期、およびTwitterスタックの一部である他のグループサービスを管理するためのフェイルセーフの集中型サービスです。 キュー、ロック、バリアなどの基本的なデータ構造(クラスター)を作成するために使用できます。 2フェーズコミット、リーダー選出などの分散アルゴリズムに適しています。
- 「ZooKeeperプログラマーズガイド」は適切な説明です(データモデル、セッション、ウォッチ、アクセス制御、一貫性の保証、一般的な問題とトラブルシューティング)。
- 「ZooKeeperを使用したプログラミング-基本的なチュートリアル」 -障壁の実装例とメーカーと消費者のアーキテクチャ。
- ZooKeeper内部 -アトミックブロードキャスト、リーダーアクティベーション、クォーラム
- 「ZooKeeperのレシピとソリューション」-Zookeeperに基づいて分散バリア、キュー、ロックを作成します。 2フェーズコミットおよびリーダー選挙を行います。
- 「疎結合分散システム用のチャビーロックサービス」-Googleのライブラリの説明。 Zookeeperは、この記事を含め、収集したアーキテクチャに基づいて作成されました。
- 「Zab:プライマリバックアップシステム用の高性能ブロードキャスト」は、Zookeeperの基礎となるZabプロトコルの説明です。
- 「ZooKeeper:インターネット規模のシステムの待機なしの調整。」はYahooの基本的な記事です(そして、ZookeeperはHDFS / Hadoopクラスターを調整するために設計されました)。
- 「ZooKeeper-信頼性が高くスケーラブルな分散調整システム」 -infoq.comの記事
資料:金融業界でのFPの使用
多くの理由(コンビネーターの言語で主題分野を記述する能力)のために、彼らは金融業界で関数型プログラミング言語を使用することを好み、それはニューヨークとロンドンで「関数型」の需要を生み出します。
- 契約の作成:金融工学の冒険 、Simon Peyton Jones + ...は、Haskellでの金融契約の導入に関するHaskellの基本的な記事です。 「このようなコントラクトを正確に記述することができるコンビネーターライブラリと、そのようなコントラクトの価値を示す構成的表示のセマンティクスを紹介します。 Haskellのコンビネーターライブラリの実装をスケッチします。 興味深いことに、遅延評価は重要な役割を果たしています。」 「金融業界には、金融契約の典型的な組み合わせ(スワップ、先物、キャップ、オール、スワップション、スプレッド、ストラドル、キャプション、ヨーロッパのオプション、アメリカのオプションなど)の専門用語の膨大な語彙があります。」 「当社のコンビネータを使用して契約を説明できますが、契約を処理することもできます。 特に、契約の価値を見つけたいと考えています。 セクション4では、コンビネータに抽象的な評価セマンティクスを与える方法について説明します。 このセマンティクスの基本的に重要な特性は、構成的であるということです。 つまり、複合コントラクトの値は、そのサブコントラクトの値を組み合わせることによって与えられます。
- 「商業用途:エキゾチックな取引で機能する」 -バークレイズで金融商品を扱うために使用されるDSLの説明(Haskell)。 「Functional Payout Framework(fpf)は、組み込みのドメイン固有の機能言語を使用して、エキゾチックな金融派生商品を表現および処理するHaskellアプリケーションです。 エキゾチックなデリバティブの価格設定のためのスクリプト言語は銀行では一般的ですが、fpfは複数の解釈を使用してそのような取引の価格を設定するだけでなく、ライフサイクルサポートなどを提供するスクリプトを分析します»
- 「EDF Tradingのスカラ。 Scalaでのデリバティブ価格設定のためのドメイン固有言語の実装。」 -「DIESELは、モンテカルロの価格設定と分析を容易にするためにエネルギーデリバティブを表すための言語です。 DSLは、コンビネーターパーサーライブラリと代数データ型とケースクラスで構成されています。
- 「商業契約の構成仕様」
- 「金融商品を記述するための言語の代数的仕様」 -「銀行環境で適用される言語の開発中に、正式な方法とサポートツールを使用することについて報告します。 RISLAと呼ばれるこの言語は、銀行が提供する利息商品の性質を定義するために使用されます。 RISLA記述は、製品から生じるキャッシュフロー(特定の日付で出入りする金額)を修正します。 「この言語は代数的仕様を使用して開発されており、その役割について説明します。」
- 「ドメイン固有の言語とオブジェクト指向フレームワーク:金融工学のケーススタディ」 -「ドメイン固有の言語を使用すると、そのドメインで読みやすく保守可能なアプリケーションを簡単に開発できます。 あるいは、オブジェクト指向フレームワークを設定することで同じ目的を達成できます。 金融工学の分野では、オブジェクト指向フレームワークとドメイン固有の言語の両方が独立して開発されています。 この機会を利用して、これら2つを比較し、違いを強調し、相互利益の機会について話し合います。」
- 「金融工学とソフトウェア工学の冒険」
- 「金融分野固有の言語リスト -豊富な種類の金融API / DSL
PSご質問にお答えします
スカイプ:GolovachCourses
メール:GolovachCourses@gmail.com