2026年4月5日日曜日

用途別AIを差し込む“分散スタック”がデファクト

 

ChatGPTとは
OpenAIが提供する汎用AI。文章生成、コード、画像理解、音声対話まで統合された中心的存在。エコシステムと拡張性が強く、API・ツール連携・メモリ機能により「AIのOS」として機能する。2026年時点では多くのAI運用のハブとなる基盤的ポジションを占めている。


Claudeとは
長文読解と論理推論に強いAI。巨大コンテキストにより書籍・コード・契約書レベルの処理が可能。安全性重視設計で企業利用が進む。ChatGPTに対して「思考密度の高い補完AI」として使われることが多く、深い分析や構造化に強みを持つ。


Geminiとは
Googleが提供するAIで、検索とネイティブに統合されているのが最大の特徴。リアルタイム情報取得やYouTube・Docs連携に強く、「検索の進化形」として機能する。事実確認や最新情報を扱うタスクではデファクトな位置を占める。


Microsoft Copilotとは
Word、Excel、PowerPoint、Windowsに統合された業務AI。日常業務の自動化や文書生成を担う「職場常駐型AI」。企業環境での普及が進み、チャットというより“作業補助インフラ”として使われるケースが増加している。


Perplexity AIとは
AI検索特化ツール。回答と同時に出典を提示する構造により、リサーチ用途で信頼性が高い。検索と生成の融合UIを先行実装し、「ググる」の代替として使われる。情報収集フェーズでは最短経路を提供する存在。


Grokとは
X(旧Twitter)と統合されたAI。リアルタイム性とSNSデータを活用した応答が特徴で、トレンド理解や時事性に強い。ややラフな語調とユーモアも特徴で、他AIとは異なる文化圏の情報源として機能する。


DeepSeek Chatとは
高性能かつ低コストで注目されたAI。特にコード生成や数学的処理で強みを持つ。オープン寄りの思想で開発者コミュニティに支持され、コスト重視の運用やローカル環境での活用が進んでいる。


Character.AIとは
キャラクターとの対話に特化したAIプラットフォーム。人格設計やロールプレイに強く、娯楽・教育・シミュレーション用途で活用される。AIを「人格」として扱う文化を形成した存在。


Poeとは
複数AIを同時に使える統合チャット環境。ChatGPTやClaudeなどを切り替えて比較できる。「AIを選ぶUI」として機能し、マルチモデル運用の入り口として利用される。


YouChatとは
検索エンジンYou.comに統合されたAI。検索と対話を同一画面で扱える設計で、軽量な調査や日常検索に向く。Perplexityよりカジュアル寄りの位置づけ。


Notion AIとは
ドキュメントツールNotionに統合されたAI。メモ整理、文章生成、要約をシームレスに行う。知識管理とAIを融合した「思考補助環境」として機能する。


Slack AIとは
チャットツールSlack内で動くAI。会話要約、検索、タスク整理を行い、チームコミュニケーションを効率化する。業務ログをそのままAI資産として活用できる点が特徴。


Zoom AI Companionとは
Zoom会議を補助するAI。議事録生成、要約、アクション抽出を自動化する。会議そのものを「データ化」する役割を担う。


Otter.aiとは
音声のリアルタイム文字起こしと要約に特化したAI。会議やインタビューの記録を効率化し、検索可能な知識として蓄積する。


Rewind AIとは
ユーザーの行動履歴を記録し検索可能にするAI。個人の「記憶拡張装置」として機能し、過去の作業や閲覧履歴をAI経由で再利用できる。


Cursorとは
AIネイティブなコードエディタ。コード生成・修正・理解を統合し、開発体験を再設計する。エディタそのものがAI化された代表例。


GitHub Copilotとは
GitHubが提供するコード補完AI。IDEに統合され、開発者の入力をリアルタイムに支援する。最も普及している開発AIの一つ。


Codeiumとは
無料で高機能なコード生成AI。多くのIDEに対応し、コストを抑えた開発支援として普及。Copilotの代替として選ばれるケースも多い。


