一般

〜使い

一覧表が見つからなかったのでまとめてみた。ご指摘大歓迎。 Python Pythonista Ruby Rubyist Perl Perl Monger PHP PHPer (ぺちぱー) Scheme Schemer Lisp Lisper ML MLer Java Javanese C# C#er (C Sharper) C C屋、Cげんがー C++ C++屋、Cぷらぷらー Delp…

プログラミングテクニックのまとめ

とりあえず思いついたもののまとめ。 まずは、ベーシックなものから。 変数のスコープをなるべく狭くしろ 他はグローバル変数を使うなとか、モジュール化と界面を意識せよなど。とにかくスコープは重要かつ意外と奥が深い。スコープに関係する機能は、モジュ…

富豪的プログラミングとデータ構造

LLなPythonを使うようになって気づいたのだが、自分が仕事で作成する処理の大部分のデータ構造はユーザ定義のクラスを作成する必要なく、組み込みクラスの組み合わせ済んでしまう。最近仕事でJavaを使うようになって複数のデータをある関数の出力として返し…

OMeta

k.inabaさんの日記を見てOMetaというものを知った。かなり面白そう。PyMetaというものもあるらしい。情報がもっと増えれば勉強しやすいが、誰かまとめてくれないかな。 http://www.cs.ucla.edu/~awarth/ometa/dls07-slides.pdf The idea prototype ... shoul…

名前と値

以前「名札モデルと箱モデル」という考え方を知ったが、名前と値で考えてみると要は、1つの名前に対して複数の値を付け替えることが可能かどうかがポイントである。逆に1つの値に複数の名前を付けられるというのは両者とも同じ。 Pythonで値に関して考えてみ…

関数型言語の特徴

何が入っていれば関数型言語と言えるのか気になっている。Wikipediaによれば、関数型言語は以下のもの。 ラムダ計算の概念をプログラミング言語として体現したものである。すべての計算は関数の評価によって行われる。 HaskellやOCamlでは、本質的に引数が1…

式と文

最近、HaskellとGaucheで関数型言語を勉強している。もう少し理解が進んできたら関数型言語の概念を一般化してまとめてみたいと思っているが、式と文に関して気がついたことを書いておく。書籍『プログラミングGauche』に載っているコラム「すべて式である」…

近況とか

最近、ガウディ本をスローペースで読み進めている。抽象度が高くて難しい。Gauche本とかHaskell本とか具体的な本を読んで色々実験して理解した方がプログラミングテクニックが身に付くような気がしてきた。ガウディ本は読むのに時間かかり過ぎるし。結局、SI…

型の利用法

