「Java」と「C言語」は、プログラミング入門者でも一度は聞いたことがあるはず。実際に、様々な場所で使われているとてもメジャーなプログラミング言語になっています。
結論から言うと、この2つの言語は「一番最初に学ぶプログラミング言語としてはおすすめできない」のです。なぜでしょう? 気になりますよね。
そこで今回は、「JavaとC言語を初心者がはじめに学習するべきではない理由」について解説していきます。プログラミングスクールを運営するメディアが、エンジニアの経験や意見、塾生の見解を元に徹底的に解説していきます。
現在、どのプログラミング言語を学ぶか悩んでいる人は参考になる記事になっています。この記事を読んでから、プログラミング言語を選んでも遅くはありません。
そもそもJavaとC言語がどのようなものなのかを知りたい人は、以下の記事をご確認ください。
⇒ Javaの特徴や用途などを専門用語抜きで解説
⇒ C言語の特徴や作れるものを初心者向けに解説
この記事の目次
JavaとC言語は専門性が高く技術的に難しい
基本的にC言語およびC++とJavaはとても難易度が高い言語になります。
なぜかというと「バグの解析」や「将来を見据えた設計」がとても難しいのです。エラーなどの対処につまずきやすい言語なのです。
難易度の高いバグの解析につまずきやすい
特にC言語/C++は「バグの解析」つまり、意図しない動作やエラーの対処に高度な知識が要求されます。コンピュータを構成するメモリやCPUというものの性質を知っておく必要があり、「下手なプログラミング」を行うと目も当てられないような状態になります。
最悪の場合、自分が作っているアプリケーションだけでなく、PC自体に害を与えたり、他の動作しているアプリの動作がおかしくなる場合もあります。
場合によっては「メモリダンプ」と呼ばれる、エラーが起きた瞬間に0と1のデータがメモリ上にどのように配置されているかを表すものを解析に使う必要なども出てきます。
難易度の高い設計が必要
「設計」においては、仕事として行う場合大規模なシステムを作る機会が多いので、後から拡張しやすいように将来を見据えた設計が必要になります。
これは文法レベルの問題ではなく広い知識や経験が必要になります。下手な設計をすると根本から作り直すようなはめにも陥る可能性があり、中途半端な技術で扱うものではありません。マスターするまでに相当な努力を必要とするため大多数の人が挫折してしまいます。
こんな経験談もあります。
私には、がむしゃらにいろいろなソフトを弄くり回していた時期があった。
当時、ちょっとばかりHTMLやらVBSが書けたので、Webの情報を頼りに、C++を弄りだした。
当時、C++を使えば楽々GUIのプログラムが組めると思っていた。ライブラリとか、そういうものの存在すらよく分かっていなかったので、”Hallow World”止まり。GUIのプログラムを組むことができなかった。これが1度目の挫折。
引用元:エンジニアライフ https://el.jibun.atmarkit.co.jp/101sini/2014/06/c-0ea6.html

JavaとC言語は技術が高いぶん学習コストが高い
C言語やJavaは学習コスト、つまり学習し習得するまでに「大幅な時間がかかる」ことでも有名です。プログラミング言語の仕組みを理解することが難しいというのは勿論ですが、仕事にするためには学習範囲はプログラミング言語の学習だけにとどまりません。
例えば、ネットワークやハードウェア系の知識もないと「仕事として成り立たない」ことも多いです。また、特にC言語/C++やJavaは人によって様々な設計方法が出来てしまっています。
「デザインパターン」と呼ばれる「プログラミングをする上での定石」なども学習して、汎用的な設計方法を身に付けておく必要があります。そうでなければ、後で機能追加等がとてもやりづらいシステムになってしまいます。
ある程度使えるまでにも時間がかかりますし、本当に「一人前」として仕事が出来るまでには何年も時間がかかります。とりあえず有名だからという理由で学習したけど、やりたいことと違ったという声も聞きます。
こんな声も……
ある程度プログラミングできるようになっても、今度は選択肢の多さに圧倒されます。同じことを実現するのにいろいろ方法がありすぎて、どれが適切なのか初心者には選択が難しいのです。
選択肢が多いということは、それだけ覚えなければならないことが多いということです。
(統合開発環境の操作、クラスライブラリ、各種フレームワークなど)
引用元:プログラミング入門 Q&A http://qa.pgtop.net/article/82422114.html
JavaとC言語は初心者には学習環境が揃えづらい
最近のプログラミング学習は、「無料で学べるサービスがもはや無料レベルではない」のです。例えば「ドットインストール」や「Schoo」「Progate」のような革新的な学習サービスがいい例でしょう。
ただ、Java学習やC言語学習に対応した実践レベルまで学習可能なサービスはほとんどありません。また、会社独自のフレームワークを使っていたりもするので、実践的な内容は現場の人に聞くなどするしかありません。
よって、他の言語よりも実務レベルまで学べる環境も揃えづらくなります。なお、最近の学習サービスにどのような形態があるのかなどは次のページをご覧ください。

