JavaとC言語、プログラミング初心者にオススメできない7つの理由

java_c
侍エンジニア塾ブログ編集部

「Java」「C言語」は、プログラミング入門者でも一度は聞いたことがあるはず。

プログラミング言語といえばそれしかわからないという方も多いでしょう。

実際に、様々な場所で使われているとてもメジャーなプログラミング言語になります。

でも実はこの2つの言語、「一番最初に学ぶプログラミング言語としてはおすすめできない」のです。

それはなぜか?

今回はその理由、つまり「JavaとC言語を初心者がはじめに学習するべきではない理由」を解説していきます。

プログラミングスクールを運営するメディアが、エンジニアの経験や意見、塾生の方の見解を元に徹底的に解説していきます。

まず技術的に難しい

shutterstock_247291396

基本的にC言語およびC++とJavaはとても難易度が高い言語になります。

具体的に言うと、「バグの解析」や「将来を見据えた設計」がとても難しいのです。

難易度の高いバグの解析

特にC言語/C++は「バグの解析」つまり意図しない動作やエラーの対処に高度な知識が要求されます。

コンピュータを構成するメモリやCPUというものの性質を知っておく必要があり、「下手なプログラミング」を行うと目も当てられないような状態になります。

最悪の場合、自分が作っているアプリケーションだけでなく、PC自体に害を与えたり、他の動作しているアプリの動作がおかしくなる場合もあります。

場合によっては「メモリダンプ」と呼ばれる、エラーが起きた瞬間に0と1のデータがメモリ上にどのように配置されているかを表すものを解析に使ったりする必要もあります。

難易度の高い設計

「設計」においては、仕事として行う場合大規模なシステムを作る機会が多いので、後から拡張しやすいように将来を見据えた設計が必要になります。

これは文法レベルの問題ではなく広い知識や経験が必要になります。

下手な設計をすると根本から作り直すようなはめにも陥る可能性があり、中途半端な技術で扱うものではありません。

マスターするまでに相当な努力を必要とするため大多数の人が挫折してしまいます。

こんな声も…

C++なんて書ける気がしないというエンジニアへ

私には、がむしゃらにいろいろなソフトを弄くり回していた時期があった。

当時、ちょっとばかりHTMLやらVBSが書けたので、Webの情報を頼りに、C++を弄りだした。

当時、C++を使えば楽々GUIのプログラムが組めると思っていた。ライブラリとか、そういうものの存在すらよく分かっていなかったので、”Hallow World”止まり。GUIのプログラムを組むことができなかった。これが1度目の挫折。

学習コストが高い

shutterstock_185826674

C言語やJavaは学習コスト、つまり学習し習得するまでに「大幅な時間がかかる」ことでも有名です。

プログラミング言語の仕組みを理解することが難しいというのは勿論ですが、仕事にするためには学習範囲はプログラミング言語の学習だけにとどまりません。

例えば、ネットワークやハードウェア系の知識もないと「仕事として成り立たない」ことも多いです。

また、特にC言語/C++やJavaは人によって様々な設計方法が出来てしまっています。

「デザインパターン」と呼ばれる「プログラミングをする上での定石」なども学習して、汎用的な設計方法を身に付けておく必要があります。

そうでなければ、後で機能追加等がとてもやりづらいシステムになってしまいます。

ある程度使えるまでにも時間がかかりますし、本当に「一人前」として仕事が出来るまでには何年も時間がかかります。

とりあえず有名だからという理由で学習しはじめて、やりたいことと違ったという声も聞きます。

こんな声も…

いきなり Java は難しいですか?

ある程度プログラミングできるようになっても、今度は選択肢の多さに圧倒されます。同じことを実現するのにいろいろ方法がありすぎて、どれが適切なのか初心者には選択が難しいのです。

選択肢が多いということは、それだけ覚えなければならないことが多いということです。
(統合開発環境の操作、クラスライブラリ、各種フレームワークなど)

学習環境が揃えづらい

shutterstock_219791656

最近のプログラミング学習は、「無料で学べるサービスがもはや無料レベルではない」のです。例えば、「ドットインストール」や「Schoo」、「Progate」のような革新的な学習サービスがいい例でしょう。

