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

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

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

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

Q&A

10回答

5658閲覧

C++の必要性

speaker

総合スコア8

C++

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

7グッド

0クリップ

投稿2016/01/27 03:01

難度が高いとされるC++は今後使われなくなるのでしょうか?

linuxのカーネルに興味があり、C言語の基本は抑えているつもりなのですが、果たしてC++を学んでいいものか悩んでいます。
他の言語を学んだ方がいいでしょうか? C++よりおすすめなものがありましたら教えてください。

CyberMergina, matobaa, arly_times, JADEN, tatsuya6502, maisumakun👍を押しています

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

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

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

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

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

guest

回答10

0

Cは様々なプログラム言語の元になった言語で、C++はその改良版と言いますか、オブジェクト指向などと呼ばれるプログラムの信頼性を上げるための機能拡張した言語です。
Swift,C#,Java,Javascript,perl,PHPなどなど、多くの言語とよく似ています。大枠には同じですが、各言語ごとに方言的に少しずつ違います。

例えば英語を勉強するか、フランス語を勉強するかなどではそれぞれ習得に時間がかかるので、勉強すべき言語を選ぶ必要がありますが、プログラム言語はどれもよく似ています。

大事なのは、どれか一つ、深くしっかり理解することです。一つがしっかりわかっていれば、他は似ているので、この言語はここが特徴で、ここが違うのかと、すぐに理解できます。

私はC++をしっかり勉強しました。その後、色々な言語に触れますが、上にあげたどれの言語でも使えます。もちろん書き方を忘れてコンパイルエラーになることもあありますが、それはググったりマニュアルを見ればいいことです。

大事なのはプログラムの構造ですから。どれか一つ、身近にじっくりと勉強されればいいと思います。

なくなるか? なくならないと思います。Windows,Linux,Appleでは使われませんが、それ以外の組み込み機器とかではメインの言語ですから。

投稿2016/02/09 10:19

tomoac

総合スコア104

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

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

0

難度が高いというだけの理由で使われなくなるということはないと思います。C++ほどの速度と柔軟性を兼ね備えた言語は他には知りませんので、当分は(少なくともC言語がある限り)使われ続けるでしょう。Javaの仮想マシンやクラスライブラリも、中身はC/C++で書かれていることが多いですし。.NET Frameworkも同様ですね。ですので、C++がなくなったら他の言語も困ってしまいます。

他の言語を学んだ方がいいでしょうか? C++よりおすすめなものがありましたら教えてください。

何をしたいのかにもよりますね。ただ漠然と言語を学びたいというのであればC++をおすすめします。すでにC言語を学ばれているようなので、ゼロから始めるよりはだいぶハードルは低いと思います。

それにJavaやC#などC++の影響を強く受けている言語もあり、C++を習得していればそれらを覚える難易度はぐんと下がると思います。
というようなことを以前にもどこかで書いたような気が……。

投稿2016/01/27 03:58

catsforepaw

総合スコア5938

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

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

0

言語は「道具」です。
仮に貴方が今「C++」に興味をお持ちなら、「とりあえず手を出してみる」というのは正解だと思います。

