問題タブ [esoteric-languages]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
esoteric-languages - 難解な言語の実用的な用途はありますか?
実用的な実世界のプログラムを書くために使用される難解な言語の例を知っていますか? 難解な言語が特定の問題を解決するのに役立つことが実際に証明されているコンピューター科学の分野はありますか?
c# - 言語が「動的言語」であるかどうかをどのように判断できますか?
私は、言語が「動的」であることが実際に何を意味するのかをよりよく理解しようとしています。Adobe(旧Macromedia)Director製品ラインのスクリプト言語であるLingoについてはかなりの経験があり、「動的言語」と見なされるのではないかと思っています。
変数とリストの処理方法は、私には非常に「動的言語」のように思えます。
変数を使用すると、foo = 3
またはを書くだけbar = "Hello World"
です。int
変数をまたはとして宣言しないでください-それはそのままでそれstring
を理解します。
リストを使用すると、のようなものを書くことができますmiscCollection = [3, "Hello World", #helloWorld, ["Embedded List", "Goes Here", 3], [#phrase: "Property List goes here", #value: 3]]
。これは?に似ていませんtuple
か?
これらの機能は、「動的言語」ステータスの資格を得るのに十分ですか?
興味深いことに、私はC#をより多く使用し、Director / Lingoをより少なく使用していますが、最近の動的言語に対するすべての興奮で、私は実際に穀物に反対しているのではないかと思います。
編集
以下のMarkRushakoffの回答に関して、このWikipediaの記事を使用して、Lingoが「動的」であるかどうかを分析する試みを示します。
Eval
--Lingoにはキーワードがdo
あります。コマンド全体を実行します。たとえば、または。文字列を数値に変換しようとしますが、これは単なる解析演算子ではありません。実際には、変数の文字列表現をその数値に変換できます。たとえば、ステートメントが23と評価されると仮定します。value
do
do "foo = 23"
do "foo = sum(20, 3)"
value
foo = 23
value("foo")
高階関数-私がこの権利を理解している場合、これは基本的に私がC#で「デリゲート」と呼ぶものです。Lingoは、私が知る限り、これを直接サポートしていませんが、関数を持つ型(「親スクリプト」と呼ばれる)を作成し、その型のインスタンスを渡すことはできます。
閉鎖-私が知る限り、これはサポートされていません。
継続-私が知る限り、これはサポートされていません。
リフレクション-少なくともある意味ではそうです。実際には、文字列を使用して型の新しいインスタンスを作成します(例:
fooInstance = script("Foo").new(bar)
。型のインスタンスを、型の名前を含む文字列に変換することもできます(したがって、c#のGetType()
機能を模倣することができます)。プロパティの名前を知らなくてもタイプのプロパティをクエリして(たとえば、インデックスでプロパティを検索する)、インデックスでプロパティの名前を見つけることもできます。マクロ-ウィキペディアの記事がマクロを説明しているように、私はそうは思わない。ただし、実行時にスクリプトを編集することは可能ですが、それが重要になる可能性があります。
したがって、Lingoは動的機能で6点満点中2〜3点を獲得しているようですが、Lingoがそれらをサポートしていないことを確認するには、クロージャと継続について十分に明確ではありません。何を結論付けたらいいのかわからないと思います。コメントを歓迎します。
code-golf - コードゴルフ:フラクトラン
チャレンジ
Fractranインタープリターとして機能するプログラムを作成します。どの言語でも、文字数で最も短い通訳者が勝者です。プログラムは、実行するフラクトランプログラムと入力整数nの2つの入力を受け取る必要があります。プログラムは、プログラムに便利な任意の形式にすることができます。たとえば、2タプルのリスト、またはフラットリストなどです。出力は、実行終了時のレジスタの値である単一の整数である必要があります。
フラクトラン
Fractranは、JohnConwayによって発明された簡単な難解言語です。フラクトランプログラムは、正の分数のリストと初期状態nで構成されます。インタプリタはプログラムカウンタを維持し、最初はリストの最初の部分を指します。Fractranプログラムは、次の方法で実行されます。
- 現在の状態と現在プログラムカウンターの下にある分数の積が整数であるかどうかを確認します。そうである場合は、現在の状態に現在の端数を掛けて、プログラムカウンターをリストの先頭にリセットします。
- プログラムカウンターを進めます。リストの最後に達した場合は停止し、そうでない場合は手順1に戻ります。
Fractranが機能する方法と理由の詳細については、esolangエントリと良い数学/悪い数学に関するこのエントリを参照してください。
テストベクトル
プログラム: [(3、2)]
入力: 72(2 3 3 2)
出力: 243(3 5)
プログラム: [(3、2)]
入力: 1296(2 4 3 4)
出力: 6561(3 8)
プログラム: [(455、33)、(11、13)、(1、11)、(3、7)、(11、2)、(1、3)]
入力: 72(2 3 3 2)
出力: 15625(5 6)
ボーナステストベクトル:
あなたの提出物は、受け入れられる答えであるためにこの最後のプログラムを正しく実行する必要はありません。しかし、もしそうなら賞賛!
プログラム: [(455、33)、(11、13)、(1、11)、(3、7)、(11、2)、(1、3)]
入力: 60466176(2 10 3 10)
出力: 7888609052210118054117285652827862296732064351090230047702789306640625(5100)
提出物と採点
プログラムは文字の長さで厳密にランク付けされます-最短が最適です。うまくレイアウトされ、文書化されたバージョンと「縮小された」バージョンのコードの両方を自由に提出して、人々が何が起こっているかを確認できるようにしてください。
言語「J」は許容されません。これは、リンクされたページの1つにJですでによく知られている解決策があるためです。Jファンならごめんなさい!
ただし、追加のボーナスとして、フラクトランで実用的なフラクトラン通訳を提供できる人は誰でも、500レピュテーションポイントのボーナスを受け取ります。万が一、複数のセルフホスティング通訳者がいる場合は、端数が最も少ない通訳者がバウンティを受け取ります。
勝者
1779の分数を含む自己ホスティングフラクトランソリューションを提出した後の公式の勝者は、JesseBederのソリューションです。ただし、実際には、ソリューションは遅すぎて1+1でも実行できません。
信じられないことに、これはその後、別のフラクトランソリューション(わずか84分数のAmadaeusのソリューション)によって打ち負かされました!私のリファレンスPythonソリューションで実行すると、最初の2つのテストケースを数秒で実行できます。分数には新しいエンコード方法を使用しており、これもよく見る価値があります。
名誉ある言及:
- Stephen Canonのソリューション、165文字のx86アセンブリ(28バイトのマシンコード)
- 52文字のルビでのJordanのソリューション-長整数を処理します
- 最短のPythonソリューションではありませんが、再帰的ではないため、より難しいプログラムを簡単に処理できる数少ないソリューションの1つである、87文字のPythonでのUselessのソリューション。また、非常に読みやすいです。
esoteric-languages - 実用的な COW サンプル プログラム?
COWで何ができるかを示す長いプログラムまたは短いプログラムを書いた人はいますか? 確かに、言葉は冗談です。しかし、チューリング完全なので、誰かが COW に変換する高級言語を書いたのかもしれません。少なくとも画面に入力した内容を示す短い実用的なプログラムを作成した後、誰かがその言語ではるかに興味深いアプリケーションを作成したと思うでしょう。
programming-languages - あなた自身の難解な(またはそうでない)言語を書いたことがありますか?それはどのように見えましたか?
stackoverflow ユーザーのお気に入りの難解な (またはそうでない) プログラミング言語に関するいくつかの質問を見てきました。言語の実装に関する質問もあります。しかし、皆さんが実際に独自のプログラミング言語を作成したことがあるかどうか (難解であるかどうかに関係なく) 知りたいと思っていました。
私は新しい独創的な言語について読んだり、学ぼうとするのが好きなので、stackoverflow コミュニティが提供するものを見てみたいと思いました。:)
数年前に趣味で書きました。
programming-languages - プログラミング言語の問題について考えるのを手伝ってもらえますか?
私は(現在)機能しているインタプリタを使って実験的なおもちゃのプログラミング言語を作成しました。チューリング完全であり、かなり低レベルの命令セットがあります。
PHP、Python、Rubyの4〜6倍のコードと時間がかかる場合でも、あらゆる種類のものをプログラミングするのが大好きです。
だから私は多くの言語で書かれた「基本的な」ものが機能するようになりました:
- こんにちは世界
- 入力->出力
- カウントダウン(ループがないので思ったほど簡単ではありません)
- 階乗
- 配列エミュレーション
- 99本のビール(単純な、間違った屈折)
- 99本のビール(正規)
コラッツの予想
クワイン(それは楽しいものでした!)
- Brainf * ckインタプリタ(チューリング完全性を証明するために、私を幸せにしました)
したがって、上記のすべての例を実装した理由は次のとおりです。
- 彼らは皆、言語の多くの異なる側面を使用していました
- 彼らはかなり面白いです
- 彼らは書くのに何時間もかかりません
今私の問題は:私はアイデアを使い果たしました!自分の言語を使って解決できる問題の例はこれ以上見つかりません。
- 上記の基準のいくつかに当てはまるプログラミングの問題がありますか?
esoteric-languages - Piet で DP と CC はどのように変化しますか?
仕様によると、
黒色のブロックとプログラムの端は、プログラムの流れを制限します。Piet インタープリターが黒いブロックに移動しようとしたり、エッジから離れようとすると、停止し、CC が切り替えられます。次に、インタープリターは現在のブロックから再び移動しようとします。2 回目に失敗すると、DP は時計回りに 1 ステップ移動します。これらの試行が繰り返され、試行ごとに CC と DP が変更されます。8 回試行してもインタプリタが現在のカラー ブロックを離れられない場合、抜け道はなく、プログラムは終了します。
私の読み方が間違っていない限り、これはフィボナッチ数列の例の動作と矛盾しています。
(出典: http://www.dangermouse.net/esoteric/piet/samples.html )
具体的には、左端に当たったときに DP が (0,3) ((0,0) は (上、左) である) で左に曲がるのはなぜですか? この時点で、DP と CC の両方が LEFT であるため、私の読みでは、シーケンスは次のようになります。
- (0,4) のエッジから外れてブロックを離れようとして (そして失敗しました)、
- CCをRIGHTに切り替え、
- (0,2) のエッジを外れてブロックを離れようとします (そして失敗します)。
- DPをUPにローテーションし、
- (1,1) の白いブロックに入って、(1,2) のブロックを出ようとする (そして成功する)
トレースによって示される動作は、DP が完全に回転し、CC が LEFT のままになっているようです。
私は何を誤解しましたか?
accumulator - HQ9+ の「アキュムレータ」とは何ですか?
HQ9+ プログラミング言語について少し読んでみました。
- https://esolangs.org/wiki/HQ9+、
- https://en.wikipedia.org/wiki/HQ9+、および
- https://cliffle.com/esoterica/hq9plus、
そして、インクリメントはできるがアクセスはできない、いわゆる「アキュムレータ」について何かを教えてくれます。また、 using+
は結果を操作しないため、入力は
結果を与える:
これがどのように機能するか、何をするのか、そしてそれが意味をなすかどうかを誰か説明できますか? ありがとう。
emacs - GNU EmacsにIntercalモードはありますか?
GNUEmacsのIntercalモードが見つかりません。ありますか?