48871


プログラムというのはまずプログラムの仕様を決めて、

そのプログラムのアルゴリズムや流れをフローチャートかアクティビティ図に書き込み、

そのフローチャートかアクティビティ図をもとにプログラミング言語でプログラムをするのがプログラムの基本だと思っています。

しかし、自分が作ったアルゴリズムやプログラムの流れに不備がないか不安な時や[アセンブリ言語](https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA%E8%A8%80%E8%AA%9E)や[LISP](https://ja.wikipedia.org/wiki/LISP)などといった特殊な仕組みのコードを使う言語を使う予定がある時など（よくネタプログラミング言語のベースとなる[Brainf**k](https://ja.wikipedia.org/wiki/Brainfuck)も特殊な仕組みに入れられますね。）に

そのプログラムを本来使う予定のとは違うプログラミング言語でテストしてから、本来使う予定のプログラミング言語でプログラムを組むというのはありなのでしょうか？

僕もこれがありなのかどうか不安なので、早急にお答えください。


CC BY-SA 4.0
2018-10-01T10:08:51.283
48870
2018-10-01T11:01:28.050
26886
question
プログラミング言語
あるプログラムの試作品を言語Aで作成し実際に作るときは言語Bで作るということはできますか？


TL;DR: 可能です。

* * *

理論的な話をすると、 **チューリング完全**
という概念があり、広く使われているプログラミング言語の多くは万能チューリングマシンと同じ計算能力を持つとされています。

このため、あるチューリング完全である言語で実装可能なものは、他のチューリング完全な言語でも実装可能となります。

ただし、言語特有のライブラリなどに依存する問題により、実際には実現困難な場合もあります。


CC BY-SA 4.0
2018-10-01T10:14:11.420
48871
2018-10-01T10:18:29.783
2018-10-01T10:18:29.783
29826
29826
48870
answer


質問の趣旨に沿っているかわかりませんが、別の観点から。

複数の関連性の薄い言語で同じ仕様を実装することにあまり意義を感じませんが、  
関連する場合はやらなければならない場合もあります。  
例えば、「使用しているライブラリの動作に疑念を感じた時」などです。

ライブラリは階層化されている場合がありますので、  
どの階層(C言語ランタイム階層、OSのSDKの階層、Windowsの場合のMFCの階層など)で問題が発生するのか切り分けるために行う場合が多いです。  
例えば、MFCライブラリに疑念がある場合に、Win32SDK(C言語)で試験する。などです。

一方言語処理系自体に疑念がある場合は、共通のプラットホームを持つ別言語でやってみるというのも意味があるかもしれません。  
例えばVBの動作に疑念を持った場合に、C#でやってみるといったケースが考えられます。

少し趣が異なりますが、プロトタイプと製品が別言語で構築されるというのは昔は非常に多かったです。  
VBで作ったプロトタイプでUIのプレゼンを行い、動作速度の関係上、製品はVC++で作るというケースがほとんどでしたけど。


CC BY-SA 4.0
2018-10-01T11:01:28.050
48874
2018-10-01T11:01:28.050
3793
48870
answer