プログラミングを趣味にしたい

UE4、scala、ゲーム作り、webアプリ制作とか手を出しているPC系趣味について書き溜めるブログ。現在大規模改装中

このブログは現在リブート中です。 予告なく変更、削除、停止を行う場合があります。
回収作業が終わったらこの文章は削除します

プログラミング初心者がプログラミングを独学で学びたいと思う時に始めやすい10の言語

機械学習が持て囃され、人工知能が将棋界に席巻し、巷のみんなはスマホを片手にwebでサービスを受ける時代。
スピーカーにまでAIが搭載されて、みんながユビキタスなりIoTなりを自然と享受する時代。
TwitterなりyoutubeなりLINEなりInstagramなり。
様々なSNSと多くの人が日々べっとり癒着し続けている昨今、義務教育にプログラミング教科の導入まで検討され。
プログラミングが出来たほうが就職に有利とか、嘘かホントかわからんような話まで聞かれるようになりました。

なんで、やはりプログラミングなりIT技術を独学でも学び始めたいという人もいるだろうなーと
とは言えプログラミング言語には色々、本当に色々あります。
中でもとりわけ

  • 人気 => 参考書がいっぱい
  • よく使われている =>食いっぱぐれがない
  • わかりやすい =>初心者向け

なものを適当に見繕って紹介したいと思います。
とりあえず、大まかにオブジェクト指向系で「動的言語」と「静的言語」。さらに「番外編」を加えて各々3つづつ。
んで10という区切り数字のために+1で。
合計10個のご紹介。


注:この記事は私の勝手な私見です。

はじめに

プログラミング言語を学ぶにあたって大切なこと

プログラミングは手段です
何かしたいから、プログラミングを用いて達成するのであって、プログラミングをしたいからプログラミングをするのは良くないです。
本末転倒
ん?このブログ「プログラミングを趣味に」の文字を全否定しているような・・・・・まぁ、それはそれこれはこれ。


確かに各方面で「コーディングスキル」ってのは年々需要が増えてきています。
が、それも製造するコンテンツへの目的があってのこと。
流行言語、必要言語は何をしたいかによって千差万別。
プログラミング言語はただのツールということは努々忘れないように

「フロントエンド」と「バックエンド」について雑な説明

プログラミングで作るソフトウェア開発時、例えばWEBサービスは下記のようにユーザーに届けられます
フロントエンドとバックエンド
そう!プログラミングで作るシステムは2つあるのです
その際両側を

  1. 「ユーザーなどと直接やり取りをする側」をフロントエンド
    • データ(テキスト、画像、動画などなど)の入力処理、UI等のユーザーへの指示、処理した結果の出力や表示などなど
  2. 「フロントエンドで受け取ったデータの処理、データの保存」をバックエンド
    • サービスの処理、ログインするIDの付き合わせ、結果の保存・セーブなどなど

と呼びます。

  • フロントエンド = ユーザー側のPCの動作
  • バックエンド = サーバー側のPCの動作

とざっくり考えてください。

詳しくはググってください。

ライブラリとはなんぞや

めっちゃ適当なこと言うと、読んで名のごとく「何かしたい時に参照する本棚」です。
もちょっと詳しく、でも雑に言うと「そのシステムを開発する上で、面倒くさい処理を事前にプログラミングしてある便利な部品群のパッケージ」です。
色んな人が開発し、無償(商用利用は有償なものもある)で提供してくれています。
ライブラリ

このパッケージに、「あれやって」といえばすでに出来上がっているプログラミングコードがそれをやってくれます。
例えば、「文章を画面に表示する」のには

  1. 文章を1文字単位にバラす
  2. 1文字1文字に対応するコード確認する
  3. 1つづつ、何処に表示するかPCに指定する
  4. PCはそのコードを元に対応する文字の画像を画面に表示する=>2から繰り返し

となるのですが、それを

  1. パッケージに"この文字をいい感じに表示させておいて”という

だけで終わるわけです。
うれしいですね。

