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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

C++

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

Q&A

解決済

7回答

10190閲覧

C++とJavaどっちがおすすめですか?

WeilSpinor

総合スコア170

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

C++

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

0グッド

0クリップ

投稿2019/04/20 12:51

編集2019/04/20 12:57

いま、JavaScriptとhtml、php、MariaDB(MySQL)を使ってプログラミングの勉強をしています。
応用の幅の広いDOMや、Node.jsの助けもあって、当分は、プログラム制作はこれで事足りると思います。

しかし、少し思うところがあって、C++かJavaをやろうかと思っています。

思うところとは以下の通りです:

###・クラス型のオブジェクト指向を勉強してみたい
私が初めて「オブジェクト指向」という言葉を知った本では、クラス型のオブジェクト指向を前提に書いており、でも、今やっているJavaScriptはプロトタイプ型を採用しているようで「なんだ、違うのか」と思い、少しがっかりしました。

なんかJavaScriptでオブジェクト指向を勉強していると、
プロトタイプ型なのにも関わらず説明においてクラス型の作法を持ち出してくる説明や教材が多かったり、
「でもクラス型の方が定義が厳密で理解しやすいよな、わかるよ」という気持ちもあったり、
でも、記事によっては頑なに「クラス」とか「インスタンス」なんて言葉は使わないぞ、というものもあったり、(でも公式リファレンスでは「インスタンス」とか言ったりしている)
統一感がなくて気持ち悪い感じがぬぐえません。

まあ、どっちも広い目でみれば同じだと思うのいいんですが…(むしろDOMの勉強がそのままオブジェクト指向の勉強になってメリットではあるが)

でもクラス型にも触れてみたいと思いました。
(ECMA最新版ではシュガーシンタックスとしてclass構文が追加されているが、そこまで利用が浸透しているわけではないもよう…)

###・Webサイト制作を前提としている情報が多い
HTMLやDOMが描画用のAPIとして優秀なこと、JavaScriptが連携性が高い、PHPが使っていますが、Webサイトの制作にはあまり興味がありません。

この間プログラミングにおける質問をしたところ、どうも、私がやっていることは、JavaScirptやhtmlの使い方として「不自然」なようで、「そんなことやるのなら、サーバー言語で書いた方がいいと思う」と言われてしまいました。
私の興味があることをやっている人は、JavaやC++のようなもっと汎用性の高い(?)言語をやっている人が多いようです。

###・Web系言語だと、コンピューターそのものについての理解がしづらい
PHPを使っている時に思ったのですが、PHPでは、ポインタの仕組み、メモリやCPUの動き、といったものがブラックボックス化されていて、公式の仕様書にも詳しくは語られていません。
たとえば、ファイル操作をしているときに出てくるファイルポインタ、というものが、何を指しているのかが明示されていません。(ただ、「参照だ」「C言語とはちょっと違うんです」という言葉を使ってお茶を濁している)
舞台の全様がわからない、というのがあって、なんとも気持ち悪い感覚がありました。
そこらへん、C++言語だったら、「ポインタは、いま使っているメモリのアドレスを指している」という感じに、もっとシンプルな説明ができて、スッキリするのになぁ、と思いました。

###・プログラミング一般的な情報についての記述に、JavaScriptはあまり使われていない
オブジェクト指向とか、プログラムの設計とか、そういったプログラミング一般のことを説明している本や記述は、JavaScriptよりもっと有名なJavaとかを使っていることが多いようです。そういうときに、Javaで書かれたコードをぱっとみてわからない、というのが、不便です。

#どうするか
他にも、

・スマホアプリ(android)もそのうち作ってみたい
・Apacheのwicketを勉強したい
・やってみたいオブジェクト指向プログラミングの演習書にJavaで書かれている本が多い

というのがあって、Javaがいいかな?、と思いました。
でも、Javaは仮想マシンで動いているので、マシンのことがわかりづらかったりするし、
C++は過去にかじった経験もあるので、
もしJavaと同じくらい汎用性があるなら、
できればC++の方がいいかなと思いました。

ほぼJavaに軍配があがっていますが、あえてC++をやる理由はあるでしょうか?

まぁ、
覚える言語の違いなんてたかだか作法の違いなので、両方やればいい話ではありますが。

ただ、何か後押しがあればやる気もアップするというものなので、なにか言って頂けるとありがたいです。

また、
今やっているHTML+JavaScript+Node.js+phpだけでは実現が難しいが(面倒だが)、JavaやC++の力を借りることで解決可能なこと
があれば、併せて教えて頂けると幸いです。
ご回答お待ちしております。

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

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

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

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

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

