質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

29427閲覧

C/C++のWebフレームワークが少ない理由

senachi

総合スコア96

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

7クリップ

投稿2015/07/23 02:32

最近PHPerから脱却を図るべくPHP以外の言語で書かれたWebフレームワークの選定をしています。
いろいろ調べていると、ruby on railsを筆頭にjavaのspringやscalaのplayなどが人気があるようですが、意外にも言語としての歴史が古いCやC++で書かれたWebフレームワークはほとんど見当たりません。
一応、Treefrogという日本製のWebフレームワークはあるようですが、(失礼ながら)現状それほど勢いがあるようには見えません。

そこで質問です、C/C++で書かれたWebフレームワークが少ない理由を教えていただけませんか?

「こういう理由で少ないんじゃないの?」みたいな推測回答でも結構です。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

C言語やC++では文字列処理や動的メモリ確保ですらライブラリに依存しており、正規表現も言語標準となっていないこともあって、Webフレームワークを作る上で「フレームワークがカバーすべき範囲が極端に大きくなってしまうこと」、また「それだけ頑張って特有な価値を提供できるかというと、それも難しい」ということ、さらには「単に置けば動くスクリプト系と違って、コンパイラを使う分環境調整が面倒なこと」などがネックとなる気がします。

投稿2015/07/23 04:23

maisumakun

総合スコア145064

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

senachi

2015/07/25 04:42

ご回答ありがとうございます、どのご回答も甲乙つけがたいので一番初めに投稿いただいた方にベストアンサーをつけさせていただきました、申し訳ありません。 他の過多もご指摘されているように、やはり低水準なところまでいじれる反面いろいろ複雑な印象です。最近は敷居の低いPHPなどを触り始めてWEBプログラマになる方が多いことも理由かもしれませんね。
mitei

2015/07/28 05:46

>C言語やC++では文字列処理や動的メモリ確保ですらライブラリに依存しており、正規表現も言語標準となっていないこともあって 標準ライブラリにあるものを指してライブラリに依存なんて言い方はどうかと思いますよ。 そんなこと言っちゃうと Python だって正規表現は「ライブラリに依存」してるってことになっちゃいます。 また、C++ では動的メモリ確保は言語機能ですし、C++11 で正規表現も標準ライブラリに追加されています。
maisumakun

2015/07/28 07:01

C++で動的メモリ管理が言語側ににあるというところは確かにそうですが、特にCでは文字列連結1つですら関数を呼ぶしかないという状況です。大量の文字列処理が必要となるWebフレームワークの構築用には向かないでしょう。
guest

0

C/C++で書かれたWebフレームワークが少ない理由

まず、Perl、PHP、Python、RubyなどのLL系言語と比較すると、
C/C++はコンパイルが必要であること、文字列処理が不得意であること
などから、とくにWebでの小規模アプリの開発効率で負けてしまいます。

それから、C/C++はポインタを使うので、
深刻なメモリエラーでOSをクラッシュさせる危険性があります。

UNIX/Linuxサーバとの親和性とかほかにもいろいろあり、
デスクトップではメインストリームだったC/C++も、
Webのデファクトスタンダードにはなれませんでした。

そうしてC/C++でサーバサイドを書くことが少ないので、
フレームワークも自然と少ないのではないでしょうか。

ただ、C/C++は実行速度が速いです。

オンラインで重い処理をする大規模サービスの分野で、
オンプレミスでサーバを管理できるところでは、
C/C++で書くケースもよくあるようです。

投稿2015/07/23 04:29

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

senachi

2015/07/25 04:37

ご回答ありがとうございます、どのご回答も甲乙つけがたいので一番初めに投稿いただいた方にベストアンサーをつけさせていただきました、申し訳ありません。 C/C++はあまり詳しくないんですが文字列処理が不得意なんですか・・・。 メモリエラーに関しては確かに仰るとおりリスクがありますね。 やはりさくっと作れるというスピード感では他の言語に劣ってしまうんですね。
guest

0

ベストアンサー

C/C++で独自にWebServerを作らなければいけない状況の想定として

組み込み系のソフト管理画面等
(ルータとかメモリやCPUがチープすぎてapacheとか乗っけられないとき)

C++のバイナリ(データはOnMemory上)にWeb管理機能をつけたい
あたりかと思います。

まあ
ガチに OpenSSLや証明書対応の実装をしようとすると死にますし。。
(どちらかというとapacheやnginxにそこら辺の設定をするだけでも死んでる人がいますね。。)

労力が多い割にはあまりメリットがない感じ。

Treefrogは使ったことないのですが、ほかのC++のWebフレームワークを使ったときは
結構下層まで実装しなくてはいけなくて面倒だった記憶があります。
あとはググった時に情報があまり出てこないとはまりますね。。
よっぽどサンプル等が豊富なら別なのですが。。

すごくスモールでさっと作ってあんまテストしなくていいならnode.jsでぶん回す方が楽
[DB/シンプルファイル経由の連携なら]

比較として>
Rails[スクリプト系] ・・テストする文化があるから。基本複雑なテストって書けないので構造が逆にシンプルになります
Java系 ・・デバッガ環境が整っていてステップデバック等がしやすい
ある程度初期メモリ(512M-1G)が詰める状況だと結構快適にぶんまわせる

実装的に気になるなら
https://blackjumbodog.codeplex.com/
あたりのコードを拝読してみるとよいかもです

単にWeb機能を簡単につけたいだけなら
https://code.google.com/p/sdloader/
あたりも結構良いです

投稿2015/07/23 03:28

kimukou_26

総合スコア145

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

senachi

2015/07/25 04:34

ご回答ありがとうございます。 なるほどです、確かに細かいところまでいじれる反面、PHPやJavaなどに比べると敷居が高いイメージです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問