Phindとは
開発者向け検索AI。技術質問に特化し、コード付きで回答を提示する。Stack Overflow的用途をAI化した存在。


Jan.aiとは
ローカル環境で動作するAI。クラウドに依存せずプライバシーを確保できる。個人主権型AIとして注目される。

GLSLとは

 GLSLとは

GLSLはOpenGLで使われるシェーダ言語で、GPU上で動作する小さなプログラムを記述するための言語です。頂点やピクセルごとの処理を並列に実行でき、リアルタイムに画像を生成・変形できます。C言語に似た構文を持ち、数式やベクトル計算を直接扱えるため、シェーダーアートや映像生成の基盤として広く利用されています。

フラグメントシェーダとは
フラグメントシェーダは画面上の各ピクセルの色を決定するプログラムです。入力された座標やテクスチャ情報をもとに、色や明るさを計算します。GLSLではこの処理が画面全体で同時に実行されるため、1ピクセル単位の精密な表現が可能です。シェーダーアートではここに数式を記述し、模様や形状を直接描き出します。

UV座標とは
UV座標はテクスチャを貼るための2次元座標系で、通常0から1の範囲で表されます。画面やモデル表面の位置を割合で示すため、解像度に依存しない表現が可能になります。シェーダではこのUVを使って位置を計算し、色や形を決定します。中心を基準に変換することで、円や波などの幾何的なパターンを簡単に作れます。

距離関数とは
距離関数はある点から特定の形状までの距離を返す関数です。例えば円や線までの距離を数式で表現します。この値を使うことで、境界を判定したり滑らかな輪郭を作ることができます。シェーダでは距離の値を色や透明度に変換することで、図形を描いたりエフェクトを加えたりする基礎となります。

SDFとは
SDF(符号付き距離関数)は距離関数に内外の情報を加えたものです。形状の内側では負、外側では正の値を持ち、境界では0になります。この性質により、単一の関数で形状と位置関係を同時に表現できます。複雑な図形も数式の組み合わせで表現できるため、シェーダーアートや3D表現の中核技術として使われます。

レイマーチングとは
レイマーチングは視点から光線を伸ばし、SDFを使って物体に当たるまで進む手法です。距離分だけ一気に進むことで効率的に交差判定を行います。これによりポリゴンを使わずに3D形状を描画できます。シンプルなコードで複雑な立体や反射、影を表現できるため、シェーダーアートでよく使われる技術です。

円の距離関数とは
円の距離関数は、点と円の中心との距離から半径を引いた値で表されます。結果が0なら円の境界、負なら内部、正なら外部を意味します。この単純な式だけで円を正確に描くことができ、滑らかな縁やぼかしも容易に実装できます。多くのシェーダ表現はこの基本形を応用して構築されています。

合成(union)とは
合成(union)は複数のSDFを組み合わせて新しい形状を作る操作です。通常は距離の最小値を取ることで、2つの形状を自然に結合できます。この方法により、球や箱などの単純形状を積み重ねて複雑な構造を構築できます。差分や交差と組み合わせることで、モデリングのような表現が可能になります。

法線とは
法線は物体表面に垂直な方向ベクトルで、光の当たり方を計算するために使われます。SDFでは周囲の距離変化から数値的に法線を求めることができます。このベクトルがあることで、平面か曲面かといった形状の特徴が明確になり、リアルな陰影表現が可能になります。

ライティングとは
ライティングは光源と法線を使って明るさや色を決定する処理です。基本的には光の方向と法線の内積で明るさを計算します。これにより、物体の立体感や質感が表現されます。拡散反射や鏡面反射などを組み合わせることで、より現実的な見た目を作ることができます。

time変数とは
time変数は時間の経過を表す値で、アニメーションの基礎になります。sinやcosなどの関数と組み合わせることで、周期的な動きや変化を簡単に表現できます。シェーダでは全ピクセルで同じ時間を共有するため、画面全体が同期して動くダイナミックな映像を生成できます。

