教えて!gooにおける不適切な投稿への対応について

簡単に言えば、どんなホームページでも作れるようになりたいです。現在HTMLはわかります。あとC++に興味があるのできちんと勉強しようと思うのですが、それでCGIやデータベースを駆使するなど、概ねどんなホームページでも作成できるようになるでしょうか。それともJavaやPerlなど、他の言語を知らないと無理なこともありますか。詳しく教えていただければさいわいです。ちなみにフラッシュやフォトショップなど、ビジュアル的な部分は除いて結構です。

gooドクター

A 回答 (8件)

久々に、微妙な質問をみかけてしまいました(笑)



さて、まず質問者さんは、ホームページと呼ばれているものがどういった代物で、CGIとは何なのか、動的なコンテンツを実現するためにどのような環境が必要なのかといった事を、ある程度勉強すべきかなと思います。

動的なコンテンツを実現するために、世の中に出回っている技術はたくさんあります。
プログラム言語が問題になるのは、主に実行環境で何が許されているのかということです。
自前でサーバを用意する前提であれば、何でも可能でしょう。しかし、どこかのISPのサーバや、あるいはホスティングサービスなんかの場合、当然用意されたサーバでできること、出来ないことがあります。
そこで動かせるものがPerlしか無い(最近はもう少し選択の幅は広いのが普通ですけどね)のであれば、Perlで作ることになるでしょう。
CやC++でCGIを作ろうとした場合、当然その開発環境(コンパイラが入った環境)が必要です。そこで生成される実行ファイルは当然実行環境で実行できる形式でなければならず、場合によっては、クロスコンパイルする必要にせまられるかもしれません。(そこまでしてCにこだわる理由は普通無いとは思いますけど)
コンパイラ言語でCGIを作るというと、一般的にはとても面倒な話になります。
大きなポータルサイトなんかでは、Cで作る場合もかなり多いですけどね。
また、コンパイラ言語で作ったCGIは、そもそも許可されていない事が多いです。
CGIに関しては、ざくっと以前回答したものがあります。
参考にしてください。
http://okweb.jp/kotaeru.php3?q=235637

また、JavaでCGIは一般的ではありませんが、作れなくは無いでしょう。(ぶっちゃけて言えば、標準出力と環境変数の参照ができる言語なら、何でも書けるのがCGIというお約束です)
ただし、Javaが動かせる環境がサーバ側にあるのなら、普通はサーブレットエンジンまで用意してあるような気がします。
そうなれば、それはCGI等なではなく、ほんとのサーブレットの開発になり、良くも悪くも大仰な話になりますね。
この形は、#1さんの案1に相当しますかね。
それに、これも一般的には自由に使っていいサーブレット環境があるところは多くないです。

JSPやPHP、ASPなどのHTMLへの埋め込みスクリプトの場合も、サーバ側にそういったものを実行する環境があるかどうかによって選択肢になるかどうかが決まります。
最近は、PHPが使えるところは多いですね。

もっと話を単純にして、とりあえずCGIで一般的なのはなんだという話にするのであれば、やっぱりPerlでしょう。
自作のCGIを禁止していないところで、Perlが使えない場所はほとんど無いでしょうから、多分一番汎用的なものが作りやすいです。
スクリプト言語では、最近はRubyがつかえるところも増えてきましたね。

目的である、「どんなホームページでも作れるようになりたい」というのを、具体的にどういったものをイメージして言っているのかが、今ひとつ読み取れないのですが、言葉どおり受け取った場合、必要な技能はこんな感じになりますよ。

1.必要な環境が動くサーバを0から構築できる。
  これには、Webサーバや、その他必要なソフトのインストール/設定も含まれますね。
2.そのサーバを動かしつづける運用のノウハウがある。
3.その時に必要になった言語をさくっと身につける。
  もしくは、自分の知ってる言語で、そのとき必要な機能を実装できる。
4.少なくとも最低限のネットワーク知識を持っている。
  (まあ少なくとも、これ無しで正しいサーバ構築はできないとは思いますが・・・)
5.Webサーバが、どういったもので、内部的にどういった処理を行っているか理解している。
6.リレーショナルデータベースをちゃんと理解して、自前で環境が構築できる。
7.できれば、SQLが結構かける。

つまり、Webシステム開発ということですね。
かなりホームページのイメージからかけ離れてきた事がお分かりでしょうか。

個人的な意見を言わせてもらえれば、どんな言語を使うかなんていうのは、実に些細な問題です。
しかしながら、サーバから作るところまでは全然考えていない(少なくとも質問の文面からは、言語の心配しかされていないように取れます・・・)のであれば、少なくともどこにそういったコンテンツを置くかは、先ほどの実行環境の問題になるので、大きな問題です。
その選択如何で、使える言語は決まってくるからです。
正直に言えば、サーバごと構築するつもりが無いのなら、CやC++にこだわるのは、どうかと思います。
少なくともWebに関するプログラムを作るのであればですが。

