最も心を曲げるプログラミング言語ですか?[閉まっている]


45

より合理的にあなたが最も心曲げであることがわかります一般的なプログラミング言語、?

私は多くのポッドキャストのプログラミングを聞いており、今後予定されている重要な新しい言語を習得するために少し時間をかけています。私は必ずしもBrainFuckについて話しているわけではありませんが、どのプログラミング言語が一般的なプログラミングパラダイムに挑戦する言語だと思いますか?

私にとっては、1990年代にいくつかの機能およびロジック(たとえばProlog)プログラミングを行ったので、そこで何か特別なものを見つけたとは言えません。

私はその専門家には程遠いですが、今日でも私にとって最も心を痛めるプログラミング言語はPerlです。ではないので、「Hello World」の実装が困難であるのではなく、最も困難な解決策のいくつかは私の頭をクリアするので、詩的に、私は離れて私の端末から外部に歩かなければならないことを分解することができることをそんなに字句柔軟性があります。私は商用ソフトウェアの実装を販売する可能性が高いと言っているのではなく、Perlがそれほど有名であるという明確な理由があるというだけです。基本的な本のリストをご覧ください。

それで、あなたのより良いプログラミングと実践を促進するあなたの心を曲げる言語は何ですか?


気が遠くなるようなことはできませんか?

4
空白が重要なあらゆる言語!
mootinator

@mootinator-しかし、テキストエディターが痛みを引き起こさない限り、Pythonは実際に作業するのが楽しいです。
rjzii

1
@Thorbjorn INTERCALを追加する予定はありますか?APLは、その大きなパパと比較して、中学校のプロジェクトです。
マークC

Perlは最も難しい場所ではありません。私は12歳で、Perlを簡単にプログラムできます。
ダイナミック

回答:


73

APL

この言語は信じられないほど強力で非常に簡潔で、あなたの脳傷つけます。

まず第一に、カスタムキーボードなしで使用すること、または少なくともキーボードオーバーレイを使用して、使用するすべての不明瞭なシンボルを表示することは難しいです。

APLキーボード

この言語は、ベクトル/配列ベースのパラダイムであり、複雑な線形代数に特化しています。元のバージョンには、ループ構造も何もありませんでした。

  • strip_tags()誰か?(ウィキペディアから借用)

strip_tags()ala APL


18
キーボードを表示するための+1
tcrosley

5
@tcrosley:本当のものを持っているといいですね:wickensonline.co.uk/apl/unicomp-apl-top-large.jpg
11

4
そして、それがまだ十分に気が狂っていなかった場合、バックスペース/上書きキーを使用する必要があるいくつかの演算子がありました。たとえば、逆行列は、分割記号(キーボード画像の右上隅にある逆矢印キーの隣の記号)で打ち消された(Lキーの上にある)四角いボックスでした。
タングレナ

2
高レベルの統計的回帰分析を行うためにAPLを行った1980年代初頭へのフラッシュバックがありますが、それでも人々はそれを使用していますか?震え。
HLGEM

2
私はかつてたくさんのAPLを実行しました。それは今でも私にとって懐かしい場所を保持しています...私は当時それを愛していました。
すぐに

56

ハスケル。ほとんどの人が慣れていない、純粋に機能することに非常に近いです。非常に要求が厳しく、自分が何をしているのかを知っていれば役立ちますが、それまではイライラします。かなり謎めいた、非常にシンボリックな構文があります。これは、一度知っておくと素晴らしいですが、その前は不透明です...リストが続きます。

また、私にとって見栄えの良い方法でコンテンツをフォーマットすることは不可能です。


7
私もHaskellを言ったでしょうが、それは不可解だからではありません。理解することは確かに難しいかもしれませんが、心を曲げるのはその背後にある理論についてです。モナドと矢はまだ私が征服していないドメインです:)
マチューM.

11
なぜ「純粋に機能することに非常に近い」のですか?純粋に機能的です。
dan_waterworth

4
私は自分自身を引用し、Haskellがあなたの心を曲げる方法に追加したいと思います。 :型の言語。型、特にHaskellのような豊富な型を理解することで、どの言語でも優れたプログラマーになります。」Programmers.stackexchange.com/questions/28950/…–
Waquo

