否プログラマが考えたプログラミング初心者に気軽に勧めるプログラミング言語

programming-study.com

まぁ、雑なやっつけ記事ですが、この「初心者向けガー」ってどういう目線なのか今ひとつ理解できない。
既存の初心者向け〜記事でも結構コーディングにすっかり慣れた方々による「こういうプログラムを学ぶのがいいのでは?」という記事もあるが、そういうものも「いや、専業プログラマー目指すならわかるけどさ」みたいなものも多い。
本当のライト層というか、もうcmdすら呼び出したこともないような初心者って、もっと手軽に触って「コーディングってこういうもんだよ」とわかってからが面白いと思うんですよ。

※以下は、誰にでもぴったりの〜と言うつもりはなく、あくまでも仕事とプライベートでちょこっと触れる程度の否プログラマな「自分にはこう言う感じが合ってた」「自分が考えるような(身近な初心者)を想定するとこうなる」が前提なので、はてなに蠢くマウント取りたいだけのうるさ型はお呼びでない。
お間違え無きように



【スポンサーリンク】



コンパイル方式

まずコンパイル方式はどうだろう。
一応書くとコンパイル方式は、ソースコードを書き、コンパイルソフト(コンパイラー)を使って作動できるコードにする。
人間にわかりやすい高級言語で書いたものを機械にわかりやすい言語に翻訳する、といえばいいか。

自分が想定するようなガチガチの初心者はそもそも
書いて→確認できる
みたいな手軽さがいい。
だいたいライトな層は
「フルスタックエンジニア*1に、俺はなる!」
なんて野望を抱いてない。

ラッパーになると言い出し結果も出さず放り出し、絵描きになると言ってはろくな才能もないのに書きなぐり、「ぼくのかんがえた最強の」抽象画論を語ってしまう程度にライトな層は、プログラム初心者にだって多く存在する。
そう言う方々が、コンパイルという一手間があるだけで投げ出す可能性は充分にある。

全ての言語にコンパイルがあるわけではないんだから初心者向けとしては今回、コンパイル作業が必要な言語は避ける。

インストール

インストールの手間がかかる言語も避けたい。

今のライトな層というのはそもそもGUIにしか馴染みがない。
先刻も書いたがcmdだってターミナルだって初めて触るかもしれない。

だから手軽にさくっと始められるのが向いてる。
パッケージを選んで、今の自分のPCが64だっけ、32だっけ?と確認してダウンロードして、インストールして、
もう初心者はそんな準備だけで一苦労。

え?インストール終わったのに今度は環境変数設定しろって??
何それ美味しいの?
「その苦労が肥やしになるんだよ」

いやいや、マラソン始める前にウェアとかシューズ準備して、準備したら満足してしまうのと同じく、そんなに頑張ったら「インストールできた」と言う事実に満足してしまう。
そして、せっかくインストールしたのに最初は"Hello World"ですからね。
あれ?こんな地味なことのためにさんざ苦労したのか……ってなもんですよ。
だからみんな本を買っても冒頭数十ページで飽きる。
インストールが本番、そこで力尽きる初心者の死屍累々。

レスポンス

すぐに確認できると言うのは、とても重要。
せっかく書いたのにコレがなんなのか?どうなるのか?
言語のままでは理解がしづらい。

ちょこっと書き、ちょこっと動かし。
それが徐々に繋がってくるから楽しくなる。
だだーっと書いてコンパイルして、エラー出て……なんて、ストレスばかり。

初めてPC8801でBASIC触って、画面に線を引けたことはいまだに覚えてるくらい。
やっぱり「何かを触って具体的に何かができた」記憶というのは印象が深い。


といったような、以上を踏まえると以下の言語が「ごりごりの初心者には」向いているかもしれない。

Python3

みんなのPython 第4版

王道というか、初心者向けにはPythonでしょう。
マカーの方はターミナル立ち上げて「python --version」って入れてみてくださいな。
もう入ってる。
準備がいらない。
python打ってからprint("Hello world!")で、はい、ハローワールド完了。

インタラクティブ・シェルのお陰ですぐに確認できる&MACなら既にインストール済みのお手軽さ。
本格的に使うならHomebrewとか入れたほうがいいかもですが、いじってみるには充分。
慣れてガッツリやるならAnacondaでも入れればよろしいし、ウェブスクレイピングでもAI開発目指してもよろしい。

余裕があるなら色々インストール済みのラズパイ買って動かせばより理解も深まるかもしれない。

Python本だと最近出た「独学プログラマー」がなかなか面白い。
独学でプログラマーになった著者の実体験がベースなので初学者にとても優しい。
これ読みながらキーボード叩くのが一番かもしれない。