並列処理とは
並列処理は多数の計算を同時に実行する仕組みで、GPUの最大の特徴です。シェーダでは各ピクセルが独立して計算されるため、大量の処理を高速に実行できます。この特性により、リアルタイムで複雑な映像や数式ベースの描画が可能になり、CPUでは難しい表現を実現できます。

オブジェクトとは

 Alan Kayとは

オブジェクト指向という概念を提唱した研究者であり、コンピュータを「メッセージを送り合うオブジェクトの世界」として再定義しました。彼にとって重要なのはクラスや継承ではなく、オブジェクト間の通信です。現代のOOPは彼の思想の一部だけを実装したものに過ぎません。


Smalltalkとは
Alan Kayの思想を最も純粋に実装した言語で、すべてがオブジェクトとして扱われます。制御構文さえもメッセージ送信で表現され、環境そのものがライブに変更可能です。OOPの原型であり、後の多くの言語設計に影響を与えました。


オブジェクトとは
データと振る舞いを一体として持つ単位であり、外部とはメッセージでやり取りします。重要なのは内部構造ではなく、どのような応答を返すかです。オブジェクト指向においては「何を持つか」よりも「どう振る舞うか」が本質になります。


クラスとは
オブジェクトの設計図であり、同じ構造と振る舞いを持つ個体を定義します。ただし本質は再利用ではなく「共通の契約」を表す点にあります。クラスは型としての役割も持ち、オブジェクトの振る舞いを制約します。


インスタンスとは
クラスから生成された具体的なオブジェクトです。同じクラスから作られても、それぞれが独立した状態を持ちます。プログラムはインスタンス同士のやり取りとして実行され、実際の動作はこのレベルで発生します。


Javaとは
強い型付けとクラスベースのオブジェクト指向を採用した言語で、移植性と安全性を重視しています。仮想マシン上で動作するため環境依存が少なく、大規模システムに適しています。設計の厳密さが求められる言語です。


C++とは
手続き型とオブジェクト指向を統合した言語で、低レベル制御と高抽象を両立します。メモリ管理を明示的に扱えるため高速ですが、その分設計の責任も大きくなります。OOPは機能の一部として提供されています。


Pythonとは
シンプルな文法と柔軟なオブジェクトモデルを持つ言語です。すべてがオブジェクトとして扱われ、動的に振る舞いを変更できます。厳密な設計よりも可読性と生産性を優先し、実用性の高いOOPを提供します。


Rubyとは
純粋なオブジェクト指向を掲げ、すべてがオブジェクトで構成されます。コードは人間のために書くという思想が強く、DSL的な表現力に優れています。振る舞いを柔軟に変更できる点が特徴です。


カプセル化とは
内部の状態を外部から直接操作させず、メソッドを通じて制御する仕組みです。これにより変更の影響範囲を限定できます。重要なのは隠すことではなく、「どの操作を許可するか」を明確にする点です。


継承とは
既存のクラスを拡張して新しいクラスを作る仕組みです。コードの再利用手段として使われがちですが、本来は「共通の性質を持つ関係」を表現します。過度な継承は複雑さを増すため注意が必要です。


ポリモーフィズムとは
同じインターフェースで異なる振る舞いを実現する仕組みです。呼び出し側は具体的な型を意識せずに扱えます。柔軟な設計を可能にし、変更に強い構造を作るための中心概念です。


メソッドとは
オブジェクトが持つ振る舞いを定義する関数です。外部からはこのメソッドを通じて操作されます。データと密接に結びつき、そのオブジェクトの責務を実現する手段になります。


プロパティとは
オブジェクトが保持する状態や属性です。値として存在するだけでなく、振る舞いと組み合わさることで意味を持ちます。状態の管理が設計の質を大きく左右します。


コンストラクタとは
インスタンス生成時に呼び出される初期化処理です。オブジェクトの一貫性を保つために必要な状態を設定します。ここでの設計が後の不具合を左右します。