14
Haskellは、純粋に機能的なプログラミング言語です。Haskellで記述するコードは純粋に機能的です(unsafePerformIOなどを使用しない限り)。IO-Monadは純粋に機能的です。そうでないと思われる場合、純粋に機能的な方法で制御フローをモデル化するためにモナドがどのように使用されるか理解できません。プログラムをIOアクションの買い物リストと考えてください。買い物リストは単なる純粋なデータ構造であり、副作用はなく、言語ランタイムは副作用を実行する買い物客です。
ワコ

8
@Jon、どうでしょう、私たちはそれに同意します:言語であるHaskellは純粋に機能的ですが、ランタイムシステムはそうではありません。haskellプログラムの実行は不純ですが、プログラム自体は純粋です。
dan_waterworth

30

プロローグ。それは私がそれに最初にさらされたときに私が使用した他のどの言語ともまったく異なっていました。私はそれが好きなので、構文など何も嫌いではありません。


2
私はPrologにリバースプログラミングとしてアプローチしました。私の答えを既に知り、それから質問を得るためにプログラムしたいです。)
ジェキュー

1
@Xepoch:すぐそこにいるかもしれないと思う、Prologは質問を定式化している。使用されている唯一の適切な5GL言語の1つ。
11

一般に、Prologはこれまでになく非常に興味深く、非常に強力であると思いますが、カット配置(!)を完全に回避するのは大変です。
11

Prologの+ 1、Prologを使用する人工知能コースがあり、それは私が不十分に行った唯一のコンピューターサイエンスコースです。
rjzii11年

ただし、Prologは関数型プログラミング言語ではありません。Prologで関数型に甘やかされるのは、Lispで手続き型プログラミングに甘やかされるようなものです。
ちょうど私の正しい意見

24

Perlについては同意します。これは今まで見た中で最もmostい構文です。彼らは、Perl開発者でさえ、彼らが翌日に書いたことを思い出すことができないと言っています。


2
PerlでDef +1。私は常に「暗黙の」変数が特に好きでした(そう呼ばれていると思います)。優れた書き込み専用コードを作成します。
GrandmasterB

2
誰もがPerlを非常に異なる方法で書いているため、異なる言語を書いているかもしれません。Perlが他の誰かのコードを取得するためにPerlがどのように動作するかを学ぶ必要はありません。
グレナトロン

3
この答えとそれに対する両方のコメントに賛成です。よく書かれたperlは読み書きが簡単です。初心者が書いたBaby-perlは、冗長であれば簡単です。唯一の「判読不能」なperlは、意図的に難読化されるか、ワンライナーをスクリプト化します。
ショーンマクミラン

22

フォースと言わなければならないでしょう。すべての操作がスタック操作であるという表記。純粋な形式では、使用するローカル変数はありません。


10
FORTHは素晴らしい言語です。80年代前半にプログラミングを初めて学んだとき、Atari 400を使っていましたが、私の選択はBASIC、Assembly、およびFORTHと解釈されました。3つすべてを広範囲に使用しましたが、FORTHは他のどの製品よりも多く使用しました。レオ・ブロディの超古典的な 『Starting FORTH』と 『Thinking FORTH』の本がまだあります。実際、新しいハードウェアシステム上でゼロからセルフホスティング言語を作成するように求められた場合、ためらうことなくFORTHを選択します。
アダムクロスランド

3
@Adam Crossland:Thinking FORTHは素晴らしい本です。このリンクに興味があるかもしれません:thinking-forth.sourceforge.net
Orbling

1
@Orbling:素晴らしい心は同じように考えます。10分も経たないうちに、私はPDFをKindleに載せました。
アダムクロスランド

1
@Adam Crossland:それに最適な場所です。その本は一般にプログラマーにとって有用であり、FORTHに興味があるかどうかに関わらず、人々の読書リストに載るべきです。
11

1
私は完全に同意します。一般的に問題を解決することについて私たちがどのように考えているかについて述べることは非常にたくさんあります。ブロディーはそのような明快な思想家であり、明確な作家です。彼の作品は私にとって喜びです。
アダムクロスランド

21

ルビー

