APLに似た配列指向の関数型言語である J 言語は、その独特の構文と問題解決へのアプローチにより、最近プログラミングコミュニティで議論を呼んでいます。J言語に関する最近の入門記事は、この言語の特異性と、共有プラットフォームでタイトルが切り詰められるという繰り返し発生する問題の両方について会話を引き起こしました。
タイトル切り詰め問題が投稿の問題を浮き彫りに
「Understanding J」というタイトルの記事は、共有された際に切り詰められたようで、不完全なタイトルについて複数のコメントが寄せられました。コミュニティのメンバーは、これが他のサイトからコンテンツを自動的に再投稿するボットを使用する特定の投稿者に関する繰り返し発生する問題であり、タイトルが適切に収まるかどうかを確認していないと指摘しました。あるコメント者は「Understanding J: An introduction to J that gets to the point」と省略すれば完全に機能したはずだと提案し、別のコメント者は、この投稿者が約5年間ボットを修正せずに問題のあるタイトルを投稿し続けていると指摘しました。
Jの独特な構文が好奇心と混乱を引き起こす
Jの特徴的な構文、特に負の数にアンダースコアを使用すること(「-3」ではなく「_3」など)が、いくつかのコメント者の注目を集めました。この慣例にとらわれない選択は、Jと APL との関係に由来しており、APLでは否定に特殊文字(¯)を使用していました。JはASCII互換の代替としてアンダースコアを採用しました。この言語はまた、無限大(_
)と負の無限大(__
)を表現するためにアンダースコアを独自の方法で使用しており、これにより特定の計算で例外処理の必要性が軽減されます。
「最近、 J に魅了されるようになりました...しかし、それは繰り返し私の頭に浮かび、最も奇妙な時に J について考えることがあります。より多くの言語を使うようになるにつれて、私はそれにますます魅了されるようになりました。」
J言語の主な特徴
- APLに類似した配列指向プログラミング言語
- 暗黙的プログラミング(ポイントフリースタイル)をサポートする関数型言語
- 以下を表現するための独自の構文:
- 負の数:
_3
(マイナス記号の代わりにアンダースコアを使用) - 無限大:
_
(単一のアンダースコア) - 負の無限大:
__
(二重のアンダースコア)
- 負の数:
- 複素数は次のように表現:
2j3
- 動詞(関数)を強化する副詞、以下を含む:
/
(挿入)\
(接頭辞)*.
(各)@:
(アット)&:
(アンダー)
Jでの教育経験が記憶に残り続ける
特に興味深いスレッドの一つは、20年前のコンピューティング学位でJを学んだ経験を思い出すコメント者に関するものでした。当時は混乱し、インタープリターのバグに遭遇したにもかかわらず、彼らは数十年にわたって持続してきた言語への魅力を表現しました。この感情は、初期の接触が困難または不完全であっても、Jの従来とは異なるプログラミングへのアプローチが持続的な印象を残すことができることを反映しています。
配列プログラミングが言語設計の思考を刺激する
議論はまた、言語設計の哲学にも及び、一部のコメント者は配列プログラミング(Jのような)と連結型アプローチ(FORTHのような)を組み合わせた理想的なプログラミングパラダイムについて考えていました。これにより、そのような要件を満たす可能性のある別の配列指向言語である Uiua についての言及が引き起こされ、Jがプログラミング言語の設計と実装に関する思考を刺激し続けていることが示されました。
広範なセットアップなしにJを試してみたい人のために、あるコメント者は GitHub Codespaces を通じてブラウザベースの実験を可能にするために、Dockerfileを含む .devcontainer
ディレクトリを追加することを提案し、この珍しい言語をより多くの好奇心旺盛なプログラマーにアクセスしやすくするためのコミュニティの継続的な努力を示しています。
参照: Understanding J