4.2 KiB
title | author | date | url | wordtwit_post_info | categories | ||
---|---|---|---|---|---|---|---|
Lightweight Language Planet | kazu634 | 2011-08-20 | /2011/08/20/lightweight-language-planet/ |
|
|
Lightweight Language Planetに参加してきました。メタプログラミングについてのセッション目当てで参加してきました。
IPv6 Hackathon
IPv6を使用している人が結構いることに驚きを感じる。
やっぱりこれからはIPv6でしょう。
IPv6対応のウェブサイトにつなぐと、色々と楽しいうごきをするサイトがある。
メタプログラミングの光と闇
-
出演者
- Perl: @lestrrat
- Python: @kdmsnr
- Ruby: @moriyoshi
- Haskell: @kazu_yamamoto
メタプログラミングとは
プログラムを作るプログラム
広義のメタプログラミング
- 機械語の動的生成
- 魔法のマクロ
- etc
狭義のメタプログラミング
- 開発効率を重視
- DSL
- DRY
- Agile
- テスト
確立された開発手法、スタイル
Perlのメタプログラミング
evalが使えます!
Perlでは名前空間に関数、変数をくっつけることは自由
Devel::Declareを使用すると、Perlのパーサにフックすることができる!
Rubyのメタプログラミング
Rubyのメタプログラミング: 内部DSLを書くこと
新しい語彙の増加→新しい視点
「名前重要」文化
Pythonのメタプログラミング
メタプログラミングの定義は、みんなの心のなかにある!
- exec, eval
- メタクラス (a type that generates a type)
- デコレータ (関数を生成する関数を呼び出す)
- 各種メタ情報
- compile() / astモジュール
Pythonは言語内DSLが苦手
演算子オーバロードが可能
Pythonから別の言語を生成する
Haskellのメタプログラミング
なんかすごかった!
ディスカッション
Javascriptプログラマのための全方位的完全武装ガイド (ma.la)
自己紹介
ma.laさんは UI エンジニアという立ち位置のはずが、専門分野に特化しておらず何でも屋
何でも屋vs専門家: 異なるレイヤーの知識が活かせる・器用貧乏になりがち
良いUIは競争力になり、伝搬力がある
UIが競争力がなくなることが最終的な目標
フロントエンドエンジニア?良いデザインのためには複数言語の知識が必要
あらゆるレイヤにボトルネックの存在がある!
Javascriptの進め
- 大抵の環境で最初から入っている
- ネイティブアプリでもよく使われている
- できることが増えている
- 必修言語としてのJavascript
サーバが信頼できない前提でのAPI設計
“if we are evil” rather than “Don’t be evil”
驚き最小の原則に反する