注意: このページは最後に更新されてから 2065 日が経過している記事です。 文章が腐敗している可能性があります。その点を考慮した上で確認ください。

プログラミング入門

提供: kimoto's wiki

概要

プログラミング入門記事、言語の詳細とかについてはもうネット上にありとあらゆるほど存在しているので書くのは意味ない、そこで学んどくと価値が高いものとかを俺的視点で書いてみようかなと。

目的別推奨言語リスト

目的を達成するために良い選択肢となりうるプログラミング言語を紹介します。

  • コンピューターの根本的なしくみを学びたい時
    • アセンブリ言語(Windowsであればnasmとか、masm)。ただし基本的にアセンブリ言語の知識というのはCPUに依存する。CPUごとに勉強しなおさないといけない。また勉強しても実用性はほぼない。
  • 単にプログラミングについて学びたい時
    • 昔はC言語とかPerlだったけどこれらはBadな設計が多く残っているため推奨できない。JavascriptやRuby, Python, Javaなどキレイな設計のされた言語がオススメ。
    • 初心者のうちはコンパイルとか手間だろうし頻繁に書きなおしやすいスクリプト言語がオススメ
    • つまるところJavascript, Python, Rubyがよいかも。PHPは簡単な言語だけど設計が糞なので推奨できない。
  • オブジェクト指向設計について学びたい時
    • Java一択、Javaは標準クラスがオブジェクト指向設計されてるので本当に勉強になりますよ。。
  • プロトタイプ指向設計について学びたい時
    • Javascript一択、Common LispのCLOSは導入がめんどいので却下
  • 設計について学びたい時
    • Java
  • Windowsのデスクトップアプリを作りたい時
    • C#、ただし俺はC++に慣れているのでそっちを使っている。初学者であればC#をオススメしたい。言語的に設計がとてもキレイだし、C++みたいにめんどくさいことをせずに済む。C++はメモリ解放しわすれるとメモリリークするしねー(C#はガーベッジコレクタ装備してるのでそういうのがない)
  • 速度の早いプログラムが書きたい時
    • C++
  • 仕事多い言語(そのかわり収入低い)
    • Java / Javascript / HTML / CSS
  • 仕事少ない
    • Common Lisp, Scheme

非推奨言語リスト

習得しなくて良い言語、時間のムダ

  • COBOL

プログラミングの要

ぶっちゃけプログラミングなんて一個マスターしちゃえば後はその知識使いまわせるのですごくラクです。さんまとかつおの違いみたいなもの。ほとんどの機能は一緒で変わらない。基本的には以下の3つかな。

  • 反復
    • 指定回数繰り返したい時
  • 条件分岐
    • もし〇〇だったときに××したいみたいな時
  • 関数の定義と実行
    • 一連の処理を一つにまとめておけるし、まとめたそれをいつでも呼び出せる

結局のところ俺のオススメ立ち回り

美しい言語設計をされているRubyがオススメ。日本発だし、Rubyで出来ることは大変多い。最近できた言語だし(といっても10年前ぐらい前かな)、いにしえの下位互換という悪習を引き継いでいるわけでもないのでとにかく美しい。キレイなコードが書ける。 コンパイルもいらないし、テキストエディタで編集してダブルクリックで実行してもいい。

一般の人にとって実用性が高い言語といえばたぶんJavascript。自分のサイトがあったとすればそこでガンガン実用的に使えるし、言語設計も悪くない。ブラウザでリロードするだけで動作確認出来るのも良い。FirefoxにFirebugプラグインいれれば相当楽になるし。

Rubyを主軸に学んでいって、そこで得た普遍の知恵をJavascriptとか作業の必要性に応じて脳内で翻訳していく感じかなぁ。そんで設計についてちゃんと学びたくなったらJavaを学ぶみたいな。

俺の言語遍歴

えらそうに語るだけだとアレなんで俺の言語遍歴について書く、すごくムダが多い。上から順に学んだもの

  • 小4 (無限にビープ音を鳴らすプログラム作ってた)
    • HyperCard / HyperTalk
  • 高校2年 - 3年
    • C
    • Perl
    • Visual Basic
    • Java
    • C++
    • nasm
    • HTML
    • CSS
    • Javascript
  • その後
    • PHP
    • SQL
    • Ruby
    • Scheme
    • Objective-C
    • Common Lisp

あとのは忘れたwa