lethevert is a programmer: 変数の型は2つの異なるレベルの概念が混在しているような気がする (http://d.hatena.ne.jp/lethevert/20051224/p1) 以下、自分用に整理してみる。 1. 計算機の物理的な演算機能やデータ形式を、コード上で明示する 2. 抽象的な…

状態を変えないで状態を表現する

状態を変えないとは、a = a + 1 のような処理を禁止する。つまり、変数が初期化のみ可能で、再代入できないようなことを言う。関数型言語では、この性質を「純粋」であるという。 Pythonで、以下のforループはインデックス i の値が状態を変えながら、i*2 を…

静的、動的、型安全

メモ。かなり分かりやすい。 ohai日誌: 「型」に関して (http://www.kmc.gr.jp/~ohai/diary/?date=20050517#p02)

ローカル変数の具象、抽象

航海日誌: 静的型付け言語で,型は最後にダウンキャストしろ (http://cappuccino.jp/keisuken/logbook/20080304.html#p01) ここをエントリポイントとして、keisuke_nさん、kwatchさん、odzさん、lethevertさんが色々議論している模様。勉強になる。大雑把に…

箱モデルと名札モデル

d.y.d: auto (http://www.kmonos.net/wlog/83.html#_1547080311) 変数に「オブジェクトに名前を付けるもの」と「式に名前を付けるもの」に関して、 前者の感覚で使う変数もあれば後者の感覚で使う変数もあって、みんな、基本的には前者なら型を書くし後者な…

オブジェクト指向プログラミングの設計

昨日の日記の通り、「捨てられる」とか「局所化する」という発想は重要。これはモジュール化につながる。よく多重度の設計を間違えたとか、継承より集約を使用した方が良かったとか設計ではそういうことを考えがちだが、捨てられる部分であれば大きな問題に…

ローカルクラスという考え方

先日、手続き型プログラミングをしていて手続き型言語ではうまく組めないところがオブジェクト指向言語では、すっきり組めることに気がついた。 それは、関数の定義内の途中経過で出てくる変数の値を関数の呼び出し側でも使いたい場合に問題が発生する。通常…

Peter Norvigの記事

メモ。明日読む。 プログラミングを独習するには10年かかる (http://www.yamdas.org/column/technique/21-daysj.html) 追記(2008/3/3):良いところを抜粋。 Alan Perlis はかつて、「プログラミングに対する考え方に影響を与えないような言語は知る価値はない…

次世代言語Scala

今まではC言語から新しい言語を作るのが主流だったが、今の時代VM上で動く言語から新しい言語を作るのが主流になりつつある。その中でもScalaは抜きん出ていると思う。yieldを使うと外部イテレータでなく内部イテレータになることや"1 + 2"が"1.+(2)"の意味…

メタプログラミング

わなDの"Template in D"項の最後の締めで、 つまり、「文字列処理する関数を普通のD言語で書く」「コンパイル時にはガンガン文字列処理」「最後にmixinでコード生成」というスタイルのメタプログラミング。 とあったがD言語が活躍できる開発ってどういうのが…

プログラミング言語の難しさ

最近ふと気がついた。Pythonは言語仕様がシンプルである。しかし決して複雑なことができない訳ではない。Pythonは1つの言語仕様で複数の機能を実現している。だから言語仕様がシンプルなのに色々なことができる。逆に、新しい機能を増やすときに、その機能の…

Haskell Hackathon

巷ではHaskell Hackathonが開催されるようなのでSchemeもどきを勉強しようと思った。Haskellもどきも時間の関係上後で勉強するつもり。 どう書く?: Schemeもどきの実装 (http://ja.doukaku.org/129/)

バージョン管理システム

今までマイクロソフトのVisual SourceSafe(以下VSS)を使用していたが、Subversionに少しずつ移行しようとしている。大きな理由はSubversionはフリーだからである。 使用してみて気づいたのはSubversionはファイル単位で同期がとれないということだった。フォ…

テキストエディタ

私はWindows派なので基本的にはCUIよりGUI大好き人間である。現在テキストエディタとして先輩からお勧めのTextPadというものを愛用している。 Pythonを使用する場合はシンタックスハイライトが標準で付いていないので、その部分のみ設定ファイルをダウンロー…

YAMLとJSON

Wikipediaからの引用。 YAML(ヤムル)とは、構造化データやオブジェクトを文字列にシリアライズ(直列化)するためのデータ形式の一種。 JSON(ジェイソン、JavaScript Object Notation)は、JavaScriptにおけるオブジェクトの表記法をベースとした軽量なデ…

Tenjin

Rubyist Magazine 22号の「RubyKaigi2007: C より速い Ruby プログラム」という記事を見ていてTenjinというテンプレートエンジン?を初めて知った。LL Spiritでも発表していたみたいだが全く意識していなかった。ベンチマーク結果を見るとかなりすごい。とい…

64bit OSの時代

先日Pythonの仕事のヘルプをしていたらMemory Errorという例外が発生した。その例外は初めて見たが、__slots__とgc.collect()を付け足すことで何とか回避できた。Pythonは大規模データを扱う場合、静的言語よりもパフォーマンスとメモリの面で不利になる可能…

バベル案内

トラックバックをたどっていって面白いものを見つけた。たぶん有名な記事だと思う。気になったところをピックアップ。 バベル案内 (http://www.aoky.net/articles/steve_yegge/tour_de_babel.htm) 正直なところ、Schemeは最初に学ぶ言語としてはひどいものだ…

高階プログラミング

高階プログラミングの例が書かれていた。 sshi.Continual: 50年の歴史に秘められた高階プログラミングのヒミツ (http://d.hatena.ne.jp/sshi/20051005/p1) XMLHTTPRequestオブジェクトの作り方はブラウザによって違うので、その差を吸収するには、XMLHTTPReq…

黒魔術

Django勉強会に参加した人のブログで公開されていた資料を見ていて黒魔術という用語を初めて知った。 summary.pdf (http://python.charmr.org/static/document/2007/10/14/summary.pdf) 黒魔術というのは、どこの記述が動作に影響を与えているかがわからな…

Office Open XMLフォーマット

Office 2007からWord、Excel、PowerPointでXMLフォーマットがデフォルトのフォーマットになるらしい。もちろん、以前からの独自のバイナリ形式も互換性を持つが、XMLはテキスト形式なのでかなり扱いやすくなると思われる。今まではPythonで非標準のwin32com…

Ruby vs Java

Javaについて思うこと (http://d.hatena.ne.jp/ku-ma-me/20070610/p2#seemore) id:ku-ma-meさんの記事はすごい納得できた。特に、「Java は調べることが多すぎてコードを書くことに集中させてくれないので楽しくないです。」という点はすごい理解できる。 先…