ただ、Java学習やC言語学習に対応した実践レベルまで学習可能なサービスはほとんどありません

また、会社独自のフレームワークを使っていたりもするので、実践的な内容は現場の人に聞くなどする他ありません。

よって、他の言語よりも実務レベルまで学べる環境も揃えづらくなります。

なお、最近の学習サービスにどのような形態があるのかなどは次のページをご覧ください。

こんな声も…

いかにしてIT土方にならずにIT業界で働くか

自分の好きなようにプログラミングできるわけではありません。

大抵の場合、元請けから指示されたフレームワーク、コーディング規約、設計などに従って行うことになります。そのフレームワークが洗練されたものであるとは限りません。全然イケてない可能性もあります。

なんでオープンソースのあれやこれを使わないんだ?と疑問に思うかもしれませんが、、、そういうものなのです。

個人ビジネスに向いていない

shutterstock_360676460

もちろん、C言語やJavaで個人でアプリ開発を行うことは可能です。

ただ、個人でサービスを提供する場合わざわざC言語やJavaで制作するのはとても時間がかかるので、ほとんどメリットがありません

独立志向の強い人や将来起業したいと考えている人など、今後自身でプロダクトを作りたい人は、まずC言語やJavaを学習するべきではありません。

こんな声も…

プログラマが独立・起業する時によくするミスと対策 まとめ

僕もやってしまった本当によくやってしまいがちなダメなパターンです。

ユーザや顧客にとって素晴らしいプロダクトを作らないと、誰も使わない「すごい技術のプロダクト」ができあがります。

例えば、凄いCPU、GPU、グラフィックを使った売れないゲームと、2Dでも超人気のゲームがわかりやすい例でしょう。

習得後も肉体労働になりがち

shutterstock_358435634

プログラミングと聞いてどのようなイメージを持たれるでしょうか。

「色んなサービスを想いのままに作れる」、「自由に働ける」といったイメージは、少なくとも純粋なC言語やJavaから学習するのでは難しいです。

はっきり言って、Javaなどのエンジニアとして働く場合は「朝出勤→現場に常駐→仕事する」、という出向に近い働き方以外の選択肢はほとんどありません。

もちろん職場にもよりますが、C言語・Javaを習得して仕事をする場合、特に人手不足と言われるシステム開発においては「超労働集約型」の下請けが大多数です。

大規模システム開発の為に招集されて、期日に追われてひたすらコーディングやテストを繰り返すという働き方が華々しいシステムの裏側を支えています。

大変な割に技術力や営業力が弱いと大した給与も期待でき無いため、高収入を得るためには継続的な努力が必要になります。

こんな声も…

知らないと一生後悔するITゼネコンの構造

大手ITベンダー(元請け)が仕事を取ってくるけど、自社の社員だけでそんな大きなシステムを作るのは硬直化している日本の労働市場(簡単にクビを切れない)では人件費的に不可能だから、下請け企業を集めてそちらに仕事をさせるという構造のことですね。

初級者レベルではキャリアの選択肢がない

shutterstock_350231675

特にJavaやC言語で入門レベルが終わり中級エンジニアになったからと言って、担当できる仕事は少なく、キャリアの選択肢はあまり広がりません。

また、C言語やJavaと聞くととても汎用的な技術に感じるかもしれませんが、実際はその会社や現場に依存したシステムと繋げて使用していることも多いです。

ベースはできていても様々な応用力がつかない「会社に依存する知識」であることも多いです。

常駐作業が中心の場合、場所を選ばない・時間を選ばない働き方が出来るようになれる人はほんの一部だけです。

技術が出来れば様々な事が出来る様になる!と考えているひとにもC言語やJavaから学習することはオススメできません。

こんな声も…

1度は、C言語プログラマーを経験しておくべき

ただ、CやC++の仕事は、理工系の大学や専門学校を出た新卒者がメーカーや、ソフトウェア会社に入り、そのまま従事する流れが多い為、一般的には未経験者がすぐに携わることが出来る仕事ではありません。

