ここから本文です

プログラミング言語に関する質問です。

kar********さん

2014/9/2722:35:55

プログラミング言語に関する質問です。

一般的にアプリを開発する際androidの場合JAVA、iPhoneの場合object-cが使用されますが、別にC/C++でも開発することは可能なのでしょうか?またC/C++はwebアプリの開発もできるのでしょうか?

可能な場合はなぜJAVAなどのほうが多く利用されているのかなども教えてもらえると助かります。

閲覧数:
98
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

2014/9/2803:18:58

karamazohu1192さん
C/C++でのwebアプリの開発の開発ということであれば、
マアー、少数派でしょう。

C/C++より少量のコードで、簡単に、上位常連に入れる程度の性能のWebアプリが作れるJava言語の方が多く使われています。

<高速化が容易>
下記URLに、同一仕様のWebアプリケーションを、20種類近い言語で記述して、性能競争した結果が掲載されています。
上位常連はJava言語です。

なぜC/C++で、Webアプリケーションを作ると、C/C++が不利なのかというと、
C++で高い性能を出している例は少数ですが在るものの、C言語で下記サイトの競争に参加しているチームはモウ在りません。
http://www.techempower.com/benchmarks/#section=data-r9&hw=i7&test=u...
細かいマシン語レベルの工夫よりも、”大規模な構造”のアルゴリズムでの工夫のほうが高い性能を出せます。

<大規模化が容易>
C/C++には、自然石の石組みの様に、不規則で積み上げ難い部品となりなちで、”大規模な構造”の構築を作ることを支援する機能が無いのです。
C++をベターユースすれば、大規模なプログラムを作れないことは無いのですが、C言語の悪しき機能を ツイツイ 使ってしまって、簡単に破綻してしまいます。

一方、Java言語は、”大規模な構造”を維持することを阻害する機能が排除され、レンガ積みの城壁のように、簡単に大規模な構造を作ることができるように、言語仕様も洗練され、標準ライブラリも完備しています。

C++で、上記サイトでの性能競争で、上位に入っているhhvmとcpoll_cppsp-rawのチームは、Javaの標準ライブラリ並みに 多種のライブラリを、自前で揃えたという、力技を使ったからです。
さらに、hhvmなど、Facebook社という大きな組織が開発したシステムで、PHP風な言語で記述して、C++のコードに変換して、C++をコンパイルして動かすという、コンパイラまで作るという力技まで用いています。

<高品質で頑健なシステムの実現が容易>
昔、C/C++でWebアプリを作ることが流行っていた時期もありました。
でもC/C++では、「何回も繰り返し実行すると、メモリリークして、Webサーバ・プロセスが丸ごと止まってしまうことが多い」という経験則が、Apatch httpsdサーバのMaxRequestsPerChildというパラメタの標準値に反映されています。
さように、C/C++では、「繰り返し実行できるコードを確実に作る」ということが難しかったのです。
一方、Java言語では「繰り返し実行が出来ないコードなど、作り様が無い」という仕掛けが標準装備されています。

参考「
MaxRequestsPerChildは、子プロセスが停止するまでそれぞれの子サーバープロセスが処理する要求の総数を設定します。
MaxRequestsPerChildを設定する主な理由は、長期に生き続けるプロセスで誘導されるメモリリークを回避するためです。
MaxRequestsPerChildの標準値は10000。

http://httpd.apache.org/docs/2.0/ja/mod/mpm_common.html

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

yor********さん

2014/9/2800:28:42

■Android開発陣が、メインのアプリ作成言語を選んだのは、JAVAがどこでも使え、また、世界中にあふれていたから・・・・、というような記事を見たのですが、その情報元は不明。

■他の言語には色々としがらみや利害関係があるかと。

Androidはgoogle発ですが、今のメジャーなプログラミング言語は、Microsoft社で、Microsoftって、自前の検索エンジン「Bing」ってのを持っているので、ライバルでもあるわけです。
ああ、googleがAndroidってOSを作った、って意味でももろかぶりなライバル。
Microsoftも、Windows PhoneってOS作ってますしね。

そうなると、Androidでは、C#やVB.NetはMicrosoft色が強すぎて使えない。
あとに残って、比較的に新しく、分かりやすく、メジャーなのは、JAVAくらいかと。
そんな事情の方が、強いとは思います。

けっこう、IT業界のライバル関係は、ゴタゴタしてて、訴訟沙汰にもけっこうなってます。

■Androidでも、NDKってものを使えば、C言語での開発は可能ですよ。
書籍もちらほらと出ています。

逆にちらほらとしか出ていないのは、C言語が古くて不便だからでしょう。
その不便さを乗り越えても、なにかを高速に処理したり、ハードに直接アクセスしたい場合には、C言語は有効。

JAVAは、OSの上の仮想環境上で動くので、どうしても処理が遅くなりがち。
ハードの直接的な処理も苦手。

■極論として、C/C++で出来ないことで、他の言語で出来ないことなんてないと思いますよ。
問題は、できやすいか、そうでないかの違いかと。

B-51さん

2014/9/2800:25:54

androidの場合はC/C++での開発も可能です。
なぜJAVAのほうが多いのかと言えば、その方が簡単だからです。
もともとそっちが推奨されていますので、パフォーマンス(主に速度)が重要なアプリでなければ、JAVAで作った方が少ない工数で開発できます。

iPhoneの場合は、iOS7まではobjective-cのみしか対応していません。
ただ、objectiv-cはC言語の派生版ですので、普通のC言語気泡でプログラミングすることはできます。
もちろん、iOSの機能を使うためにはどうしてもobjectiv-cを使う必要が出てきますけどね。
ちなみに、iOS8以降はSWINGという新しい言語が推奨になりました。

Webアプリについては、サーバーサイドで動くので、サーバ側のOSや環境次第です。
まあ、OSとしてはUNIX系(Linux含む)かWindows系がほとんどですので、C/C++は普通に使えますが、レンタルサーバなどでは制限がある場合がほとんどですね。
あと、WebアプリはApache等のWebサーバと連携しないといけないわけですし、HTTPというプロトコルを意識しないとならないので、C/C++で作るとなるといろいろとしんどい面があります。
なので、Webアプリに特化した言語・環境(PHPやJavaサーブレット等)を使う方が開発工数を抑えることができます。

というわけで、結局は「より簡単に開発できる」「プラットフォーム側の要請」という2種類が主な理由になるでしょうね。

たとえば、プラスのねじを回すためにはマイナスドライバーではなくプラスドライバーが必要(プラットフォームの要請)、ただのドライバーより電動ドライバーがあるならその方が楽(工数が抑えられる)というのと同じことです。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる