source: lab.git/Commentary/tsukuba.pm/20120707#2.txt @ 41617a0

Last change on this file since 41617a0 was 7c991ad, checked in by mitty <mitty@…>, 12 years ago

git-svn-id: https://lab.mitty.jp/svn/lab/trunk@155 7d2118f6-f56c-43e7-95a2-4bb3031d96e7

  • Property mode set to 100644
File size: 11.8 KB
RevLine 
[7c991ad]1@yoshimura_yuu
2
3.pmにも関わらずTeXの話
4スピリチュアルプログラマ
5
6TeXとは example
7    \def\hoge#1
8    ちょっと複雑になるとわからない…
9        急に出てくる「%」はその後ろの改行を無視させる
10        答え: アンダーバー _ を引数個出力する
11        そのためだけに「これだけ」書く必要がある
12    引数はすべて文字列として与えられる
13    TeXにはループ文がないので、再帰で表現する必要がある
14どうしてこうなった
15    型が少ない
16        文字列
17        マクロ
18        カウンタ
19    配列なんてなかった
20    ループもない
21        悪魔ライブラリを使うか、再帰
22    関数は?
23        ありません
24        マクロの展開順序を考える必要がある
25        スタックオーバーフローこわい
26そこにPerlTeXがあるじゃろ
27    TeXのマクロをPerlで書ける
28    さっきのunderbarマクロが一行で書ける
29使い方
30    TeX Liveで導入
31    \usepackage{perltex}
32    perltexコマンドでコンパイル
33パスカルの三角形をTeXで書く
34    生のTeXで書くと長い…
35しかし…
36    二桁が扱えない
37    数字としてではなく、文字列として格納する(配列が存在しない)ため、10の桁と1の桁を分離できkない
38だれかTeXを吐く言語を書いてください
39    ltxみたいな名前で
40
41白抜き文字のようなものはPerlTeXで出力することは出来ない
42    出来なくはないが、TeXを直接書くのと変わらない
43    複雑な図形を描いたりするのには向いている
44    綺麗にルビを振ったりしたい時などには向いていると思われる
45
46TeXは地の文と、文の構造と、文字などのスタイルがすべて混在した書き方になっているため、
47こんなことになってしまったのでは
48
49カウンタを用いて演算を行っているようだが、どれくらいの演算が可能なのか
50    足し算とかけ算が出来る
51    \advance <- 足し算演算
52演算子を自分で定義して、演算の種類を増やすのか
53    そう
54    \expandefterを使って展開順序を制御したりする
55        関数ではなく、マクロであることが原因だと思われる
56        再帰を行う際に、定義文の中でマクロ名が出てくることになるが、\expandafterがないと
57        スタックオーバーフローしてしまう
58標準出力はあるのか
59    一応、それっぽいのはある
60    LaTeXの警告文を使うという手
61        それを使ってゲームを実装している頭のおかしい人もいるようだ
62GoogleCodeJamでTeXで一問解いている人がいた
63
64「マクロツイーター」でググるとよい
65    非常に参考になった
66    LaTeXでオブジェクト指向 <-- !?
67
68
69
70
71
72
73Perl6で遊ぼう
74@VienosNotes
75
76Perl6とは?
77    Perl5との違い
78    Perl6のおもしろ機能
79
80Perl5との後方互換性を切り捨てた新しい言語
81    5を置き換えるものではない
82
83(当時)モダンなプログラミング技法を取り入れる
84    仕様ベースの開発
85        はじめに仕様ありき
86        仕様を元に実装を進める
87    ラリーウォールは現在は、少なくとも実装からは離れている
88
89コンテキストはなくなり、シジルはわかりやすくなった
90    配列の要素にアクセスするときも@をつける
91メソッド呼び出しは-> から . へ
92    「タイプ量50%ダウンやったー」
93すべてがオブジェクト
94    特殊変数も再編された
95標準ライブラリの拡充
96    自分でモジュールを入れなくてもある程度書ける
97
98提唱されたのは2000
99    10年以上たったのに完成していない
100    オワコン扱い
101
102おもしろ機能
103型制約
104    変数や関数の引数に型制約を書くことが出来る
105    引数の型によってディスパッチ出来る
106    静的片付けではなく、実行時例外になる
107        catchで拾うことも出来る
108    型チェックが入るので、動作としては遅くなる
109
110multiによってメソッド定義をオーバーロードできる
111    多重定義
112
113関数リテラル
114    今まではmapを多用していた
115Pointy Block
116    ラムダ式のような見た目で書ける
117    (1..10).map: -> Int ……
118Whatever Star
119    say (1..10).map: * ** 2;
120    Perl5でいうところの$_が*に暗黙的に代入される
121    記述量は少なくなるが、見た目が悪魔的で戸惑う
122Placeholder Variables
123    say (1..10).map: { $^a ** 2};
124    $^で始まる変数に、引数が順に格納されていく
125Junction
126    if ($i == 0 || $i == 1) { ... }
127    -> if ($i == 0 | 1 ) { ... } のような書ける
128    「0か1である」というオブジェクト
129    正規表現で「/pattern1/」か「/pattern2」にマッチする、というのがスマートに書ける
130    if ($s ~~ /pattern1/ | /pattern2/)
131    処理系が対応していれば並列処理される
132Grammar
133    とても強い正規表現
134    パーサを簡単に書けるようになった
135    正規表現に名前をつける(token)ことが出来る
136    要するに構造を持った名前付き正規表現
137        $1とかで悩む必要がなくなった
138    部分文字列を取り出すのが簡単に
139
140なぜオワコンになってしまったのか
141    開発が遅い
142    動作が遅い
143        以前はPerl6 -Vで4秒くらいかかっていた
144    仕様が固まっていない
145        仕様書が毎日リポジトリにコミットされている
146    そもそも(日本には)コミュニティが「無い」
147
148コミュニティ作りましょう
149    実はPerl6勉強会を去年やりました
150    今年もやりたい
151    二学期からは月1くらいでゆるゆるやりたい
152
153Perl6のおもしろいところ
154    日に日に動作が速くなっていくところとか
155    まさに時代の最先端!
156
157
158
159
160JSX language notes
161@gfx
162
163ソフトウェアの開発環境を良くすることに興味がある
164
165JSXとは
166    JavaScriptの代替としてスタートした
167    JavaScriptにコンパイルして、動作させる
168        JavaScriptが動く環境であれば動く
169    JavaScriptより速く、安全で生産性が高い
170
171なぜ作ったのか
172    JavaScript自体は悪くない言語だが、開発規模が大きくなってくると、ちょっと非力
173    動的型付けの言語の宿命であるが、実行時にエラーとなる
174    バリディエータとして、パラメータを動的にチェックし続ける必要があったり……
175    prototypeベースは、単純なオブジェクト指向ともまた異なっている
176   
177ECMA-262標準準拠
178静的型付け
179クラス方式
180
181現状
182    2012/05/31に最初のリリース
183    基本的な文法は定まった
184    構文にはまだ少し改善の余地がありそう
185    jsdo.itがサポート
186        JavaScriptアプリケーションを公開する場所
187    周辺ツールがまだ足りていない
188        jsxdoc, コード補完
189    テンプレート周りが弱い
190    JavaScriptのモジュールをロードすることが出来ない
191
192Demo
193    jsdo.it/tag/JSX
194
195コード例
196    class定義が存在する
197    mainから実行される
198    構文自体はJavaScriptとほぼ同じ
199
200デバッガ
201    JavaScriptにコンパイルされてしまうので、実行時エラーは、オリジナルのJSXのコードと無関係なエラーとして見えてしまう
202    source-map というツールで、コンパイルされたJavaScriptのコードとJSXのコードの対応付けをみることが出来る
203    JSXのコードにBreakPointをセットしたり、ステップ実行も可能
204    絶賛実装中
205
206JSXのコンパイルはJavaScriptで書かれている
207
208プロファイラ
209    プロファイラを有効にしてコンパイルすることで、実行時間を測定するコードが埋め込まれて、
210    メソッドごとにかかった時間や実行された回数などがみられる
211    スマートフォンでのプロファイラがまだあまり充実されていない
212
213
214コード補完
215    vimとemacsでサポートしている
216    JavaScriptの場合は、実行してみないとどのオブジェクトなのか確定しないが、
217    JSXは静的型付けなので、プロパティなども補完できる
218
219静的型付け言語の特徴として、周辺ツールの拡充がしやすいことがあるので、どんどん作っていきたい
220
221型について
222    JavaScriptはある変数にどんな型でも入れられる
223    ある変数を定義したときに、Nullが入れられるかどうかというのは言語によって異なる
224    Primitive Nullは入らない、 Object Nullが入る
225    Variant Type
226        JavaScriptの変数に直接マップされる
227        静的型付けのルールを破ることが可能
228        キャストが必要
229        型安全を壊してしまうので、あまり使わない方が良い
230    Parameterized Type
231        テンプレート
232        generic programming
233        今のところクラスのみ
234        関数でも使えるようにしたい
235
236Lambda
237    function (a : int) : int { return a + 1; }
238    (a : int) -> int { return a + 1; }
239    (a) -> a + 1
240   
241    型推論が可能なので出来る
242
243JSXの導入
244    perl 5.10以降、nodeの出来るだけ最新
245    make setup
246    make test
247   
248web.jsx
249    ブラウザの機能をJSXから呼ぶことが出来る
250    w3cの仕様書をパースして、宣言を作ることが出来る
251    Perl 5.10の正規表現のネームドキャプチャを用いてパースしている
252    正規表現のxオプションが便利
253        JavaScriptでは出来ない
254
255JSXを開発しているときに「これは詰んだ」というのはあったか
256    ウェブアプリショーンはイベントドリブンであることが多い
257    イベントドリブンのアプリケーションのデバッグやエラーハンドリングが大変なので、
258    JSXにそれらを扱える機能を追加したい
259    パフォーマンスを落とすことなく導入する方法について、結論が出ていない
260パフォーマンスの維持にはどうしているか
261    JavaScriptの悪魔的手法も使ってはいる
262    JavaScriptのチューニングをするにしても、Optimizerが勝手にやるので、ユーザが意識する必要はない
263    静的型付けによって、Optimizerを強力にすることが出来る
264
265Optimizerを最大にすると、手でチューニングされたJavaScriptよりも10%くらいは速くしたい
266
267業務で使えるレベルにはまだ達していない
268    ライブラリが圧倒的に足りない
269
270jQueryなどが無いとブラウザ互換が困るのではないか
271    そもそも、複雑なユーザインターフェースなどをjQueryなしに頑張るのは無謀
272    古いIEはサポートしないというのを維持すれば、ブラウザ互換はまだ楽かも
273    JSXのメインターゲットはスマートフォンなので……
274    UIを作るフレームワークを9月くらいまでには作りたい
275
276JSXがDeNAのプロダクトで使われるようになるのはいつくらいか
277    早くても今年11月くらいでは
278    ライブラリが無いのはつらい
279
280
281
282
283
284
285なぜ今Perl6を使うのか
286@uasi
287
288
289今からPerl6を布教します
290
291使わなくてもやっていけるよ派
292    C++とかScalaとかあるよ
293    ブラウザ上で動かない言語に意味はないよ
294
295Perl6の特徴
296    Perl5のしがらみからの脱却
297    複数の実装
298
299動かない言語に意味はない!
300
301「強力な正規表現」
302
303そもそもPerlはテキスト処理のために生まれた
304Perl6をテキスト処理に使ってあげよう
305
306Perl6の正規表現
307    構造化したテキストを表現できる
308    リファクタリングに使えるのではないか
309
310Objective-Cのインスタンス変数
311    ヘッダファイルから取り除く
312
313正規表現のリファレンスは?
314    無い
315    気合いで頑張ろう!
316
317
318Perl6のGrammarと正規表現の関係は?
319    たくさんの正規表現を束ねて一つのクラスのように使えるものがGrammar
320
321Perl6では正規表現のバックトラックはどうなっているのか(Perl5では3万回くらいバックトラックすると死ぬ)
322    バックトラックを使う使わないを選択できる
323    どれくらいバックトラック出来るかは正規表現エンジンの実装によるのではないか
324
Note: See TracBrowser for help on using the repository browser.