自分の好きなようにプログラミングできるわけではありません。大抵の場合、元請けから指示されたフレームワーク、コーディング規約、設計などに従って行うことになります。そのフレームワークが洗練されたものであるとは限りません。全然イケてない可能性もあります。なんでオープンソースのあれやこれを使わないんだ?と疑問に思うかもしれませんが、、、そういうものなのです。

新しい技術を身につけづらい

shutterstock_267183323

特にC言語やJavaなどでの大型システム開発の現場はとても保守的です。

大規模システム開発で利用されることが多いC言語やJavaですが、大規模なシステムであればあるほど、その開発の運用体制や使用技術は「化石」のような技術も使っています。

新しい技術を入れようにも、その技術をチームメンバー全員が理解する必要があり、そこにコストを掛けたくないので古いモノが残りやすく提案も通しづらい現場も少なくありません。

ITという革新的な技術を使いながら、新しいことに挑戦出来ないというジレンマが発生しがちです。

新しい技術やサービスの情報をキャッチして行きたい方には不向きと言えるでしょう。

こんな声も…

結局、どの言語を学習すべきなのか?

ここまででプログラミング入門者はC言語・Javaを学習するべきではない理由を上げてきました。

あえてC言語やJavaを入門として学習するのをおすすめするとすれば、以下の様な人たちです。

  • 工学部の学生の人
  • 研究職の人
  • 大規模システム開発での安定した仕事を行いたい人
  • Android等特定のプラットフォームのアプリを作りたい人

では、一般的なアプリ開発をしたい初心者の人は何を学習するべきかということも簡単に書いてみます。

プログラミング入門者が一番最初に選ぶべき言語を決める際に意識したいことは、以下の3つです。

  • 比較的学習を始めやすいこと
  • 仕事にもつながりやすいこと
  • 将来の選択肢を広げやすいこと

なぜ、この3つなのかという詳しい理由は、下記の記事で紹介しています。

そして、またおすすめしているプログラミング言語は、「Ruby」もしくは「JavaScript」です。

↓詳細はこちら

それでもJavaやC言語の学習が必要な入門者へ

これまでは、JavaやC言語がプログラミング初心者の方にオススメできない理由について説明してきました。

とは言っても、今の職場や今後の就業先で例えば

  • 周囲がJavaやC言語で作っているので、自分も周囲に合わせる必要がある
  • 昔作られたJavaやC言語のプログラムを改修しなければならなくなった
  • メモリやスレッドの管理をOSやプログラミング言語任せにできない

などの事情でJavaやC言語を使わなければならず、学習する必要があるという方もいらっしゃるかと思います。

そんな方のために、入門者用のオススメの本と、プログラムを実際に動かす開発環境の構築方法をご紹介します!

入門者へオススメの本

JavaやC言語をこれから学習する入門者の方には、こちらの書籍をオススメしています。

ぜひ参考にして下さいね!

開発環境の構築

JavaやC言語をこれから学習する入門者の方には、書籍を読みながら書かれているサンプルコードを実際に動かして自身で確認することをオススメします。

実際にコードを動かすことが上達していく上での最速の近道です。

実際にコードを動かすには開発環境が必要となります。

JavaやC言語の開発環境をそろえるには、こちらをぜひ参考にして下さいね!

まとめ

いかがでしたでしょうか?

C言語やJavaを学習すべき場合もありますが、そのネームバリューだけで学習をはじめて「自分ってプログラミングに向いてない」と挫折してしまう人があまりに多いです。

目的をはっきりさせてから自分にあった言語で学習をはじめていただければ幸いです。

Javaカリキュラム無料公開中!
この記事はJava入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Java学習に必要な情報を一つにまとめていますので効率よくJavaを学ぶことが出来ます。この機会に是非活用していただければと思います。


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


最短でJavaを習得したい方へ

もし、あなたが、

「難しすぎて学習が全然進まない」
「学習量が膨大でゴールが見えない」
「エラーを解決するのに何日もかかってしまう」

など、プログラミング学習やキャリアに関してお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_bannar-java2

学習者インタビュー

人気記事セレクション

エンジニア転職希望者必見

プログラミング学習者必見

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

侍エンジニア塾ブログ編集部

侍エンジニア塾ブログ編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去100人以上のフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。
ホームページはこちら
ツイッターはこちら
フェイスブックはこちら