最初に覚えるプログラム言語 - ikepyonのお気楽な日々~技術ネタ風味~
ちなみに私が最初に覚えたのはBASIC……しかもN88 BASIC(PC-8801やPC-98x1用のBASIC)じゃなくて、SHARP X1用のBASICという、非常にマイナーな環境だったり(汗)。
(自分で実機を持っていた訳じゃなく、K県Y市にある某博物館で触る事ができたパソコンを触って……です。)
本格的に勉強したのは、大学に入ってからで、C(言語)でした。
確かにポインタを理解するのは難しいけれど……一旦メモリ空間がイメージできるようになると楽ですね。
セキュアプログラミングの観点からも、一旦BoFを体験するだけでも「何故その脆弱性は危険なのか」という事を理解しやすくなりますし、一度は通過しても良い道ではないかなぁ……と。
(確かにPC系ではC++以降の言語(JavaやC#など)に移行しているケースが殆どですが、組み込み系の現場ではまだまだ現役ですしね。)
じゃあ、今「はじめてのプログラミング言語」としてオススメするなら……個人的にはこの3つのどれかかなぁ……と。
VBScript(WSH、ASP)
JavaScript
C#(or Java)
VBScriptは……
Windows系PCであれば、特別な処理系ソフト(コンパイラ、インタプリタなど)を別途インストールしなくても実行できる事(最低限必要なのはメモ帖(notepad.exe)のみ)
構造化制御は当然として、関数(Function)や簡易的なクラス(※1)の概念を持ち、プログラムの基礎のキを覚えるには十分な要素を含んでいる事
インタプリタ系なので、書いて即実行可能、結果書いて動かす楽しみが得られやすい事
更にはVBAやASP(Active Server Pages)、VBへと応用が効き世界を広げられやすい事
……の4点から押したいなぁ……と。
JavaScriptは……
ブラウザ(IEやFirefox)がインストールされていれば、即開発可能な環境が整う事(※2)
構造化制御、関数、クラスの概念を持っている事
インタプリタ系で書いて即実行可能、結果書いて動かす楽しみが得られやすい事
今注目のAjax(Asynchronous JavaScript+XML)の中核を成す要素の1つで、今ホットな領域である事
……の4点ですね。
最後に……C#かJavaか迷ったんですが……Windows系環境限定でOKならC#、UNIX/Linuxなど他OS環境もサポートしたいならJavaという感じですかね。
いずれも……
資料が十分用意されていて勉強が比較的し易い事
ローカルアプリだけでなくWebアプリ開発にも使える(Javaは言うまでもなく、C#はASP.NETとして)事
ガベージコレクションなど標準のメモリ管理がシッカリしており、書く側が意識せずに安全なプログラムを構築しやすい環境にある事(※3)
……の3点から押したいなぁ……と。
とは言え、いずれにせよ重要なのは「表面的な事だけ覚えて満足するのではなく、しっかりと書けるレベルまで持っていく事」です。
1つ軸となるモノ(私の場合はCが正しくソレです)が出来ると、他の言語に触れなければならない時でも、リファレンス等の多少の資料を読むだけで、すぐに書けるようになりますので。
---
(※1)元ネタの方には「無印BASICおよびVBには関数の概念が無いのでお勧めできない」とありますが、今のVB(VBA、VBS)には関数用のステートメント(Function)が用意されています。ちなみにサブルーチン用のステートメント(Sub)とは違う点に注意。またVBSでのクラスはあくまで簡易的なモノで、継承はサポートしていません。
(※2)今のOSにWebブラウザが無いというのはあまり考えられないので、実質OSがインストールされている環境であれば、最低限の開発環境が整うと考えても良いでしょう。
(※3)CやC++に比べれば、全然良い環境です(苦笑)。
---
(2007/5/30 17:45頃追記)
元ネタのコメントにツッコミが入ったので、ココでレス。
それを言うなら、多分クラスの概念を持つ(つーかOOPにある程度でも対応している)他の言語でも同じだと思いますよ……多分。
例えばC#ではmain関数もクラスのメンバ関数という扱いになっていますが、何故こうなったのか(こうした方が良いのか)は、ある程度お勉強が進んでいかないと理解できない人が多いのではないかと……。
(そこまでの段階に至っていない場合「単なるお作法」として「ふーん、そうなんだ」で流してしまうのではないかと……(汗)。)
今回私が考えたのは「プログラムなんて全くした事が無いし、どんなものなのか分からない人が一念発起しお勉強をしようと思った時、さて沢山あるプログラム言語の中からどれを選んでお勉強を始めようか?」という問いに対して……
お勉強を始めるまでの敷居が低く、取っ掛かりやすい
ネットにしろ紙の資料にしろ、お勉強するための情報が豊富で、困った時も対処しやすい
お仕事でも使えるケースが多い(※4)
何より書いていて楽しい(笑:でも重要)
……という観点から「自分ならこれかなぁ……」というモノを挙げているという感じですね。
---
(※4)VBSはWSHとしてならシステムの運用管理の時に結構有用ですし、他の言語については言うまでもなく……ですね。