私がかつてあった方で、学生ベンチャーでプログラマーをしている方(もう私から見たら「ウィザード(=魔法遣い/妖術師)が居たのですが、その方は、「取り組むべき問題が出てくると、まずはC++で考えて、それを他言語(要は請負元の希望する言語)に翻訳していく」とおっしゃっていました。

「C++が使われなくなるのか?」と言われると、正直いまの私の知識では答えられないのですが、「C++で培った知識は無駄にはならない」とは言えると思います。
私? 私はいまだに「日本語→シェルスクリプト→該当言語」という多重翻訳をしています。

投稿2016/01/27 03:12

kwy8791

総合スコア37

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

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

0

実は、職場の同僚の方(プログラミングはこれから習得される)からほぼ同じ質問を頂いていました。
私は画像処理系にずっと携わっていますが、ずっとC++(VC++)です。
また、組込み系ではCが多いと思います。
C++の場合、数値計算が高速なのでそれ系のソフトを組む場合には有利です。
また、最近注目されている機械学習系のオープンソースではPythonが使われる事が多い様ですが
バックエンドではC++で実装されているとも聞きます。

実は、私が社会人になりたての20年弱前、会社の先輩がJAVAを使っていたのですが
「CとかC++なんてそのうち使われなくなるよ。今のうちからJAVAへ移行すれば?」という忠告を
頂いた事がありますが、今になっても、未だに使われ続けています。
結局のところ、無くなるという事は無いと思います。

投稿2016/02/10 03:05

Tossy

総合スコア38

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

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

0

仕事の受注のしやすさという観点からは、
フリーランスではC++の案件は取るのが難しいかと思います。
今の市場ではJava,C#,Ruby,PHP等が多い様です。
組織においては分かりませんが。

linuxのカーネルに興味があり

Linuxカーネルソースを読んだり改造するなら、GCC拡張機能は必須でしょうね。
LinusはC++を批判していますね。
LinuxカーネルはCで記述するからこそ、OSのデータ構造・設計・処理がシンプルに、かつ高速になっているのでしょうね。

投稿2016/01/27 05:03

mao999

総合スコア111

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

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

0

私は C++ がなくなるとは考えていません。理由は他の皆さんがすでに述べている通りです。

重要なのは、なにかの技術に精通していることだと思います。プログラミング言語は所詮道具に過ぎず、仮に将来違う言語を使うことになっても、根底にある知識と経験は活かせるでしょう。

なんの言語を学ぶかですが、システムプログラミングに興味があるようですので、C++ は良い選択だと思います。書籍が豊富にありますし、達人の書いたオープンソースのコード(OSだったり、データベースだったり)を読むことだってできます。深く学びたければ、いくらでも学べます。また、C や C++ ができるエンジニアを必要としている仕事も、きっとたくさんあります。

それ以外の言語ですが、システムプログラミング向けの言語で、いま私が個人的に注目しているのは、Rust です。この言語は C++ と同様の実行効率を目指しながら、プログラミング言語の最近の20年の研究成果をとり込もうとしています。強みは、安全な(クラッシュしない)プログラムが書ける、安全なマルチスレッドプログラムが簡単に書ける、といったところです。

趣味として、Rust で Raspberry Pi Zero の OS を開発している人もいます。

ただ、現時点で、Rust だけを学ぶことはお勧めしません。この言語に可能性は感じますが、まだ未成熟で、仕様がはっきりしていない部分も多いです。日本語の情報が少ないのはもちろん、英語の情報も不足しています。もちろん、これを使った仕事だって、日本にはまだないでしょう。C++をしっかり学んだ上で、Rustを見ると、ここが良い、ここが足りないといった判断ができるようになると思います。

もし興味を持たれたなら、まずは、いま日本語に翻訳中の、オフィシャルドキュメントから読んでみることをお勧めします。


2016年2月10日 追記

Stack Overflow(英語版)の2015年の開発者アンケートの結果によると、好きな言語(ここ1年使ってきて、今後も使い続けたい言語)の第2位は C++11、第3位は Rust だったそうです。

Most Loved

  1. Swift 77.6%
  2. C++11 75.6%
  3. Rust 73.8%
  4. Go 72.5%
  5. Clojure 71.0%
  6. Scala 70.6%
  7. F# 70.1%
  8. Haskell 69.5%
  9. C# 67.2%
  10. Python 66.6%

出展:
Stack Overflow -- 2015 Developer Survey
http://stackoverflow.com/research/developer-survey-2015

投稿2016/01/27 04:40

編集2016/02/10 00:31
tatsuya6502

総合スコア2035

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

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

0

こんにちは。

難度が高いとされるC++は今後使われなくなるのでしょうか?

革命的な何かが起きないかぎり、我々が生きている間にはありえないと思います。
むしろ、純粋なC言語のシェアはだんだん小さくなり、C++言語のシェアが増える方向と思います。
なんといっても、ベターCとしても非常に有用ですから、一度C++を使い始めたらC言語には戻れません。
std::stringだけでもC++を使う理由になると思いますよ。マジで。
確かに学習できることはC言語より格段に広いですが、別に全てを学ばないと使えないわけではないです。ベターCとして使っていけば良いのですよ。

とは言え、オブジェクト指向を使わないのは勿体無いかも。
また、C++11のstd:unique_ptrなどのスマート・ポインタを使えるようになると、new/delete(Cで言うmalloc/free)の悪夢から解放されます。
RAIIを悟れば、更にリソース・リークからも解放されます。
例外も便利です。「慣れ」が必要ですが。
テンプレートは普通に使っても便利ですし、びっくりするほど強力です。更に、コンパイル時処理が可能ですから、更に高速なプログラムを書けるようになります。(超難しいですけどね。)コンパイル時にレイトレーシングなんてことやっている人がいますね。

低レベルプログラムに興味をお持ちなのでしたら、C++はお薦めです。
C++でも当たり前ですが、低レベルプログラムできますよ。
Linuxのカーネルを少し追いかけたことあるのですが、関数ボインタ・テーブルのお化けですね。
あれをC++のクラス+仮想関数で記述したら、さぞやすっきりするだろうなと感じます。

投稿2016/01/27 04:39

Chironian

総合スコア23272

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

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

0

C++の複雑さですが、これは「使われている」からこそだとお思いください。
たくさんの人に使われているからこそ「あんな書き方ができるといい、こんな書き方ができるといい」という要望が数多くあり、それらを取り込みつつ複雑化してきた歴史の結果ですから。

・今後盛り上がるかすたれるか?
これはC++に限らずどんな言語でも予測しにくいものです。キラーアプリとかキラーフレームワークの登場でいくらでもひっくり返されてしまうので。たとえばアクションゲームの分野ではUnity(C#かJavaScriptで書ける)の登場でC++の出番は大分減った印象があります。デスクトップアプリにはC++向けのQtというフレームワークが強力なのですが、Qtってひと頃に比べて盛り下がってきていないかなあ?

・学ぶ必要があるかどうか?
業務で必要になったら学べばいいんですよ。泥縄勉強でもやる気次第でC++の奥深さにいくらでも潜れます。

投稿2016/01/27 04:22

yuba

総合スコア5568

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

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

0

C++が無くなることは今のところ考えられません。
いろいろな言語が出ていますが生産性を高めるための言語がほとんどで、パフォーマンスを求めるのであればC++を超える言語はほとんどありません。
そのためコンシューマーゲームなど、ハードの制約がある開発はC++です。

ですが、目的なく単に言語を学ぶというのであればJAVAが良いと思います。

仕事はもちろんですが、その先の言語学習の礎にもなる言語だと思います。

本当は作りたいものがあってそれに対してどの言語を使うか。という選び方ほうが良いと思いますが。

投稿2016/02/09 23:14

piyoon

総合スコア68

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

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

0

コンパイラを作っているメーカがやめてしまうと無くなってしまうかもしれませんが、当分それはないでしょう。
ただ、MicrosoftのVisual Studio 2015では、C++はデフォルトではインストールされなくなりました。C++を使う場合はオプションで選択する必要があります。(次のバージョンではまた変わるかもしれません。)

投稿2016/02/09 09:54

PineMatsu

総合スコア3579

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問