特にオブジェクト指向系はこのライブラリが充実しているか(その目的に合った部品がどれだけ多くて便利か)がプログラミング言語選びの要になります。
言語によって得意とするライブラリの種類やそのジャンルの充実具合が変わります。


では軽く説明を終えたところで、10の言語の紹介と行きましょう。
まずは動的プログラミングから

動的プログラミング言語:初心者でも簡単に実行できるお手軽プログラミング

英語で言えばdynamic programming language。
dynamicなんです!
ダイナミックないいところがいっぱいあります
コンパイル(書いたものを実行する前の下準備)がいらない
=>書いてすぐ試して、また書いてがやりやすい

コードが短いもの(簡潔)が多い
=>長々と長文を書く必要がなくダレません

プログラムの文面に型システムが登場しない(ものが多い)
=>覚える事が少ないため、学習の際に面倒な手間を省けます!

まぁ、静的に比べると遅かったり、実行前に注意してくれなかったり、コンパイラという赤ペン先生がいないから致命的ミスが起こったり、やっぱり型はほしいよねとか欠点も多いんですが。
それでも、一般的には初心者にとってはわかりやすく柔軟で楽しい言語
それが、dynamicさんです。

  1. コードの行数を減らして、アイディアがすぐ形に!
  2. 厳しいコンパイラ先生が見ていないので、規則を多少破っても問題なし!
  3. (一般的に)非常に高水準・・・つまり人間にわかりやすい言語で、覚えることが少ない!
  4. 書いたらすぐ実行できるので、すばやく結果を確認できる!

まぁ、そんな言語です。

その性質上、アイディアをすぐ形にする必要性があり、機能追加の即応性が求められるwebサービス系で良く使われます。
他にも、”プログラミング”自体を漠然と習おうとする初心者や、日々の同じ繰り返し作業をパソコンに自動で処理させる(作業の肩代わり)目的ならば動的言語は素晴らしい言語でしょう。

JavaScript:サイトの見た目を劇的に変えるスクリプト

  • 全てのブラウザで動くフロントエンドシステム開発の汎用性が魅力のスクリプト言語
  • webアプリ系のライブラリが豊富。webサービス系が得意。
  • ブラウザを介して、ユーザーと相互にやり取りするようなシステムが作れます。
  • 一応サーバー側のシステム開発も可能(Node.js)

よくjavaと間違われますが、全く違う言語です
Webサイト等webサービスの開発によく使われ、ユーザーとサービスの相互やりとり(インタラクティブ)を円滑に熟します。
大体のwebサービスで使われているので、身近な言語ですね。
得意分野はそのままwebサービスやブラウザ上で動かすサービス。
スマホ時代は誰もがブラウザで世界とつながっているため、知らず知らずにjavaScriptのお世話になっています。

反面、JavaScriptは型がなくコンパイラもなく、エラーを吐いたときのデバッグが難しいです。
大きな、または複雑なシステムを作ろうとすると難儀するでしょう。

ブラウザで動くちょろっとしたサービスや、サイトの飾り付けならjavaScriptは良い言語です。
ブログをもっと豪華に魅せたいという人も必見でしょう。

改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで

改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで

改訂新版jQuery本格入門

改訂新版jQuery本格入門


Ruby:日本人が開発した初心者向け言語

  • 日本人が開発した言語で、そのため日本語の参考書が多い
  • 設計思想が”楽しくプログラミングしたい”というもので、非常に初心者フレンドリー
  • わかりやすい記述、開発を助ける優れたツール
  • 特にRuby on Railsフレームワークの強力さ

日本人が開発した言語としては、はじめて国際企画認証されたプログラミング言語。
そのため、様々な良質ガイドが日本語化され、開発者まつもとゆきひろさん本人による読本も出ているところが英語が苦手な人にも嬉しい。

「開発者が楽しく生産性を高めるための言語」として開発されたことに偽りなく、非常に初心者向け。
入門者が「プログラミングで何かシステムやサービスを作りたいなー」と思ったときは、Rubyから始めるのは賢い選択でしょう。
特にRuby on Railsはwebシステムやwebサービスを作る上で、面倒事を尽く自動的に処理してくれる頼もしい相棒となります。