インターフェースとは
振る舞いの契約を定義するもので、実装は持ちません。利用側は具体的なクラスではなく、この契約に依存します。変更に強い設計を支える重要な概念です。


抽象クラスとは
共通の振る舞いを一部実装しつつ、未完成の状態を持つクラスです。継承先で具体化されることを前提とします。再利用と拡張のバランスを取るための仕組みです。


MVCとは
Model・View・Controllerに責務を分離する設計パターンです。データ、表示、操作を分けることで変更の影響を局所化します。UIを持つアプリケーションで広く使われます。


Singletonとは
インスタンスを1つだけに制限するパターンです。グローバルな状態を管理する際に使われますが、依存関係が隠れやすく、過剰な使用は設計を硬直させます。


Factory Methodとは
オブジェクト生成の処理をサブクラスに委ねるパターンです。生成ロジックを分離することで、拡張性と柔軟性を確保します。生成の責務を明確にする設計です。


SOLID原則とは
保守性の高いオブジェクト指向設計のための5つの原則です。単一責任、拡張に開いて変更に閉じる、置換可能性、インターフェース分離、依存性逆転から構成されます。


依存性逆転とは
上位モジュールが下位モジュールに依存するのではなく、両者が抽象に依存する設計です。これにより変更の影響を抑え、柔軟な構造を実現します。


結合とは
モジュール同士の依存の強さを表します。結合が強いほど変更の影響が広がります。低結合にすることで、独立した変更が可能になります。


凝集とは
モジュール内部のまとまりの強さを示します。高凝集であるほど、そのモジュールは単一の目的に集中しています。設計の明確さと理解しやすさに直結します。


責務とは
そのクラスやオブジェクトが担う役割のことです。責務が明確であれば、変更理由も明確になります。設計は責務の分割そのものと言えます。

💎J言語を極める j言語faq

 変数がどのように宣言されるかを知り、条件式とループの構文を学び、関数の呼び出し方を学び、編集する例をいくつか手に入れれば、あなたはコーダーだ。 ふざけやがって! Jでは、宣言はないし、ループを目にすることはめったにない。 例題からコーディングすることに関しては、私たちの例題のほとんどは2、3行のコードに過ぎない! 歯を食いしばって、まったく新しいプログラムの書き方を学ぶしかないのだ。

https://www.jsoftware.com/help/jforc/foreword.htm#_Toc191734286

PRI:Primer contents

J言語はとても豊かな言語だ。何年も勉強して使っても、自分は初心者だと思うことができる。これは、ベーシックやJavaのような単純な言語が、数ヶ月の勉強と使用でエキスパートになれるのとは対照的である。Jプログラマーのエキスパートになるために必要な努力は、C++プログラマーのエキスパートになるために必要な努力に近い。

https://www.jsoftware.com/help/primer/why_j.htm

「-2」ではなく「_2」なので混乱するかもしれない。心配しないで、すぐに説明するから。

https://www.jsoftware.com/help/primer/experiment.htm

-は常に動詞である。このため、-が数字のすぐ左で使われる場合は特別なケースがないため、文の評価ルールが単純化される。しかし、-が常に動詞である場合、負の数を綴るには別の文字、_(アンダーバー)が必要になる。

https://www.jsoftware.com/help/primer/negative_number.htm

ダイアドとモナド

すべての動詞には2つの定義がある。左引数と右引数の両方を持つ場合に使われるダイアドと、右引数のみを持つ場合に使われるモナドである。この2つの定義は通常関連しており、「-」の定義が「マイナス」、「否定」の定義が「モナド」である。

https://www.jsoftware.com/help/primer/ambivalence.htm

覚えておこう:すべての動詞はモナドとダイアドの両方の定義を持っている。

ボキャブラリーの5行目の+の行を見てください。この行の最初の項目には + 活用 o Plus. この単語+は動詞で、そのモナドはconjugateと呼ばれ、そのダイアドはplusと呼ばれる。ダイアド+は算数で定義されるプラスである。

