網路城邦
上一篇 回創作列表 下一篇  字體:
便宜的軟體一樣很好用
2014/02/11 21:57:36瀏覽8425|回應5|推薦14

寫程式入門時當然會選用便宜甚至免費的程式軟體,但是當程式越寫越大,越寫越複雜越,越專業之後,是不是有必要開始用較專業等級,也就是較高價位的軟體呢?我們總是會被廠商或一些「高手」灌輸「工欲善其事,必先利其器」的「正確」觀念,忍不住去花錢買較高檔的軟體。

通常在我們還不知道高低價軟體對自己的工作有何效益之前,我們已經擋不住誘惑(或者虛榮),開始採用較高階的昂貴軟體,似乎這也是「專業」與「技術水準」的一個表徵,如果你都已經在寫軟體賺錢了,還用免費版的程式或資料庫,似乎有失身分地位欸?是不是呢?即使不花錢,也必須使用那些已經成名有口碑的免費軟體譬如LinuxPHPMySQL等等。

或許是因為客家人的節儉天性,我一向是能省則省,不會迷信高昂的價格後面會有甚麼神祕不可測的好康!如果有人說某種程式很厲害,或者某種資料庫特別「強」,我會直接去讀資料或找機會測試,看看是不是真的貴得有道理?即使貴得有理也會看我有沒有必要使用到那種特強功能。甚至我都知道那個軟體確實可以合理提升我的程式效能了,我也未必會花錢(或找錢)去買!因為我既然知道它比便宜軟體好的原因之後,我自己就會寫程式啊!所以會設法自己寫程式達到那種效能。所以要我花錢買軟體還真的好難!哈哈!

不怕各位行家先進見笑,目前我寫這個看來非常龐大複雜的路口監視器車牌辨識系統,都是使用微軟的免費版VB Express 2010Web Developer Express 2010寫的!連資料庫也只是用隨處可見的Office Access 2010!我不排斥真的有必要時會改變使用的程式或資料庫軟體,譬如C#我也很熟的,都寫了兩本書。但是目前面對所有的質疑,或者說大家批評便宜軟體的缺點,我都有合理的程式補救機制,效能不輸給高檔的程式或資料庫軟體。其實我只要說我用VB寫這些程式,已經會笑掉很多「專家」的大牙,但是我希望他們看到我的成果後笑不出來,而是讚嘆!看起來我很有機會。

譬如說,經過一番提升效能的程式設計努力,我的系統搜尋資料的速度可以快到一秒比對約30萬筆資料!目前本系統一天大概可取得50萬張有效照片與辨識結果,按合約規定必須隨時保存兩個月內的資料,那就是三千萬張了!因為系統是陸續建置的,目前剛剛跑滿兩個月,但是裡面的照片資料不滿三千萬張,約兩千四五百萬吧?想像一下,如果要找一個車牌就必須比對三千萬筆資料庫內的辨識結果,如果一秒鐘比對一萬筆(不算慢吧?)也需要3000秒就是50分鐘了!這是一般人無法忍受的。

我們小本經營,現階段不可能去買幾百萬的高檔(高速)的資料庫系統,我當然就把這個當作挑戰,努力讓搜尋時間降低到可以忍受的範圍,而且還是只用VB+Access而已!經過幾天的努力,結果就是一秒30萬張,3000/30=100,大概一分半鐘就可以查完整個資料庫,當然實際使用時都只是查某幾天的資料,大約幾秒到十幾秒就夠了。(本文發表後,此系統最終速度是達到一秒一千萬筆!)

厲害吧?如果你一開始用一般ASP.NET書上教的範例,當然也可以做出一樣的功能,但是速度絕對不會這麼快。雖然我的查詢系統表面上是網頁,但是實際到資料庫進行查詢的是另一個VB程式,不是網頁上的ASP.NET程式,因為網路資料庫架構下的查詢當然比在本機資料庫內查詢速度慢一些。但是你要如何將網頁上收到的查詢條件(任務)「外包」給另一個桌上程式?查到資料後又如何傳回網站讓網頁使用者看到呢?這有點難吧?

更有趣的是兩個程式(網頁與桌上視窗)可不是完工之後才一次交件的,雖然是網頁,但還是會一秒鐘回報一次進度,甚至一條一條顯示查詢結果!這表示兩個異質的程式是持續互動的。這樣即使查個一分多鐘,因為你一直都知道目前進度與結果,所以一點都不覺得慢!一秒半就可以查完一天221個站的五十萬筆資料,誰能說它慢呢?