guest

回答7

0

ベストアンサー

こんにちは。

クラス型のオブジェクト指向を勉強してみたい

このためには、恐らくJavaの方が向いていると思います。
C++もオブジェクト指向プログラミングの学習は可能ですが、それ以外の非常に様々な機構(豊富な型修飾、テンプレート、STLなどなど)もあります。なかなかオブジェクト指向プログラミングに注力し辛いかも知れません。

Web系言語だと、コンピューターそのものについての理解がしづらい

確かにJavaでは厳しいでしょうね。コンピュータの仕組みの基本を学ぶならアセンブラやC言語がベストと思います。C++は既にそれらをマスターした上で学んだほうが学びやすいと思います。

プログラミング一般的な情報についての記述に、JavaScriptはあまり使われていない

やはりJavaScriptはスクリプト言語ですから、巨大なプログラムを書くのには向いていないですからね。
動的型付け言語はお手軽なので小規模プログラムを書くのには向いているのですけどね。

というのがあって、Javaがいいかな?、と思いました。

WeilSpinorさんの目標的にはその方が良さそうな感じはします。
他にC#も意外に良いと思いますよ。

投稿2019/04/20 13:17

Chironian

総合スコア23272

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

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

WeilSpinor

2019/04/20 16:32 編集

ご回答ありがとうございます。 >やはりJavaScriptはスクリプト言語ですから、巨大なプログラムを書くのには向いていないですからね。 そうなんですね…。 では、javaにしようと思います。 C#ってよく聞きますが、C言語に毛が生えたようなものなんですかね? 頭の片隅に置いておこうと思います。
Chironian

2019/04/20 16:49

WeilSpinor さん C#はマイクロソフトが Java に対抗して作った言語と言って良いと思いますす。設計が新しいことと、ずいぶんアグレッシブに言語を発展させているので面白みも結構ありますよ。 最近はWindows以外のプラットフォームでも動くように成りつつあるようです。
pepperleaf

2019/04/22 12:26

> C#はマイクロソフトが Java に対抗して J#(MS版Java?)で裁判に負けたので、C#を作ったと聞きました。(当時の情報なんで、記憶が? ですが) それで似ていると共に機能アップしてると。 今、MSは、C++ を余り推奨して無くて、C#ですね。 (少し前の VisualStudioから、C++は、標準インストールでは入らない)
Chironian

2019/04/22 12:37

pepperleaf さん なるほど。J#って字面くらいしか見たことなくてなんなのか知りませんでした。 MSがVC++を標準から外したのは、プログラマ人口の差と思います。生産性ではC#に軍配があがりますし、C#もC++程ではないにせよかなり速いので普通の用途には十分ですから、無理して生産性的に劣る言語を使う理由がありません。 しかし、例えばC#のVMを作るとか、OSのカーネルを作る等のインフラ開発にC#等の言語を使うのはナンセンスですし、ハードウェアの進化が鈍りつつある今C++の重要性は増していると思います。 MSは今もVC++を積極的にアップデートしているようです。積極的なアップデートをしなくなるのはOSベンダーの地位を諦めた時ではないかと思っています。
pepperleaf

2019/04/22 14:41

VC++が非推奨というのは、Windowsアプリとしての話です。 また、MSの場合、C++は二種類あって、MSIL上で動くC++(.NET版) とネイティブコードとしてのC++。.NET版は、C++も C# も速度的には大差無いと思っています。(人の差の方が大きい) で、アセンブラコードを出す方が速い。 (MSDNなど見てると、全く別物と言う人もいます) > 生産性ではC#に軍配があがり これは確かに感じます。C++ は Cの発展形と思いますが、落とし穴も多く、最近の仕様は結構、複雑に感じます。 > プログラマ人口の差と思います。 これは、MSの誘導が成功したと思っています。裁判には負けたが、Javaと同じかそれ以上の使い勝手(MS基準)のC# ですね。 これはあくまで Windows上のアプリの話。OS内部とかは別で、適材適所でしょう。最近のネット上の情報を見ると、OS内部は、昔からのコードも多いので C/C++が大半という情報もありました。 時々、VC++も使いますが、Windowsアプリとしては、*.h (ヘッダファイル) だけで済むんじゃない ? という妙な書きにくさを感じています。 (理解が不足しているだけかも知れませんが)
guest

0

舞台の全様がわからない、というのがあって、なんとも気持ち悪い感覚がありました。

いいことを言いますね。