https://www.jsoftware.com/help/dictionary/d100.htm

動詞の左側に名詞がある場合、動詞は二単項式で実行されます。動詞の左側の名詞と右側の名詞が、動詞の x 引数と y 引数になります
動詞の左側に名詞がない場合、動詞は単項式で実行され、動詞の右側の名詞が y 引数になります
呼び出しのタイプは呼び出しの価 値と呼ばれ、モナド型かダイアド型かを表します。

https://code.jsoftware.com/wiki/Vocabulary/Verbs#Executing_an_Explicit_Definition:_Private_Namespaces

ランク

名詞のランクは、その軸の数です。原子のランクは 0、リストのランクは 1、表のランクは 2、5 つの軸を持つ配列のランクは 5 です。配列のランクは非常に重要で、動詞が配列に対してどのように作用するかを決定します。
配列の形状は、配列の軸と同じ数の数字を持つリストである。つまり、配列の形状のカウントが配列のランクとなる。

https://www.jsoftware.com/help/primer/rank.htm

Jのパワーの多くは、引数を一連の部分として扱う動詞の能力にある。動詞はそれぞれの部分に自らを適用して、一連の部分的な結果を作り出し、その部分的な結果を最終的な結果に組み立てます

https://www.jsoftware.com/help/primer/verb_arguments.htm

動詞にはランクがあり、それがどのように引数に適用されるかを決定する。ランクkのモナドは引数のk個のセルに適用される。左のランク kl と右のランク kr のダイアドは、左の引数の kl のセルと右の引数の kr のセルに適用されます。動詞のランクは、動詞の配列への適用方法を制御する強力な道具である。
原始動詞のランクはJ辞書の定義に示されている。例えば、 + の定義を見てください。ランク情報は、ヘッダーの単語の後にあります。の場合、これは 0 0 0 です。モナドのランクは0であり、モナド+が原子に適用されることを示す。ダイアド・ランクは、左の引数が0(アトム、つまり0セルに適用されることを示す)、右の引数が0(やはり右の引数のアトムに適用されることを示す)である。

https://www.jsoftware.com/help/primer/verb_rank.htm

副詞と接続詞

副詞は動詞と似ているが、以下の点で異なる:
副詞は左の引数のみを持つ(動詞は両義的で、右の引数または左と右の両方の引数を持つ)。
副詞は名詞または動詞に適用できる(動詞は名詞にのみ適用される)。
副詞は通常、その結果として動詞を持つ (動詞は常に名詞の結果を持つ)
副詞の動詞の結果は、派生動詞と呼ばれます。

原始的な / は副詞です。その結果は新しい動詞です。派生動詞のモナド格が使用される場合、/はinsertと呼ばれます。派生動詞のダイアド格が使われる場合、/はテーブルと呼ばれる。

https://www.jsoftware.com/help/primer/adverb.htm

接続詞は副詞に似ているが、左右両方の引数を取る点が異なる。ランク接続詞は以前のセクションで非公式に紹介した。さらに、摂氏のような動詞の定義に使われる : も接続詞として認識できるようになった。centigradeを定義する際、:は左引数に3、右引数に0を取る。ここまでは動詞の可能性もあるが、結果が動詞であることが接続詞であることを証明している。
接続詞の動詞の結果は派生動詞と呼ばれる。

https://www.jsoftware.com/help/primer/conjunction.htm

摂氏動詞は接続詞 : で明示的に定義された。明示的という用語は、定義における動詞の引数がx.とy.という名前によって明示的に参照されていることを示す。
暗黙の定義では、引数には名前がなく、定義に明示的に登場しない。引数は定義の構文要件によって暗黙的に参照される。あなたはすでにいくつかの暗黙の定義を使っている。

https://www.jsoftware.com/help/primer/tacit_definition.htm

