

プログラミング初心者です。

apacheやnginxってどのように作ってるのですか?  
コンピュータ上でうごいているので何かの言語で作られてるのですよね?

CやJavaのような速い言語で作られてるのかなーと勝手に想象しています。

Webサーバだけでなく、メールサーバーなどを含め、こういったものは普通どのような言語で作られるのでしょうか。  
規模や求められることによって変わってくると思いますが、教えてください。


CC BY-SA 3.0
2015-01-10T14:57:17.173
4380
2015-01-12T03:17:04.577
5855
question
linux
apacheやnginxなどのサーバはどのような言語で動いているのでしょうか?


ソースをダウンロードして、中身を見てみるのがてっとり早いですね

例えば、Apacheであれば

<http://httpd.apache.org/download.cgi>

nginx であれば

<http://nginx.org/en/download.html>

から、ソース一式がダウンロードできます。どちらも C で書かれていますね。

C 以外で書かれているものだと、たとえば Docker は Go 言語で書かれていたりします。


CC BY-SA 3.0
2015-01-10T15:02:05.637
4381
2015-01-11T19:45:40.037
2015-01-11T19:45:40.037
4978
845
4380
answer


ソケット通信に関わるプロジェクトは、ほとんどの場合C言語で書かれています。  
Unixの亜種（Linux, FreeBSD, HP-UXなど）のほぼ全てで、ほぼ完ぺきな互換性を持つコードになるからです。  
Windowsに移植するのも簡単です。

また処理速度が最優先事項になる場合が多く、そういった理由でもC言語が使われます。

処理速度が最優先事項なのは、例えば通常100台のサーバーが必要なところで、ソフトウェアが原因で120台サーバーが必要になったりすると、20台分のお金がかかるので誰も使わないからです。

逆に1台のコンピュータで済む（処理速度が重要でない）用途だと、どんな言語も使われています。

最近では、並列処理に関する問題が大きくなったため、それが原因でC言語に代わるプログラム言語が求められているようですが、まだ広く使われている言語は出てきていないと思います。


CC BY-SA 3.0
2015-01-12T03:17:04.577
4425
2015-01-12T03:17:04.577
4391
4380
answer