スポンサーリンク



2019年01月12日

プログラミングに向いている人の特徴

 ども勉三です。プログラミングに向き不向きはあるのか?というテーマはよく議論されます。まあ当たり前ですが、世の中の他のあらゆるものと同じで向き不向きはあるでしょう。もちろん誰でも環境や教材が整えば一定レベルにはできるようになるでしょうけどね。しかしそこから上となると向き不向きは当然あるでしょう。

 勉三はこれまでプログラミングのスキルが素晴らしい人に沢山会ってきました。それはいわゆるシステム屋さんだけでなく、大学や企業の研究所で解析目的にコードを書いている人、ベンチャーを立ち上げてウェブサービスやアプリをがんがんリリースしている人など様々です。

 職種や目的は違えど、プログラミングのスキルを活かして夢を実現しているという点では皆さん共通しています。そんなスターともいえるプログラマーたちと話をしてきて、一定のパターンというか傾向があることに気づきました。今回はそんな「プログラミングに向いている人の特徴」をお伝えしたいと思います。

みな小さい時にプログラミングを始めた

 これ、あまり似たような記事で触れられていなくて意外と盲点だと思うのですが、スタープログラマはだいたい高校生までにプログラミングを始めています。高校生でも遅いぐらい。中学生、中には小学生から始めている強者も。

 勉三自身のことを話すと、中学生でプログラミングを始めました。理由はゲームが作りたかったから。ドラクエやFFのようなゲームを自分で作るのが夢でした。当時、父のPC98でBASICでプログラムが組めることを知り、こっそり内緒で使って簡単なプログラミングをしていたものです。そのパソコンは白黒だったため、カラーが使えるパソコンが欲しくて欲しくてたまらなくなり、中学一年生の時に親にねだってマッキントッシュを買ってもらいました。これが初めてのマイパソコンです。

 勉三は、プログラミングについて、音楽や囲碁将棋のように子供からやっていないとプロにはなれないものだとは思っていません。プログラミングがある程度できるようになるなら何歳からでも遅くはないと思います。ただ、現実としてプログラミングで圧倒的なパフォーマンスを発揮する人は、とにかくプログラミングがしたくてしたくてたまらなくて、自然と子供のうちから始めるのではないでしょうか。

 なお、以前に参加したどこかの学会で伺った話ですが、有名なプリファードネットワーク社の取締役の一人の方は、既に小学生時代から英語論文を読んでプログラミングをしてたりしてたそうです。これも誰に言われずともなさっていたのでしょう。中学生から始めた勉三なんてかわいい部類で、本当のトップスターともいうべき方々はレベルが違うなあと感じたのをよく覚えています。

寝食を忘れてプログラミングする

 プログラミングが好きな方は食事する時間や寝る時間も削ってプログラミングしてたという方が非常に多いです。勉三もそうですね。着手までは割と時間がかかるんですが、いったんやりはじめるとキリのいいところまで仕上げないと気持ち悪くて作業を中断できません。

 とくに設定やバグで詰まったときなんかは、四六時中ずっとその解決策の事を考えますね。寝食忘れてとはよく言ったものです。

 プログラミングって順調に行っている時って時間の3割ぐらいしか占めてないような気がします。7割はトラブルシューティング。自分の書いたコードそのもののバグだったり、あるいはライブラリのバグ、設定のミス、他のソフトやフレームワークの理解不足、などなど要因は沢山ありますが、そういったものに遭遇し解決策を考えてあれこれ試行錯誤している時間が圧倒的に長い。

 で、また一番スキルが伸びるのってそのトラブルシューティングのタイミングなんですよね。問題解決することでようやく知識が知恵になるというか。ですので他の生活を削ってでもそれに打ち込める人は、それだけでプログラミングへの適性があると思います。

新しい言語を覚え始めるや否や、いきなりコードを書き始める

 よくいると思うのですが、「よしっ、Java 勉強しよう」と思って本を一冊買ってきて、本の中のチュートリアルに沿ってコードを入力して、というのだけをして、自分で何も作らない人。

 プログラミングに向いている人は全然違います。本を読み終わる前に、チュートリアルにないプログラムを自分で勝手に作り始める。別にそれが大したものであるかどうかは重要ではありません。自分で考えて創作するというところに、それができない人との大きな壁があるような気がします。

 プログラミングは語学と同じで、本ばっかり読んでて英会話がうまくなる人はいないのと同様に、本ばかり読んでてプログラミングがうまくなった人もいません。読書は最小限にし実践あるのみです。英語で最初はへたくそでも、怖がらずにどんどん外人相手に話しかける人の方が遥かに上達しやすいのと同じですね。

最後に

 いかがでしたでしょうか? 野球選手が野球が好きで好きでたまらない少年だったとか、将棋の棋士がずっと将棋のことばっかり考えてるとかそういう話はよくありますが、プログラマーもハイパフォーマーは同じだと思います。

 とにかく本ばかり読むのは止め、実際に自分でコードを書いてみましょう。それがプログラミング上達の最大の方法です。