主にバックエンドで利用されており、
民泊サイト最大手「Airbnb」、動画配信サイト「Hulu」、クラウドファンディングサービス大手「Kickstarter」など海外の有名サイトもそうですし、
日本でも食べログ、クラウドワークス、クックパッドといった多くのサイトがruby(正確にはRuby on Rails)で創られています。

ただ、その初心者向けの代償に様々な負債を祓います。
そもそも動的言語の宿命なのですが、副作用や難解なテストコーディングは規模の大きいシステムをデスマーチへと導きます。
遅めの実行速度は大量のユーザーをさばく時ネックになりやすく、Twitterは当初Rubyで開発したシステムをJAVAへと転換しました。
「お目付け役がいないため文法が自由」な利点は、大勢でプログラミングすると「統一性がなく管理が難しい」欠点へと変貌します。
貴方の求めるwebサービスの規模や、付随していく追加機能が増えていく場合、Rubyには不満だけが募っていくでしょう。


何らかのサービスを思いつた時、さくっとスタートアップするならばRubyは良い言語です。
初心者のプログラミング学習用としても最適でしょう。
そもそもストレスを最大限に軽減した言語思想と、大量の日本語ドキュメントは初心者向けとしては破格のものがあります。


プログラミング言語 Ruby

プログラミング言語 Ruby

  • 作者: まつもとゆきひろ,David Flanagan,卜部昌平(監訳),長尾高弘
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2009/01/26
  • メディア: 大型本
  • 購入: 21人 クリック: 356回
  • この商品を含むブログ (129件) を見る

Rubyは検索すれば、ネット上に無料で日本語な詳細なガイドが色々あるのも大きいですね。



Python:海外ではスタンダードな初心者向け&学術向け言語

  • 初心者のためにつくられた言語で、Rubyの親ともいえる存在
    • というか、RubyはまつもとさんがPythonの不満な点を解消するために作った言語
  • アメリカの有名大学群が採用する「最も一般的なプログラミング入門言語」
  • 様々なライブラリや補助ツールが生み出されており、特にデータマイニングと機械学習(ディープラーニング)は超得意
    • データ解析、学術系コンピュータ計算、バイオインフォマティクスなども強い
  • 超大手超有名サービスの多くがPythonでシステムが構築されている
    • googleもDropboxもInstagramでさえもPythonで創られている
    • ゲーマーおなじみ廃人確定SLG:Civilization 4もこれで創られている

Pythonは、「初心者のための言語」として最も馴染みのあるプログラミング言語でしょう。
まぁ初心者向けのためだけならば、日本人にはrubyのほうが良い人が多いとは思います。
rubyは本当に日本語のドキュメントが多い。

ただPythonはその「初学者のための言語」としての長い歴史とつみあげてきたノウハウが違います。
不動とも言えるその得意分野は「学術分野」
機械学習、データ解析、バイオインフォマティクス。コンピュータで何かの学術や研究をやりたい人は必携、必須、絶対レベルの言語と言っていいでしょう。
「その分野のその研究内容は自分しか理解できない」ことがよくある学術用途では、他人にシステム構築を頼むのも非常に不便です。
高速数値処理numpy,多様な化学計算用ライブラリscipy,結果のプロットやグラフ化にmatplotlibを始めとする数々のシステムライブラリは唯一無二と言ってもいい利便性があります。
機械学習のライブラリは特に多く、例えばGoogleさえも機械学習用のライブラリはPythonで出してます。
また、webサービスへのアプローチも強くgoogleやinstagram、Redditなど、様々なシステムがPython開発です。


Python は日本語ガイドも少なく動的言語の問題点もかすかに残り、「明示的に書く」という文化もめんどくささに思える時があります。
つまり、目的によっては最善とは全く言えません。
とはいえオブジェクト指向プログラミングとはかくあるべしを知りたいならばベターな選択ですし、何と言っても学術目的や機械学習をかじりたい人にはバイブルになるでしょう。
欠点らしい欠点を上げきれないところも含めて、魅力がつまった言語です。