プログラミング初心者向けの学習環境の作り方は、VSCodeやcloud9など、必要なツールが揃っている総合開発環境を用意するのが一番簡単です。
環境構築を1からする場合、テキストエディタやコンパイラなどを1つずつ用意しなくてはいけませんが、総合開発環境は全ての必要なツールが初めから集められています。
しかしC言語やJavaは、RubyやPythonなどの他の言語と比べて、充実した開発環境の用意が複雑です。1からの環境構築は、中級者でもつまずきがちな難問。そのため、JavaやC言語の学習環境を整えるのは初心者には難しく、おすすめできません。
ちなみに、プログラミングの学習環境の整え方を詳しく知りたい方は、こちらの記事をお読みください。
JavaとC言語は個人ビジネスには向いていない
もちろん、C言語やJavaで個人でアプリ開発を行うことは可能です。ただ、個人でサービスを提供する場合わざわざC言語やJavaで制作するのはとても時間がかかるので、ほとんどメリットがありません。
独立志向の強い人や将来起業したいと考えている人など、今後自身でプロダクトを作りたい人は、まずC言語やJavaを学習するべきではありません。
こんな意見も……
僕もやってしまった本当によくやってしまいがちなダメなパターンです。
ユーザや顧客にとって素晴らしいプロダクトを作らないと、誰も使わない「すごい技術のプロダクト」ができあがります。
例えば、凄いCPU、GPU、グラフィックを使った売れないゲームと、2Dでも超人気のゲームがわかりやすい例でしょう。
引用元:Qiita https://qiita.com/hshimo/items/776e3ca62be51c3bdc89
JavaとC言語は習得後も肉体労働になりがち
プログラミングと聞いてどのようなイメージを持たれるでしょうか。
時間を有効に使い自由に働ける
このようなイメージは、少なくとも純粋なC言語やJavaから学習するのでは難しいです。はっきり言って、Javaなどのエンジニアとして働く場合は「朝出勤→現場に常駐→仕事する」という出向に近い働き方以外の選択肢はほとんどありません。
もちろん職場にもよりますが、C言語・Javaを習得して仕事をする場合、特に人手不足と言われるシステム開発においては「超労働集約型」の下請けが大多数です。大規模システム開発の為に招集されて、期日に追われてひたすらコーディングやテストを繰り返すという働き方が、華々しいシステムの裏側を支えています。
大変な割に技術力や営業力が弱いと大した給与も期待できないため、高収入を得るためには継続的な努力が必要になります。
こんな声も…
要は大手ITベンダー(元請け)が仕事を取ってくるけど、自社の社員だけでそんな大きなシステムを作るのは硬直化している日本の労働市場(簡単にクビを切れない)では人件費的に不可能だから、下請け企業を集めてそちらに仕事をさせるという構造のことですね。
引用元:SE転職のすすめ http://se-next.com/sier/itzenecon.html
JavaとC言語は初級者レベルではキャリアの選択肢がない
とくにJavaやC言語で入門レベルを終え、中級エンジニアになったからと言って、担当できる仕事は少なくキャリアの選択肢はあまり広がりません。
またC言語やJavaと聞くと、とても汎用的な技術に感じるかもしれません。しかし実際はその会社や現場に依存したシステムと繋げて使用していることも多いです。
ベースはできていても様々な応用力がつかない「その会社だけに通用する仕事」になってしまうことも多いです。常駐作業が中心の場合、場所や時間を選ばない働き方が出来るようになれる人はほんの一部だけです。
技術が出来れば様々な事が出来る様になる!と考えているひとにもC言語やJavaから学習することはオススメできません。
こんな声も……
ただ、CやC++の仕事は、理工系の大学や専門学校を出た新卒者がメーカーや、ソフトウェア会社に入り、そのまま従事する流れが多い為、一般的には未経験者がすぐに携わることが出来る仕事ではありません。
引用元:プログラマーになるには http://www.orenoh.com/knowledge/c-programmer.html
JavaとC言語は新しい技術を身につけづらい
特にC言語やJavaなどでの大型システム開発の現場はとても保守的です。大規模システム開発で利用されることが多いC言語やJavaですが、大規模なシステムであればあるほど、その開発の運用体制や使用技術は「化石」のような技術も使っています。
新しい技術を入れようにも、その技術をチームメンバー全員が理解する必要があり、そこにコストを掛けたくないので古いモノが残りやすく提案も通しにくい現場も少なくありません。
ITという革新的な技術を使いながら、新しいことに挑戦出来ないというジレンマが発生しがちです。新しい技術やサービスの情報をキャッチして行きたい方には不向きといえるでしょう。
こんな声も……

