寫程式簡不簡單?可以說很簡單,也可以說非常困難!
如果您只要能在一個 function/method 內運作正常,那麼的確,只要邏輯觀念好,知道 if/else/true/false/loop 在幹嘛,知道如何操作資料結構,把您的想法化成演算法,那麼要搞定一個一個 function/method,不是難事。
但是網站不是搞定一個 function 即可!
從底層的資料庫規劃設計,如何設計 key , database (de)normalization , key efficiency , connection pool , transaction , locking , table type (MyISAM/InnoDB for example) 這一門很重大的學問,如果系統龐大,甚至得請專門的 DBA 來管理資料庫。挑選資料庫也是學問, MySQL , PostgreSQL , M$ SQL Server ... 如果資料量龐大,甚至還得考量現在最夯的 NoSQL database,而這部份又是百家爭鳴還沒一個標準, MongoDB , Cassandra , HBase , CouchDB , blah...blah...
有了資料庫,上面要有一層 cache 吧? 該使用哪種 caching server ? 要用 JVM 的 ehcache 還是 Terracota (if you choose java) , 還是 scripting language 比較常用的 memcached ? 而 cache 要如何 evict objects , 總要有個機制吧? 看是要寫在程式內還是利用 timeout 來 evict ? ...
再到中間的邏輯層,也就是您的演算法所在之處。您要如何包裝/封裝您的邏輯,使其擁有最高的可重複使用性 (reusability),這更是 OOA/OOD 必須要修練的課程。我常說,
中文人人會說,但是詩詞並不是人人會作。您的程式邏輯可以寫得落落長,醜不拉機的,也可以寫得簡潔有力,程式各個元件(Objects/methods)之間 封裝/de-coupling 得非常漂亮,其他人看起來都會非常讚嘆,這就是「功力」的不同!並不是每個程式設計師都有這樣的功力!
更何況,您大概還會想作一些分析統計的東西,這對程式設計師而言,又是另一個不同的領域,本站做過初步
資料探勘 的嘗試,這底層都是數學啊!您要怎麼採樣、是否要導入 fuzzy 參數、要如何 training 等…這些都是資工、資科研究所 碩士博士在研究的議題啊。我相信您目前的想法只是「利用大量的統計數據來論命」,但是您可能不知道該怎麼做,因為您之前也許沒碰過這方面的資訊。建議您可以去看看資料探勘的相關資訊,會讓您更知道該「如何做」!
讓您的思路變成
採樣的依據,讓電腦學習,這應該是您要瞭解該如何做的地方。類神經網路、 Decision tree 都有數十年的發展,論文也滿坑滿谷(我曾受荼毒啊
),只要您數學夠好,也許可以從中挖掘出一些寶藏!
資料庫、cache、business layer 講了,到了最上面的 presentation layer,一般而言就是 HTML/網頁 啦。這東西要說簡單的確簡單,但是您要怎麼「刻」出一個HTML網頁,卻是很大的學問!但我相信您應該是請人來寫,所以這部份我不提了。我之前建議您,可以從 web prototyping 學起,因為 web prototyping 是「網頁設計師(美工)」與底層的「程式設計師」共通的參考依據。Mmm...也許您可以找得到一位可以同時搞定「網頁」以及「底層程式」的人,那當然最好囉…
外面接案寫網站的公司,一般而言有很多步驟要跑。第一步驟就是「需求分析」,因為案主(付錢的人)可能不懂程式、不懂底層、不懂上層,只有一個模糊的概念。而「需求分析」就是會有專員訪談,知道您到底要做什麼,其中會採取什麼技術,會有什麼障礙。並且,最重要地,釐清您的架構,使您模糊的概念變成清晰的條文。我認為您缺乏這一步驟,可能會走許多冤枉路! (就像我絕對不建議您使用 FoxPro 開發程式)
並不是簡單這幾個字「讓電腦模仿我解盤的思路」就夠了,底層的演算法可能需要多個碩博士的人進來參與執行!而這些參與人員畢竟不懂占星,而這些規則您必須詳細定義。比如您拉出一條規則「日月正沖,交角10度」,那麼您的意思是:交角 170-180 之內,都賦予一個TRUE值,其他則為FALSE ; 還是您要引入
fuzzy 機制,讓 175-180 是 1.0 ,之後慢慢往外線性下降(或是某種非線性函數),到 165 降為 0 ? 這就是規則的「
採樣」! 採樣完了還要開始訓練您的 model,我是建議您這可以設定為中期的目標。因為 model 的 training 是一門非常大的學問! a lonely way , 而且很有可能找了半天,設定一堆條件,卻發現電腦怎麼學不會一個最簡單的占星ABC!It's very frustrating! 而 training 好了要如何把這個 model 化為程式來執行,這就是程式設計師的工作了…
我不是要「嚇」您做一個網站有多難,因為我發現您可能不知道您以為的一個小需求,其實是一個很大的黑洞(技術/時間/財務)! 尤其與AI相關的東西,在理論以及實作上,都有許多困難要克服… 除了最核心的AI之外,現在有一些比較簡易的網頁程式開發方案,例如 Rails(Ruby)/Django(Python) 可以簡化不少 design/architecture/layer 的時間以及複雜度,甚至您一個人有空去摸摸也可以寫出一個簡單的動態網頁喔(留言板/討論區之類)!