最初に学ぶプログラミング言語。

ブログにも残しておこう、と。

始めに結論めいたことを言うと、仕事のためにプログラミング言語を習得しなきゃならないならば、その仕事でつかう言語だろう。

それ以外の場合、仕事とかであらかじめ選択肢が固定されてない場合は、いくつか候補があると思う。
有名どころだと、アセンブラ、Basic、C、C++C#JavaPerlRubyあたり。
このなかだと・・・Rubyかな。
理由は、
1.変数の型付けが動的
2.インタプリタなのでコンパイルがいらない
3.ガベージコレクタがあるので(大抵)メモリ管理とかしなくていい
という点。

さらにその理由としては、Rubyが一番問題を解決する指向性をもってると思うから。
ちなみにPerlは除きます・・・触ったことないから・・・

プログラミング言語を習得する目的というかプログラミング言語を使って出来ることというのは、ハードウェアやOSといったいわゆるコンピュータを制御することと問題を解くことの2つがあると思う。
はっきり分かれてるわけじゃなく傾向として、だが、静的な型付け、コンパイル型、メモリ管理、あたりはコンピュータ制御を指向した考えかただと思う。
でも、それはプログラミング言語を習得する最初の目的にはなりえないんじゃないかな。
CPUやメモリを気にしつつプログラムを書くとしても、最初に気にするべきなのは効率的なメモリ管理ではなくて、O(n^2)の計算量をいかにO(n)に減らせるか、というアルゴリズムについて知恵を絞るべきだと思う。
ちなみに↑はC、C++あたりに対する苦言です。
おれの考えでは、プログラマは問題を解決するのが仕事/やりたいことであってコンピュータのお守りをすることではない。
ディープな部分を学んでいくためには、いずれはそういうコンピュータに密着した言語を学ぶ必要があるだろうけど、初心者プログラマが初めに学ぶべきなのは問題を解くことなんじゃない?

あとね、CとかはWindowsAPIとかMFCとかと密着しすぎ。簡単に利用できるだけに一瞬で泥沼に引きずり込まれるし。

・・・欲をいえば、プログラム言語の関数と数学の関数の概念が近い言語がいいかな・・・
f(x)が(f x)なのは敷居高すぎる>lisp

というわけで、プログラミング言語は、
コンピュータ⇔プログラミング言語⇔人間
であったものが、
コンピュータ⇔プログラミング言語A(コンピュータ管理)⇔プログラミング言語B(問題解決)⇔人間
というように層が分離していくはず。
その点でCで書かれたRuby(やその他の言語)というのはコンピュータ言語として並列にC、C++等と同列に存在してるわけではなく、分業的な位置付けにあると思う。