接続詞「!:
は整数のスカラー左引数と右引数に適用され、動詞を生成する。
の場合は副詞を生成する。これらの動詞は、他の動詞と同じように振る舞います。動詞には名前を割り当てることができ、副詞や接続詞の引数として使用することができます。これらの動詞が引数として名前を取る場合、4!:55 'a';'bc' のように名前を枠で囲み、a と bc という名前を消す。括弧で囲まれた左の引数は省略可能であることを示す。

https://www.jsoftware.com/help/dictionary/xmain.htm

J for C Programmers

本書は、本格的なアプリケーションを開発するための言語としてJを使用するのに十分なJについて説明するが、J言語を学ぶこと以上に、プログラミングにおいて「大きく考える」こと、そしてJでのプログラミングがCでのプログラミングと根本的にどのように異なるかについて書かれている。Cのプログラムはスカラー(単一の数値や文字)を密接に扱い、それらのスカラーを配列や構造体にまとめる場合でも、配列や構造体に対する操作はスカラーに対する操作によって定義される。 配列の各項目を確実に操作するために、配列の各要素を訪れ、その要素に対してスカラー演算を実行するループが作られる。
スカラー言語でコードを書くと、部隊を一人一人訪問して耳元でささやきながら命令を下す将軍のようになる。 そのようなハリーに触れるような将軍のやり方は、勝利という結果を得ることができるし、命令をその人に合わせることができるという利点もある。 偉大なロンメルでさえ、時には過労に見舞われた。
それとは対照的に、Jプログラマーは軍隊の前に立ち、軍隊全体への命令をブチ上げる将軍である。 すべての兵士が同じ命令を受けるが、命令自体には個々の兵士が適切に行動するのに十分な詳細が含まれている。 このような将軍は、小隊と同じくらい簡単に軍団を指揮することができ、常に「全体像」を念頭に置いている。
さて、あなたはロンメルではないかもしれないが、現役のプログラマーであり、実用的なプログラムで配列演算として表現できるものはほとんどないのではないか--行列の乗算とか、数値のリストの加算とか--、また、仮に幅広いプログラムが可能だとしても、サポートされる演算のセットは実用的というには膨大すぎるのではないか--と疑っているのではないだろうか。
本書の前半は、配列操作を使って意味のあるプログラムを書くことが実際に可能であることを示すことに費やされている。 ループのさまざまな使われ方を見て、配列操作を使って同じ結果を得るためにJがどのような機能を持っているかを見ていくアプローチをとります。 Jには、数ダースの配列処理プリミティブと、それらのプリミティブを接続して、実用的なプログラミングに必要な配列処理関数を無限に提供することを可能にする、非常に巧妙に選択された1ダースほどの配管継手が含まれていることがわかるだろう。
より複雑な配列操作の説明の間に、実用的なプログラミングに必要な他の事柄、すなわち構造体の定義、入力と出力、性能測定、DLLの呼び出し、モジュール化されたプログラミングが挿入されている。 最終的には、Jでif-then-elseやdo-whileを使う方法を学ぶことになるが、同じ結果を得るためにもっとエレガントな方法を学ぶことになるだろう。
本書の最後の部分は、関数型プログラミングのためのJ言語である暗黙プログラミングのオプション・トピックに費やされている。 タシット・プログラミングはアルゴリズムを表現する極めて簡潔な方法であり、1ページのC言語から数行のJ言語に圧縮されたプログラムをさらに圧縮することを可能にするものである。

if文はどうなったのか?

プリミティブに組み込まれている。 ほとんどのループがプリミティブの中に隠されているように、ほとんどの条件文もプリミティブの中に隠されています。 あなたが書く関数も、組み込みの条件式を含むことができます。

文の区切り記号は何ですか?

ありません。 ステートメントは正確に1行の長さです。

Jのコードを見たことがある。 他の文字はすべてピリオドかコロンだ。 目の前にシミができた。 こんなの誰が読めるんだ?

