C または C++ で新規ソフトウェアを開発する場合、どちらの言語を選択しますか?
理由も合わせてお答えください。
つくるソフトウェアの目的によりますね――。
Linuxでコマンドラインベースの簡単なツールを作るんだったら、クラスを用意せずに直接コーディングしていきたいのでCをチョイスします。
一方、Windowsアプリを作るんだったら、GUIのライブラリが充実しているC++(というよりVC++)をチョイスします。
C++です。
プログラムの整合性を如何にコンパイラにチェックをさせるかと言う話になると思うので、
横着するならやはりC++でしょう。
完全にオブジェクト指向を踏襲する場合は下記みたいに書かないといけなかったり、
確かにそういう使い方をするとややこしいですね。
public class MainClass { public static void main(int argc, char** argv) { MainClass main_instance = new MainClass(); :
完全にオブジェクト指向を踏襲する場合は下記みたいに書かないといけなかったり
public class MainClass { ...
(・_・)エッ......? 何語ですか?
個人的に作る場合はC++。作ったデータ構造とロジックをマルチインスタンス化しやすいから。
仕事の場合は、状況によりますね。
大規模プロジェクトになれば、きちんとインターフェイスを定義して作れば、C++のほうが拡張性やメンテナンス性は高いとは思いますが、C++やオブジェクト指向をちゃんと理解して使いこなせる人間がどれだけ集められるか?という問題があります。
結果的にCにせざるを得ないという場合が多々。
日本のソフトの開発現場ってそーいうレベルのところ多く無いですか?
理解して使いこなせる人間がどれだけ集められるか?という問題
そうですね。仕事の場合はそういう問題がありますね。
結果的にCにせざるを得ないという場合が多々
私の周りでは、C++ どころか C すら読み書きできない人が圧倒的に多いですね( ̄○ ̄;)
Cでしか実現できずC++では実現できない、そんな機能ありましたっけ?
組み込み系などの開発で対応コンパイラがCしかないとかそういう状況ならば仕方がないとは思いますが、
どちらも選択肢として可能であれば幅広い選択肢が検討できるC++だと思います。
少なくともCかC++かという選択肢であればどう考えてもC++しかないと思っているのですが。
チーム開発となると「C++がわからないメンバーがいるから」という後ろ向きな理由でCにもなり得るのですかね。
Cでしか実現できずC++では実現できない、そんな機能ありましたっけ?
無いと思います。標準化が遅れている機能はありますが。
無い(はずな)のになんで C を選択するの?っていうのが本質問のきっかけです。
# Ruby 開発者のまつもとさんは、オブジェクト指向言語でオブジェクト指向言語を実装するのは混乱するとか言ってたような気がします。
C#です。.netなら開発環境やライブラリを使い回しができるし開発速度が速いので。
Windows上でウィンドウベースのアプリにしろ、コンソールベースにしろC++では実装速度が追いつきません。
と、これでは話になりませんが、文書処理(たとえば、シンプルなルールで住所リストを生成したり、ある特定の条件で大量のテキストデータから一部を抜き出したり程度)ならCのほうが楽かも。書かなくていいコードを書かなくて済みますし。①の人と同じですね。
それ以上、自分ひとりで開発&自分ひとりで使う、ということ以外ならC++のほうが圧倒的に利点は大きくなると思います。
(個人的にはC++は開発効率などの面で、組み込み系やドライバ系のようなメモリのシビアな監視が必要なところ以外は使う必要性がゼロだと思いますが。それ以上にメモリ関連のバグを造りこみやすいし)
あと、COBOLから来たエンジニアさんのC系列言語やJavaなんかの研修として、Cを選択するって言うのはありますね。
構文にまず慣れてもらって、そのあと・・・ということで研修をやっていた気がします。(COBOL汎用機→オープン系Webシステムへ転籍のひとですが)
むー … 理解し難い理由です。
C++ はクラスを作る必要はないし、ほとんど C と同じように書けると思いますが…。