Language
プログラミング言語に関するあれこれ。
目的別リファレンス
Rust
Rust 開発環境
The Rust Programming Language ノート
The Rust Programming Language 2nd ED. からのメモ書き。
読書メモ: プログラミング言語 Rust 公式ガイド
The Rust Programming Language (日本語版) の邦訳版で ASCII DWANGO から出版されている「プログラミング言語 Rust 公式ガイド」の読書メモ。…
Rust: nom によるパーサー実装
nom は Rust で実装された字句解析ライブラリ (Lexer, Lexical Analyzer, Tokenizer) およびパーサコンビネーターです。プログラムのソースコードや DSL (domain specific language) のようなテキストデータの字句解析を実装できるのに加えて、バイナリデータの解析も前提に設計されています (実際、nom の作者は nom を使って GIF 画像ファイルのデコーダーを実装しています)。…
Rust: tokio による非同期プログラミング
tokio (トーキョー) は Rust 言語で非同期アプリケーションを作成するためのイベント駆動型フレームワークです。煩雑さを排除し統一された方法で使用できる非同期ランタイムおよびノンブロッキング I/O とネットワークのプラットフォームを提供しています。…
Rust: WebAssembly プログラミング
WebAssembly は可搬性の高い仮想マシン用バイナリ命令フォーマットです。Rust はターゲットバイナリに WebAssembly を選択することができます。
Rust: Non-blocking I/O programming with mio::Poll
Linux カーネルのシステムコール epoll や FreeBSD (Mac OS) の kqueue、またはより古典的な POSIX 準拠の select や poll システムコールは大量のクライアント接続を効率的に処理するノンブロッキング I/O プログラミングに必要な機能である。…
Rust: スレッド間のデータ共有パターン
Rust: ベンチマークの計測
Rust: プロファイリング
ソフトウェア開発におけるプロファイリング (profiling) とは、プログラムのボトルネックやメモリリークを発見することを目的とした CPU 時間やメモリ使用量の計測である。ソフトウェアの最適なパフォーマンスを引き出すためにはソースコードを最適に調整する作業が重要であるが、一般にプロファイリングはその優先順位や費用対効果を推定するための事前調査を目的として実施される。…
Go
Julia
データ型・変数・関数
Julia - 演算子
Julia の特徴的な演算子機能としては、べき乗と逆除算が用意されていること、そして言語機能のレベルで演算子のベクトル化が可能であることが挙げられる。C/C++ や Java などの言語知識があれば多くは読み飛ばしてもかまわない。…
Julia: グラフの描画
PyPlot はプロットライブラリである matplotlib.python のインターフェースを Julia から使えるようにしたパッケージ。ローカルに導入する場合は REPL で PyPlot パッケージを導入しておく。…
スクラップブック
メタプログラミング
Julia はコードを AST (abstract syntax tree; 抽象構文木) として評価する機能を持っている。ここでの評価とはコード上に AST を展開し実行することを意味する。…
Julia 言語の特徴
Julia: 目的別機能
メタ言語と形式表現
抽象機械
オートマトン
オートマトン (automaton; ムーア型順序機械) は計算理論における数学的なモデルの総称。ある既定の手続きに従って行う自動計算の機構、つまりプログラミングやインタープリタ、文字列解析などを表すモデルとしてしばしば使われている。…
形式言語
あるオートマトンによって受理することのできる言語である。
構文解析
一般に構文解析 (syntactic analysis) とは文章を解析してその構文構造を導き出すという意味を持つ。
論文翻訳: Packrat Parsing: Simple, Powerful, Lazy, Linear Time
複数の選択肢をもつ構文解析時に、解析済みのパターンの結果を記録しておき別の選択肢を評価するときに使用する Packrat 構文解析に関する 2002 年の論文。
論文翻訳: Incremental Packrat Parsing
Packrat 構文解析のメモ表を利用して、構文解析済みの入力テキストが変更されたときに (全体の再パースなしに) テキスト変更分をインクリメンタルに構文解析結果に反映する Packrat 構文解析の改良に関する 2017 年の論文。…
マークアップ言語
XML: Extensible Markup Language
XML (extensible markup language) は構造化されたデータを表現するための W3C が規定するマークアップ言語。ドキュメント指向のデータ向けに高機能で非常に高い柔軟性と拡張性を持っており、また人間が読みやすいように設計されているため、データ交換から設定ファイルまで様々な分野で広く使用されている。…
XPath: XML Path Language
XPath (XML path language) は、主に XSLT で使用されるクエリー言語である。XML 文書上で目的のノードを特定するアドレッシングや、ノード集合から特定のノードを抽出するフィルタリングを行うことを目的としている (目的としてはリレーショナルデータベースに対する SQL に似ている)。…
XML-Schema
XML Schema は XML 文書の構造と内容を定義するためのスキーマ言語である。スキーマには XML によるインターフェースを定義し、XML 文書の整合性を検証することでデータの信頼性と相互運用性を高める役割がある。…
Extended BNF
EBNF
EBNF (extended Backus-Naur form) は BNF を拡張した構文メタ言語 (syntactic meta-language) の一種。プログラミング言語や HTML のようなデータフォーマットの構文定義を記述することができる。…
翻訳: ISO/IEC 14977:1996 Information technology — Syntactic metalanguage — Extended BNF
Extended BNF (EBNF) の ISO/IEC 14977:1996 規格。