そのうち慣れるよ。 Jには非常に多くのプリミティブがあり、1行に多くの計算を収められるように名前を短くすることが重要です。そのため、名前は>のような1文字か、ピリオドやコロンが付加された文字(>.) ピリオドやコロンは名前の一部に過ぎません。 i.のようにピリオド/コロンを付加した1文字もプリミティブに使用されます。 プリミティブに独自の名前を付けたい場合は許可されていますが、スペースとタイピングを節約するために、すぐに短い名前に戻りたくなるでしょう。

宣言はどこにあるのか? Jでは配列を使わないのですか? 変数の型を知るには?

そうそう、Jでは配列を使っている。 どんな変数でも配列になる。 型と次元が何であるかについては、あなたが変数を代入したのでしょう? あなたが変数に入れたもの、数値、文字列、配列、構造体...。 Jが覚えているだろう。 プログラム・ロジックで変数の現在の属性を調べる必要があれば、Jが教えてくれます。
プリミティブも、あなたが書いたプログラムも、すべてのJプログラムは自動的に配列に適用できる。 入念に考え抜かれたこの方法は、Jの長所のひとつである。
x + y
という文は、「xとyを足す」という意味であり、xとyが単数であっても、多次元配列であってもそうなる。 個々の数値を操作するために必要なループ処理は、プログラムではなく言語に組み込まれている。

Jのコードを一行見てみたが、構文もよくわからずぐちゃぐちゃだ。

例えば
lifodd =. ]`[@.(2&|@[)
おそらく、左オペランドが奇数なら左オペランドを返し、そうでなければ右オペランドを返すプログラムだろう?
忍耐。 すべての文字には意味があり、たとえ` " [ ] { }の文字であっても、ペアとしてではなく個々に動作する。 それらの意味を学べば、すべてが明らかになるだろう。

1 2 + 3。 余分な数字が空間に浮かんでいるのはなぜだろう?

1 2は、1と2の値を持つ2つの数値の1次元配列である。 Jでは配列がよく出てくるので、配列の要素の値以上の構文を必要とせずに、配列を定義するためにこの省略記法を使う。

あるJのコードを見てみたが、そこには変数がまったくない。 それが何を意味するのか?

ああ、あなたは暗黙のプログラムに出くわしてしまったのだ。暗黙のプログラムは、変数を参照することなく、記号的なパラメーターさえも使わずに計算を記述する。 古典的な教育例は
平均 =.
これは数値の配列の平均を求める。 暗黙のプログラムは本書では高度なトピックとみなし、巻末のセクションで取り上げている。 そのため、多くのJプログラマーはこれを好んで使うが、単純なJを学んでからでもよい。
例題の中で、あなたが代入文だと言った=:と=.を含む行しか見当たりません。 どうやってプログラムを書けばいいのですか?
代入文のいくつかはプログラムです。 Jでは、名前に関数の値を代入すると関数名になります。

プログラムを書いたら、どうやって実行するのですか? 関数呼び出しのようなものは見当たりません。

Jでは、関数呼び出しのための特別な構文はありません。 マイナス」関数を - y で、「引き算」関数を x - y で実行するのと同じように、ユーザー定義関数を呼び出すには、オペランドの前または間にその名前を入力します: x DifferenceSquared y または FindPrimeGreaterThan 1000。

プログラムはどのようにコンパイルするのですか?

