2023年12月20日 星期三

自動號碼產生器 FAQ

 /*

//---A N G E L Program FAQ---
FAQ (ANGEL program 10 years anniversary)
FAQ (自動號碼產生器10週年紀念)

Q: 自動號碼產生器是什麼?
A: 自動號碼產生器是基於電腦科學中
的八皇后問題而產生的演算法,
用來計算當使用者需要進行計算活動,
而計算活動適合排列演算法時,
可以用這個電腦程式自動產生所有解,
並且一個一個的秀出來!
未來可望應用在所有排列相關的問題上!

Q: MAXQUEEN字面翻譯是皇后數,
皇后數是什麼?
A:皇后數是八皇后問題與遞迴運算的
一種程式工程上的寫法,
它真正的意思是DIMENSION數,
也就是維度數字!
但是維度是相對於使用者而成立的,
如果使用者要求跟感受的維度不高,
就不需要非常多層次的維度,
也不需要那麼多的維度數字!
這個程式一開始的時候,
是來降低維度,降低難度的。

Q: 維度數字?難道宇宙真的是十一維度嗎?
最大值真的是11維嗎?
A: 並非如此!
我的程式因為有ARRAYSIZE,
SLOTNUMBER數字限制了
最大有10個SLOT,
所以加上數字0的維度,
一共只有11個維度。
未來工業化以後,
則可以提高成為更多的數字。
你只要把所有int變數改成long long
就可以擴充非常多維度。
未來還可以擴充到win32的size_t,
不同變數去進行各種改寫都有。
通常跑程式碼以後,是硬體跟不上,
不是軟體跟不上。
這個陽春版的宗運版產生器,
可以用各種方式向上擴充。
擴充的難點在於,
switch只有0到9這十個阿拉伯數字,
雖然可以像美國ASCII碼一樣,
多加幾個case,
擴充成16進位,
甚至unicode那種10萬以上的字符,
但是人類生命短暫,
如何不吃不喝不睡覺看完所有解呢?
因此本程式改成免費方式公布,
有多餘時間再來觀看就可以了!
並且可以自己修改數字,
1到10之內要算多少維度都可以。
至於宇宙是否為11維度,
要由物理學家來判定才對!

Q: 0階乘怎麼不是1呢?怎麼跑不出來?
A: 這有兩個原因:第一,
實際的工程問題並非學校裡的簡單數學。
這次產生器完成以後,
0階乘它是無解的,
既然跑成功了,它可以執行一次以上,
它就不需要拿來算0階乘。
函數大於等於1的時候它就不會是0函數。
妳若想擴充時,
都可以自己加入if-else或其他#define敘述
去額外定義0階乘會等於1這樣。
第二,0階乘不是1,
是因為MyErrorHandler的數學意義
直接改變了0的價值。
所以在本程式中,
0的意義和價值被分散了,
反而使得工程和數學,
在新的演算法下重新成立,
並且讓這個程式成為永遠可用的
新一代演算法程式。

Q: 為什麼不用linked-list來寫?
怎麼用陣列來寫呢?
A: 本程式引用的arrays.h
提供了可以push pop的新型陣列!
它在結構上不輸給linked-list而且
可以增加與刪減元素!
如果用linked-list來寫,
找尋元素速度上則會降低。
至於對工業界的人士來說
當然很慢!不合用!
因為他們用工業電腦特別快!
但是回頭來看,
這陽春程式碼可以在記憶體很小的
舊型電腦上面跑,
檔案大小也是超級小的!
並且時間過了多少,
就計算多少排列數裝進記憶體,
所以連小型計算機都有可能裝的下。
因此,有空的使用者,
都歡迎來使用本程式!


Q: 那些pragma是什麼?
MyErrorHandler是什麼?
A: 那是程式框架的一部份,
是一種提高安全性的寫法,
避免鍵盤和光碟機和工業電腦,
使用系統訊號
改寫程式裡的公用變數與數字,
造成不精準或是無法運算。
因為在國內沒有人這樣寫,
我在這裡把它稱為‘‘宗運框架’’。
在舊版的XP系統,
不使用MyErrorHandler
曾經是完全無法計算遞迴數字,
但是電腦計算機不可以連遞迴都算不出來,
所以我進行研究以後,
從外國文獻找到這個寫法,
經過工程化之後,
成功完成這個產生器。

Q: 不太能理解,這個框架會怎樣嗎?
A: 當時的鍵盤和光碟機常常
阻止與封印開發人員計算遞迴,
發出一種電子訊號使編譯不能成功,
經過測試以後!
這個框架可以有效阻擋你的光碟機
弄壞你的程式,是VC++2005的一種
安全性寫法。
隨著時間過去,
現在的光碟機越來越便宜,
如果你光碟機會影響編譯器亂跑,
都可以嘗試這個宗運框架的寫法。
當然!已經過時了,
只對WIN XP電腦
和2005年左右的光碟機有效!
現在仍然不穩定的編譯器雖然可以試試看,
不保證還能成功。

Q: pragma很討厭!
我要clean architecture不可以嗎?
A: 在遞迴運算,我只能這樣寫,
以符合XP電腦的VC++2005規格,
這是我的陽春作品!
我當時還連絡了兩三個其他的工程師
寫了一些其他程式碼,
妳可以多多詢問他人,
並且查閱現在20年後的文獻!
這個程式它不會是clean architecture,
因為當時的蘋果系統封印了微軟遞迴運算!
為了達成遞迴運算的教學和使用,所以
公布這個演算法這樣子。
我們如果寫成clean architecture,
蘋果公司又要封印微軟一次,
會有更多問題,
所以這次的程式碼不會是clean architecture。


Q: 可是你算的又慢又不準啊!
有組合跟重複的情形都沒有算!
A: 是否要計算重複要看需求,
我提供的是大量的可能性(possibilities)!
讓使用者有機會比對數學公式
與實際工程後的真正數量,
一個情況一個情況一個情況的算出來以後,
可以真正提高大家能力,
這才是這個教學系列的目標!
未來把int改寫成long long以後,
淘汰掉那些跑不動的硬體,
交給工業電腦的專業寫碼人員,
就可以開發更多也算的更多了!
維度可以提升的程式,
才是真正的程式。
我們都是主張多多討論,
如果只有酸民心態是無法團隊合作的。

Q: 宗運框架有實際用途嗎?
不要寫奇怪的pragma?
A: 要知道連接SQL2005,
一樣可以用這個框架!
雖然2005版以後有C#,更好用,
但是舊版電腦要連線要維護,
只有使用宗運框架。
如果有大量讀者詢問,
人氣夠多,我再另外寫文章敘述
如何連接宗運框架。
未來有時間,可能會寫?
一開始看起來很難,
但是這是工業級的遞迴程式,
工業化以後,
對電信業的工廠工頭來說不會是問題!


Q: 你的路走偏了!
現在已經進步到python了,誰還要C++啊?
A: 有哦!那就是簡單計算機:calculator。
不論是陽春的CASIO或是ARDUINO,
都採用類似電腦語言的程式在運作,
這些都是這個程式碼的潛在使用者!
語言要能讓它自己的話容量變小濃縮的,
才是真正的電腦語言。C語言就是這樣。
反觀python現在是龐大怪獸,容量巨大,
在濃縮自己語言這一點上面,
python還早咧。

Q: HASKELL一下子就算好遞迴了,
程式碼更精簡!
A: 很高興看到工業化
能夠做出更短篇幅的其他廠商程式!
只要是可以提高討論熱度,
我是不會反對這些未來工業發展的,
妳要想起來現在不是2005年,
已經過了很久了!

Q: VC++是單執行緒!
比不上python多執行緒!快停止開發吧!
A: 錯了!多執行緒會流行,
是因為有影片網路公司和
有線電視公司的寫碼人員。
但是簡單計算機不需要在短缺的記憶體,
儲存任何有線電視影片和程式吧?
越簡單越好!所以單執行緒跟超小EXE空間,
反而變成首選了。

Q: 那是EMBEDDED C++不是VC++ ?
A: 很高興20年後,
已經發展出EMBEDDED C++。
我樂觀看待未來發展。
至於VC++如何的比不過EMBEDDED C++,
其實不會啊!那都是C語言相容的,
妳要不要多借幾本教科書?
這些語言都有它的用途。

Q: 那麼到底是怎麼連接的?
A: EMBEDDED C++你要另外
查詢他們的技術書籍喔!
我樂觀看待未來發展。
別擔心!伺服器人員工作能力強大,
他們自然會發展其他新程式語言。
我已經沒有在工程師領域裡面了,
我還常常需要新書新知識呢!

Q: 那我不就要把它逆向工程
變成組合語言,
然後拿去裝在簡單計算機?
A: 當然有可能啊!
ARDUINO與逆向工程現在很有名。
我樂觀看待未來發展。

Q: 大家小台的都用iPhone,
簡單計算機也不需要算排列啊?
A: 嗯!2013年公布這個算法以後,
2023年的需求自然會降低囉!
任何工程問題計算好以後,
工業電腦就會拿去算新的問題,
不代表舊的計算沒有用啊!
這是時代會進步,應該樂觀看待!

Q: 到底幫助了哪家公司嗎?
A: 2013年公布算法以後,
現在不就需求變少了嗎?
演算法科技是否推動科技進步?
可以拿數據參考一下,
幫助電腦設備降價才是目標啊!

Q: 可是iPhone要貴一點啊!
A: VC++是微軟產品,微軟不是蘋果公司喔!
想通了嗎,
妳要不要參考更多教科書?
微軟現在市值比蘋果公司低,
蘋果比較貴,微軟比較便宜,
目標有達成喔!

Q: 這亂七八糟算法怎麼會是對的呢?
A: 階乘運算之所以會算出
無限多跟非常大的數字,
因為他在關鍵運算只用了乘法律和加法律!
而且他是正整數。
因為關鍵階乘運算沒有減沒有除,
所以正整數足夠加到無限多。
可以參考排列組合數學書籍的說明
來理解就可以了。
你要是改寫成亂除亂減,就會算錯囉!

Q: 最後請問怎麼沒有寫ASSERT?
A: 我沒有那麼多的工廠ASSERT技術哩!
這是一個陽春版的程式。
如果我來寫ASSERT,
還沒有機器就寫的話會是負面評價!
因為會減分!我不能寫,
要給下一棒接力,
交給工廠原廠工頭來寫才對!
而且,妳要不要多借幾本教科書?
iPhone現在太多人買,太貴了。
妳要不要考慮改用SAMSUNG手機?

Q: 找不到windows.h?
A: 可以下載並安裝微軟DirectX 9.0c SDK
安裝到windows XP系統。

//---End of Files---
*/