.NETに関しては、もっと微妙です。
実際問題として、サーバアプリとして.NETを許容しているところは、多くないと思いますし、今のところ私は一つも知りません。
これも、あくまでサーバを自前で用意できる前提でないとダメでしょう。(少なくとも今のところはです)
.NETはその前提言語であれば、何を使っても同一の実行モジュールができるので、機能的にはC#でもVB.NETでも同じ物ができるはずです。

そうそう、プログラム言語を身に付けるという点について、意見を言わせてもらえれば、C++とJavaやRubyはオブジェクト指向言語であり、Perlはそうではないという点を理解しておかないとダメでしょう。
バージョン5.6以降のPerlは一応オブジェクト指向っぽくコーディングできるようにかなり大きく変更されていますが、過去の資産はそうでないのと、いわゆるPerl使いがオブジェクト指向的なコーディングをしないのが理由で、Perlで出回っている既存のソースはほとんど従来型のプログラムです。
(実装もオブジェクト指向言語としては、中途半端なのでちょっと・・・)
CやPerlの感覚で、C++やJavaを正しく扱うのは、不可能です。少なくとも言語が用意している機能を正しく理解できないでしょうし、それはそれは悲惨なソースコードが出来上がることになります。
しかし、プロのシステム開発の現場でも、オブジェクト指向を正しく理解した上でC++やJavaを使える人間は、あまり多くないのが現状です。
単純に、言語を1から勉強するという前提にたち、今から並行して使うなら、JavaやC++、Rubyなどのオブジェクト指向言語に限るべきかなと思います。
それらが一通り理解できたところであれば、CやPerl等の手続き型言語(関数型かな)をみるのも、面白いでしょう。
ただし、そういった言語の中でもCはさらに特殊だと思った方がいいです。
あの言語が、一般に難しいと言われる所以は、ひとえにCという言語は、コンピュータの仕組み(ハード面も含めて)が正しく理解できているという前提で設計された言語だからです。(アセンブラよりは、かなりマシっていう程度の高級言語ですな)
動くプログラムを書くところまでは、(やや難しい部類に入るものの)他の言語とそう変わらないで使えるようになります。
ただし、きちんと動くプログラムが書けるためには、メモリやレジスタ等のハードに近い部分に対する理解が必要不可欠です。
しかしそれゆえに、Cで書くプログラムは他の言語では反則と思えるような手法が可能であり、それゆえに高速なのです。(もちろんタコなプログラムを書けば遅くなります)

前にも書いたとおり、言語による違いは、比較的ささいな問題です。
ある程度以上使えるようになると、言語によってできること、出来ないことの違いがより具体的に見えてくる事と思いますが、それは作りたい機能を実現できるかどうかではなくて、ある機能を実現するためにどうプログラムを書くかが違ってくるだけです。また、ある仕組みを実現するために、複数の言語を使うことも珍しくありません。
よくあるのは、全体としては比較的書きやすい言語を使って、どうしても速度が必要な部分はCで書くといった住み分けです。
#3さんが書いてるようなケースも、もしかしたらこのパターンかもしれませんね。
仕事でもなければ、普通の人がCGIを書くのに、どうしてもCで無いとダメなケースは少ないかも知れませんが、仕事としての開発の場合は、珍しくも無いケースです。
PerlもRubyもスクリプト言語ですが、Cでライブラリを書いて、それぞれの言語から呼び出すためのやり方があったりします。

長文になってしまいました。
質問の内容から、私が思いつく限り、意識すべき範囲がわかるように説明させていただきました。
質問者さんは、まずもう少し具体的に自分が作りたいもの、あるいは実現したいと思っていることが、表現できるように全体を見渡して勉強するのがよいと思います。
そうすることで、質問の内容もより具体的になり、また最終目標までに、何をどういった順番で身に付ければよいかを判断できるようになります。

では、頑張ってください。
    • good
    • 1

可能です。



私もホームページを作っていますが、カウンタや掲示板、アクセスログ、デジカメで撮影した画像の撮影情報(絞り値や撮影日時など)の表示、ページヘッダーなどの表示、果てはメールの振り分けまで...すべてC++でプログラミングして使っています。

そのためにレンタルサーバーを借りるときにtelnetとgccが使えるかどうかを確認してから契約しました。
確かにperlなどを使わずにC++で作るのは情報も少ないですし面倒ですが...VC++のデバッグなどが使えて便利な面もあるかな?という気はします(でも決して進められるものではありません。やっぱりCGIはperlなどを使った方が楽です)。


当然のことながら「どんなホームページでも」という言葉にどうやっても現在の世界に存在する技術では実現不可能な内容を含んでいなければですが...
    • good
    • 1

 .NET Frameworkも、一応無料でできますよ。

Monoプロジェクトとか、WebMatrixとか。ホスティングサービスも、これはさすがに無料ではないけれど、条件付き無料は、一応ある。