結論是:在程式世界裡便宜免費的程式軟體未必不能產生高效能!好的效能其實來自特定的程式技巧,而不是封裝高貴的軟體品牌。如果可以掌握關鍵技巧,只需要幾行程式就可以讓你享有高價軟體的效能。正如武俠小說裡說的,真正的高手飛花摘葉都能傷人,哈哈!這比砸大錢買高效能軟體要好玩太多了!

PS.怕觸犯個資法,車牌被小畫家擦掉了!而且這個網頁當然只有警察杯杯和我們工程師看得到。

( 心情隨筆工作職場 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=yccsonar&aid=11086577

 回應文章

李牧師
等級:4
留言加入好友
2014/02/13 08:23
你要賣的產品程式是不是別人寫的>>>>哈哈哈哈!原本我只管architecture framework及背後的simulation理論,,程式的部分交給T大電機系畢業的博士。。。結果,,程式給我寫一年寫不出來,,,老頭子我只海親自下海,從C C# C++ JAVA Matlab...慢慢學try and error自己寫程式,,發現簡直比小時候做童工還好玩,無法自拔,搞了四個月,,完成基本上是我想要的功能都有了。笨手笨腳的演示給【潛在客戶】看過,,對方要的仍然是背後的理論,而不是這套軟體。那位電機系的Phd被我fire了!但是我仍然是外行人連VB, Execel, Access都笨手笨腳的,,年紀一大把才學程式設計,算是程式設計的鱉腳新生兒^^

李牧師
等級:4
留言加入好友
2014/02/12 22:56
謝謝院長!再魯您一些可能會被笑的問題!!目前老頭子我用免費的Appserv在Ubuntu-server+desktop(嘻!!我給他亂搞兩種功能都Install到我的PC),然後架了一個網站,在網站裡放了一個我亂搞的暫時叫【兵棋推演程式】人們可以上網在我的網頁跑兵棋推演程式(將來打算要收費的,目前還在測試中,還沒開賣!也許沒人要!^__^)。。。用Appserv裡面有Appach+Php+MySql+Myadmin這種【免費的】的軟體來【營利】,尤其是:如果是用MySql來營利是不是違法??
鄉下老師(yccsonar) 於 2014-02-13 07:27 回覆:

你說的都是合法免費軟體,多數玩家或業界不想花錢的人都是使用這種架構,至於你要賣的產品程式是不是別人寫的,要不要收錢就是你和作者之間的問題了!


李牧師
等級:4
留言加入好友
2014/02/12 21:14
院長先生您好!您說了這一段【不怕各位行家先進見笑,目前我寫這個看來非常龐大複雜的路口監視器車牌辨識系統,都是使用微軟的免費版VB Express 2010Web Developer Express 2010寫的!連資料庫也只是用隨處可見的Office Access 2010!】>>>那麼用Office Access 2010放置資料庫的server所使用的OS豈不是要用Window?而使用微軟的免費版VB Express 2010Web Developer Express 2010寫出來的程式,可以在Linux作業系統跑嗎???對不起喔!!你降當作是在交一個喜憨兒使用電腦!!^__*
鄉下老師(yccsonar) 於 2014-02-12 21:20 回覆:

VB是微軟產品當然必須在微軟的作業系統下跑,正常狀況下Linux是不支援VB的。


雲明
等級:8
留言加入好友
2014/02/12 20:10

鄉下老師這樣太老實了,那「城市公司」的人會將問題搞大,然後追加預算、補充設備、升級軟體、公司賺錢……就像新的戶政系統那樣,現在廠商應該會獅子大開口。

鄉下老師(yccsonar) 於 2014-02-12 20:26 回覆:
確實很多人是這樣賺錢的,但這些Dirty job要不要做是老闆的責任,我還是努力降低成本,真正有對手時技術就是優勢了!其實這次嘉義市的案子沒被工研院拿去,可以輪到我們,正是因為我們可以用便宜的價格開工。通常也要系統已經上路之後比較好敲詐嘛!哈哈!就像我們的校務系統一樣,一綁就是十多年,一直保持很爛的品質,卻如附骨之蛆,揮之不去!

李牧師
等級:4
留言加入好友
2014/02/12 15:10
VB Express 2010Web Developer Express 2010寫的!連資料庫也只是用隨處可見的Office Access 2010!>>>我是老年轉業的外行人啦,,真正花時間自學電腦才四個月,,請教一下,這樣的話,主機是不是一定要用 Window的作業系統??我喜歡不用錢的我笨蛋耶Ubuntu
鄉下老師(yccsonar) 於 2014-02-12 19:13 回覆:
問題有點籠統,很難回答!你是要學甚麼?寫程式?還是一般的電腦軟體?完全不同的意義。