こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Linux上で動くシステムとしてC系とJavaは

C系を学習しようかJavaを学習しようか迷っております。
用途としては、自社の全支店、他企業(承諾済みとします)のWebコンテンツ、サーバ上のデータ他、いわゆるデータを自動で吸収(読み取り、保存)し、それを専用のLinux機器にてデータの加工、再処理などを数学なども利用して実行したいと考えております。
似たようなものとして(?)良く分かりませんがGoogleの検索ロボットのようなものだと思います。
自分はPHP、JavaScript等のWeb言語などは習得しているのですが、C系やJavaは学習しておりません。
ただ、オブジェクト指向という点は少々慣れていると思います。

具体例がかなり説明不足だと思いますが、このようにパソコン内部でシステムを動かす際にはどちらの言語がいいのでしょうか?
色々とWebで調べてみたのですが難しくて分かりませんでした。
各言語で出来ているソフトウェアを考えても、Apache、Linux、Eclipseとかしか分からずシステムとしてはC系の方がいいのかなと単純に思っております。

C系とJavaの違いとして、ライブラリ、フレームワークがあると思うのですが、C系は基本的に殆ど自分でプログラミングを作成する、JavaはJSPとかライブラリ、フレームワークが多いようなので開発は楽そうな感じはするのですが。
それ以外のお互いの利点が良く分かりません。
Javaに関しては、PHP等よりも型指定などにより複雑だけどセキュアな銀行などで使われるWebアプリ、携帯アプリとかぐらいしか思いつかないレベルです。

すみませんが以上の点でよろしくお願いします。

投稿日時 - 2011-09-27 21:52:16

QNo.7038340

困ってます

質問者が選んだベストアンサー

もしかしてスクレイピングがしたいのではないでしょうか?
Webページを取得して解析加工する技術全般を指す言葉ですが、実はPHPとスクレイピングは
非常に相性が良いです。

PHPではURLを直接fopenできますし、そんなことしなくてもスクレイピング用ライブラリが
各種存在しています。

C言語では、ソケットの作成からHTTPのヘッダ構築まで全部自分で面倒をみないといけません。
まるでメリットがないと思います。

「データを自動で吸収」するプログラムを走らせるのはLinuxサーバ上でしょうか?
そうであれば、cronでPHPスクリプトを定期実行することで実現可能です。

Windowsは詳しくないですが、定期実行の仕組みはあったかと思います。

投稿日時 - 2011-09-28 11:41:28

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.4

>自分はPHP、JavaScript等のWeb言語などは習得しているのですが、C系

スクリプト言語と、プログラム言語では、全然違います。オブジェクト指向がなれているからなんて、考えるのはお粗末です。

でNo1さんも言っていますが、お使いのソフトがなぜC++、アセンブラで作られているか考えた事あります?


もちろんWindowsなどは.NETを含めたC#などもOSに入り始めていますが、根本はハードに近い所で動作するのか、ユーザーアプリケーションでも、ハードにはほぼ関係なく動作するか、API、SPI、フレームワークがすでに用意されているかで、使用されれる言語が違ってきます。

言い換えれば、用途によって変更する物だ。

て、事です。

極端に言えば、Webアプリを作るのにアセンブラを使う人はいません。画像処理する言語でC#やJavaを使う方はいませんし、苦手というよりできません(できるが細かいところでできないことがたくさん)。

で、

>C系とJavaの違いとして、ライブラリ

から始まるくだりは、ほとんど認識ま違いです。呼び方が違うだけで、ほぼ同じ物があり、お互い足りない分を補完できます。

Javaは、単独では動作できません。JavaOS なる物があれば、単独で動作できますが、現在はVMを利用します。

動作方法を探ればすぐわかるはずです、必ずJ2SE等を設置するか

http://java.com/ja/download/

にあるような、「Java Runtime Environment を、Java Runtime、Runtime Environment、Runtime、JRE、Java 仮想マシン、仮想マシン、Java VM、JVM、VM」を設置する必要があります。

これをWindowsで単独で動作させるようにEXEファイルに変換する方法もあります。また、サービスとして動作させる方法も提供されていますが、結局VM上で動作します。

http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF-8&fr=ie8sc&p=JAVA%E3%80%80OS
(JavaOSについて、該当ページをよく読んでください)


Javaの最大の利点は、マルチプラットフォームです。つまり、UNIX系、Linux、PCマシン等、ハードを選ばない所にあります。

とはいえ、実は、それぞれのOSのライブラリーがあり、個別の動作は、それぞれに格納され、呼び出されます。