スポンサーリンク




posted by 勉三 at 23:22 | Comment(0) | TrackBack(0) | IT
2019年01月08日

囲碁と将棋に見る性差:戦略脳と戦術能の違い

 ども勉三です。囲碁界で小学4年生の仲邑菫(なかむらすみれ)さんが史上最年少のプロ棋士となり、日本最強の井山裕太五冠と引き分けたというのが話題になっています(「囲碁の天才少女、10歳で最年少プロに。名人も手腕評価」)。将棋の藤井聡太氏もそうですが、天才の登場は俄然その競技を盛り上げますよね。みんなそれだけスターの登場に飢えているのかもしれません。

 ところで、しばしば話題になるのが、こうしたボードゲームに見られる男女差。将棋などは特に顕著で今のところプロ棋士として合格した女性は一人もいません(ここでのプロ棋士はいわゆる女流棋士を含まないものです)。一方、囲碁でも男性が圧倒的に多いですが、女性の棋士もいらっしゃいます。

 なお、将棋で女流棋士というと通常のプロとは別枠で採用され、単なる女性棋士という意味ではなく特別な枠のことを指しますが、囲碁で女流棋士というと女性の棋士のことで、この辺の呼称にも違いがあるようです。勉三も調べていて勉強になりました。

 ただ、性差に関しては「将棋は男性のものという風潮が強かったので、興味を持つ女性が絶対数として少なかったためであり、能力に性差はない」と主張する人もいます。これについて勉三の考えを書いていきます。

脳も身体の一部。体を動かすスポーツと同様に能力の性差はある

 勉三の見解は、将棋や囲碁は脳を使うスポーツ。使う部分が違うだけで、他のスポーツと基本的には同じと考えます。ですので、身体能力に男女差があるように、脳にも男女差があると考えるのはごく自然ではないでしょうか。

 これは男性の方が優れているという意味ではありません。例えば、腕力でいえば男性の方が強いですが、柔軟性などは女性の方が優れていることが多いでしょう。性別による向き不向きもあるということです。

 そう考えると、将棋のように同じ土俵で戦って、女性が男性と肩をならべてプロになるのは難しい競技があるというのもそう不思議なことではありません。例えばプロ野球なんかは、男女混同にしたら女性はプロになれないでしょう。

将棋と囲碁で男女比が違うのは何故か?

 ここで新たな疑問として「ボードゲームでも性差があるのは分かったが、なぜ将棋と囲碁とでそこまでプロレベルの男女比が違うのか」という問題が生じます。これについては、もちろん伝統的に将棋はどちらかといえば男性が中心の庶民的なゲームであったという事情も寄与はしているでしょうけど、どちらかといえば二次的な要素だと思います。例えば、研究や文学だって最初は男がするもので、女性がしていたら眉をひそめられる時代もあったでしょう。しかし、元々の能力に絶対的な性差がなければ、必ずトップクラスになる女性は出てくるものです。

 勉三が考えているのは、将棋と囲碁のゲーム性の違いです。将棋は戦術的、囲碁は戦略的要素が強いと考えます。戦術的要素というのは、要は将棋で言えば詰将棋の能力などが代表例です。確実に頭の中で駒を何回も動かして理詰めで推論する力のことです。これは男性の方が圧倒的に強いのではと思います。

 一方で、戦略的要素というのは、将棋で言えば全体を見据えた駒組だとか、囲碁で言えば細かい地ではなく全体の勢力や布石など、理詰めというよりは全体の俯瞰力や直感に支えられている部分ですね。こちらも傾向としては男性の方が強いのだとは思いますが、戦術的要素ほどは男女差は無いと思います。

 同じボードゲームでもこの性質の違いが、プロクラスの男女比になって表れているのではと、仮説レベルですが勉三は考えています。

 なお、将棋の親戚に見えるチェスでも、男女差は将棋ほどではなく、女性のグランドマスターもいますし、女性の愛好者も多いのです。これも「戦術的要素」vs「戦略的要素」のフレームワークで考えることができるでしょう。チェスは中盤以降駒が少なくなり、必然手の連続による即積みというのが少なくなってくるので、より戦略的要素の強いゲームだと思います。この点、むしろチェスは将棋より囲碁に性格の近いゲームなのかもしれません。

スポンサーリンク




posted by 勉三 at 20:25 | Comment(0) | TrackBack(0) | 時事
2019年01月03日

プログラミング言語紹介(1):VBA

 今回からシリーズで、プログラミング言語を1つずつ取り上げ簡単に紹介していきたいと思います。似たようなことは多くの人がされているのですが、それを読んでいて「この人、ほとんどこの言語使ったことないのにネットで見た知識だけで書いてるなあ」と思うことが多く、きちんとした情報を伝えようと思ったのが動機です。

 ですので、本シリーズでは勉三が実際にある程度扱ったことのある言語についてしか書きません。ある程度というのも線引きが難しいですが、Hello world 程度ではなく、きちんと実務や実用に使えるようなプログラムを書くのに使ったというぐらいの意味合いで考えておいて頂ければと思います。

 まずは記念すべき第一回は VBA からです。

