Your SlideShare is downloading. ×
0
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
ソースコードリーディングの基礎
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

ソースコードリーディングの基礎

1,245

Published on

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,245
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  1. Rを題材としたソースコードリーディングの基礎 @finalfusion
  2. はじめに• コードリーディングのための一般的な話です• Cの読み書きがある程度できることが前提
  3. R 2.14.2
  4. ディレクトリ(1)• doc• etc• m4• po• share• src• tests• tools
  5. ディレクトリ(1)• doc• etc• m4• po• share• src• tests• tools
  6. ディレクトリ(2)• appl• extra• gnuwin32• include• library• main• modules• nmath• scripts• unix
  7. ディレクトリ(2)• appl• extra• gnuwin32• include• library• main• modules• nmath• scripts• unix
  8. ディレクトリ(3)agrep.c alloca.c apply.c arithmetic.c arithmetic.h array.cattrib.c base.c basedecl.h bind.c builtin.c CConverters.ccharacter.c coerce.c colors.c CommandLineArgs.c complex.cconnections.c context.c cov.c cum.c datetime.cdcf.c debug.c deparse.c deriv.c devices.c dotcode.c dounzip.c dstruct.c duplicate.c engine.c envir.c errors.ceval.c format.c fourier.c gevents.c gram-ex.c gram.cgram.y gramLatex.c gramLatex.y gramRd.c gramRd.ygraphics.c grep.c gzio.h identical.c inlined.c inspect.c internet.c iosupport.c lapack.c list.c localecharset.c logic.c main.cMakefile.in Makefile.win mapply.c match.cmemory.c mkdtemp.c model.c names.cobjects.c optim.c optimize.c options.cpar-common.c par.c paste.c platform.cplot.c plot3d.c plotmath.c print.cprintarray.c printutils.c printvector.c qsort-body.cqsort.c random.c raw.c RBufferUtils.hRdynload.c registration.c relop.c Renviron.c
  9. Rのソースには どんなファイルがあるかGet-ChildItem -Rerurse .|ForEach-Object {$_.extension}|Where-Object {$_.length -gt 0}|Group-Object|Sort-Object -Property count,name|ForEach-Object {[string]::join(",",($_.count,$_.name))}
  10. 10,.texi 45,.f11,.html 52,.save11,.tcl 55,.win14,.m4 87,.afm15,.gz 98,.in15,.tgz 176,.mo18,.enc 202,.po21,.Rnw 249,.h23,.pot 611,.c25,.pdf 803,.R28,.gmo 1360,.Rd
  11. 10,.texi 45,.f11,.html 52,.save11,.tcl 55,.win14,.m4 87,.afm15,.gz 98,.in15,.tgz 176,.mo18,.enc 202,.po21,.Rnw 249,.h23,.pot 611,.c25,.pdf 803,.R28,.gmo 1360,.Rd
  12. まず注目しておく拡張子• .c• .h• .y• .in• .f• .po
  13. チェックすべきファイル• ChangeLog• NEWS• COPYING• README• INSTALL
  14. 重要っぽいファイル• Rinternals.h• Defn.h• builtin.c• eval.c• gram.y• names.c• relop.c• util.c
  15. 重要っぽいファイル• Rinternals.h• Defn.h• builtin.c• eval.c• gram.y• names.c• relop.c• util.c
  16. gram.y
  17. 言語の構文を定義している
  18. 構文を定義
  19. yacc
  20. yacc
  21. yaccたぶんこのファイルをいじる羽目になることは ない(でも処理系の動作を把握するには重要)
  22. ファイル• Rinternals.h• Defn.h• builtin.c• eval.c• gram.y• names.c• relop.c• util.c
  23. names.c
  24. names.c関数テーブル
  25. こんなの
  26. テーブルエントリの内容• Printname• C-entry• offset• Eval• Arity• pp-kind• Precedence• rightassoc
  27. テーブルエントリの内容• Printname• C-entry• offset• Eval• Arity• pp-kind• Precedence• rightassoc
  28. プリミティブ 関数 演算子 の処理の本体はたいてい do_xxxx という関数
  29. あるプリミティブ(関数)がどのようにCで書かれているか を知りたければ do_(目当ての名前) を探してみよう
  30. ファイル• Rinternals.h• Defn.h• builtin.c• eval.c• gram.y• names.c• relop.c• util.c
  31. 組み込みプリミティブ の 大半
  32. ファイル• Rinternals.h• Defn.h• builtin.c• eval.c• gram.y• names.c• relop.c• util.c
  33. 関係演算子
  34. ファイル• Rinternals.h• Defn.h• builtin.c• eval.c• gram.y• names.c• relop.c• util.c
  35. いろいろ
  36. ファイル• Rinternals.h• Defn.h• builtin.c• eval.c• gram.y• names.c• relop.c• util.c
  37. 多分Rの内部構造を理解する上での肝
  38. ツールを使おう• ctags/etags• 秀丸やxyzzyのtags機能• GNU Global
  39. 最後にプリプロセッサマクロ には 気をつけろ
  40. 第一部 完

×