「オム プログラミング 言語」

2026/02/26 2:48

「オム プログラミング 言語」

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Omは、演算子・区切り文字・オペランドという3つのプレフィックススタイル構文要素のみを使用し、すべてのデータ値をオペランドとして扱うミニマリストな結合型プログラミング言語です。パナモルフィックで従来のデータ型を排除することで、内部表現が統一され、任意の入力に対して操作が機能します。インタープリターはBOMなしのUTF‑8テキストを有効なプログラムとして受け付け、「en_US.UTF-8」ロケールをデフォルトとし、完全にUnicode互換です。

現在は概念実証段階であり、数値演算やファイルI/Oなど多くのコア機能が欠如しており、設計はバージョン 1.0 以前に進化する見込みです。本プロジェクトはEclipse Public License v1.0 の下でヘッダーオンリーC++ライブラリとして配布され、任意の C++ または Objective‑C++ アプリケーションに埋め込むことができます。

ソースコードはGitHub上にあり、開発者は

git clone
で取得し、CMake を使ってビルドします。プラットフォームツール(Xcode/Visual Studio/Cygwin/Ubuntu)と ICU4C および Boost ライブラリが必要です。ドキュメントは Doxygen と Graphviz により生成されます。インタープリター実行ファイル (
Om.Interpreter
) は最初のアンバランスな中括弧までUTF‑8入力を読み取り、出力を stdout に書き込みます。テストは
Om.Test
を通じて実行されます。組み込み操作には
copy
drop
choose
quote
/
dequote
<-
(push/pop)、および
define
があり、新しい操作は
Om::Language::Operation
名前空間に C++ クラスを実装することで追加できます。

再帰は先読みプレフィックス評価と非再帰的評価器のおかげで効率的で、スタックオーバーフローの心配なく深い再帰が可能です。貢献の道筋としては、操作やプログラムを追加すること、問題を報告すること、または資金提供があります。開発はモダンなポータブル C++ と Sparist コーディング標準に従いますが、まだバージョン互換性の保証はありません。言語は Joy や他の結合型言語から大きく影響を受けており、将来の機能拡張のために最小限で拡張可能な基盤を提供することを目指しています。

本文

はじめに

Om言語は、極めてシンプルでコンカタネーティブ(連結型)かつホモイコニック(自己記述的)のプログラミングおよびアルゴリズム表記言語です。特徴は以下の通りです。

  • 最小構文 – 要素が3種類のみ。
  • プレフィックス記法 – 関数は残りのプログラム自体を操作します。
  • パンモルフィック型付け – データ型を持たないプログラミング。

また、解析が容易なデータ転送フォーマットとしても機能し、Unicode正規化済みです。すべてのUTF‑8テキスト(BOMなし)は有効なOmプログラムとなります。
C++ライブラリとして実装されており、任意のC++またはObjective‑C++プロジェクトへ埋め込み可能で、新しいデータ型や操作を追加することもできます。


現状

  • 概念検証 – 完成していない。数値、ファイル等、多くのコア機能が欠如しています。
  • 変動中 – 1.0リリース前に大きな変更が予想されます。

ライセンス

Eclipse Public License v1.0
詳細は Eclipse Public License FAQ をご覧ください。


はじめ方

ダウンロード

ソース方法
開発版
git clone <repo>
またはアーカイブファイル
リリースGitHub タグページのアーカイブファイル

依存関係

カテゴリ必須プログラム備考
ビルドCMake, Graphviz, Doxygen順序: Graphviz → Doxygen → CMake
Xcode (macOS)
Visual Studio + Cygwin (Windows)bash, GNU make, ar, ranlib
Ubuntu
build-essential
sudo apt-get install build-essential
ライブラリICU4C, Boost生成スクリプトが自動で外部依存をダウンロードします。上書きしたい場合は
-D Icu4cInstallDirectory:Path=… -D BoostInstallDirectory:Path=…
を使用してください。

ビルド

  1. ビルドディレクトリ(例:

    builds/
    )を用意します。

  2. 適切な生成スクリプトを実行します。

    # Unix 系 OS
    ./generate.sh <project-name> [CMake オプション]
    
    # Windows (Visual Studio コマンドライン)
    generate.bat <project-name> [CMake オプション]
    

    スクリプトは外部依存を

    builds/<dependency>/downloads/<MD5>/build/<platform>/install
    にインストールします。

  3. 生成されたプロジェクトを IDE または

    cmake --build
    でビルドしてください。