これにより、私は自分自身を殺したいと思うようになります:

1.month.from.now()

(正確な構文が間違っている可能性がありますが、要点はわかります)。


23
ああ、神様。これが良いアイデアだと思った人はいませんか?
EpsilonVector

8
心を曲げるのは読書ではなく、執筆です。このナンセンスを思い付くのは難しく、すべての組み込み関数/プロパティを記憶/検索するのはばかげています。
マシュー

55
これは素晴らしいと思うのは私だけで、Rubyを学ぶのに十分な理由でしょうか?
11

9
はい、読むのは素晴らしいです。しかし、これは3.months.from.last.month.if.it.was.a.leap.yearを書くことができるということですか?いいえ。少なくとも、そうは思いません。できれば... RoRは、これまでで初めてのテレパシー言語になります。
morganpdx

15
何が悪いのDateTime.Now.AddMonths(1);?これらの機能によってコードが読みやすくなることはほとんどありません。(C#が最適な構文を持っていると言っているわけではありません。任意の言語規則にシフトでき、それでも適用されます。)
ChaosPandion

18

ブレインファック

この言語のock笑を正直に書ける人は誰でも、このようなスレッドを必要としないはずです。

Hello World(ポインター、左、説明、右):

+++++ +++++             initialize counter (cell #0) to 10
[                       use loop to set the next four cells to 70/100/30/10
    > +++++ ++              add  7 to cell #1
    > +++++ +++++           add 10 to cell #2 
    > +++                   add  3 to cell #3
    > +                     add  1 to cell #4
    <<<< -                  decrement counter (cell #0)
]                   
> ++ .                  print 'H'
> + .                   print 'e'
+++++ ++ .              print 'l'
.                       print 'l'
+++ .                   print 'o'
> ++ .                  print ' '
<< +++++ +++++ +++++ .  print 'W'
> .                     print 'o'
+++ .                   print 'r'
----- - .               print 'l'
----- --- .             print 'd'
> + .                   print '!'
> .                     print '\n'

2
または、ホワイトスペースはどうですか?目に見えないコードと組み合わされたBrainfuckのすべての悪。
ローレンペクテル

17

Lispは私の最新の心を曲げる言語です。

Haskellからモナドと関数型プログラミングを取得しましたが、今では作業するマクロがあります。私はCLOSに入ったばかりで、コンディションシステムにまったく触れていません。


私はLispも好きではありません(Clojureの例外を除いて-私はまだそこに決心していません)、あなたに+1を与えました。心を曲げる部分は確かにそこにあり、私はLispから学んだことは、たとえそれを使用しなくても、他の言語で私がしていることの多くを知らせた。
ちょうど私の正しい意見

14

おたふく風邪

これは、からポップアップする言語である時間オンライン話にして(、患者の記録である)重要な生命の安全に関する情報を格納し、実際の生産使用中であることの追加名誉を持っています。ただし、これは簡潔さを重視する言語でもあり、次のような機能が実稼働コードに表示される場合があります(トピックに関するWikipediaの記事の例)。

s A="String" F i=1:1:$L(A) W $c($S($A($E(A,i))<91:$A($E(A,i))-52#26+65,1:$A($E(A,i))-84#26+97))

冗談じゃない?私は寝坊しなかったし、突然4月1日ですか?多くの括弧とドル記号が私の患者記録の近くにあるべきではありません。
dan_waterworth

1
私の初めてのプログラミングの仕事は、ムンプスに特化した会社でした!残念なことに、私は大学でWeb開発のコースを行ったので、古い手ではなく、会社の新しく形成されたASPチームに入れられましたが、最初の数週間はMUMPSが訓練されました。たぶん私は幸運な逃亡をした…
-thesunneversets

1
マディソンウィスコンシン州からここに投稿した人はいますか?本当にベローナ?
ハンスパッサン

1
thedailywtf.comにはMUMPS専用のセクションがあると思います。私が触れたい言語のように見えません。
ティアナ

1
私は学問でMを学び、それが特別な目的の言語として興味深いと思ったことを覚えています。それが許す簡潔さは、ひどい種類の縮小のようなものです。私の初歩では、量産コードには言語の極端な短縮形はほとんど含まれないと考えました。プロダクションMコードベースを最初に見たとき、私の腸はきつく締められていました...それはあなたの例のように見えました。ああ、恐怖!
ajk

13

Coq、または依存型理論の別の実装と言います。Haskellの型システムは、比較的表現力がありません。より表現力豊かな型システム(たとえば、構造計算(CoC))に移行すると、言語のプログラムのプロパティを証明したり、静的にチェックできる型に強力な不変式を埋め込むなど、いくつかのきちんとしたことができます。


2
依存型システム/プロバイダー/言語は、おそらく通常の言語よりも混乱を招くため、+ 1します。
11

1
プログラムの正式な検証は、私が始めたばかりのことです。それは確かに心を曲げ、現実の世界でますます有用になりつつあります。+1
dan_waterworth

7

Objective-C。公平を期すために、私はそれを非常に簡単に研究しただけで、一見しただけでは構文を嫌い、あきらめました。

これは(比較的)一般的な言語(主にMac / iPhone / iPad開発用)であるため、慣れれば実際にはある程度まともだと思います。


2
まあ、それはおそらく少し心を曲げる資格がありますが、私はそれが好きです。[foo bar]構文糖でobjc_sendMsg(foo, "bar");あり、関数ポインタ(汎用のバーではなく、特別な「バー」)が検索されることに気付いた場合に役立つかもしれません。あなたはそれが完全にタイプされたアヒルであることを理解しましたか?
ペルヨハンソン

Objective-Cは、実行時関数に関する巨大な構文糖です。慣れると[receiver doStuff:arg]、動的Javaのように見えます
-toasted_flakes

6

私は水星を選びます。

水星は、純粋な言語でさえI / Oを実行できること示すことで私の心を曲げました。

これが機能する方法は、MercuryのI / O関数が「世界の状態」値を取り、新しい「世界の状態」値を返すことです。したがって、MercuryのI / O機能は世界を変換し、したがって純度が維持されます。


3
+1 "...水銀は世界を変えるので、純度が維持されます。" -私は文脈からそれが好きです。;-)
11

私は今、水星との学習曲線で苦労しています。これまでのところ、それは立派な闘争でした。それは大好きです。
ちょうど私の正しい意見

私を水銀から遠ざけた唯一のことは、その文字列型がNULL終端であることでした。
dan_waterworth

6

確かにSchemeでなければなりません。説明しようとするとcall-with-current-continuationいつも頭が痛くなりますが、それを理解すれば信じられないほどエレガントなソリューションを作成できます。

アルゴリズムの途中で停止し、他の誰かに手を制御したいですか?承知しました!

同じ継続を数回再開したいですか?もちろん!

アルゴリズムの実行を一時停止し、関数を再定義してから、元のスタックで更新されたグローバル状態で実行を再開しますか?問題ない!そして、これは、グローバル状態への異なる変更で同じスタック再エントリポイントを使用して数回行いますか?あなたのために、先生、何でも!


+1 LOL +「あなたのために、先生、何でも!」オリバーの歌のほとんどの行であることに加えて、それは言語が持つべき良い願望でもあります。
11

1
Schemeは、明示的な継続を持つ唯一の言語ではありません。 たとえば、Haskellは、それを問題なくサポートします。
ちょうど私の正しい意見

4
Haskellでは、おそらく(call / cc)言語機能ではなくライブラリとして実装されているので、これは間違いなく心に優しいものです。しかし、多分それはあまり気になりません。
ローガンカパルド

私はそれが多かれ少なかれ心を曲げると同時に起こると思います。頭の中でその矛盾を保つことは私の心を曲げます。そのため、最終的にはHaskellの方が心を曲げます。:)
ちょうど私の正しい意見

Scheme(およびRuby!)の継続の素晴らしい点、それらが言語に組み込まれていることです。Haskellは基本的に、通常の継続渡しスタイルの周りにモナド構文を追加するだけで、Schemeでも実行できます。しかし、モナド構造にすべてを埋め込むことなく、どこにでも call / cc を組み込むことで、間違いなく多くの心を曲げる構造が可能になります。
ダリオ

4

以前はTECO(Text Editor and COmparator)と呼ばれる古代のエディターを使用していましたが、これは非常に強力なテキスト変更言語であり、あらゆる種類のマクロ機能を備えていました。私はそれについての正確な有名な引用を覚えていませんが、要点は「20文字のランダムなコレクションはほとんど常に合法的なTECOプログラムであり、基本的に予測不可能な方法であなたのファイル(エディタです)を変更します。 1ページのTECOコードにあるFortranからPL1へのコンバーター。


5
「TECOでプレイするより面白いゲームの1つは、コマンドラインとして名前を入力し、その動作を推測しようとすることです。TECOと会話中に入力エラーが発生すると、プログラムが破壊される可能性があります。かつて機能していたサブルーチンに微妙で神秘的なバグを導入します。」 男、それらは日々だった!
ちょうど私の正しい意見

1
TECOはEMACSの元の拠点でもありました。EMACSはTECOマクロの単なるコレクションとして始まりました!
ゲイブ

@Omega:参照しているTECOを言う必要があります。TOPS-10に同梱されているDEC TECO、またはMIDASで作成されたMIT TECO。この後者のTECOは、EMACSの記述内容です。EMACSの拡張方法でもあります。私はクラスを渡す代わりにEMACSをハックするのに使用しました。
ジョンサンダース

DEC TECOのみを使用しました。そして、はい、それらは....(再び若い予定)日であった
ω星団

1
私はVimのコマンドモードでタイピングを覚えてます
ロン・

3

組み立ては私にとって最も「心を曲げる」ものでしたが、私はそれを始めたばかりです。


さらに悪化するのは、OSとハードウェアに依存していることです。
デイブ

それはどうですか?明示的なグループ化順序のないストレートな指示?他に何か?
ジェキュー

まあ、特に、私はプログラムの流れが見た目に不明確であることを嫌います。すぐに読むのは簡単ではありません。
アント

2
ああ、シンシナティミラクロン2200B:可変ワード長とJMPのアドレスのランタイム変更との組み合わせ。それはLSDを飼いならしました。
ピーターロウェル

3

Lispの。それを学ぶことは一連の小さなエピファニーであり、それぞれがプログラミング問題の解決についてのあなたの考え方を完全に変えます。


3

リボル

Lispのように、データとしてのコードの概念を中心に構築されています。言語の信奉者は、その家族の他のアプローチに比べてその独自の利点が何であるかを説明するのに苦労し、通常は肩をすくめて「AmigaOSを設計した人が思いついた、標準ライブラリが含まれており、そして、それを「取得」すると、赤いマトリックスの錠剤を服用するようになり、二度と戻りたくなくなるでしょう。」

それに関する問題は、部分的にそれが風変わりであり、どのプログラマが市場であるかを正確に定義していないことです。しかし、部分的には、それを提唱している多くの人々が説明するのが面倒だからです。:)

しかし ダグラス・クロックフォードはかつてファンでしたが、JSONの作成でそこからインスピレーションを引き出し、2010年10月に人々がそれを調べることを提案しています。

「テッド・ニューアードは、「プログラミング言語の未来」に関するパネルの司会を非常にうまく行った。パネルの最後に、テッドは、新しいアイデアを得るために人々が学習すべき言語をパネリストに尋ねた。 (ブルーステート)、レボル(ダグラスクロックフォード)、フォースアンドファクター(アレックスペイン)、スキームアンドアセンブラー(ジョシュブロッホ)、クロジュア(ガイスティール)。

ソース: sauria.com

言語設計と拡張性についての考え方を広げたいと思っている人にとっては、見る価値があると思います。オープンソースになったので(18年間の独自開発後)、私がこれまで腕を伸ばすために与えていた通常の免責事項は適用されなくなりました...一見の価値があります!コミュニティは、独自のRebolベースのメッセージングプログラムから抜け出し、Stack Overflowでチャット開始しました(驚いたことに!)


1
REBOLを避けるのは、REBOLの唯一の実用的な実装は、所有する企業の気まぐれで変更される、標準化されておらず、オープンでないソフトウェアであるためです。(Rebol 2 vs. Rebol 3 ...)標準化されたり開かれたりした場合は、もう一度見ていきますが、その日まで、Rebolは私のツールベルトから離れたままです。
ちょうど私の正しい意見

1
@JUSTMYcorrectOPINIONおそらくその日がまた見に来たのではないでしょうか!Rebol 3は現在、Apache2ライセンスソフトウェアです。私たちも持ってRebolBotここでREBOLのと赤のチャットルーム言語をdemo'ingで私たちを助けるためにStackOverflowの上を。 は、ハイブリッドコンパイルされたバージョンとして非常に興味深い約束を示している別のオープンソースRebolバリアントです。)
HostileFork

2

多くの人が直接記述しなくても済むようになり、開発者はSQLが気が遠くなると感じていると長々と言います。多くの人はセットの観点から自然に考えていないだけだと思います。


SQLは確かに心を曲げますが、より良いコードを書く助けにはなりません。
dan_waterworth

4
SQLは私にとってBASICと同じくらい自然です。SQLで完全なデータ処理を理解すると、DBに裏打ちされたアプリケーションがどれほど簡単になるか驚くべきことです。
ジェキュー

@ dan_waterworth、SQLは、SQLにより多くのロジックを配置することで、より小さく簡潔なコードを作成するのに役立つと思います。
ジェキュー

@ Xepoch、ORMの台頭が私たちに教えてくれたことがあれば、それを避けることができれば人々はSQLを書くことを好まないと思う。彼らはむしろ彼ら自身の言語で書くことを望みます。
dan_waterworth

あなたができるよりも良いコードを書くことができるものを使うことは良いことだと思います。
ジェフ

2

ピュア

Pureは、用語の書き換えに基づく関数型言語です。少し控えめに言っても、スパースで表現力豊かです。


+1機能的とは、ベクターであり、非常に強力な言語を意味します。qの子孫として(APLのおかげです)、Haskellらから1トン借りています。それは確かに言及を保証します。
11

2

それは最も心を曲げるものではないかもしれませんが、私が学ぶのははるかに困難でした(Haskellアセンブリ言語は簡単だと思った!)

それはHDL言語のセットであり、特にVHDL(およびそれよりも少ない範囲のVerilog)です。

すべての「機能」が同時に実行されるという事実を克服することは非常に難しく、すべてを完全に並列化することを避けることはできません。もちろん、これはプログラミング言語の境界線にすぎません。


一度、ちょっとしたVHDLをやった。コードを追加するにつれて、そのコードを実装するハードウェアが効果的に増え、すべてが同時に実行されることに突然気づいたとき、私は本当にひらめきの瞬間を経験しました。真に無制限の同時実行スレッドを持つマルチスレッドプログラミングのように。EC2またはmap-reduceクラスター上の無制限のノードにアクセスできる人も同様の話題を得るかもしれません。(しかし、その後まもなく、これらの言語に自明ではない何かを実装することは完全に苦痛であることに感謝するようになり、逃げました)。
ティムデイ

1
電気技師だったので、同時性にそれほど問題はありませんでしたが、実際にはかなりの解放でした。実装の苦痛に関しては、uPは特定のクラスの問題に対するニッチなソリューションであり、元々は数学から取られた概念であるアルゴリズムとして説明できるソリューションに問題を変換します。固有の並列性の問題は、簡単に解決できる問題の1つであり、その際にVHDLとFPGAが役立ちます。

ええ、あなたがまだプログラマーではなく、複数の同時ブロックで作業することに慣れていれば、VHDLはおかしくなります。
-medivh

1

Tcl

私は一度それを学び始めましたが、理にかなっているほど十分に学んだので、それが私の脳を感じるようにする方法が本当に嫌いでした。それは心を曲げるものとみなされるようです。


1
特に理由はありませんが、1995年から1997年頃にTclプログラミングをたくさん行いました。1998年に新しい仕事を探し始めたとき、ベイエリア全体のすべての採用担当者が、低賃金で高圧のVIGNETTEギグのためにインタビューに参加しようとしました。履歴書からすぐに削除しました。Tclは本当に簡単だと思い出したので、これについて苦労することを検討しましたが、振り返ってみると、代わりにPythonを学んだことを願っています。
アダムクロスランド

Tclは間違いなく後天的な味です。個人的には、この言語の設計は天才だと思います。Tclほど脳に合う言語は他にありませんが、私は少数派であることは知っています。好きか嫌いか、それを学ぶには言語の仕組みを再考する必要があります。
ブライアンオークリー

1

チューリング機械言語、明らかに。これは非常に強力で、存在する他のすべてのプログラミング言語よりも優れていることが証明されており、使用しようとすると脳を傷つけることが保証されています。


6
証明できるほど優れていると主張することに反対しなければなりません。上位という用語は、主観的な問題を考慮することを示唆しています。また、無限メモリを搭載したコンピューターでCを実行すると(チューリングマシンが無限メモリで実行されるため公平です)、同等の性能を発揮します。
ウィンストンイーバート

2
@Winston:チューリングマシンのテープは無限である必要はありません。必要に応じて追加のテープを製造できるテープ工場が両端にあればよいだけです。)
マイクダンラベイ

「確かに優れている」とは、定義上客観的な用語です。これは、あらゆる言語をチューリングマシンに実装できることを意味しますが、すべての言語がチューリングマシンに実装できるわけではありません。もちろん、無限メモリと無限スタックを提供するCのような言語にも当てはまります。
user12667

質問ですでに述べたように、BrainFuckは、Turingの機械言語です。
-Mchl

1
これは、チューリングマシンがより強力であることを示しています。問題は、少なくとも私はまた、など、使用のアカウントのしやすさ、可用性、に取るよりも優れている言語を主張し、用語を使用したいと、ということである
ウィンストン・エバート

1

C

ポインタ、メモリ管理、および型キャストはすべて多くのことを考えており、間違いを犯しやすいです。ハッシュテーブルやリストなどの組み込みデータ構造がないため、独自のライブラリを作成するか、サードパーティライブラリを見つけてそのAPIを学習する必要があります。


すみません。Cはアセンブリ言語です。もちろん、それらのものはありません。
ピーターロウェル

2
アセンブリ言語は心を曲げます。
david4dev

-1

JESS(Java Expert System Shell)。Java環境に組み込まれたこのCLIPSの適応は、機能的なルールベースのエキスパートシステム言語です。実際のJavaオブジェクトを次のようにマッピングしようとしています事実、期待する結果を得るために適切な質問を見つけることは、本当に難しいことです。エキスパートシステム理論に精通していればそれほど重要ではありませんが、純粋なOOPの考え方から来ている場合はうまく適合しません。注:CLIPSはLispではありませんが、そのように見えます。さらに別のマインドベンダー。

最初の学習曲線を超えると、非常に強力ですぐに答えを思いつくことができます。


JessはCLIPSの最新バージョンであり、独自のアプリケーション用のスクリプト/ロジックエンジンの一種としても埋め込み可能です。
タングレナ

わかりました、私は訂正します。haskel.com/corp/details/0,10294,CLI1_DIV139_ETI9759,00.htmlは それにもかかわらず、それが中に埋め込まれている言語とは非常に異なった考え方が必要です。
Berin Loritsch


-1

CIL

CIL、すべての.NETプログラムがコンパイルされる共通の中間言語、一種のオブジェクト指向アセンブリ。その中のコードを書いたり読んだりして、その構成を私がすでに知っているC#の構成と比較するのは興味深いことです。これは、.NETが舞台裏で何をするのかをさらに知る良い方法です。また、動的コード生成や、Mono Cecilを使用した既存のコンパイル済みコードの書き換えなどにも役立ちます。


2
それともバイトコードですか?
ジェキュー

あなたがJavaバイトコードを意味するなら、私はそれをまったく経験していないので、私はそれを気が狂うように推薦する立場にありません。
svick

Java-Bytecodeは既にコンパイルされており、CILは実行時にコンパイルされるため(.netのJust-In-Time-Compiler)
-basti

@chiffreほとんどの場合、Java BytecodeとCILはまったく同じように機能します。どちらの場合でも、「コンパイル時」にバイナリ中間言語にコンパイルされるソースコード(C#またはJava)(CILまたはJavaバイトコード)があり、JITによって「ランタイム」に実際のマシンコードにコンパイルされます。コンパイラ。
svick
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.