VBAは立派なプログラミング言語です

 VBA(Visual Basic for Application)は、Microsoft社謹製のプログラミング言語で、Microsoft Office の各製品をプログラマティックに操作したい時に使われる言語です。とりわけ、同社の Excel 上で使われることが多く、Excel VBA などとも言われたりします。本記事でも専ら Excel での使用について念頭に置いて書くことにします。

 VBA は Excel というアプリケーションの操作(例えばセルの文字色を変えるだとか)を実行できるため、マクロ言語(あるいはマクロ)とも呼ばれることがあります。これは通常のプログラミング言語での1命令よりも、より大きな粒度(マクロ)での命令を実行するために作られた言語という意味あいがあるようです。

 このような事情から、VBAは「初心者向け」「あくまでマクロ言語でプログラミング言語ではない」「簡易の言語」と言われることがありますし、そう思っている人が多いようです。勉三はC/C++、Javaなど一通りやってから、VBAをやりました。その時は私もネットで聞いていた噂からそのような先入観を持っていたのですが、実際にやってみてその印象は吹っ飛びました。VBAは立派なプログラミング言語です。誰ですか?初心者向けとかいったのは?

 ただ、実務での必要性に迫られて、きちんとしたプログラミングの流儀を知らずに、ネットや本のコピペだけでVBAを動かしている人もそれなりにいるので、確かにユーザのスキル的な意味で言えば平均としては低いのかもしれません。それは誰でも使えるという意味で悪い事ではありませんし、VBAが機能の限られたプログラミング言語であるということでもありません。あくまで簡単に使えるがゆえに、結果として初心者が多いということです。他の言語で基礎ができている人が使えば、速度などを除けば他の言語とそん色ないプログラムが書けます。

VBAをきちんとプログラミング言語として教えているサイトや本が少ない

 これは勉三がVBAを勉強する時にぶつかった壁なのですが、VBAはれっきとしたプログラミング言語であるにも関わらず、VBAをきちんとプログラミング言語として解説しているサイトや本が殆どないのです。

 勉三のようなC/C++からプログラムを始めた者にとっては、プログラミング言語を学ぶときは、まずどういう変数型があって、変数を宣言するにはどうしたらいいか、関数やクラスを定義するにはどうしたらいいか、配列やコレクションなどの複合的なデータ構造としてはどういったものがあるか、そういったことをまず知りたいのです。逆にそこを伏せて解説されても分かりにくくて仕方がない。裏側ではどういう型の変数になっていて、ここは値渡しなのか、参照渡しなのか、そういうことをきちんと教えてくれないとすごく気持ちが悪い。

 ですが、VBAについてこういった切り口で解説しているサイトは殆どありません。セルの書式を変えるためにはこうすればいいとか、そういうテクニックが辞書のように羅列されているような解説が殆ど。VBAから始めた人がプログラミングの基礎を学ばないというのは、こういった教材面の問題もあるのかもしれません。

VBAの最大のアドバンテージは環境構築が不要なこと

 と、ここまでVBAを褒めるようなことを書いてきましたが、勉三はVBAは嫌いです。変数の宣言も Dim x As Integer とか気持ち悪いし、プロシージャや関数の呼び出し時の Call やカッコの有無の使い分けなども非常にイライラする。開発環境もExcelの進化から取り残されて化石化してしまっています。パワフルかつ完全なプログラミング言語であることは認めながらも、できることなら使いたくはない言語です。

 ただし、VBAの持つ最強のアドバンテージは「環境構築が不要なこと」です。おそらく、殆どのみなさんの職場のパソコンには Microsoft Office があらかじめインストールされているはず。職場のパソコンはだいたいセキュリティの設定が厳しく、追加でソフトウェアをインストールできなかったり、できても申請が必要だったりするかと思います。ですが、Excel さえインストールされていれば、即 VBA が使える。これは大きい事です。

 例えば、Windows で C/C++ あるいは C# なんか使おうと思うと、VisualStudio をインストールしたいところですが、無料で使える Community 版であってもインストールが必要になります。上司がプログラミングなどに全く理解がないと、なぜインストールが必要でそれで何ができるのか説明するだけでも一苦労です。

 そんな時は、まず VBA で簡単なプログラムを作って、手動でやっていたことを高速でできることを上司に見せてあげましょう。それから「VisualStudio というソフトがあれば、もっと高速で高機能なプログラムが組めるようになる。有料版は10万円以上と高いが、無料版がある」と説明すれば、「うむ、インストールしていいぞ」と言ってもらいやすくなるでしょう。

スポンサーリンク




posted by 勉三 at 19:01 | Comment(0) | TrackBack(0) | IT