基礎Python 基礎シリーズ

基礎Python 基礎シリーズ

初めてのPython 第3版

初めてのPython 第3版

静的(型付)プログラミング言語:安定性と拡張性抜群の一般的なプログラミング

今度は静的です。
staticさんです。
ちょっと動的よりも面倒なこともあるけど、でも安心感が違います

コンパイラが必要(
実行に手間はいるけど、その分実行前にプログラムの文面からエラー内容を事前に知らせてくれる

非常に整った安定性と拡張性
動的言語は柔軟といえば聞こえが良いですが、柔らかすぎてちゃんと創らないと簡単に崩壊します

処理の速さ
まぁ、これは現在動的言語も早くなってきていますが。


何より、(複数人等による)大規模開発が得意な点が大きいですね。
後から作り込んでいくのにも安定感の高さがうれしいです。

  1. 圧倒的な拡張性、あとから利用者や仕事の増大に合わせて適応していく寛容さ。
  2. 高い安定性、整備のしやすさ、保守性
  3. 処理の速さ
  4. コンパイラと言う赤ペン先生がいるので、エラーを事前に知らせてくれる
  5. やっぱりプログラミングするなら型システムの理解はほしい

というニーズが満たせる、プログラミング界のデファクトスタンダード。
(一般的に)コンパイラによる型を始めとしたチェックが厳しく、「プロトタイプであっても多くの記述が必要」であったり、「覚えることが多い」であったり、開発環境を整えないと・・・であったりとややっこしい話が結構出てきますが、その寄りかかっても大丈夫な安心感は魅力です。

ゲームエンジン、モバイルアプリ、エンタープライズレベルのバックエンドは、一般的に静的型付けされた言語で構築されます。
動的では、比較的結構大変(やってるところも多いけど)

ゲーム作りたいとか、アプリ作りたい的な初心者であれば、静的言語で入門したら便利かと思います。
あと、ミスした時にちゃんと教えて欲しい系の人も、コンパイラの見守ってくれる感がありがたい存在になります。
仕事のために・・・・という人も多くが静的言語を学ぶことになるかと思います。(中にはpythonやrailsが必要という所も多いですが)

Java:脅威の汎用性と登場頻度。猫も杓子も老いも若きも

  • 脅威の汎用性。何にでも合う
  • JVMさえ入っていれば、何処だって動く
  • androidのスマホアプリの推奨開発言語
  • エンタープライズ系統なら非常に強い。
  • かなり多くの企業がJavaで開発しているため、就職にも強い
  • 古い上に肥大化していったんで問題点も多い

どこでも使われてるんじゃないだろうか。
なんでもライブラリあるんじゃないだろうか。
そんな巨大な、大人気プログラミング言語。それがJava。

オブジェクト指向プログラミングで昔、そして現在も最も流行っていると言って遜色ない。
Androidアプリ、デスクトップアプリ、ゲームを構築するために主に使用されているが、本当にいろんなことに使える。
特にエンタープライズレベルのバックエンド開発のサーバー側言語としてもよく使用され、多くの企業がJavaを採用。
フレームワークやライブラリも充実していて、強力なものも多い。
学習の基本となる書籍や解説サイトも様々なものが用意されていて、困ることは少ない。

が、問題点も多い。簡単に言うと、古い上に全くシンプルじゃない。
最初に設計されたのが古い上、機能を追加拡張しまくったせいでごちゃごちゃになっている。
気になった機能を取り入れるんで、様々なものが重複しややこしい。
さらに、やっぱり重いしでかい。
小さなプログラムでもコードが長くなる点も拍車をかける。

みんなが不満を口にするけれど、でもみんな手放せないし手放したくない。
そんな難儀な、でもみんな使ってる標準的言語。

なんかアプリを作ってみたい、適当なゲームを、動的言語ではし辛い中規模なシステムを、サーバー側を・・・・
なんでもできる。使い所がいっぱいあるので、最初の学習結果を使いまわしたい入門者にもそういう意味ではうってつけ。
ついでに、様々なプログラミング解説本がJavaを例にとって解説してるから知っておくとわかりやすい。
オブジェクト指向の標準がつまった言語とも言える。

スッキリわかるJava入門 第2版 (スッキリシリーズ)

スッキリわかるJava入門 第2版 (スッキリシリーズ)

スッキリわかる Java入門 実践編 第2版 (スッキリシリーズ)

スッキリわかる Java入門 実践編 第2版 (スッキリシリーズ)

15歳からはじめるJAVAわくわくゲームプログラミング教室 フルカラー最新版【Windows & Mac両対応】

15歳からはじめるJAVAわくわくゲームプログラミング教室 フルカラー最新版【Windows & Mac両対応】



Scala:javaを改良した新時代(予定)のプログラミング言語

scalaいいよscala。
みんなやろう。オブジェクト指向と関数型の融合で、簡潔にかける。
JVM上で動く、javaに簡単に置き換わる。

揃えて並べて一気に処理するオブジェクト指向がキレイに、そう!きれいに書ける
さらに副作用がない関数型でオブジェクト指向がかける。
美しい。美しいよscala。
強力なパターンマッチ、自然に使えるデザインパターン
あのクソ肥大主義に抵抗できなかったJavaやるぐらいなら、はじめからこの素晴らしい言語にチャレンジしたほうが精神衛生上良いってもんだよ。

・・・・まぁ、ドキュメントが少ないわ、成長期なんでガイド本も入門用の良書が少ないわでちょいと初学者向きとはいえないかもしれんが。

でもScalaやろう!


Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear)

Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear)

