
プログラムのチューリング完全性とか万能チューリング機械ってあるじゃないですか。これって、どんな挙動のプログラムでも1言語で書けるって事ですか?
色々と調べてみたのですが、どのサイトもどの資料も説明が難しかったので、ここで質問してます。私の認識は下の通りです。
チューリング完全のプログラムは、FORTRAN、C言語、Java、JavaScriptなど。
チューリング不完全のプログラムは、TeX、HTML、SQLなど。
要するに、
TeXは数式や楽譜の作成くらいの機能に制限されている。その一方で、FORTRANは数学的計算は勿論、3Gゲームや通販サイトなどFORTRAN1言語だけで何でも出来て、ありとあらゆるシステム構築に使えるって事ですか?
チューリングは、戦前イギリスの数学者の名前。彼は次の命題の証明をした。どんな複雑なコンピューターシステムでも中身を分析すれば、四則演算や条件分岐や反復など数種類の小さな基本的システムパーツの組合せになっている。FORTRANやC言語はこれを全て含んでいるから、FORTANは何でも出来る。一方、SQLは惜しいがチューリング完全に必須の基本的システムパーツが数種類だけ欠けていて、限界がある。SQLオンリーでゲームを作ろうとすれば、テトリスくらいなら出来るけど、ぷよぷよを作ろうとすれば別の言語を足す事になる。
正しいですか?
No.2ベストアンサー
- 回答日時:
私の認識にも間違いがあるかもしれませんが。
チューリング完全とは「チューリングマシンで実現できる」と言っているだけで、実際に何が「チューリングマシンでできる」かには言及していません。
よって
> FORTRANは数学的計算は勿論、3Gゲームや通販サイトなどFORTRAN1言語だけで何でも出来て、ありとあらゆるシステム構築に使える
「数学的計算」「3Gゲーム」「通販サイト」などが作れるかどうか、と「チューリング完全」かどうかとは、直接の関係はありません。
> TeXは数式や楽譜の作成くらいの機能に制限されている
文章書くだけの人には馴染みが無いかもしれませんが、TeXにはプログラミング言語としての一面があり、これはチューリング完全になっています。
http://ja.wikipedia.org/wiki/Brainfuck
このような、とても実用には使えない言語でも「チューリング完全」です。
また、チューリングマシンは、無限長の記憶領域を持ち、処理時間という概念はありません。
対し、現実のコンピュータは、記憶領域は有限であり、ある程度の処理時間が必要です。
チューリングマシンで「解ける」ことが判っている問題でも、現実のコンピュータではメモリが足りない、あるいは、計算時間が非現実的である、ということが沢山あります。
少し前に話題になった「組合せ爆発」の動画ですが、この「全ての経路を求める」問題は、正方形の分割数がいくつであろうとも、チューリングマシンを使って解を求めることができます。
しかし、実在のコンピュータで解く場合には、10x10で25万年かかっている、ということで「現実的には解けないのと一緒」と言えます。最後に出てきた高速のアルゴリズムでも、100x100等は「現実的には解けないのと一緒」でしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- IT・エンジニアリング FORTRAN、COBOL、C、Java、C++とか誰が作ったのですか?言語習い使いまた出て、キリが 4 2023/05/06 23:11
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- その他(プログラミング・Web制作) WEBアプリ開発に必要な言語 5 2023/06/28 16:57
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- その他(プログラミング・Web制作) FORTRAN77の配列(除算) 2 2023/02/01 14:34
- その他(ビジネス・キャリア) グーグルの障害者訓練プログラム募集あるがどうだろ?6時間勤務で月収22万!! 1 2023/02/17 20:36
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムからアイコンファイ...
-
プログラムに書かれる"%"記号の...
-
C言語、C+、C++、C#の違い
-
C言語とhtmlの違いを どな...
-
COBOLでのNOT = の AND条件
-
UNITY Float型の接尾辞fって
-
Visual Basicとは
-
C++でGUIカレンダー
-
プログラムを基礎から学びたい
-
RubyとPython覚えるならどっち?
-
初めて関数型言語を学ぶとした...
-
「VB」と「VB.NET」の違いについて
-
バイナリである部分の書き換え...
-
アイデアをください。
-
HTMLとC++で、どんなホームペー...
-
プログラミング 整数倍
-
パスカルケースの由来。
-
C++ ってなんて読む?
-
FORTRANと他の言語(c、c++、ba...
-
COBOLで文字タイプを数字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムからアイコンファイ...
-
C言語、C+、C++、C#の違い
-
COBOLでのNOT = の AND条件
-
C言語とhtmlの違いを どな...
-
プログラムに書かれる"%"記号の...
-
COBOLで文字タイプを数字...
-
UNITY Float型の接尾辞fって
-
HTMLとC++で、どんなホームペー...
-
Excel VBAで文字化けする (英語...
-
C++における継続行
-
TO_CHARで小数点以下がある場合...
-
VBScriptで引数を省略したい場合
-
VCとVC++
-
UWSCはどのプログラミング言語?
-
vbaとc言語の関連性について
-
パスカルケースの由来。
-
任天堂で使うプログラミング言...
-
Excelの開発言語ってなんですか?
-
C++ ってなんて読む?
-
VBSでDim、Private、Publicの違い
おすすめ情報