No.1ベストアンサー
- 回答日時:
こんにちは。
言語によって得意・不得意とする分野はありますが、C言語は汎用性に優れているのでそれほど困らないと思います。
組み合わせ最適化に使われる言語というと、PrologやLISPなどが思いつきますが…C言語よりリスト処理に向いているだけで、C言語でリスト処理を実装すれば、やることは同じです。
Javaは仮想マシン(VM)を使うことで、他のプラットフォームでも(Windows,Linux,MacOSといったOSの垣根を越えて)同じコードを実行可能という利点があります。
またオブジェクト指向なので、さまざまな事象をオブジェクトとして捉えることができ、理解しやすいと思います。
ただ、中間コードをVMが実行するのが遅いので、いろんな環境で実行することを想定したソフトでない限り、Javaを選択する意味はそんなにないように思います。
C言語は手続き指向(C++やC#はオブジェクト指向の概念を取り入れていますが)なので、多少理解に時間がかかるかもしれませんが、汎用性に優れているのでほとんどどんなプログラムも同じようにコーディングできます。構文から勉強するのだとしたら、お勧めなんですが。
PHPやVBAは厳密に言うとプログラミング言語じゃありませんが…。目的を達成できるのならなんでもいいですけどね。
PHPはサーバサイドのスクリプト言語です。主に動的に変化するWebページなどを生成するために使用します。
perlも同様ですが、リストの処理にはそこそこ適しています。
ただそんなに実行速度は速くないので、スピードを期待しても無理です。
VBAはVisual Basic for Applicationsのことで、これもスクリプト言語です。Microsoft Officeなどの製品上で動作します。動作させるアプリケーション(Excel、PowerPointなど)の違いによってコードが多少変わります。また同じExcelであってもXP/2003などの違いでコードに影響が出ます。
リストはExcel上で処理すれば扱えないこともありませんが、Excelの制約がいろいろとありますので、本格的にやろうと思うと性能が不足すると思います。また速度は非常に遅いです。
参考になりますでしょうか?
ご回答いただきまして誠にありがとうございます。
Cは汎用性に優れているのですね。私もそのメリット1つにこだわりがありました。
しかし、javaでオブジェクト指向を学んでから再挑戦してみたいと思います。
まさに井の中の蛙でした。他の解説も大変参考になりました。どうもありがとうございました。
No.2
- 回答日時:
実行時間とのトレードオフで考えるのが普通だと思いますが。
JavaがCに比べて遅いといっても10秒が15秒になるのと20時間が30時間になるのでは意味合いが違います。
実用上支障が無い範囲であれば実行速度が落ちるデメリットよりもコーディングが柔軟になるメリットの方が大きくなります。
Cで手詰まりになっている原因がテンプレートやクラスを使えば解決可能であるならC++に変えれば良いのでは?
開発ツールに懸けられる予算でも事情は変わります。
PurifyやPGReliefなどの(高価な)ツールが使えるならC/C++でも開発効率はさほど変わりませんが、この手のツールが使えないとメモリリーク問題に悩まされることになるかもしれません。
C言語は構造化言語です。
手続き型、構造化、オブジェクト指向は違う技術ではなく進歩の過程でしかありません。
オブジェクト思考は構造化の上になりたち、構造化は手続き型の上になりたっています。
ご回答いただきまして誠にありがとうございます。
構造化言語、手続き型言語、オブジェクト指向の意味合いが、
よくわかってきました。オブジェクト指向を目指して頑張ります。
どうもありがとうございました。
No.3
- 回答日時:
組合せの最適を求めるなら、組合せの場合の数によって
使う言語が変わるように思います。
私が思うに場合の数が10の30乗を越えたあたりから「最適」
という言葉が使えない世界ではないかと思っています。
結論から書きますと、10の30乗以下ではC++でリスト処理を
クラス化にして処理を行えば良いと思います。
シミュレーション的に解くならFortranも可能性はあるでし
ょう。
10の30乗を越えるあたりからはLispがいいと思います。
Lisp言語に慣れる必要はあります。Lispを使えば解ける、と
いう問題ではありません。
10の30乗を越えるあたりから、答えを求めるためにプログラ
ム修正が凄く多くなると思います。
また、組合せの世界の理解に対する概念の変化まで生じてし
まい、C++などの言語では、プログラムの作り直しが多発し
効率的に思えません。
その点、Lispは言語自体もList構造になっていますので、
データ構造を上手く表現できたら、それを処理する構造が
データなのかプロセスなのか混沌とし、コンパイラ言語の開
発とは異次元の開発世界を感じます。
組合せ世界の理解に伴う概念の変化に強いプログラムになる
と思います。
また、Lispを使う場合、フレーム構造などの定義を行うため
のマクロなどが用意されているツールの利用もいいと思いま
す。名前にshellという部分があるのではないか、と思います。
ま、別に無くても自分で作ればいいことですが。
なお、10の30乗という閾値はあくまでも私個人の意見です。
ここからはプログラムの処理的効率ではなくて、開発の効率
重視でなければ、ベターの答えも得難いと考えています。
ご回答いただきまして誠にありがとうございます。
残念ながらさすがに10の30乗までの大きな数は扱いません。
しかし、Lipsというのはどこかで聞いたことのある言語です。
少し参考にしながら、今後大きな数に対応できるよう覚えておきます。
どうもありがとうございました。
No.4
- 回答日時:
> 10の30乗までの大きな数は扱いません。
そうでしたか。それなら私なら多分C++ですね。
問題のルールをなるべく沢山集めて(自分で発見
しないといけないかもしれませんが)、場合の数
を極力少なくして、全てのケースを計算して比較
する方法をとってみたいです。
それで計算時間が許される範囲かそうでないかで
また考え直すことになるでしょう。
データをList構造にするのは、データの構造に柔
軟性を与えるので、修正に有利だと思います。
ご回答追加していただき、誠にありがとうございます。
言語はC++ですね。今後の参考にさせていただきます。
また、データをリスト構造にするのは若干難しいですが、
ポインタを使っていた時にリスト構造は便利だと思いました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 次に、楽天のアジャイル就活に参加して、1日で内定を獲得できる。私は大企業に就職できる? 2 2022/04/17 13:38
- IT・エンジニアリング teratailなどでプログラマー向いていないと言われてPTSD、でも諦めない。最低で何日要する? 2 2022/09/25 06:53
- IT・エンジニアリング バックエンドエンジニアに転職 2 2022/04/07 00:51
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- Java JavaでWebページ作成 7 2023/07/21 21:09
- Java プログラミングのプの字も知りませんが、プログラミングを勉強したいです。とりあえず、学ぶものを決めない 3 2022/11/04 13:10
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- Java 質問です。 Java言語を勉強出来る機会がありますが、プログラマーに将来性はあるのでしょうか? AI 3 2023/05/25 16:54
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- その他(悩み相談・人生相談) 【進路相談】(再投稿) 高3 男 です やりたいこと、物欲やその他目標なし 趣味、特技なし ルックス 4 2023/07/06 08:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
楽しくて最高のプログラミング...
-
C言語、C+、C++、C#の違い
-
プログラミング言語の制作方法...
-
C++における継続行
-
Pythonって何を意識した言語な...
-
C言語とhtmlの違いを どな...
-
なぜコンピューターをよく知っ...
-
VBSでDim、Private、Publicの違い
-
rpa化する言語としてら何があり...
-
TO_CHARで小数点以下がある場合...
-
C++ ってなんて読む?
-
Int('1234') で、strをかんたん...
-
質問失礼します。 プログラム言...
-
任天堂で使うプログラミング言...
-
最新のプログラム言語を学ぶに...
-
Solve()とは、なんですか?
-
COBOLでのNOT = の AND条件
-
CとC++は別物なんですか?
-
プログラムに書かれる"%"記号の...
-
ABAPのラジオボタンについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語、C+、C++、C#の違い
-
楽しくて最高のプログラミング...
-
Pythonって何を意識した言語な...
-
C言語とhtmlの違いを どな...
-
プログラムに書かれる"%"記号の...
-
COBOLでのNOT = の AND条件
-
C++ ってなんて読む?
-
質問失礼します。 プログラム言...
-
プログラミング言語の制作方法...
-
UNITY Float型の接尾辞fって
-
C言語って古いですか?
-
Int('1234') で、strをかんたん...
-
COBOLで文字タイプを数字...
-
TO_CHARで小数点以下がある場合...
-
最新のプログラム言語を学ぶに...
-
C++における継続行
-
vbaとc言語の関連性について
-
VBScriptで引数を省略したい場合
-
VBSでDim、Private、Publicの違い
-
HTMLとC++で、どんなホームペー...
おすすめ情報