Scalaスケーラブルプログラミング第3版

Scalaスケーラブルプログラミング第3版

  • 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘
  • 出版社/メーカー: インプレス
  • 発売日: 2016/09/20
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (1件) を見る


Swift : iOS、iphoneアプリならこれ!apple純正プログラミング言語

  • iOS(iphoneやipad)のアプリを作るならこれ
  • apple純正のオブジェクト指向プログラミング言語
  • ベースはpython。でもコンパイラ静的言語

Pythonに触発されて創り出されたSwiftは、その尽くが初心者向けのコーディングのために設計されている言語。
そしてなにより、apple好きの、iosのための、macでプログラミングするための言語。
日本でトップシェアを誇るスマホ「iphone」のアプリを作りたいとなれば一番の近道と言える。
(抜け道はいっぱいあるが)

流石にpythonをベースにしただけあって書きやすく、読みやすいしわかりやすい文体になるのも高ポイント。
でも結局はiosのための、macのためのとなるため汎用性としてはどうなのかね。
その他の利用法についてあんまり詳しくはない。

ios/iphone/ipadアプリを作りたい初心者は始めるべきはこれ一択といっていい。
参考書も「iphoneアプリづくり」の話と一体になった書物が多い。
作るだけならC#でxamarinでもいいけど、それを言い出すとキリがない。

絶対に挫折しない iPhoneアプリ開発「超」入門 第6版 【Swift 4 & iOS 11】完全対応

絶対に挫折しない iPhoneアプリ開発「超」入門 第6版 【Swift 4 & iOS 11】完全対応

本気ではじめるiPhoneアプリ作り Xcode 9.x+Swift 4.x対応 (「ヤフー黒帯」シリーズ)

本気ではじめるiPhoneアプリ作り Xcode 9.x+Swift 4.x対応 (「ヤフー黒帯」シリーズ)


C#:windowsで動くグラフィカルなアプリならこれ!Microsoft純正プログラミング言語

  • マイクロソフト純正
  • windows用、.netフレームワーク用。
  • windowsPCで動かすソフトならこれが一番強い
  • スマホアプリを開発する強い味方Xamarin
  • インディーズや個人でのゲームづくりをサポートするUnity5


