寫 Cirru Parser 的緣由, 對照文檔搞了半天, 也是搞定了.
而後回頭來一想, 好多地方搞不明白的, 之後萬一模塊須要維護恐怕還麻煩
因此打算留一點筆記在這裏, 也留一點感想但願有多一點人重視這些東西git
Julia 的模塊也有本身的網站, 作爲新興的語言, 算是了不得了
http://pkg.julialang.org/
託管的方案比較理想化, 使用 GitHub 管理的, 一個倉庫裏邊的列表,
裏邊還會記錄不少模塊的信息, 以及 Jarvis 生成的版本數據等等
https://github.com/JuliaLang/METADATA.jl
完整的文檔能夠看官方的, 詳細過頭了, 另外也有中文的文檔翻譯:
http://julia.readthedocs.org/en/latest/manual/packages/
https://github.com/JuliaCN/julia_zh_cngithub
Julia 管理模塊用的不是命令行, 而是 REPL, 好比 Pkg.install('package')
安裝的模塊都在 ~/.julia/
目錄下, 並且能夠用簡單的語法 pin 版本Pkg
模塊下掛載的方法仍是很強大的, 我在 npm 當中基本的需求也算都有
甚至有個 Pkg.rm('package')
, 實際是移動到 trash/
目錄當中, 還好不是真的刪除.npm
用戶的機器上 ~/.julia
目錄下存在一個 METADATA/
目錄, 對應 GitHub repo
全部的模塊都在這個倉庫裏註冊, 查找其中的地址, 而後從 GitHub 下載
下載的模塊也一直存儲在 ~/.julia/
這個目錄當中, 直接訪問就能看代碼
而註冊一個模塊其實是往 METADATA/
裏寫數據, 而後提交 PR 請求.Pkg.register('package')
就是爲了自動完成這個事情,
只不過 register 反應很慢, 或許是國內網絡的緣由, 我最終仍是手動提交的 PR編程
Julia 這樣的管理方式, 讓我想到的是 Sublime Text 跟 Atom, 他們的模塊就這樣管理的,
因此開發了新的模塊須要到 GitHub 上 fork 他們的倉庫, 而後審覈.
而用 GitHub 託管模塊, 像是 Go 社區作法, 並且 Go 也是有的專門目錄存放模塊
Julia 模塊 PR 比較後會觸發 Jarvis, 運行模塊中的測試, 來檢驗下模塊的質量ruby
另外一個就是模塊引用的問題了, Julia 有三種引用模塊的函數 import using include
具體我也經常弄亂, 中文翻譯的文檔上有個表, 我建議是看這個表
https://github.com/JuliaCN/julia_zh_cn/blob/1d8a792e374c71c47c9202286c...import
跟 using
在功能上彷佛有很多重合的地方, 不明白爲何這樣設計
整體感受有點複雜, 但也不打容易出錯, 我第一次寫, 問題也不是很大
模塊的寫法, 用 module
包裹, 用 export
暴露方法, 而後就能夠了, 教程清晰網絡
我最後完成的例子是這樣的, 帶測試源碼結構也簡單
https://github.com/Cirru/CirruParser.jl
我注意到 Julia 的社區很小, 主要也就是郵件列表人挺多的天天有帖子
https://groups.google.com/forum/#!forum/julia-users
其餘的話 Gitter 上也就一兩我的, 很冷清
http://julialang.org/community/
https://gitter.im/JuliaLang/julia
可是從總體設計上算是很棒的了編程語言
加一點, Julia 大概是沒有打包可執行命令的標準方案, 文檔跟社區都沒找到
我應對的辦法就只有說 README 裏寫一段, 手動加軟連接了函數
Gem 編寫雖然有中文 Ruby 社區, 可是整體感受仍是要比 Julia 難一些
首先我引用 Node 模塊, 模塊名 a
, 文件名 ./a
, 很是明確
Julia 當中 import
查找模塊以及當前路徑, 也很容易查找問題
到了 Ruby 真是繞了我半天, 又是 $LOAD_PATH
又是版本更新廢棄用法...
好吧弄明白 $LOAD_PATH
算好點, 硬生生在文件里加上代碼指明引用相對的位置:測試
ruby$LOAD_PATH.unshift("#{File.dirname(__FILE__)}/lib")
另外遇到個問題就是引用模塊提示找不到方法:
https://ruby-china.org/topics/25290
大概只是由於 Ruby 的 module
關鍵字用法跟 Ruby 不一樣致使的
站在個人角度, Ruby 在設計上不含糊的地方真是很多, 有點難受
細節我無法說清楚, 可是我完成的版本是這樣的, 不少奇怪的寫法:
https://github.com/Cirru/parser.rb網站
Ruby 發佈 Gem 的流程卻是很是乾脆, 註冊賬號, build, push, 好了.
附帶一些填寫 gemspec
運行 bundle
在文檔上算比較明確
不過我仍是有點糊塗, gem
bundle
兩套命令究竟什麼緣由
相對有 Node 來講, Ruby 還有 Julia 會自動生成模塊模版, 也挺有意思的
gem 是統一安裝在系統當中的, 這個我沒深刻看了
兩年前我拉過一次列表, 稍微看了下各類不一樣的編程語言打包是怎樣的:
https://github.com/coffee-js/languages/wiki/各類編程語言的模