そうお考えならC++とか言わずに、アセンブリ言語をやりましょう。
私の若い頃は、アセンブラなんてなかなか手に入りませんでしたから、ニーモニック表を見ながらハンドアセンブルしたものですよ。それに比べて最近の若いやつらと来たら……

投稿2019/04/20 13:10

Lhankor_Mhy

総合スコア35865

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

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

pepperleaf

2019/04/20 15:09

> アセンブリ言語をやりましょう。 確かに正しくはあるんですが、車の運転をするのに、エンジンの仕組みとか、等から勉強しろ、なので、学生のお勉強とか、リタイア後の趣味なら、良いですが、現実では無いと思います。 車で言えば、今、ガソリンから、電気になった時、エンジンの仕組みは不要になります。アセンブリ言語も今後はどうなるのか? もっともアセンブラもCPUで違ったりするので、必要でなければ、泥沼。RISCにCISC, 古くは、スタックマシンとか、LISPマシンとか。必要がなければ、触るもんじゃない、と思います。まあ、Cのコードみながら、アセンブラでデバッグしたこともありましたが、今どき、通用しないのでは。
Lhankor_Mhy

2019/04/22 01:39

> pepperleafさん 同感ですね。 同様の理由で、スクリプト言語を学習している途中で「PHPを使っている時に思ったのですが、PHPでは、ポインタの仕組み、メモリやCPUの動き、といったものがブラックボックス化されていて、公式の仕様書にも詳しくは語られていません。」という理由で、別の言語に鞍替えするというのはおすすめできないと思います。 今やっている「HTML+JavaScript+Node.js+php」を習熟してからでも遅くはない、という意見ですね。むしろ、これでも多すぎるのでは、と感じます。プログラミング初学者は「覚える言語の違いなんてたかだか作法の違いなので、両方やればいい話」とか甘く考えない方がいいと、個人的には思います。
guest

0

クラス型のオブジェクト指向を勉強してみたい

Java。

コンピューターそのものについての理解

この本を買って取り組む。

コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方 | Noam Nisan, Shimon Schocken, 斎藤 康毅 |本 | 通販 | Amazon

それか、C++ではなくCを学ぶ。低レイヤを学びたいならCです。C++はCから上のレイヤの方向に向かって言語仕様を膨れ上がらせたものなので。

投稿2019/04/20 13:22

編集2019/04/20 13:24
hayataka2049

総合スコア30933

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

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

0

JAVAにしましょう

#C++にするとどこまでも泥沼が広がります

投稿2019/04/20 13:14

y_waiwai

総合スコア87719

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

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

0

オブジェクト指向の観点ならばjavaですね。

C++はCの後方互換性機能があるので、これが逃げ道になってしまうところがあります(実用上では、これに助けられるところもありますが、勉強目的ならば望ましくない)。

計算機の原理を学びたいならばC++、より望ましいのはCやアセンブラです。

Cやアセンブラは計算機の動作原理に基づいて記述することができます。一方で、ユーザインタフェースやネットワークプログラミングのためのライブラリが標準でなく、アプリケーション開発には不向きです。

C++はCと互換性がありライブラリも(Cよりは)充実はしていますが、これのせいで非オブジェクト指向プログラミングスタイルを認めており混乱の元でもあります。

要するにケースバイケースです。

投稿2019/04/20 13:51

HogeAnimalLover

総合スコア4830

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

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

0

ほぼJavaに軍配があがっていますが、あえてC++をやる理由はあるでしょうか?

たぶんないと思います。C++はJavaに比べてできることが多い分学ぶべき事も多いです。オブジェクト指向以外の要素を相当程度学ばなければまともに使えないので、オブジェクト指向そのものの学習には不向きだと私は考えます。

ところで、C#という選択肢もありますよ。当然スマホアプリも作れます。これから勉強したいのなら、将来性が?なJavaよりもC#の方が相応しいかもしれません。ISO標準にもなっていますし(あまり関係ないか)。

投稿2019/04/20 13:41

catsforepaw

総合スコア5938

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

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

0

... Javaで書かれたコードをぱっとみてわからない、というのが、不便です。 ...

java コードが読めないのはデメリットが大きいですね。
まずは java を学ぶことをおすすめします。
(C++ よりは java での書籍のほうが多い気がするし)

http://proengineer.internous.co.jp/content/columnfeature/12511

...
1位 Go (37.20%)
2位 Kotlin (26.45%)
3位 Python (26.14%)
...

  • Webアプリケーション開発するならどのプログラミング言語?

https://programming-gakkou.com/archives/891

...
サーバプログラムはJavaかPHP、もしくはPythonがおすすめ
...

投稿2019/04/27 23:35

katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問