世界的No1のシェアを誇るwindowsOSのための言語。
Microsoftの.NETフレームワークで使用するために開発されたもので、Microsoft Windowsで動くシステムで超強力な力を発揮する。
C#は、Web開発、ゲーム開発、一般的なMicrosoft系ソフトウェア開発に良く使用される。
まぁ、つまり多くの場合このC#でなんとかなるよということ(暴論)


特にXamarin(C#でスマホアプリ作るための道具だとおもって)は現在クロスプラットフォーム(iphoneでもアンドロイドでも行けるよ)に対応しており、C#=>XamarinでiOSとAndroid用のネイティブモバイルアプリを同じコードで開発することができる。
要するに、一回C#(Xamarin)でスマホアプリ作ればiphoneでもandroidでも使えるよということ。
普通は両方別々に創らなくちゃいけないのでとても大変。

スマホアプリ開発やwindowsアプリ開発を目的とするうえで、入門言語に困るならこれ。
強力なゲーム開発EngineであるUnity5を使いたい場合もこれ。
LINQとかWPFみたいな特徴的な機能もあって、極めていく上で楽しみも多い。
そもそも、windowsがトップシェア=当分C#が廃れることもなさそうという点も大きい。

C#の絵本 第2版 C#が楽しくなる新しい9つの扉

C#の絵本 第2版 C#が楽しくなる新しい9つの扉

独習C# 第3版

独習C# 第3版

  • 作者: ハーバート・シルト,エディフィストラーニング株式会社矢嶋聡
  • 出版社/メーカー: 翔泳社
  • 発売日: 2010/12/03
  • メディア: 大型本
  • 購入: 5人 クリック: 55回
  • この商品を含むブログ (6件) を見る

独習C# 新版

独習C# 新版


番外編

入門向け言語・・・ってのとはちょっと違うけど、やっぱ紹介しとかにゃならんだろって言語



C :基礎から勉強したい人向け、システムソフトウェアではまだまだ最前線

構造化プログラミングの基本であり、様々な言語が親とする基礎中の基礎的言語。
その小ささや何でも触れる点から、システムソフトウェアのプログラミングによく使用され、OS開発の共通言語でもある。

Cはこの記事で紹介しているほぼ全てに影響を与えている上、殆どのオブジェクト指向言語がCを何らかの参考にしている。
よって、Cをきっちり学ぶということは、「他の言語の習得や理解速度を早める」ということにつながる(可能性が高い)
反面古く不親切な構造は、単純なタスクの実行でさえも煩雑で複雑なコードが必要であり、初心者が初心者であるがゆえに挫折する関門が数多くある
上級者でもよく躓く。

とはいえCの知識は長期的にはプログラマとしてあなたを助けることは間違いない。
ガッツリプログラミングやっていきまっせという時にちょっと触ってみてもいいだろう。
心が折れそうになったら、早めにpythonとかrubyに戻ってくると良い

14歳からはじめるC言語わくわくゲームプログラミング教室 Windows98/2000/Me/XP対応

14歳からはじめるC言語わくわくゲームプログラミング教室 Windows98/2000/Me/XP対応

14歳からはじめる リアルに動く!ゲーム物理プログラミング教室 C言語編―Windows 98/2000/Me/XP/Vista対応

14歳からはじめる リアルに動く!ゲーム物理プログラミング教室 C言語編―Windows 98/2000/Me/XP/Vista対応

Cの絵本 第2版 C言語が好きになる新しい9つの扉

Cの絵本 第2版 C言語が好きになる新しい9つの扉



C++:難しいが速い処理速度と強力な性能を誇るC言語拡張言語

オブジェクト指向は「とてつもなく複雑なポインタ管理」を行わなくてはいけない。
が、現在の多くの言語がそれを機械に自動的にやってもらっている(ガベージコレクションといいます。みんなのアイドル)
しかし、それゆえに様々な「ポインタを使った処理」ができなくなっているし、超高速な処理が必要なシステム(特にゲームエンジン)ではガーベッジちゃんの”いらんことしい”に悩まされることになる。

C ++は、Cに基づいた強力な言語で、ガーベッジコレクションではなく自身でポインタ管理を行うオブジェクト指向プログラミング言語。
システムソフトウェア開発用に設計されているものの、ゲーム/ゲームエンジン、デスクトップアプリケーション、モバイルアプリケーション、およびWebアプリケーションの構築にも使用されている。
C ++は強力で高速でそして何より複雑で煩雑。
高性能で高信頼のコンポーネントが開発されているが、それもちゃんとC++のことを理解していないと使いづらい。
強力なことには間違いないので多くのソフトウェアがC++で組まれており、Adobe、Amazon、Paypal、Chromeなど錚々たるメンツが揃う。
それは、C++でなければどうしようもない場面が確かに存在する証でもある。

Cとよく似ているが、それよりも遥かにC ++は初心者が自分で学習するのが難しい。
したがって、あなたが最初のプログラミング言語としてC ++を学ぶことに決めたら、覚悟を決めましょう。
辛くなったら戻っておいで。初心者向けの言語はいっぱいあるし、大抵のものがそれで作れる。

今の初心者は選択肢が豊富で羨ましい。
プログラミングになれたら、再度C++へ挑戦するのもありだろう。

C++の絵本 第2版  C++が好きになる新しい9つの扉

C++の絵本 第2版 C++が好きになる新しい9つの扉

基礎からしっかり学ぶC++の教科書 C++14対応

基礎からしっかり学ぶC++の教科書 C++14対応


Scratch : パズルのようにプログラミングできる教育用プログラミング言語

入れるかどうか悩んだんだけど、まぁ入れとくほうがいいよね。。。。
「構文の書き方を覚えること無くシステムが組める」教育用プログラミング言語。
小学生向けに大人気。
「こんなのプログラミング言語」じゃないと思うのは私が年寄りだからだろう。


まるでパズルを組むかのようにプログラミングの基本が学べるので、「プログラミング」ってのに触ってみたいならば有用。
ただ、これを使って他言語のための基礎が学べるかというと疑問。
少なくとも苦手意識は持たなくなるだろうし、構造化プログラミングの基本である制御文は覚えやすい。

ちょっとかじってみたいけど、文字の羅列にゲンナリするという人は試してみては?

scratch.mit.edu



これと同じ(イベント駆動)グラフィカル言語としては、ゲーム開発EngineであるUE4などがある。
PS4のゲームとか色々作れるあれ。
まぁ、あっちになるとプログラミング入門というよりもゲーム開発入門。


総括

さて、色々並べましたが、どれも良い点と悪い点があります。
そして、プログラミング言語とはハマると宗教と化します。
でも、間違えてはいけないのは「プログラミング言語はただのツールである」という点です。
どれから入っても、何に傾倒しても、それは忘れないようにしたいですね。

悩んでいる人は、目的別で考えるのが後悔しにくいです。
ゲームが作りたいという人はC#や、いっそのことUnrealEngineでいくとか。
スマホアプリが作りたい人は、C#+xamarinやSwiftを。
webサービス立ち上げたいならruby on railsが
流行りの機械学習や研究用途で使うならpythonがいいでしょう。
なんとなく始めたいなら、ひとまず最初の一歩としてはRubyかPythonのどっちか選んだら不自由しません。

とにかく始めて見ることです。
それが何にせよ一番大事。
安心してください。お金かからない。手持ちにPCあればそれでいい。


あと、現役プログラマーさんたちは言いたいことが色々あるでしょう。
「お前、適当なことふざけんなよ。ニワカ!!!」
とか
「LISPないじゃん/haskellないじゃん!?」
とか
「もっと良い言語紹介あるだろ!」
とか
「Ioの出番は?」
とか
「SQLはほしい/VBAもいいぞ/html+CSSだって」
とか
「現在ならむしろサイドのXamarinとかrailsとかに振り分けたほうが」
とかとか。
ガバガバ解説をゆるしてもらえると嬉しい。
なんかあったらコメントどうぞ。

関連記事

ブログ再起動中・・・・・・