コンパイルはしない。 J言語はインタプリタです。 プログラムを入力すれば(あるいはファイルから読み込めば)、すぐに使えるようになる。 ここにスターター・プログラムがある:
h =. 動詞 : '''Hello world.''
と入力し(三重引用符に注意)、それを
h ''

三重引用符は醜い。

腹を立てるのはやめよう。 この本を読めば、三重引用符を避ける方法がわかるだろう。 Cの10行をJの4分の1行で置き換えたことを思い出し、自分でその方法を学んでください。

数学でも使われる言葉をコンピュータ言語から奪う 関数は動詞になる

プログラミングの要素を説明するために、Jが使うのは、もしかしたら恐ろしいかもしれないが、なじみのある語彙、つまり英文法の語彙である。 名詞、動詞、そういったものを使って話をする。 読書感想文を書く必要はないのでご安心を!
この専門用語の使い方は、見た目ほど奇妙なものではない。 例えば、「動詞」はC言語の「関数」や「演算子」に相当する。 なぜ「演算子」と言わないのか? この単語は数学や物理学でも使われ、C言語とはまったく異なる意味を持つ。 Cの'関数'でさえ、真の数学的関数ではない。
Jでは、使い慣れた単語を選び、まったく新しい意味を与えることで、不正確な用法を避けている。 J言語は言語なので、選ばれた語彙は英文法のものである。 しかし、Jの意味さえ覚えれば、文法的な意味は忘れても構わない。

https://www.jsoftware.com/help/jforc/preliminaries.htm

動詞defineの結果は動詞であり、通常はその結果を名前に割り当てて、必要なときにその名前で動詞を実行できるようにする。 動詞defineの後の行から始まり、')'のみを含む次の行の前までが、動詞のテキストとして読み込まれ、保存されます()を省くと、天罰が下ります!)。 動詞は'コンパイル'されない--最も初歩的な構文チェックを行った後、テキストは保存され、動詞が実行されたときに解釈される。
動詞の各行は文(ステートメント)である。 最後に実行された文の結果が、動詞全体の結果となる(これは正確には正しくないが、今のところはこれに近い--詳細は「制御構造」で明らかになる)。
J動詞のオペランドは1つか2つしかないので、C言語の関数定義のようにパラメータ名のリストを提供する必要はありません。 動詞の実行開始時に、プライベート名yは動詞の右オペランドの値で初期化される。 動詞が二項演算の場合、プライベート名xは左オペランドの値で初期化される。 多くのプログラマーは、これらの値をより説明的な名前に代入して動詞を開始したがります。

特別な名前に関する注意

Jでは、動詞などの引数を表すためにx、y、u、v、m、nという名前を使用します。 これらの名前を他の目的で使用することは避けるべきです。

⚛️はじめての量子力学:子どもにおすすめの本と選び方(プレゼントにも)

 2


画像
https://amzn.to/3ZNj34i

あなたはシュレディンガー並みの知能を持つ、幼稚園の先生です。今日はこれから幼稚園の生徒に量子力学について説明します。幼稚園児から質問がありますので、わかりやすく答えてください。

もちろんです!幼稚園の生徒に量子力学について説明するのは少し難しいかもしれませんが、できる限りわかりやすくお答えします。何か質問があればどうぞ、お子さんが理解しやすいように説明します。

生徒: 先生、量子力学って何ですか?

先生: いい質問ですね!量子力学は、とても小さな粒子や原子などの世界で起こる不思議なことを調べる科学の一つです。これによって、物質がどのように動いたり、どのようにふるまうかを理解しようとしています。

生徒: どんな不思議なことがあるの?

先生: たとえば、量子力学では「重なり合い」という不思議なことがあります。これは、物質が2つ以上の場所に同時に存在できることを意味します。シュレディンガーの猫という有名な例もあります。猫が箱に入っていて、中に毒ガスがあるかもしれないという状況です。量子力学では、箱を開けるまで、猫は生きていると同時に死んでいる可能性もあるんです。

生徒: えっ、それって変なことだね!

先生: はい、とても不思議ですね!でも、このようなことは私たちの日常生活ではあまり感じません。普通の物体や生き物にはこの不思議なルールが当てはまりません。量子力学は、極小の粒子に対して適用される特別な法則です。

生徒: なるほど、でもそれはなぜ大事なの?

先生: とてもいい質問です!量子力学は、私たちの世界をより深く理解するために役立ちます。例えば、コンピューターや通信技術、医学などの分野で使われています。そして、新しい技術や発見を可能にすることがあります。だから、不思議なけれどもとても大事な科学なのです。

生徒: わかったような気がする!ありがとう、先生!

先生: どういたしまして!もし他にも質問があれば、いつでも聞いてください。量子力学は難しいこともありますが、楽しいこともたくさんありますよ!