未経験者は結局、どの言語を学習すべきなのか?
ここまででプログラミング入門者はC言語・Javaを学習するべきではない理由を上げてきました。あえてC言語やJavaを入門として学習するのをおすすめするとすれば、以下の様な人たちです。
- 工学部の学生の人
- 研究職の人
- 大規模システム開発での安定した仕事を行いたい人
- Android等特定のプラットフォームのアプリを作りたい人
では、一般的なアプリ開発をしたい初心者の人は何を学習するべきかということも簡単に書いてみます。プログラミング入門者が一番最初に選ぶべき言語を決める際に意識したいことは、以下の3つです。
- 比較的学習を始めやすいこと
- 仕事にもつながりやすいこと
- 将来の選択肢を広げやすいこと
なぜ、この3つなのかという詳しい理由は、下記の記事で紹介しています。そして、またおすすめしているプログラミング言語は、「Ruby」もしくは「JavaScript」です。
↓詳細はこちら

目的に合ったプログラミング言語選定が重要
このような悩みをお持ちの方も多いですよね。実際、作るものによって複数の言語を学ばなければならないことがほとんどです。
必要な言語が分からないまま、人気や学びやすさだけで学ぶ言語を決めてしまうと「実際に作りたいものが作れない」といったことになりかねません。これからエンジニアを目指す初学者にとって、言語選定は今後のキャリアを左右するとても重要なことです。
そこで、あなたの目的に必要な言語が分かる「学習診断アプリ」を用意致しました。
2〜3の質問に答えていただくだけで、あなたに必要な言語が分かるので、学ぶ言語に悩んでいる方はぜひご利用下さい。
言語選定に悩んでいるしまっている人は?
この記事を読んで、
と思い始めた方もいると思います。
そんな、自分にとって最適な言語が分からなくなってしまったあなたはまず、弊社「侍エンジニア」の無料体験レッスンを受けてみてはいかがでしょうか?
無料体験の流れは、
この3ステップで、単純に言語の特徴や難易度だけでなく、あなたが本当にやりたいことから逆算して、最適なキャリアと言語についてご提案させていただきます。
理想像やキャリア設計は人と話すことで新しい気づきがありますし、業界知識のある弊社コンサルタントと行うことで、目標が明確になり、目の前の学習もはかどります。
プログラミングで人生を変えたいあなたを精一杯サポートいたしますので、下記のボタンよりお気軽にお申し込みください。オンライン受講も可能です。
それでもJavaやC言語の学習が必要な入門者へ
これまでは、JavaやC言語がプログラミング初心者の方にオススメできない理由について説明してきました。とは言っても、今の職場や今後の就業先で例えば
- 周囲がJavaやC言語で作っているので、自分も周囲に合わせる必要がある
- 昔作られたJavaやC言語のプログラムを改修しなければならなくなった
- メモリやスレッドの管理をOSやプログラミング言語任せにできない
などの事情でJavaやC言語を使わなければならず、学習する必要があるという人もいるかと思います。そんな人のために、入門者用のオススメの本やプログラムを実際に動かす開発環境の構築方法をご紹介します!
入門者へオススメの本
JavaやC言語をこれから学習する入門者の方には、こちらの書籍をオススメしています。
ぜひ参考にして下さいね!


開発環境の構築
JavaやC言語をこれから学習する入門者の方には、書籍を読みながら書かれているサンプルコードを実際に動かして自身で確認することをオススメします。実際にコードを動かすことが上達していく上での最速の近道です。
実際にコードを動かすには開発環境が必要となります。JavaやC言語の開発環境をそろえるには、こちらをぜひ参考にして下さいね!

