新しいコンピュータ言語の習得方法
私がこれまでに習得してきたコンピュータ言語を列挙すると、次の通りだと思います。
- BASIC
- Z-80 (機械語、アセンブラ)
- 6809 (機械語、アセンブラ)
- Kコンパイラ
- FORM (Tiny FORTRAN)
- FORTRAN 77
- C
- Pascal
- AWK
- shスクリプト
- cshスクリプト
- Perl
- PHP
こんな感じかな…。それと、Apple Scriptも少々。
プログラムの基礎をBASICで覚えて、PascalとCでコーディングスタイルの基礎を覚えて、Perl応用プログラムを書くと言う感じでしょうか。
WordPressのカスタマイズをする為に、最近PHPを覚えました。
新しいコンピュータ言語を覚えるのには、コツがあります。もちろん、プログラムの基礎を知った上です。
- 変数の扱い
- 制御構文の書き方
この二つを押さえると、基本的なプログラムは書けますね。その次に必要になって来るのは、
- サブルーチン (ファンクション)の扱い
でしょうか?
変数の扱いは、代入方法、参照方法を覚えます。変数には、単純変数と配列やハッシュがあって、その両方を覚える必要があります。
それに付随して、演算子を覚える必要がありますね。
制御構文は、IF-THEN-ELSEや、whileループとforループとなります。基本的な制御構文は、わりと共通なので、覚え易いと思います。
サブルーチン(ファンクション)は定義方法と呼び出し方です。小さいプログラムならサブルーチンを書かなくても書けますが、同じ処理を繰り返し使うなら、サブルーチンは必須です。
一つの言語をしっかりマスターしていれば、他のコンピュータ言語への転換はわりと楽です。
全く何も知らない状態から、コンピュータ言語を覚えるのなら、何が良いですかね? 今なら、Perlにuse strictとuse warningsを付けた状態で、なるべくデフォルト変数($_)を使わずに、上記の事を勉強して行くのが良いんじゃないですかね?
プログラムを作る時は、データ構造とアルゴリズム(処理手順)をきちんと明確化できれば、あとはコーディングするだけです。
私がいまだに苦手としているのは、オブジェクト指向型言語です。
オブジェクト型を持つインスタンスを定義して、そのインスタンスをメソッドで処理して行くって言うのが基本だと思うのですが、使いこなせていません。
オブジェクト指向がわからないって言うか、それぞれに用意されたメソッドをちゃんと覚えていないからかも知れません。
Objective-Cでプログラムを書いた事はありますけれど、まだスラスラと書ける状態ではありません。
この辺りは、もう少し頑張ってみたい所です。オブジェクトとメソッドを、ちゃんと覚えて行く事が必要なんだと思います。
ディスカッション
是非次はlispを習得してください。なかなかけったいですよ。
たこやきさんへ、いつもコメントありがとうございます。
おぉ! LISPですね! 書き忘れていましたが、LISPも書けます。
Emacs LISPですけれど。
「リスト」と言う考え方が、Perlとかにも反映されていて、LISPを習得する事は他の言語を習得するのにも有益だと思います。
そっか。やたらと括弧が増えてemacsじゃないと書けません。
あとmlとか大学でちょろっとやりましたがあれもけったいだったことぐらいしか覚えてません。
たこやきさんへ、再びコメントありがとうございます。
LISPに限らず、プログラムを書く時はEmacsが便利です。色分けしてくれたり、インデントを付けてくれたりと。
おっしゃる通り、括弧の対応も表示してくれますから、便利ですよね。
“ml”ですか?! 初めて聞きました。
ML (プログラミング言語) – Wikipedia
Standard ML – Wikipedia
こんな言語があったんだ…。これを理解するのは、先に書いた記事の内容では対応しきれません。(笑)
最近は、次の言語が話題になっているそうですよ。
masarakki/nyaruko_lang · GitHub
「『這いよれ! ニャル子さん』に関する文字列だけからなる言語。」だそうです。
這いよれ! ニャル子さん – Wikipedia
最近はショートコーディングがすごいです。
7行テトリスとか。
http://zapanet.info/blog/item/1125
たこやきさんへ、再びコメントありがとうございます。
すごい! 動きました!
コメント入りのプログラムを見ても、その時点でトリッキーなテクニックが使われています。
元ネタ(2ch)も軽く読んでみましたが、凄いですね。
芸術ですね。
こんにちは。
お市さんの言語、FORTRANとかアセンブラとかやってきていて尊敬します。
30代以降なのがバレバレ、ですけどね。
オブジェクト指向は、実装方法というよりクラス設計、
たとえば
・どんなクラスが必要で
・その中に定義するメソッドは?
・クラスとクラスの関係は?
の考え方が難しいです。
今の案件で、とある一連の処理を行う共通クラスを作成する
ことがあったのですが一瞬凍りついてしまいましたから・・笑
オブジェクト指向言語で、頑張って欲しいのは
日本の、とある地方都市で生まれたRubyですけど
phpやJavaに押されているような気がしてちょっと残念です。
えのちゃんさんへ、いつもコメントありがとうございます。
年齢がバレてしまうと思いながら、書いていました…。
クラス設計ですか…。まだ利用する事しかできません。
Rubyは、先日、国際規格になりましたね。
Wikipediaを読んでみました。結構面白そうですね。
Wikipedia Ruby