2017/7/9

clang簡介

昨天在練習c語言的時候,無聊的想查一下電腦的gcc版本是什麼,
使用的是 gcc --version 這個指令。
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.1.0 (clang-802.0.38)
Target: x86_64-apple-darwin16.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
一查才知道原來電腦裡裝的是另一個代替gcc的編譯器---clang

[ 關於clang ]
是一個C、C++、Objective-C和Objective-C++程式語言的編譯器前端。它採用了底層虛擬機(LLVM)作為其後端。它的目標是提供一個GNU編譯器套裝(GCC)的替代品。作者是克里斯·拉特納,在蘋果公司的贊助支援下進行開發,而原始碼授權是使用類BSD的伊利諾伊大學厄巴納-香檳分校開源碼許可。
Clang專案包括Clang前端和Clang靜態分析器等。

這個軟體專案在2005年由蘋果電腦發起,是LLVM編譯器工具集的前端(front-end),目的是輸出代碼對應的抽象語法樹(Abstract Syntax Tree, AST),並將程式碼編譯成LLVM Bitcode。接著在後端(back-end)使用LLVM編譯成平台相關的機器語言 。Clang支援C、C++、Objective C。
在Clang語言中,使用Stmt來代表statement。Clang程式碼的單元(unit)皆為語句(statement),語法樹的節點(node)類型就是Stmt。另外Clang的運算式(Expression)也是語句的一種,Clang使用Expr來代表Expression,Expr本身繼承自Stmt。節點之下有子節點列表(sub-node-list)。
Clang本身效能優異,其生成的AST所耗用掉的記憶體僅僅是GCC的20%左右。FreeBSD 10將Clang/LLVM作為預設編譯器。

[ 效能 ]
測試證明Clang編譯Objective-C代碼時速度為GCC的3倍,還能針對使用者發生的編譯錯誤準確地給出建議


來源 : wikipedia

-----------------------
註:
在stackexchange上面查到可以找出電腦gcc的指令(但不知是取自哪)
gcc -dumpversion | cut -f1,2,3 -d. 


我的是4.2.1 (改-fl後面的1,2,3可選擇顯示版本小數點數 如 -fl1 輸出為4)

2017/7/2

從「處理球」的觀點來談籃球能力

摘錄自 http://tw.basketball.biji.co/index.php?q=news&act=info&id=668&subtitle

有一些跑不快、跳不高甚至投籃不準的人,上場時間比那些又會跑又會飛的體能怪物來的多。照道理說這些人是無法存在那充滿碰撞與速度的籃球場上的,只是好像他們能夠憑藉著一些「什麼」而讓他們被需要,甚至不會在關鍵與不能出錯的倒數階段被教練換下來。關於這個「什麼」到底是什麼?「處理球」這三個字或許就是很好的一個答案。


籃球是一個比賽得分的運動,其次是數據,但是在這些光鮮亮麗的數字背後,處理球往往是被忽略的。
處理球指的是當一個籃球選手在籃球比賽時,接球前、接球時、接球後、甚至是在接到球的過程中的每一個決定與反應。此決定與反應的合理性與時間長短決定了這位選手處理球能力的好壞。
處裡球無法用現有的籃球統計數字來表示,就連我們認為是無私象徵的助攻數據,也不能說明處理球的能力。