Cでも全く同じです。それぞれのプラットフォームで再コンパイルすればいいだけです(その時に、そのOS、ハードに対応したライブラリー等がリンクされる<=させる)。

そうなんです、Javaはあまりコード変更をしなくても、マルチに動作する事が最大の利点です。と言うのもデフォルトはユニコードですので、これはどのプラットフォームでも採用されている文字コードです(種類があるが)。

>Javaに関しては、PHP等よりも型指定などにより複雑だけどセキュアな銀行などで使われるWebアプリ、携帯アプリとかぐらいしか

この部分も前述の事から来ています。銀行だとメインフレームや、オフコンなんて呼ばれるカテゴリーのコンピューターがメインにありますが、その周りで動作していもにには、ワークステーション、PC(事務処理)と、まさに、マルチプラットフォームです。

これは銀行だけでなく、NASAやペンタゴン、Jaxaなども全く同じです。

なので作成するソフトのカテゴリーをちゃんと理解し、どのような環境で使われるのか、ユーザー(ソフト作成発注者でもある)が何を求めているのかで、使用する言語を変える必要があるのです。

私が担当したWebアプリだと、メインはJavaですが、Windows上では、C++、WSH(VBS, ws), BAT(DOS), VBA(エクセル操作), を使用してOS固有の問題を解決しています。また、WSHなどを利用した方が、いい場合もあります。

UNIX系マシン上では同じくC++、B-ShellスクリプトもJavaと同時に使用してOS固有の問題をクリアーにしています。

Webアプリは、サーバーサイドとクライアントサイドスクリプトに分かれます。つまり、Web処理は、このスクリプト(JSP、ASP、PHP、C#(.NET))で処理するわけですが、

業務用の例えば販売管理や、ATMでの通信とか、業務アプリの部分は、JavaやC++で作成することにより、移植性や処理速度の向上が見込めるわけです。

とすれば、以外にもJavaだと同じ書式で、業務アプリ部分と、Web処理部分が書けるのでプログラマーの負担が少なくなるわけです。と言うことはPHPはいらなくなります。

これと同じ事がC#にもいえます。

複雑な処理はやはり、スクリプト言語よりもコンパイルする言語の方が重宝するし、速度がはやくなる。さらにセキュリティーも強化できます。

とは追え、前述の私が担当したWebアプリだと、その配下に入ったサブシステムではPHP利用したアンケートシステムを動作させています。これは顧客が、ユーザーカスタマイズを簡単にできるように、

PHP、ASPを用意してGUIを簡単に変更させるように作ったためです。

投稿日時 - 2011-09-28 00:39:42

ANo.3

とりあえず言えることは、この用途だとC/C++はまずないかなぁと思います。
セキュリティはもちろん、設計もコーディングも神経の使い方が全然違うので…。
考えなければならないことが多いし、Javaやスクリプト言語なら大したことない機能を実装するにも面倒な事が多いです。
おそらく目的に適ったようなフレームワークみたいなものは無いと思いますし。

選択肢増やすようでアレですが、PHPが使えるのならPython、Rubyあたりのもう少し汎用目的のスクリプト言語という選択肢もあたってみるといいんではないいでしょうか。

投稿日時 - 2011-09-28 00:19:09

ANo.2

> このようにパソコン内部でシステムを動かす際にはどちらの言語がいいのでしょうか?

これだけの情報からは何だっていいとしか、あるいは JavaScript だっていいんじゃない、というくらい。
しかし、今から勉強するとして、C はなぁ。という個人的感情から Java を推しとくか。

投稿日時 - 2011-09-27 23:18:26

ANo.1

まず、あなたが使っているほとんどのソフトはCまたはC++で作られている、と考えてよいでしょう。
PHPだって「Cで記述されたPHP処理プログラム」です。
lsやcat等も普通はCで書かれています。

ライブラリも多種に及びます。Linuxをやっているなら、yumとかapt等のパッケージ管理システムを使っている(少なくとも知っている)のではないかと思いますが、そのパッケージで lib~ とか ~lib とか言う名前のものは、ほとんどCまたはC++用のライブラリです。
PHPのライブラリの中にも、これらのCライブラリとの橋渡しだけをやっているものがあります。


ただ、Webとローカルとで、別段なにかが違うわけではありません。
入力先がWebからなのか、ローカルのファイルやキーボードなのか、出力先がWebなのか、ファイルや画面なのか、その程度です。

投稿日時 - 2011-09-27 22:59:43

あなたにオススメの質問