[JASS][轉貼]VJass的struct的分析(實現and優缺點)

各類的進階專題研究、WE Bug討論等。

版主: crassorz, tv580025

[JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章tv580025 » 2009年10月15日 7:35 pm

原文:http://bbs.islga.org/read.php?tid=18895
作者:hke

來GA還沒發過啥有價值的東東 ..
要去大學了
以後可能沒啥空來了(至少1個月吧)
其實我以前也很喜歡用那個東西
去工具區翻翻Jasshelper我H化了幾個版本就知道了

只是後來發現
很多時候直接用陣列+自己的演算法更方便
不要誤解啊
我沒說struct不好
只是有時候很多陣列演算法比這個方便多
可以直接用陣列的時候沒必要用struct

分析下實現吧
只是分析struct的最基本功能 其他的自己想想就知道怎麼實現的了

我們定義個struct
代碼: 選擇全部
struct hkeTri
    trigger tri
    triggercondition cond
endstruct


看看生成了什麼

其實是一個類似鏈表的系統
我們知道struct傳遞是用integer
其實只是傳遞一個索引
然後調用相應陣列

全域變數嘛
代碼: 選擇全部
constant integer si__hkeTri=1//幹啥的捏...
integer si__hkeTri_F=0//最後一次的清除東東
integer si__hkeTri_I=0//索引
integer array si__hkeTri_V//儲存指標
//下面兩個就不用說了吧
//我們定義的東東
//嗯 看到了吧 其實是陣列 這也是struct不能有陣列變數的原因 JASS不支援多維陣列嘛
trigger array s__hkeTri_tri
triggercondition array s__hkeTri_cond


函數
代碼: 選擇全部
//分配 hkeTri.create()
function s__hkeTri__allocate takes nothing returns integer
    local integer this=si__hkeTri_F//把新指針設置成最後清楚的索引
    if (this!=0) then //上次清除的索引不為0(就是清除過)
        set si__hkeTri_F=si__hkeTri_V[this]
//最後清楚的東西設置成這個索引等下能找到避免浪費空間
    else//為0 就是說之前沒有空的 分配個新的
        set si__hkeTri_I=si__hkeTri_I+1 //設置成這個索引然後總數+1
        set this=si__hkeTri_I
    endif
    if (this>8190) then //超過陣列最大數量則失敗
        return 0
    endif
    set si__hkeTri_V[this]=-1 //標記
    return this
endfunction


於是
每次create返回個integer
就是個陣列的索引(假設返回123)
hkeTri.tri就是s__hkeTri_tri[123]
hkeTri.cond就是s__hkeTri_cond[123]
所以說白了還是陣列

分配空間基本上看懂沒問題吧
不明白先繼續看
代碼: 選擇全部
//銷毀 hkeTri.destroy()
function s__hkeTri_destroy takes integer this returns nothing
    if this==null then//空的就不清理了
        return
    elseif (si__hkeTri_V[this]!=-1) then//鏈表前端沒有指標
        return
    endif
    set si__hkeTri_V[this]=si__hkeTri_F//設置新的指針
    set si__hkeTri_F=this//設置新清除索引
endfunction


這下稍微迷茫了吧
語法看懂很容易
但是演算法不是很好理解

si__hkeTri_V陣列其實存的都是指標this為索引取得上個資料的索引
-1表示這個沒有指向其他東東
不理解為啥有這個東西存在的必要吧
如果destroy一次再create這個東西完全是不必要的
但是如果destroy很多次呢
為了保證之前每個索引都不浪費掉
把si__hkeTri_F存在以自己編號為索引的si__hkeTri_V裡面
si__hkeTri_F再設置成自己的編號
下次用這個編號取si__hkeTri_V的內容就能取得上次存入的si__hkeTri_F
如此迴圈就形成個類似單向鏈表的東東
想起create時候set si__hkeTri_F=si__hkeTri_V[this]了吧


這樣就能一直取回之前存下的空位
於是索引一個都沒浪費掉
完全用滿
除非之前沒空位才返回新索引

-----------------------袋鼠的分割線--------------------------


好吧 實現上分析玩了
好處呢
如果這個struct要在多處被使用
顯然是很方便的 只需要個integer記錄索引
都公用一套函數和全域變數
用完清理及時的話一個位置都不會浪費

但是你也看到
用了陣列還有個額外的存鏈表指針的東東
destroy只是標記可用而已
並沒真正清理 當然這個對效率的影響基本可以忽略
但是vj畢竟不是官方代碼
編譯時候偶爾也會有些莫名其妙的問題
而且不直觀 有些地方不好自己修改
而且那些支持VJ的WE多多少少也會有些麻煩的地方
(等工程做大了 想改回來你會很爽的)
如果你的資料規則或者不需要順序什麼的顯然有很多更好的演算法
而且知道了struct的實現我們完全可以自己寫代替他
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章AppleSheep » 2009年10月15日 7:43 pm

快速看完

1.結構可以列陣
2.看不到缺點在哪..
3.結構本來就是負責動態..在你需要它的時候它是非常方便的 你不用自己記下哪個key代表什麼
4.蘋果使用了快2年除了一些限制沒出過幾次問題
5.這文章過期的差不多了..
線上MSN

精華文章:
流連版 遺失的記憶
蘋果UI 最新1.8.8
Apple NewGen 與蘋果UI同步更新 (支援1.24)
Visual Jass (vJass) 教學 (初步完成)

圖檔
圖檔
圖檔
圖檔
頭像
AppleSheep
騎士
騎士
 
文章: 267
註冊時間: 2008年03月06日 11:23 am
來自: 虛無

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章tv580025 » 2009年10月15日 7:50 pm

AppleSheep 寫:快速看完

1.結構可以列陣
2.看不到缺點在哪..
3.結構本來就是負責動態..在你需要它的時候它是非常方便的 你不用自己記下哪個key代表什麼
4.蘋果使用了快2年除了一些限制沒出過幾次問題
5.這文章過期的差不多了..

我知道這篇出很久了

但我知道很多人都懶得挖文 (包括我在內)

所以我把這篇重新整理過再給大家看這樣


另外我排斥的不是功能上有沒有問題

而是效率

基本上VJ看起來越方便的功能

轉存成J檔之後是相當醜陋的

大量多餘的變數&冗長的程式碼


對我這個效率狂來說

只是白白浪費資源罷了

否則我也不會想把地圖中的bj函數全去掉

另匯入一張空的blizzard.j檔到自己的地圖中了
 
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章AppleSheep » 2009年10月15日 7:59 pm

效率算很好了.. 自動化的東西都是這樣

war運行地圖的時你拿出快取反編譯後才可怕..

而且作者每一版本都有提供原始碼

要更高效率的話就自己改這樣
線上MSN

精華文章:
流連版 遺失的記憶
蘋果UI 最新1.8.8
Apple NewGen 與蘋果UI同步更新 (支援1.24)
Visual Jass (vJass) 教學 (初步完成)

圖檔
圖檔
圖檔
圖檔
頭像
AppleSheep
騎士
騎士
 
文章: 267
註冊時間: 2008年03月06日 11:23 am
來自: 虛無

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章tv580025 » 2009年10月15日 8:03 pm

AppleSheep 寫:效率算很好了.. 自動化的東西都是這樣

vj也是j

上面的文章也提到了

基本上vj做的到的功能

自己用j就可以做出來了

AppleSheep 寫:war運行地圖的時你拿出快取反編譯後才可怕..

而且作者每一版本都有提供原始碼

要更高效率的話就自己改這樣

去改vj的原始碼根本就沒有意義吧

而且就算我用組合語言弄出高效能的war3地圖又如何?

別人能跑嗎?
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章AppleSheep » 2009年10月15日 8:11 pm

tv580025 寫:
AppleSheep 寫:效率算很好了.. 自動化的東西都是這樣

vj也是j

上面的文章也提到了

基本上vj做的到的功能

自己用j就可以做出來了


有時候滿佩服你們的

這樣不會累嗎 囧rz

tv580025 寫:
AppleSheep 寫:war運行地圖的時你拿出快取反編譯後才可怕..

而且作者每一版本都有提供原始碼

要更高效率的話就自己改這樣

去改vj的原始碼根本就沒有意義吧

而且就算我用組合語言弄出高效能的war3地圖又如何?

別人能跑嗎?


可以
線上MSN

精華文章:
流連版 遺失的記憶
蘋果UI 最新1.8.8
Apple NewGen 與蘋果UI同步更新 (支援1.24)
Visual Jass (vJass) 教學 (初步完成)

圖檔
圖檔
圖檔
圖檔
頭像
AppleSheep
騎士
騎士
 
文章: 267
註冊時間: 2008年03月06日 11:23 am
來自: 虛無

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章tv580025 » 2009年10月15日 8:15 pm

AppleSheep 寫:
tv580025 寫:
AppleSheep 寫:效率算很好了.. 自動化的東西都是這樣

vj也是j

上面的文章也提到了

基本上vj做的到的功能

自己用j就可以做出來了

有時候滿佩服你們的

這樣不會累嗎 囧rz

當然不會

倒是這讓我想到IE的網頁在FF會有亂掉的起源

一堆人貪圖方便而用了所謂的"所見即所得"軟體
AppleSheep 寫:
tv580025 寫:
AppleSheep 寫:war運行地圖的時你拿出快取反編譯後才可怕..

而且作者每一版本都有提供原始碼

要更高效率的話就自己改這樣

去改vj的原始碼根本就沒有意義吧

而且就算我用組合語言弄出高效能的war3地圖又如何?

別人能跑嗎?

可以

wrong answer

要是使用了連WE都無法辨識的語言

基本上war3.exe是無法執行這張地圖的

除非war3.exe也做了相對應的修改這樣
 
 
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章AppleSheep » 2009年10月15日 8:27 pm

tv580025 寫:
AppleSheep 寫:
tv580025 寫:
AppleSheep 寫:效率算很好了.. 自動化的東西都是這樣

vj也是j

上面的文章也提到了

基本上vj做的到的功能

自己用j就可以做出來了

有時候滿佩服你們的

這樣不會累嗎 囧rz

當然不會

倒是這讓我想到IE的網頁在FF會有亂掉的起源

一堆人貪圖方便而用了所謂的"所見即所得"軟體

懶人專用0.0

蘋果比較喜歡wiki

雖然同樣意思就是

蘋果有程度的分級

vJass是把"概念"給實現

而這些概念是對不會那些常見的電腦語言JAVA c++ VB之類的Jasser非常有幫助的

因此蘋果認同它

tv580025 寫:
AppleSheep 寫:
tv580025 寫:
AppleSheep 寫:war運行地圖的時你拿出快取反編譯後才可怕..

而且作者每一版本都有提供原始碼

要更高效率的話就自己改這樣

去改vj的原始碼根本就沒有意義吧

而且就算我用組合語言弄出高效能的war3地圖又如何?

別人能跑嗎?

可以

wrong answer

要是使用了連WE都無法辨識的語言

基本上war3.exe是無法執行這張地圖的

除非war3.exe也做了相對應的修改這樣
 

如果用了魔獸以外的語言

那你做出來的"檔案"就不再是"魔獸地圖"了

定義問題嘎 魔獸地圖的前提是魔獸可以運行

(抱歉 海貓看多了 對一些奇怪的邏輯非常在意)
最後由 AppleSheep 於 2009年10月15日 8:30 pm 編輯,總共編輯了 1 次。
線上MSN

精華文章:
流連版 遺失的記憶
蘋果UI 最新1.8.8
Apple NewGen 與蘋果UI同步更新 (支援1.24)
Visual Jass (vJass) 教學 (初步完成)

圖檔
圖檔
圖檔
圖檔
頭像
AppleSheep
騎士
騎士
 
文章: 267
註冊時間: 2008年03月06日 11:23 am
來自: 虛無

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章Weberkkk » 2009年10月15日 8:29 pm

其實一切都是習慣問題

像我的整套struct、相關綁定系統都自己做
VJ對我來說就可有可無了
◆◆◆◆◆ 《 免費線上簽約服務,你也可以改變世界 》 ◆◆◆◆◆
 
「你知道打一場三國,會消耗多少能量嗎? 燃燒的能量,少於栽培的能量。」
「宇宙能量在不斷減少,所以WB發明了將玩家感情轉換為宇宙能量的技術。」
「主堡被推掉的瞬間,因戰敗爆發的各種情感,就是WB想蒐集的宇宙能量。」
「默契越好的玩家,釋放的能量越大,最厲害的團隊,會爆發出最強的能量。」
「XD化程度與能量蒐集率有關,WB理所當然的進行三國XD改造與實驗。」
「每次RE都會造成平行世界能量增幅,再過不久也許能培育出三國之神吧。」
頭像
Weberkkk
騎士
騎士
 
文章: 241
註冊時間: 2008年04月14日 12:06 am

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章tv580025 » 2009年10月15日 8:41 pm

AppleSheep 寫:懶人專用0.0

蘋果比較喜歡wiki

雖然同樣意思就是

蘋果有程度的分級

vJass是把"概念"給實現

而這些概念是對不會那些常見的電腦語言JAVA c++ VB之類的Jasser非常有幫助的

因此蘋果認同它

提出製作概念然後發表給大家參閱我當然也很讚賞

畢竟每篇文章都能夠給Jasser更多的學習機會

只是我並不推薦使用vj的自動化功能這樣
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章AppleSheep » 2009年10月15日 8:55 pm

那蘋果晚點那部份一起寫好了

另外還有種用法是
代碼: 選擇全部
struct Trigger2 extends array
endstruct


這使用法可以不生成任何腳本 但是你就可以使用Trigger2這個類型

是個很好用的key

還有其他不錯的東西就是

東西拿出來 你不一定要照單全收這樣
線上MSN

精華文章:
流連版 遺失的記憶
蘋果UI 最新1.8.8
Apple NewGen 與蘋果UI同步更新 (支援1.24)
Visual Jass (vJass) 教學 (初步完成)

圖檔
圖檔
圖檔
圖檔
頭像
AppleSheep
騎士
騎士
 
文章: 267
註冊時間: 2008年03月06日 11:23 am
來自: 虛無

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章tv580025 » 2009年10月15日 9:18 pm

AppleSheep 寫:那蘋果晚點那部份一起寫好了

另外還有種用法是
代碼: 選擇全部
struct Trigger2 extends array
endstruct


這使用法可以不生成任何腳本 但是你就可以使用Trigger2這個類型

是個很好用的key

還有其他不錯的東西就是

東西拿出來 你不一定要照單全收這樣

囫圇吞棗的人可不占少數

我相信很多人都不清楚vj的運作原理就一股腦兒的用上了

因此我才有把這篇文章挖出來的念頭

讓Jasser也能更加明瞭使用vj所帶來的優缺點

1.How?
如何用vj寫?

2.Why?
為何vj可以這樣寫?

3.What?
到底vj做了哪些事? 
 
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章rexrainbow » 2009年10月16日 12:38 pm

tv580025 寫:囫圇吞棗的人可不占少數

我相信很多人都不清楚vj的運作原理就一股腦兒的用上了

因此我才有把這篇文章挖出來的念頭

讓Jasser也能更加明瞭使用vj所帶來的優缺點

1.How?
如何用vj寫?

2.Why?
為何vj可以這樣寫?

3.What?
到底vj做了哪些事? 
 


vj只是把原來的jass再包一層, 也可以說是"抽象化"(概念化), 是在"少寫code", 與"效能"間做trade off.
先說優點, 在下層提供正確的函式庫的前提下, code越少越不容易出錯, 越抽象(概念-隱藏細節)越容易看懂, 可以增加開發效率(減少開發時間), 這在多人合作/程式很大的情況下會更明顯, 前提是團隊裡的人都會這種表達方式.
缺點就是執行效率問題. 因此程式發展分成兩種工作, 一種是工具開發者, 專注於效率與介面上. 另一種是工具使用者, 使用工具開發者提供的函式, 也可以說工具開發者把他自身的經驗轉化成了函式庫工具, 工具使用者就不必再花心思處理更底層的效率問題, 而專注在更上層邏輯上, 縮短開發時間.
Let's Do Something Interesting

圖檔
頭像
rexrainbow
冰霜翼龍
冰霜翼龍
 
文章: 1696
註冊時間: 2008年10月02日 3:33 pm
來自: Taipei, Taiwan

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章tv580025 » 2009年10月16日 2:54 pm

rexrainbow 寫:
tv580025 寫:1.How?
如何用vj寫?

2.Why?
為何vj可以這樣寫?

3.What?
到底vj做了哪些事?

vj只是把原來的jass再包一層, 也可以說是"抽象化"(概念化), 是在"少寫code", 與"效能"間做trade off.
先說優點, 在下層提供正確的函式庫的前提下, code越少越不容易出錯, 越抽象(概念-隱藏細節)越容易看懂, 可以增加開發效率(減少開發時間), 這在多人合作/程式很大的情況下會更明顯, 前提是團隊裡的人都會這種表達方式.
缺點就是執行效率問題. 因此程式發展分成兩種工作, 一種是工具開發者, 專注於效率與介面上. 另一種是工具使用者, 使用工具開發者提供的函式, 也可以說工具開發者把他自身的經驗轉化成了函式庫工具, 工具使用者就不必再花心思處理更底層的效率問題, 而專注在更上層邏輯上, 縮短開發時間.

1.How? Why? What?
我會提出這三點

是因為現在使用vj的使用者多半只注意到前兩點

第三點通常都沒有人去注意

而我認為第三點比前兩者重要多了

2.少寫code
我不認為有少寫多少

隱藏背後的code是相當龐大的

遠遠超出你所看見的
(想看還得開mpq看j檔才看的到...)

真的要少"寫"而無錯,使用GUI不是更好?

3.效能
整體上VJ跟GUI的BJ效能是差不多的

而即便調用CJ函數只比調用BJ快出一些

但我相信基本上會寫Jass的人

通常是不會建議其他使用Jass的人調用BJ函數的

Ex: call UnitAddAbilityBJ 都知道要改成 call UnitAddAbility

4.使用工具開發者提供的函式
這當然是OK的,但你有沒有想過

當他所提供的函式不可修改時你要怎麼辦?

我知道他的工具的源碼是可以改的

但是你改了,使用相同工具的人也得改

不然別人也沒有辦法使用你所修正的部分

這樣只會徒增不必要的混亂罷了


題外話 寫:「吃飯時,不明瞭水稻變成米的過程無所謂,但至少要看過水稻長什麼樣子吧」

「不要別人畫個框然後什麼都不思考就直往裡頭栽」

 
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章rexrainbow » 2009年10月16日 3:43 pm

tv580025 寫:1.少寫code
我不認為有少寫多少

隱藏背後的code是比原來你所看見的的還多出很多的

真的要少寫,用GUI的話不是更便捷?

2.效能
基本上VJ跟GUI的BJ效能是差不多的

而即使調用CJ函數只比調用BJ快出一些

但我相信基本上會寫Jass的人

通常是不會建議其他使用Jass的人調用BJ函數的

Ex: call UnitAddAbilityBJ 都知道要改成 call UnitAddAbility

3.使用工具開發者提供的函式
這當然是OK的,但你有沒有想過

當他所提供的函式不可修改時你要怎麼辦?

別人畫個框框然後你就得往裡面跳嗎?

我知道他的工具的源碼是可以改的

但是你改了,使用相同工具的人也得改

不然別人也沒有辦法使用你所修正的部分

這樣只會徒增不必要的混亂罷了


題外話(純屬個人看法,可能會有點偏離討論主題)
我會挖這篇文主要的目的還是希望:

「當你吃飯時,不明瞭水稻變成米的過程無所謂,但至少要看過水稻長什麼樣子吧」

 


首先先確認函式庫工具的提供對團隊開發的必要性: 假設今天有一個團隊, 有寫過其他程式的經驗. 今天被tv580025挖進來寫JASS, 但是他們不太懂JASS與其他程式語言的差異, 例如物件的記憶體管理機制或是其他的. tv580025說, "沒關係, 底層我很熟, 我幫你們把JASS與其他語言的不同點用我提供的函式庫蓋住". 於是這個團隊在經過較少的學習之後上手了, 這些人更可以把時間花在邏輯表達上, 讓程式做更多的事情.

回到tv580025提到的3點.
1. 隱藏(被產生)的code就是少寫的部份. GUI設計的初衷是給比較沒有程式基礎的人容易上手用的, 對沒有程式基礎的使用者而言, 設計得還不錯. 但如果給有程式基礎的使用者, 反而有點卡卡的.

2.效能問題. 也許tv580025可以來當函式庫工具的提供者, 來解決vj的效能問題.

3.開發工具的升級與使用者程式產生. 在工具函式庫提供的介面不改變的情況下, 使用者程式只要使用新的函式庫(或許是"巨集")再重新產生一次目的JASS code, 就可以在不改變原(vj)程式的內容下, 獲得工具程式的更新. 這樣做更可以減少維護成本. 如果工具函式庫的介面改變了, 就只好跟著改了(所以工具函式庫的介面設計與使用者的維護成本是有關聯的).

以上討論的, 是針對vj這種掩蓋底層JASS細節的語言優缺點討論的--是否需要另一種語言更方便邏輯的表達, 不代表我認為vj就是最適合給使用者當工具函式庫. 至少tv580025認為它的效能有待加強. 所以如果有可能的話, 應該讓工具函式庫能更嚴格的被製作被檢視, 介面的設計更符合通用性, 才能讓工具函式庫的利用率更大.
最後由 rexrainbow 於 2009年10月16日 3:54 pm 編輯,總共編輯了 1 次。
Let's Do Something Interesting

圖檔
頭像
rexrainbow
冰霜翼龍
冰霜翼龍
 
文章: 1696
註冊時間: 2008年10月02日 3:33 pm
來自: Taipei, Taiwan

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章tv580025 » 2009年10月16日 3:53 pm

rexrainbow 寫:首先先確認函式庫工具的提供對團隊開發的必要性: 假設今天有一個團隊, 有寫過其他程式的經驗. 今天被tv580025挖進來寫JASS, 但是他們不太懂JASS與其他程式語言的差異, 例如物件的記憶體管理機制或是其他的. tv580025說, "沒關係, 底層我很熟, 我幫你們把JASS與其他語言的不同點用我提供的函式庫蓋住". 於是這個團隊在經過較少的學習之後上手了, 這些人更可以把時間花在邏輯表達上, 讓程式做更多的事情.

這裡我認為不正確

因為可以改成function(模組化)的方式讓大家自行copy/edit

而不是弄一個鎖住的框架讓別人使用

我相信前者所帶來的進步絕對比後者大

就如同windows跟unix

弄成開源的我相信會更有效益

而不是關起門來自己玩自己
 
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章tv580025 » 2009年10月16日 3:59 pm

rexrainbow 寫:1. 隱藏(被產生)的code就是少寫的部份. GUI設計的初衷是給比較沒有程式基礎的人容易上手用的, 對沒有程式基礎的使用者而言, 設計得還不錯. 但如果給有程式基礎的使用者, 反而有點卡卡的.

不會卡卡的吧...

那是GUI轉成Jass後看起來才會卡卡的
rexrainbow 寫:2.效能問題. 也許tv580025可以來當函式庫工具的提供者, 來解決vj的效能問題.

就如同我上面說的

與其要弄工具,不如發展函式

閉門造車一點意思都沒有
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章rexrainbow » 2009年10月16日 4:04 pm

tv580025 寫:
rexrainbow 寫:首先先確認函式庫工具的提供對團隊開發的必要性: 假設今天有一個團隊, 有寫過其他程式的經驗. 今天被tv580025挖進來寫JASS, 但是他們不太懂JASS與其他程式語言的差異, 例如物件的記憶體管理機制或是其他的. tv580025說, "沒關係, 底層我很熟, 我幫你們把JASS與其他語言的不同點用我提供的函式庫蓋住". 於是這個團隊在經過較少的學習之後上手了, 這些人更可以把時間花在邏輯表達上, 讓程式做更多的事情.

這裡我認為不正確

因為可以改成function的方式讓大家自己copy/edit

而不是弄一個鎖住的框架讓別人使用

我相信前者所帶來的進步絕對比後者大

就如同windows跟unix

要是弄成開源的我相信將會更有效益

而不是關起門來自己玩自己
 


如果今天提供的函式是不需要修改就可以符合用途, 它的設計就比較符合通用性了, 通常函式庫的製作會朝這個目標前進, 需要修改才能用的, 比較像sample code, 使用者還得花時間看懂, 增加學習時間(減少開發效率). 至於開源與否, 個人的想法則是這個工具函式庫是否容易被修改. 假設流連今天自己建立一個JASS工具函數庫設計團隊, 由效能魔人主導與效能有關的細節, 而其他JASS使用者則是參與介面設計/需求的討論. 這種分工機制就可以破除閉門造車的問題了, 製造出符合需求又有效能保障的工具函式庫.

前提是真有這麼多人參加, 不過我想是滿難的.

<回得這麼快, 我都還沒編輯好>
最後由 rexrainbow 於 2009年10月16日 4:12 pm 編輯,總共編輯了 2 次。
Let's Do Something Interesting

圖檔
頭像
rexrainbow
冰霜翼龍
冰霜翼龍
 
文章: 1696
註冊時間: 2008年10月02日 3:33 pm
來自: Taipei, Taiwan

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章tv580025 » 2009年10月16日 4:08 pm

rexrainbow 寫:是函數或是"鎖住的框架", 我想這是介面設計的問題. 你也可以把這個框架當成是函數呼叫. 至於開源與否, 個人的想法則是這個工具函式庫是否容易被修改. 假設流連今天自己建立一個JASS工具函數庫設計團隊, 由效能魔人主導與效能有關的細節, 而其他JASS使用者則是參與介面設計/需求的討論. 這種分工機制就可以破除閉門造車的問題了, 製造出符合需求又有效能保障的工具函式庫.

前提是真有這麼多人參加, 不過我想是滿難的.

不需要特別組團這麼做

因為在流連的每個人所發表的每個函式

都是讓其他人自行copy/edit的

因此這已經算是相當棒的"開源碼"了
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章rexrainbow » 2009年10月16日 4:18 pm

tv580025 寫:
rexrainbow 寫:是函數或是"鎖住的框架", 我想這是介面設計的問題. 你也可以把這個框架當成是函數呼叫. 至於開源與否, 個人的想法則是這個工具函式庫是否容易被修改. 假設流連今天自己建立一個JASS工具函數庫設計團隊, 由效能魔人主導與效能有關的細節, 而其他JASS使用者則是參與介面設計/需求的討論. 這種分工機制就可以破除閉門造車的問題了, 製造出符合需求又有效能保障的工具函式庫.

前提是真有這麼多人參加, 不過我想是滿難的.

不需要特別組團這麼做

因為在流連的每個人所發表的每個函式

都是讓其他人自行copy/edit的

因此這已經算是相當棒的"開源碼"了


<抱歉我又回去編輯文章了>
"開源碼"的確是學習的好材料, 但如果不需要修改就能符合大部分的用途, 應該是更好的一組工具函式庫. 把特定的函數維護工作交給專家處理, 只要底層部分更動, 大部分的使用者都可以受益.
Let's Do Something Interesting

圖檔
頭像
rexrainbow
冰霜翼龍
冰霜翼龍
 
文章: 1696
註冊時間: 2008年10月02日 3:33 pm
來自: Taipei, Taiwan

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章tv580025 » 2009年10月16日 4:24 pm

rexrainbow 寫:<回得這麼快, 我都還沒編輯好>

<沒關係XD>

rexrainbow 寫:至於開源與否, 個人的想法則是這個工具函式庫是否容易被修改. 假設流連今天自己建立一個JASS工具函數庫設計團隊, 由效能魔人主導與效能有關的細節, 而其他JASS使用者則是參與介面設計/需求的討論. 這種分工機制就可以破除閉門造車的問題了, 製造出符合需求又有效能保障的工具函式庫.

前提是真有這麼多人參加, 不過我想是滿難的.

我認為不必刻意開發其他的工具去滿足每一位jass使用者的需求

因為每個人的需求不同,不可能滿足所有人的需求

rexrainbow 寫:如果今天提供的函式是不需要修改就可以符合用途, 它的設計就比較符合通用性了, 通常函式庫的製作會朝這個目標前進, 需要修改才能用的, 比較像sample code, 使用者還得花時間看懂, 增加學習時間(減少開發效率).

就如同我上面所說的,每個人的需求不同

假如我今天寫了一個function能滿足所有需求

我相信這個function一定相當的肥

做一張地圖不可能把這個function的所有功能都用上

故user還是得從這個包山包海的function內去做修改/減肥的工作

這樣看來,做一個萬用的function反而沒有太大的好處
 
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章rexrainbow » 2009年10月16日 4:37 pm

tv580025 寫:
rexrainbow 寫:<回得這麼快, 我都還沒編輯好>

<沒關係XD>

rexrainbow 寫:至於開源與否, 個人的想法則是這個工具函式庫是否容易被修改. 假設流連今天自己建立一個JASS工具函數庫設計團隊, 由效能魔人主導與效能有關的細節, 而其他JASS使用者則是參與介面設計/需求的討論. 這種分工機制就可以破除閉門造車的問題了, 製造出符合需求又有效能保障的工具函式庫.

前提是真有這麼多人參加, 不過我想是滿難的.

我認為不必刻意開發其他的工具去滿足每一位jass使用者的需求

因為每個人的需求不同,不可能滿足所有人的需求

rexrainbow 寫:如果今天提供的函式是不需要修改就可以符合用途, 它的設計就比較符合通用性了, 通常函式庫的製作會朝這個目標前進, 需要修改才能用的, 比較像sample code, 使用者還得花時間看懂, 增加學習時間(減少開發效率).

就如同我上面所說的,每個人的需求不同

假如我今天寫了一個function能滿足所有需求

我相信這個function一定相當的肥

做一張地圖不可能把這個function的所有功能都用上

因此user還是得做修改/減肥的工作

包山包海的function反而一點好處都沒有
 


你說的沒錯, 函數的劃分與介面設計也是工具函式庫設計要考慮的重點, 把可變與不變的部份分開來. cpoy-edit已經做到部份功能了, 只是要做得更自動化而已.
另外, 滿足"每一位jass使用者的需求"(真的有這麼多人在做還是個問題), 當然也是考量重點, 所以才要使用者們也參予討論, 目的是要在"儘可能"的滿足他們的需求為前提下, 做到"把可變與不變的部份分開來"的結果.

到這裡已經離題了, 沒關係吧?
Let's Do Something Interesting

圖檔
頭像
rexrainbow
冰霜翼龍
冰霜翼龍
 
文章: 1696
註冊時間: 2008年10月02日 3:33 pm
來自: Taipei, Taiwan

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章AppleSheep » 2009年10月16日 4:44 pm

那這個模組有沒有比VJ的模組更強的使用可能呢..

一些工具之類的

如果連腳本語言都跟一些的電腦語言差不多或更加沉長..那還真..悲劇
線上MSN

精華文章:
流連版 遺失的記憶
蘋果UI 最新1.8.8
Apple NewGen 與蘋果UI同步更新 (支援1.24)
Visual Jass (vJass) 教學 (初步完成)

圖檔
圖檔
圖檔
圖檔
頭像
AppleSheep
騎士
騎士
 
文章: 267
註冊時間: 2008年03月06日 11:23 am
來自: 虛無

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章rexrainbow » 2009年10月16日 5:09 pm

AppleSheep 寫:那這個模組有沒有比VJ的模組更強的使用可能呢..

一些工具之類的

如果連腳本語言都跟一些的電腦語言差不多或更加沉長..那還真..悲劇


有興趣可以比較JASS與其他程式語言的差異, 就可以知道JASS的缺點, 為了彌補缺點, 多寫些code也是必要的.
例如JASS的垃圾回收支援不全, 所以就得手動處理.

reference- 垃圾回收: 垃圾回收器可以讓程式員減輕許多負擔,也減少程式員犯錯的機會。
http://zh.wikipedia.org/zh-tw/%E5%9E%83 ... 5%AD%B8%29
Let's Do Something Interesting

圖檔
頭像
rexrainbow
冰霜翼龍
冰霜翼龍
 
文章: 1696
註冊時間: 2008年10月02日 3:33 pm
來自: Taipei, Taiwan

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章AppleSheep » 2009年10月16日 5:20 pm

rexrainbow 寫:
AppleSheep 寫:那這個模組有沒有比VJ的模組更強的使用可能呢..

一些工具之類的

如果連腳本語言都跟一些的電腦語言差不多或更加沉長..那還真..悲劇


有興趣可以比較JASS與其他程式語言的差異, 就可以知道JASS的缺點, 為了彌補缺點, 多寫些code也是必要的.
例如JASS的垃圾回收支援不全, 所以就得手動處理.

reference- 垃圾回收: 垃圾回收器可以讓程式員減輕許多負擔,也減少程式員犯錯的機會。
http://zh.wikipedia.org/zh-tw/%E5%9E%83 ... 5%AD%B8%29

這似乎不是個好例子呢

VJ本就不帶有垃圾回收的功能呀
線上MSN

精華文章:
流連版 遺失的記憶
蘋果UI 最新1.8.8
Apple NewGen 與蘋果UI同步更新 (支援1.24)
Visual Jass (vJass) 教學 (初步完成)

圖檔
圖檔
圖檔
圖檔
頭像
AppleSheep
騎士
騎士
 
文章: 267
註冊時間: 2008年03月06日 11:23 am
來自: 虛無

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章rexrainbow » 2009年10月16日 5:29 pm

AppleSheep 寫:這似乎不是個好例子呢

VJ本就不帶有垃圾回收的功能呀


我指得是JASS本身的缺點, 讓JASS沒辦法少寫code的原因之一. 有興趣你也可以做出個基於vj上的垃圾回收功能, 這樣vj就有函數支援了, 使用者就不用為了記憶體漏失煩惱了.

(可能會降低執行效率就是了.)
Let's Do Something Interesting

圖檔
頭像
rexrainbow
冰霜翼龍
冰霜翼龍
 
文章: 1696
註冊時間: 2008年10月02日 3:33 pm
來自: Taipei, Taiwan

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章AppleSheep » 2009年10月16日 5:41 pm

rexrainbow 寫:
AppleSheep 寫:這似乎不是個好例子呢

VJ本就不帶有垃圾回收的功能呀


我指得是JASS本身的缺點, 讓JASS沒辦法少寫code的原因之一. 有興趣你也可以做出個基於vj上的垃圾回收功能, 這樣vj就有函數支援了, 使用者就不用為了記憶體漏失煩惱了.

(可能會降低執行效率就是了.)

1.垃圾回收已經偏離主題
2.垃圾回收不符合VJ的宗旨 因此毫無意義
3.1.24版本之前就有優化工具支援
4.1.24之後不支援該腳本方法 需要更沉長的程式碼作為判斷 再來看看VJ作者的說法 這將是毫無意義的
5.垃圾回收似乎不是能夠模組化的呢 是不是有點矛盾呢
6.蘋果自己不需要 它的存在可有可無
7.CJ就可以大幅度的簡化垃圾清除
線上MSN

精華文章:
流連版 遺失的記憶
蘋果UI 最新1.8.8
Apple NewGen 與蘋果UI同步更新 (支援1.24)
Visual Jass (vJass) 教學 (初步完成)

圖檔
圖檔
圖檔
圖檔
頭像
AppleSheep
騎士
騎士
 
文章: 267
註冊時間: 2008年03月06日 11:23 am
來自: 虛無

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章tv580025 » 2009年12月18日 4:54 pm

http://forums.wasabistudio.ca/viewtopic.php?f=74&t=29734
open source興起後,帶有原始碼的系統更帶給程式設計師一個「完全控制」的機會,除了能替換零件外,有能力的人還能直接對零件本身做修改以符合自己的需求。種種因素加起來,讓程式設計師不再被單一個工具能力所限制,而是手中握有無數可以自由運用的籌碼,唯一的限制只有自身的創意和熱情而已。

感同身受。
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章AppleSheep » 2009年12月18日 6:57 pm

雖然很失禮 不過蘋果看到的就是這樣

「我是個頂尖的程式設計師 我的生產力是普通程式設計師的十倍至百倍
通常頂尖程式設計師寫程式時會寫工具給自己用
我也不需要分享 因為要滿足所有人是做不到的
所以需要的話 就跟頂尖程式設計師一樣自己寫」

本蘋果做不到

還是乖乖去玩遊戲吧
線上MSN

精華文章:
流連版 遺失的記憶
蘋果UI 最新1.8.8
Apple NewGen 與蘋果UI同步更新 (支援1.24)
Visual Jass (vJass) 教學 (初步完成)

圖檔
圖檔
圖檔
圖檔
頭像
AppleSheep
騎士
騎士
 
文章: 267
註冊時間: 2008年03月06日 11:23 am
來自: 虛無

Re: [JASS][轉貼]VJass的struct的分析(實現and優缺點)

文章tv580025 » 2009年12月18日 8:27 pm

AppleSheep 寫:雖然很失禮 不過蘋果看到的就是這樣

「我是個頂尖的程式設計師 我的生產力是普通程式設計師的十倍至百倍
通常頂尖程式設計師寫程式時會寫工具給自己用
我也不需要分享 因為要滿足所有人是做不到的
所以需要的話 就跟頂尖程式設計師一樣自己寫」

本蘋果做不到

還是乖乖去玩遊戲吧

不斷進步成長才是邁向成功的基石
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix


回到 專題討論區

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客