http://www.mono-project.com/about/index.html
http://www.asp.net/Default.aspx?tabindex=0&tabid=1
http://www.microsoft.com/japan/msdn/asp.net/host …

 まぁ、C++は不要で、HTML, DHTML, XML, JavaScriptが必要、かな?「どんなホームページでも」というのが、どういうものをイメージしているのか、イメージできませんが、HTMLで実現できないことは、C++(CGIと解釈)でもできません。FlashやJavaアプレット、ActiveXなどを使うなら、別ですが。
    • good
    • 0

なぜ質問したのかよーくわかりますね。


質問者さんのお気持ちはわかるのですが、結論からいえばHTMLとC++だけでは「無謀」です。
いろいろな言語やソフトがあるのは目的にたいして
より最適な開発環境をもとめた結果だとおもいます。
極論いえばすべてのコンピュータはアセンブラ(マシン語)で動いているわけですのでこれをつかえばなんでもできるはすですが、アセンブラでホームぺージを
つくったひとなどまずいないでしょう。
そうゆう意味で目的にあわせて言語やソフトを使い分けるほうがはるかに開発の都合がいいわけでHTMLとC++ですべてをと考えるのはF1の車で荷物を運ぶようなものだと思います。
これって「無謀」ですよね。
ただしC++あるいはC言語を勉強することは決して無駄にはならないと思います。
    • good
    • 0

>フリーCGIのページで使いたいものを良く見かけるの


ですが、いわゆるCGIと呼ばれるものは、もちろんCで
できるし、JAVAでもできると考えて良いですか?

フリーCGIで公開してるものは、Perlが大半です。
基本的に標準入出力を備えた言語なら、CGIプログラム
の作成は可能です。VBでCGIなんてこともできちゃいま
す。ただJAVAでCGIなんてのは聞いたことないです。
JAVA使うならJSPやサーブレットという技術を利用した
方が開発は効率的ですからね。

>あと.NETとありますが、C++ということですか?
.NETに関して簡単に説明したら、プログラミングを
支援してくれる道具のようなものです。例えるなら、
プラモデルを作ってるような感覚です。.NETという
パーツがあって、それを組み合わせていけばソフト
ができるみたいな感じです。C++はそのパーツを組
み合わせる接着剤のようなものです(極論ですが・・・)。
.NETの言語選択としては、VB、C++、C#等があります。

言語は世の中いろいろあります。沢山あってどれに
しようかと迷うかと思いますが、まず自分のやりたい
ことを見つけてそれにあった言語をチョイスすること
をお勧めします。まだ何も思いつかないようならC言語
から入ることをお勧めしますよ。Cできたら大抵の言語
で通用しますから。
    • good
    • 0

こんにちわ。


タイトルについての回答ですが、基本的にどんなHP
でも作成できます。
Cにできないことは、他の言語では不可能に近いです。
ただ、手間はかなりかかりますよ。
私は大学時代に研究で、CやVBを組み合わせたHPを
作成しました。
Perl等のインタプリタに比べて、Cは処理速度の点
では優位です。
それほど処理速度にこだわらないならJAVAか.NETを
進めます。

この回答への補足

レベルが低いので若干混乱しています。フリーCGIのページで使いたいものを良く見かけるのですが、いわゆるCGIと呼ばれるものは、もちろんCでできるし、JAVAでもできると考えて良いですか?あと.NETとありますが、C++ということですか?それともBasic、C#、C++のどれでも構わないということでしょうか?

補足日時:2004/07/17 00:20
    • good
    • 0

今からサイト作りのために新しい言語を勉強するという事であれば、#1さんの紹介されている言語を考慮するべきです。


但し、Apprenticeさんのご質問である、「どんなホームページでも作成できますか?」という質問に対しての答えは、C++を極めればの話ですが、YESです。
通常のWEBサイトで必要とされる処理でC++で記述できないような処理はあり得ないと思われますので。
但し、単なる掲示板程度でもJavaやPerlで作る場合の数倍の手間(下手をするとそれ以上?)がかかる事は、ほぼ間違いありませんが。
    • good
    • 0

普通Webサイトは C++ では作りません。

最も近いといったら Java かな…。今なら、もし作るとしたら

(案1)Java + JSP
JSP というのは HTML に似た言語ですが動的なページが作れます。JSP だけでも作れますが Java と組み合わせた方がいいでしょう。

(案2).NET(ドットネット)
Microsoftのツール C# とか VB とかじゃないかな。

(案1) はオススメですよ。ツール(JDK, Eclipseとか) もサーバ(Tomcat とか Apache)とかも全部オープンソースなのでフリーで入手できます。プラットホームも Linux でも Windows でもOKですし。 (案2)だとツールも高価だし Windowsに限定されます。

他にも PHP とか CGI とかでもできます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

人気Q&Aランキング