ターゲット

ターゲットパス説明
Om.Interpreter
<build-dir>/executables/<platform>/<config>/Om.Interpreter
標準入力からUTF‑8を読み込み、標準出力へ書き込みます。オプションでロケール(デフォルトは
en_US.UTF-8
)を指定できます。
Om.Test
<build-dir>/executables/<platform>/<config>/Om.Test
すべての単体テストを実行します(
ALL_BUILD
の一部)。
Om.Documentation
<build-dir>/documentation/html/index.html
HTML と XML ドキュメントを生成します。

ライブラリの使い方

  1. code/
    をインクルードパスに追加します。
  2. 必要なヘッダーをインクルード;
    om.hpp
    はすべての操作を含みます。
  3. 使用前に
    Om::Language::System::Initialize("<locale>")
    を呼び出します。
  4. Om::Language::Environment
    を作成し、必要ならカスタムオペレータ―プログラムマッピングを追加してから
    Evaluate()
    でプログラムを評価します。

言語概要

構文

Om プログラムは operator(演算子)separator(区切り)operand(オペランド) の3つの要素からなるシーケンスです。

  • Operator – 任意の文字列(バッククォートで区切りや波括弧をエスケープ可能)。
  • Separator – 空白またはその他定義されたデリミタ。
  • Operand
    {}
    で囲まれたテキスト;中にネストされたオペレーター、セパレータ、オペランドが入ることがあります。

評価モデル

  • 関数は プレフィックス連結型:各関数はプログラムの残りを消費し、新しいプログラムを返します。
  • Identity – すべての項目をそのまま渡します。
  • Constant – 定義済み項目をプッシュし、残りの入力を続けます。
  • Operation – オペランドを処理;不足している場合は自身を再度発行します。

セパレータは評価時に無視されますが、出力項目間には一貫したフォーマットとして再挿入されます。

プログラム例

プログラム説明
{Hello, world!}
演算子 “Hello,” とセパレータ空白、演算子 “world!” を含むオペランド。
copy {A}{B}{C}
{A}{A}{B}{C}
を生成します。
drop {This is a comment.} {This is not a comment.}
{This is not a comment.}
が残ります。
choose {It was empty.}{It was non-empty.}{I am not empty.}
{It was non-empty.}
を生成します。

高度な操作

  • define – 新しい演算子―プログラムマッピングを作成します。
  • rearrange – オペランド名をバインドして適用スタイル(fold 例で使用)にします。
  • normalize – 文字列の NFKD 正規化を強制します。

貢献

  1. GitHub 上でリポジトリをフォークします。
  2. Adding Operations / Adding Programs のガイドラインに従い、C++ で新しい操作やプログラムを実装します。
  3. 生成スクリプトを実行してプロジェクトファイルを更新します。
  4. プルリクエストを送信してください。

その他の貢献方法:

  • バグ報告・機能要望
  • 資金援助やスポンサーシップ(プロジェクトページに連絡先があります)

開発メモ

  • 現在は Sparist C++ コーディングスタンダードに準拠したモダンで移植性の高い C++ で書かれています。
  • 初期段階なので、バージョン互換性の保証はありません。
  • 静的解析ツール:HFCCA (Python)、CLOC (Perl) を利用しています。

同じ日のほかのニュース

一覧に戻る →

2026/02/26 5:16

ジミ・ヘンドリックスはシステムズエンジニアでした。

