10 - 高度なプログラミング
手続き型・システムプログラミング
Relevant DSS-P Skills
- 3. テクノロジー > 3.1 ソフトウェア開発 > コンピュータサイエンス
Rust 言語
- Rust - 誰もが信頼性が高く効率的なソフトウェアを構築できるようにするプログラミング言語です
- Ownership and borrowing - Rust プログラムがメモリをどのように管理するかを規定する一連の規則です
- Interior mutability - そのデータへの不変参照が存在する場合でも、データを変更できるようにする Rust の設計パターンです
- Closure - 変数に保存したり、他の関数への引数として渡したりできる匿名関数です
- Trait-based generics - 型が提供しなければならない振る舞いを定義する方法であり、指定された振る舞いを実装する任意の型に対して動作する汎用的なコードを可能にするものです
- Lifetime - すべての借用が有効であることを保証するためにコンパイラが使用する構成要素です
- Module Pin - データをメモリ上の位置に固定する型を提供するモジュールです
- ツール
- C2Rust - ほとんどの C モジュールを意味的に等価な Rust コードに変換できるツールです
- チュートリアル
- Rust by Example - さまざまな Rust の概念と標準ライブラリを説明する、実行可能なサンプルのコレクションです
Go 言語
- Go - Google がサポートするオープンソースのプログラミング言語です
- コア機能
- Go Modules - Go プログラミング言語のための依存関係管理システムです
- Defer, panic and recover - Go における強力ですが特異な制御フロー機構です
- Pointer receiver - 型へのポインタに対して動作し、レシーバーが指す値を変更できるようにするメソッドです
- Interface - メソッドシグネチャの集合として定義される型です
- Goroutine - Go ランタイムによって管理される軽量スレッドです
- Channel - チャネル演算子
<-を使って値を送受信できる、型付けされた導管です
- ライブラリ
- Awesome Go - 優れた Go のフレームワーク、ライブラリ、ソフトウェアを厳選したリストです
- lo - Lodash スタイルの Go ライブラリです
- fp-go - 関数型プログラミングのヘルパー集です
- shortuuid - 簡潔で曖昧さがなく URL セーフな UUID を生成するライブラリです
- ツール
- Go binary size SVG treemap - Go 実行ファイルのサイズのツリーマップを作成する CLI ツールです
- mvm - コンパイルなしでソースコードから直接 Go プログラムを実行できるようにする、Go 用の高速な仮想マシンです
- チュートリアル
- Effective Go - 明確でイディオマティックな Go コードを書くためのヒントを提供するドキュメントです
- Go by Example - 注釈付きのサンプルプログラムを使った Go の実践的な入門です
- Learn Go with tests - 初日からテストを含む Go の基 礎を教えるリソースです
- コア機能
C とその他の手続き型言語
- C - 構造化プログラミング、レキシカルな変数スコープ、再帰をサポートする、静的型システムを備えた汎用手続き型コンピュータプログラミング言語です
- Macros - 名前が付けられたコードの断片です
- Zig - 堅牢で最適かつ再利用可能なソフトウェアを保守するための汎用プログラミング言語およびツールチェーンです
- Comptime - コンパイル時にコードを実行できるようにする仕組みです
関数型・ハイブリッドプログラミング
Relevant DSS-P Skills
- 3. テクノロジー > 3.1 ソフトウェア開発 > コンピュータサイエンス
関数型優先・マルチパラダイム言語
- F# - 簡潔で堅牢かつ高性能なコードを書くための汎用プログラミング言語です
- 不変データ構造
- Discriminated union - いくつかの異なる、しかし固定された型のいずれかの値を格納できる型です
- Active pattern - 入力データを分割する名前付きのパーティションを定義できる機能であ り、これらの名前をパターンマッチング式で使用できるようにするものです
- Computation expression - 制御フロー構造とバインディングを使って順序付けたり組み合わせたりできる計算を記述するための、便利な構文を提供する機能です
- OCaml - 表現力と安全性を重視した、実用に耐える関数型プログラミング言語です
- Functor - 別のモジュールによってパラメータ化されたモジュールです
- Haskell - 高度な純粋関数型プログラミング言語です
- 純粋関数型
- Lazy evaluation - 式の値が必要になるまで、その評価を遅らせる評価戦略です
- Elixir - スケーラブルで保守しやすいアプリケーションを構築するための動的な関数型言語です
- Process - 分離されており、メッセージを介して情報をやり取りする軽量な実行スレッドです
- Power Fx - Microsoft Power Platform 全体で使用される、汎用的で強く型付けされた宣言型かつ関数型のローコード言語です
マルチパラダイム・ハイブリッド言語
- Java - 第 1 位のプログラミング言語であり開発プラットフォームです
- Built-in concurrency support - 並行プログラミングをサポートするために根本から設計された Java プラットフォームの機能です
- C# - モダンでオブジェクト指向かつ型安全なプログラミング言語です
- Language-Integrated Query (LINQ) - クエリ機能を C# 言語に直接統合することに基づく一連の技術の名称です
- Delegate - 特定のパラメータリストと戻り値の型を持つメソッドへの参照を表す型です
- Lambda expression - 匿名関数を作成する方法です
- Scala - 一般的なプログラミングパターンを簡潔でエレガントかつ型安全な方法で表現できるように設計された、モダンなマルチパラダイムプログラミング言語です
- Hybrid OO/functional - 静的型付けの環境でオブジェクト指向プログラミングと関数型プログラミングを融合させた言語の特性です
- Groovy - 静的型付けと静的コンパイルの機能を備えた、Java プラットフォーム向けの強力でオプション型付け可能な動的言語です
- Dart - あらゆるプラットフォームで高速なアプリを実現する、クライアント最適化言語です
データ・フォーマット標準
Relevant DSS-P Skills
- 3. テクノロジー > 3.1 ソフトウェア開発 > コンピュータサイエンス
テキスト形式と文字コード
- ASCII - 電子通信のための文字符号化標準です
- Unicode - 普遍的な文字符号化標準です
- UTF-8 - 電子通信に使用される可変長文字符号化方式です
- Unicode Emoji - 顔文字のように使用される、標準化された文字の集合です
- CSV - 値をカンマで区切る区切りテキストファイルです
- TSV - 表 内の値をタブ文字で区切る区切りテキストファイル形式です
- ライブラリ
- ICU - Unicode とグローバリゼーションを提供する、成熟し広く使われている C/C++ と Java のライブラリ群です
- Python emoji - Python 用の絵文字ライブラリです
- Go emoji - Go 用のミニマルな絵文字パッケージです
日時形式
- UTC - 時計と時刻を規制するために世界的に使用されている主要な時間標準です
- ISO 8601 - 日付・時刻に関連するデータの世界的な交換と伝達を対象とする国際標準です
- Unix time - ある時点を記述するための方式です
- ライブラリ
- Ruby Time - 日付と時刻の抽象化です
- Python delorean - Python で日時を扱う際に生じる不都合な真実を解消するためのライブラリです
- Python arrow - 日付、時刻、タイムスタンプの作成、操作、フォーマット、変換に対して、理にかなった人間に優しいアプローチを提供する Python ライブラリです
- Luxon - JavaScript の日付と時刻のための強力でモダン、かつ使いやすいラッパーです
- date-fns - ブラウザと Node.js で JavaScript の日付を操作するための、最も包括的でありながらシンプルで一貫性のあるツールセットを提供する、モダンな JavaScript 日付ユーティリティライブラリです
- Day.js - Moment.js とほぼ互換性のある API を持ち、モダンブラウザ向けに日付と時刻の解析、検証、操作、表示を行う、ミニマルな JavaScript ライブラリです
- Go time - 時間の計測と表示のための機能を提供するパッケージです
- Go when - 依存関係のない自然言語の日時パーサーです
- iCalendar - カレンダーとスケジュールの情報を保存・交換できるようにするメディアタイプです