知りたいこと
僕はプログラミングをしています。
そして最近、プログラミング言語の定義ってなんだろう...
と思って調べたりしていたら、プログラミング言語の(一般的な)定義のしかたは
「チューリング完全」かどうかだそうです...
まずそれが正しいか教えて下さい。
試してみたこと
検索をしました。その中で最も分かりやすいであろう回答はこうでした
**計算理論において、ある計算のメカニズムが万能チューリングマシンと同じ計算能力をもつとき、その計算モデルはチューリング完全(チューリングかんぜん、Turing-complete)あるいは計算完備であるという。。**でした。
疑問
万能チューリングマシンというのは
電卓みたいなものなのでしょうか...?
でもそうすると...電卓もチューリング完全になってしまいますよね...
わけがわからないのです...
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答8件
0
ベストアンサー
プログラミング言語の(一般的な)定義のしかたは「チューリング完全」かどうかだそうです...
「プログラミング言語はチューリング完全である」は事実ですが、これはプログラミング言語自身の記述能力(=どのような問題を解けるか?)を表しているだけです。なのでプログラミング言語の“定義のしかた”という言い回しには違和感がのこります。
一方で“チューリング完全でない(自称)プログラミング言語”、例えば HQ9+ はジョーク目的で実用上は使い物になりませんから、完全に誤った主張とも言い切れないです。
万能チューリングマシンというのは電卓みたいなものなのでしょうか...?
でもそうすると...電卓もチューリング完全になってしまいますよね...
あなたの考える“電卓”の定義にもよりますが、四則演算や√や冪乗といった計算ができる程度の“普通の電卓”はチューリング完全 ではありません。
検索をしました。その中で最も分かりやすいであろう回答はこうでした
計算理論において、ある計算のメカニズムが万能チューリングマシンと同じ計算能力をもつとき、その計算モデルはチューリング完全(チューリングかんぜん、Turing-complete)あるいは計算完備であるという。。でした。
(上記説明でご自身が納得されたならば、それで十分かと思います。“既に理解している人向けの説明”感が強いですが...)
万能チューリングマシンについては 情報処理学会研究報告「万能チューリング機械のわかりやすい動作説明」 などの説明を参照ください。もしくは Brainfuck というプログラミング言語を調べてみるのも良いかと思います。
ある「対象◯◯がチューリング完全である」といった場合、その「対象◯◯を使えば(どんなに非効率的であっても)普通のプログラミング言語と同程度の計算問題を解ける」ことを意味します。ただし、あくまでも“純粋な数値計算”に限りますから、インタラクティブなゲームを作れたりネットワーク通信ができる訳ではありません。
おまけ:記事「うっかりチューリング完全になっちゃったもの」では、その設計者が 意図せず チューリング完全という性質を備えてしまった何かがリストアップされています。興味があればのぞいてみてください。
投稿2019/03/21 14:43
編集2019/03/22 00:29総合スコア6191
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/21 15:00
2019/03/21 15:07
2019/03/21 15:25

0
こんにちは。
プログラミング言語の(一般的な)定義のしかたは
「チューリング完全」かどうかだそうです...
まずそれが正しいか教えて下さい。
プログラミング言語を定義する際に、チューリング完全かどうかを気にする人はあまりいないと思います。
普通に「有用」なプログラミング言語を定義したら、それは大抵のケースでチューリング完全です。
また「有用」なプログラミング言語(の一部)でもチューリング完全でないものもあります。C言語のプリプロセッサは有る種の独立したプログラミング言語であり単独で使うことも可能(そのようなことをするケースはほぼないとは思いますが、皆無でもないだろうと予想しています)ですが、チューリング完全ではありません。
ですので、「チューリング完全」かどうかはプログラミング言語の特性の1つと捉えた方が良いと思います。
万能チューリングマシンというのは
電卓みたいなものなのでしょうか...?
そのような結論を導いた道筋が読めませんが、それは違います。
電卓と同じ振る舞いをするチューリングマシンを定義することは可能と思いますが、電卓は電卓であって他の機能を持てないので「万能」ではありません。
投稿2019/03/21 03:05
総合スコア23274
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
万能チューリングマシンというのは
電卓みたいなものなのでしょうか...?
違います。無限長テープとヘッドを持つ機械です。
Wikipediaを読んで理解できればいいのですが、難しいようであればオートマトンを基礎から勉強していくとそのうちチューリングマシンにたどり着くと思います。
直感的には、
- データ(どれほど膨大であってもいい)がある
- データを処理するルール(どれほど膨大で複雑であってもいいが、ちゃんと形式的に定義できて矛盾しないもの)がある
- ルールに則ってデータを処理する
みたいなことができればチューリング完全です。ただし「メモリに乗り切らない計算はできないのでチューリング完全ではないね」とは言わないお約束になっています(と思います)。
投稿2019/03/21 21:12
編集2019/03/21 21:34総合スコア30939
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/21 21:32 編集
2019/03/22 10:10

0
「チューリングマシンXを記号化した記号列と、Xに与えるデータの列Dを食わすとXにDを食わせたのとまったく同じ動作をするチューリングマシン」のこと。
チューリングマシンを模倣するチューリングマシンですな。
で、万能チューリングマシンと同じ能力のある計算モデルがチューリング完全です。
どんなプログラムであってもあなたが電卓を使ってそのプログラムを模倣できるなら、
「あなた+電卓」はチューリング完全じゃないかな。
投稿2019/03/20 23:49
編集2019/03/20 23:56総合スコア16612
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
回答ではありません。
以下を確認してみてください。。その上で、質問内容を見直してみましょう。
チューリングマシン
また、チューリング賞は、計算機科学分野で「世界最高の権威」を持つ賞とされています。
興味があったらアラン・チューリングも見てみるといいと思います。
投稿2019/03/21 09:36
総合スコア6851
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
それそのまま「チューリング完全」でぐぐって、でてきたものを一通り読んでみよう。
その上で改めて聞いていただけるとよろしいかと。
投稿2019/03/20 23:48
総合スコア88163
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。