## Japanese Translation: ## Summary: この記事は、ジミ・ヘンドリックスを実質的にシステムエンジニアとして描き、彼が1967年の象徴的な「Purple Haze」のサウンドをペダルとアンプからなる意図的に設計された信号チェーンで作り出したことを論じています。Fuzz Face、Octavia(オクターブ倍増)、wah‑wah、Marshall amp、そして後のUni‑Vibeがどのように連携し、オクターブ倍増、バンドパスフィルタリング、位相シフト、および持続的なフィードバックを生成したかを説明しています。これらは単なる音楽的選択ではなく、設計されたサウンド挙動であると述べています。詳細な回路図を入手し、各ペダルをngspiceの回路シミュレータでモデル化することで、著者はPythonスクリプトを用いてオリジナル録音の非線形ダイナミクスを再現しました。本稿は、1967年2月3日にロンドンのOlympic Studiosで録音された歴史的背景を示し、ヘンドリックスがギターを静的なノブではなく身体運動によって操作するモジュラーアナログシステムとして扱ったことを強調しています。GitHubに公開されているさらなるシミュレーションコードは、他の音楽家がこれらのテクニックを再現または拡張できるようにし、パフォーマンスと回路設計を融合した新しいペダルデザインへのインスピレーションとなる可能性があります。このアプローチは、ギタリスト、プロデューサー、およびメーカーがより体系的なトーン形成方法を採用し、機材をエンジニアリングされたシステムとして捉えるよう促すでしょう。 ## Summary Skeleton **テキストの主な伝えたいこと(メインメッセージ)** この記事はジミ・ヘンドリックスをシステムエンジニアと描き、彼が1967年に「Purple Haze」をレコーディングした際に、ペダルとアンプからなる意図的に設計された信号チェーンを用いて表現力豊かなサウンド効果を生み出したことを示しています。 **証拠/根拠(なぜそう言われるのか)** - ヘンドリックスのチェーン――Fuzz Face、Octavia、wah‑wah、Marshall amp、後にUni‑Vibe――は、オクターブ倍増、バンドパスフィルタリング、位相シフト、および持続的なフィードバックを導入するカスタムハードウェアから構成されていました。 - 著者は詳細な回路図を取得し、ngspiceで各ペダルをモデル化し、Pythonスクリプトで連鎖したシミュレーションを行うことで、録音に観測された非線形挙動を再現しました。 **関連事例/背景(文脈・過去の出来事・周辺情報)** - 「Purple Haze」は1967年2月3日にロンドンのOlympic StudiosでRoger MayerのOctaviaペダルとともに録音されました。 - ヘンドリックスのアプローチは、ギターを静的なコントロールではなく身体運動によって操作するモジュラーアナログシステムとして扱いました。 - 本稿は2026年3月に印刷で掲載され、「Jimi Hendrix, Systems Engineer」というタイトルで、彼の音楽的革新と工学原理を結びつけています。 **今後起こりうること(将来の展開/予測)** - さらに進められたシミュレーション作業とコード(GitHubで公開)は、他のミュージシャンやエンジニアがヘンドリックスの信号処理テクニックを再現または拡張できるようにする可能性があります。 - この枠組みは、現代のアーティストが自らの機材をエンジニアリングされたシステムとして扱い、ヘンドリックスの手法に触発されて新しいペダルデザインを生み出すきっかけになるかもしれません。 **この影響が及ぼすもの(ユーザー/企業/業界)** - ギタリストやプロデューサーは、トーン形成により体系的なアプローチを採用し、身体運動コントロールを機材に組み込む可能性があります。 - ペダルメーカーは、文書化された回路図を参照してヘンドリックスの効果を模倣または改良した新モデルを開発できるでしょう。 - 音楽とエンジニアリングコミュニティは、パフォーマンス芸術と回路設計を融合させた具体的なケーススタディとして、この研究を活用できます。

2026/02/26 8:02

「最初のウェブサイト」

## Japanese Translation: 「オリジナルの要約は明確で包括的であり、主要なポイントを正確に反映しています。修正は必要ありません。」

2026/02/26 5:29

CLI で MCP を低価格化する方法

## Japanese Translation: ## Summary コマンドラインインターフェース(CLI)ツールは、マルチチャネルプログラム(MCP)エージェントと比較してトークン消費を劇的に削減します。セッション開始時には、CLI は約 300 トークンしか必要とせず、MCP はおよそ 15,500 トークンが必要です。各ツール呼び出しは、CLI で約 910 トークンかかり、MCP では 15,600 トークンになるため、90〜98 % の節約が得られます。10 個または 100 個のツールにスケーリングしても、節約率は高く(≈94 %と 92 %)維持されます。Anthropic の Tool Search はより大きなオーバーヘッドを伴い、検索インデックスをロードするだけで約 500 トークンが必要になり、要求時に完全な JSON スキーマを取得すると1回あたり約 3,530 トークンがかかります。これは CLI コストよりもはるかに高くなります。CLIHub はエージェント用の CLI ディレクトリと、MCP 定義を CLI 対応形式に変換するオープンソースコンバータを提供しています。これらの調査結果は、既存ツールを CLI 形式に移行または変換することでトークン使用量を大幅に削減し、API コストを低減し、レスポンス速度を向上させることができることを示唆しています。

「オム プログラミング 言語」 | そっか~ニュース