プログラミング
2011年02月07日
先程、某Skypeチャットで「●●のプログラム言語では○○を学んだ」という話が出てきたので、自分のプログラミング史を整理する意味も含め、今までに使ってきたプログラム言語と、それによって何が学べたかを書いてみた。
ごくわずかしか触っていない言語は省略。時期は適当な部分もあります。
- N88BASIC (1997.4)
- はじめてのプログラミング
- C (1997.10ごろ)
- 挫折
- VisualBasic (1998.5)
- 当時はVB5(のちにVB6, VB.NETも利用)
- 初めてまともに配列、構造化プログラミングに触れる
- ActiveBasic (2003.9ごろ)
- 元々は、N88BASICのプログラムが動くWindows上の環境を探していた
- N88BASICとの互換性をある程度保ちつつ、Windowsプログラミングにも対応しているこの環境を発見
- 初めてWin32APIに触れる
- Ruby (2003.10)
- 講義で使った
- 当時はVB5を使った以上の使い方ができなかった
- C (2回目の邂逅, 2003.10)
- 講義で使った
- VisualBasicの経験が生きた(主に構造化プログラミングについて)
- 文字列処理、ポインタは頑張って覚えた
- Perl (2003.11ごろ)
- WebサーバのCGI向けに勉強した
- Rubyの経験が少し生きた
- LLの便利さを知った
- PHP (2004.2ごろ)
- Webサイト構築でいろいろと楽できるようになった
- Java (2004.6ごろ)
- 講義で使った
- 初めてまともにOOPに触れた
- JavaScript (2004.10ごろ?)
- ブラウザでちょっとしたゲームを作りたかった
- 当時はDOM操作はIE向けしか学んでいなかった
- C++ (2005.10ごろ?)
- OOPを必要としかつ速度の求められるプログラムを書く場合、Javaよりも手軽に使えるのが気に入った
- Ruby (2回目の邂逅, 2006.4ごろ)
- 研究室の先輩主催のゼミで勘所を把握
- 無名関数楽しい
- 常用するほどまで気に入った
- Python (2009.5)
- Python札幌発足を機に勉強開始
- その後、GAEのためにちまちま触るように
- C# (2010.3ごろ?)
- VB.NETから試しに鞍替え → タイプ量が少なく、かつ簡潔に書けるため、VB.NETに代わって使うことに
太字が自分にとっての大きなターニングポイント。こうして並べてみると、自分は14年の間に、プログラミングについて少しずつ新しい概念を覚えて進んできたのだな、というのが感じられた。
※過去の関連エントリ:Maraigue風。:過去に触ったプログラミング言語 (2009.5.13)
2009年10月18日
札幌Java勉強会 #15 に参加した。
今回は午前がバージョン管理システム(主にSubversion・Mercurial)、午後が定例のEffective Java読書会。
今回は、今まで自分が疑問に思っていたことがいくつも解決したので、メモを兼ねて書いておく。
(1) Subversionなどのレポジトリによくある、トップのディレクトリ直下にある3つのディレクトリ「trunk」「branches」「tags」
Subversionはちまちま使う程度で、まともに多人数のプロジェクトなどに参加したことはなかったため、何となく「こうするものなのかな」としか思ってなかった。
今回の渡辺さん(札幌Java主宰)の説明で非常に納得。
私が改めて書くまでもないので、自分のメモとしてリンクを一つ貼っておく。
SubversionとTracでファイル管理の“迷宮”から脱出 (3/4) - @IT
(2) 分散型バージョン管理システムを使う感覚
分散型バージョン管理システムとしてgitの存在は知っていたが、どういう感覚で利用されるのかまでは理解していなかった。今回はMercurialで説明が行われたのだが、実際に使うにあたってどういう感覚で使えばよいのかが分かり、自分で使ってみたくなった。
渡辺さんによると、「Windows上ではgitの良いクライアントがない」とのことだったので、まずはMercurialから取り掛かろうか。
(3) クラスにおいて、パブリックなメンバ変数を定義せずにアクセサを利用すべき理由
私はJava以外の言語では、C言語の構造体の感覚で「パブリックなメンバ変数」をよく使っているのだが、Javaのコードを見てると、ちょっとしたコードでも、パブリックなメンバ変数を定義せずにアクセサを利用しているものが大多数だった。
何でなのかな、単なる流儀なのかな、と前々から思っていたのだが、「Effective Java」によると、「後で、互換性を保ったまま仕様を変更することが出来なくなる」という理由が述べられていた。
例えば、一度パブリックなメンバ変数として
非常に勉強になりました。ありがとうございます。
今回は午前がバージョン管理システム(主にSubversion・Mercurial)、午後が定例のEffective Java読書会。
今回は、今まで自分が疑問に思っていたことがいくつも解決したので、メモを兼ねて書いておく。
(1) Subversionなどのレポジトリによくある、トップのディレクトリ直下にある3つのディレクトリ「trunk」「branches」「tags」
Subversionはちまちま使う程度で、まともに多人数のプロジェクトなどに参加したことはなかったため、何となく「こうするものなのかな」としか思ってなかった。
今回の渡辺さん(札幌Java主宰)の説明で非常に納得。
私が改めて書くまでもないので、自分のメモとしてリンクを一つ貼っておく。
SubversionとTracでファイル管理の“迷宮”から脱出 (3/4) - @IT
(2) 分散型バージョン管理システムを使う感覚
分散型バージョン管理システムとしてgitの存在は知っていたが、どういう感覚で利用されるのかまでは理解していなかった。今回はMercurialで説明が行われたのだが、実際に使うにあたってどういう感覚で使えばよいのかが分かり、自分で使ってみたくなった。
渡辺さんによると、「Windows上ではgitの良いクライアントがない」とのことだったので、まずはMercurialから取り掛かろうか。
(3) クラスにおいて、パブリックなメンバ変数を定義せずにアクセサを利用すべき理由
私はJava以外の言語では、C言語の構造体の感覚で「パブリックなメンバ変数」をよく使っているのだが、Javaのコードを見てると、ちょっとしたコードでも、パブリックなメンバ変数を定義せずにアクセサを利用しているものが大多数だった。
何でなのかな、単なる流儀なのかな、と前々から思っていたのだが、「Effective Java」によると、「後で、互換性を保ったまま仕様を変更することが出来なくなる」という理由が述べられていた。
例えば、一度パブリックなメンバ変数として
class Hoge{ public int x; } のように定義してしまうと、以後Hogeに、例えば「xが変更されるたび、何らかの処理を行う」というような変更を(互換性を保ったまま)加えることが出来なくなってしまう。これは確かに納得。非常に勉強になりました。ありがとうございます。
2009年05月13日
id:tek_koc氏のエントリ経由で知る。
自分はこんなところか。まだあるかも。●は使ってみた/一時的に使っていたけど放置状態の言語。
- BASIC系
- N88BASIC
- VisualBasic(5.0, 6.0, .NET, Officeマクロ, ●VBS)
- ActiveBasic(3.*, 4.*)
- 他にも1つか2ついじった気がする
- C
- C++
- ●C#
- Perl(4, 5)
- Ruby(1.8, 1.9)
- ●Python(2.*)
- ●Java
- PHP
- JavaScript
- ●HSP(バージョンいくつだっけ…)
- ●Pascal
- ●Delphi
- ●Adobe Flex
- シェルスクリプト
- BibTeXスタイル定義(.bst)
ちなみに「BibTeXスタイル定義」は、スタック型のプログラム言語で書かれている。内容をちょっと直すだけでも非常に苦労した。
マークアップ言語とかを含めてもいいなら
- HTML
- TeX(LaTeX)
- CSS
ネタに走ってもいいなら
【2011.2.7追記】
関連エントリ:Maraigue風。:自分が過去に使ってきたプログラム言語と、それによって学べたもの