独学プログラマー Python言語の基本から仕事のやり方まで
日経BP社 (2018-03-20)
売り上げランキング: 398
 
 

Google Apps Script

詳解! Google Apps Script完全入門 ~Google Apps & G Suiteの最新プログラミングガイド~

ブラウザで完結できる上にスプレッドシートが使える優秀さ。
インストールも必要ない、コンパイルも必要ない。
ブラウザとネット環境とグーグルアカウントがあれば使えるNotEvilな仕上がり。

getRange().setValue("hogehoge")
でその場で値がセルに入力されてるのだって確認できちゃう。
もちろんJava Scriptな方々からすれば「順番が違うだろ」ってなもんかもしれませんが、圧倒的にGASの方が普段使いしやすい。

初心者ってのは、なんで初心者なのかといえば「普段、プログラムの使いどころがない」からなんですよ。
いきなりゲーム作って発表するわけでもなし、機械学習で将棋最強目指すわけでもない。
必要があれば学ぶ。
使う場面があるから学ぼうと思う。

気軽にスプレッドシートで家計簿作って、簡単にフォームから入力。
それが毎日トータルで出てくるとか、ダイエット記録でグラフが出来上がってメールで届くとか。
そーいう身近で自分用のプログラムが作れるようになると楽しくなってくるんじゃないかな、と思うんですよ。

それにGmailもGoogleMapも連携できるから、自分が普段使ってるサービスも組み込める。
各サービスを連携させるのがGASの醍醐味ですしおすし。
トリガー仕掛けて、仕込んだメールが送られて来るのは結構楽しいもんですよ。

さらに近々マクロが使えるという話もある。
そうなると1から書かなくてもマクロを記録し、できたコードを見て、そこからカスタムするって勉強だってできる。
だから学ぶなら今って感じもあるんですよね。

VBA

入門者のExcel VBA 初めての人にベストな学び方 (ブルーバックス)

「なんだよ!今さらVBAかよ!」
「そんな時代遅れの初心者に勧めんなよ!」
って声が聞こえそうですが、自家用で使うならVBAが一番手軽で実用性もある。

プログラマーの方々には大いに不評でも実際使う場所があるんだから仕方がない。
Excelは広く、未だに現場で現役。

さらに適当でもそれなりに動く。
これが初心者に向いてる。

たとえばGASなら大文字小文字も間違うと動かないですが、VBAなら直してくれる上に型宣言すらしなくても動く。

sub test()
for i=1 to 100
hoge= int(rnd*5)
select case hoge
case 1
val="情報商材乙"
case 2
val="炎上商法野郎"
case 3
val="意識高っwww"
case 4
val="クソ互助会"
case 5
val="仮想通貨どうなったの?"
end select
cells(i,1)=val
next i
end sub

適当に書いたこんな適当なコードでも動く(多分)。

もちろん、ちゃんと書くならOption Explicit書いて、Dim i As IntegerとかDim val As Stringとか、Worksheets(1).Cells(i,1).Value =valとか明示的に書くのが推奨されるとしても、触れたばかりの初心者は、気軽にまず一度動かしてから付け足せばいいので。

この手の記事のコメント欄でよく見かけるような最初から正しい手続きを覚えなきゃならないとか、正しい記述を学ぶべきだとか、誤解して覚えるべきじゃないとか、そういうべき論が初心者への壁になってる気がする。
実際、覚える人は最初誤解してても自分で解決するまで勉強するし、しない奴は結局しない。
志が高いのはもちろん結構だが、初心者の志は低くても充分足りる。

慣れてくればIEと連携だってできる。
それにPythonが使えるようになるかも?と言う話もある。
PythonもVBAもどちらも使えるのが一番。

で、最初、直感的に適当なコードを書いてforで回してifで分岐させて〜みたいな手札しか持ってない初心者が、もっと効率的なやり方はないかな?とかもっと高速なやり方はないかな?と試行錯誤して連想配列を覚えたりしていく。
初心者は、そうやって手札が増えるのが面白いんだし、面白いと思えたら続く。


ちなみにVBA本は貼ってあるブルーバックスのがなかなかいいですよ。
特に「脱入門者の〜」の方は使い勝手がいい内容。



インタラクティブならirbと言う手もありますけど、brew install rbenv ruby-buildとか打つなら素直にPythonの方がいいと思うんですね。
rbenv install -lで確認してDLとか、初心者向きではないかと。
否プログラマーが考える初心者向けのプログラムなんてこんなもんですが、こんなもんでいいんじゃないですかね。

以上です。

独学プログラマー Python言語の基本から仕事のやり方まで
日経BP社 (2018-03-20)
売り上げランキング: 398

*1:スーパーサイヤ人3みたいなプログラマーのこと