由VBA想到的

2021-05-24 06:41:01 字數 2888 閱讀 8234

這段時間由於工作原因研究了一下

vba,感覺完全是如墜五里霧中,主要原因是對

atl乃至對

com技術的應用不了解。簡單說一下

vba,用過

office

系列軟體的朋友都知道它,用

vb語法來控制文件生成過程,很不錯。不只是

office,

很多其它優秀軟體都有

vba模組,比如

autocad

。這些都是

vba技術的應用,作為程式設計序的,當然想把好東西都拿來自己用,

vba技術

無疑是這些軟體的亮點,所以成功地把

vba應用到自己的軟體中是當前這段時間要攻克的主要難題。

歷盡千辛萬苦找來了

vbasdk,

卻無從下手,看來還是知識儲備不足啊。相對於知識的貧乏來說,更令人惱火的是,微軟已經不再發放

vba的商業發行許可了,在這期間本人詢問了他們的市場人員

n次未果,這意味著,如果一旦把產品做出來了,發行的話要冒被罰的風險,不得已只能放棄。微軟放棄的原因無非就是沒有市場,或許還有別的原因。

沒有市場不能說這項技術不是好技術,是沒有多少人能玩得轉而已,就像燕翅鮑放在菜市場一樣,同樣沒人會光顧的。

vba的底層是

com技術,具體是經過封裝的

com技術-

atl。有關

com技術的書已經很少了,為了研究

vba,我從網上找了一些

atl的電子書,在電腦上看得很費眼,於是想買兩本紙書下了班看,居然搜遍網頁而不得。最終在**上買到了相對模糊的電子書印刷版,如獲至寶。

同樣是微軟的技術,反觀現在市場上大行其道的

.net

技術,書店的書架上則是琳琅滿目,應有盡有。尤其是

c#,現在畢業的大學生們其主修的課程就是c#。

這裡不得不說一下,同

atl以及

vba一樣

.net

技術的底層也是

com技術。每個勤於思考的程式設計師看到這裡不禁要問:同樣是生活在一起的兩口子,做

com的差距咋就這麼大呢?

這裡說一下兩種技術的根本不同,

atl需要人們要懂得最基本的

com原則,而

.net

就不需要。即使是已經了解

com原則的人們學習

atl也是頗費心思的,因為

atl中眼花繚亂的模板和巨集定義就夠人喝上一壺的了。不過這不難理解,

atl只是簡化了

com**的編寫,其它的則沒有變,幾乎就是直接從底層開始構建

com元件。之所以難理解,只是因為微軟的開發小組按照他們自己的規則把

com開發過程簡化了,而別人要理解這個規則需要一定的耐心和一定的時間。打個比方說,兩個特務在街頭對暗號,一句簡單的詞語就能知道對方想表達的意思,這個暗號規則就是

atl,

而普通人想知道暗號的規則是需要花時間的,當然,如果熟悉了,那麼暗號用起來還是事半功倍的,所以學習

atl的過程就是乙個艱苦的學習某個規則的過程。是對自己思維的改造過程。

而.net

就不一樣了,它採用的方式是以人們自然的思維去封裝**,是用自然的物件導向思想將

com技術封裝起來,使用者不用改變自己的思維,只是集中於程式所要表達的意思就行了。所以

.net

給人的感覺就是親切,用起來很順當。因為它是對

com技術的使用,而不是讓使用者直接從底層開始用

com開發,所以不需要使用者了解

com規則。這好比兩個不能見面的軍官,他們要交流的話,需要讓手下的特務來傳達他們的意思,這兩個軍官自然也不用去熟悉什麼暗語口令了,直接讓手下用人話告訴他們就行了。人們總是比較容易接受他們能輕易掌握的東西,另外,

.net

涵蓋了windows

程式設計的方方面面,無論是上層的資料庫、網路還是底層的文字編碼、多執行緒等都覆蓋到了,做起軟體來得心應手,再加之微軟公司的大力推廣,

.net

想不火都不難。

然而,.net

繁華的表面下是無數

com元件默默無聞的工作,好多人總是拿

.net

和com

來做比較,這好比說是拿一輛車和發動機來比較一樣,發動機是隱藏在車裡面的。車離開了發動機就走不了了,而發動機裝在其它的東西上也照樣能開,比如裝在三輪車上組成電動三輪。所以對

.net

和com

作比較是沒有任何意義的,有意義的事情是你如何來看待它們。

在目前我們國家的軟體環境來看,能賺錢是最直接的目標,能在最短時間裡賺到最多的錢是人們普遍的想法,所以軟體開發就以快速開發高額應用專案為主,什麼專案錢多就做什麼,什麼工具好用、開發快就用什麼。目前來看,還是國際外包專案比較錢多,而且有些國外客戶,為了縮短軟體交付時間,自己先把軟體結構設計好,然後再把最累最繁鎖的編碼測試環節交給我們的程式設計師來完成,更有甚者,把涉及到核心技術的**封裝成動態庫,只留給我們程式設計師呼叫的介面,幾乎就是在和我們的製造業看齊了。我想任何乙個程式設計師都不願意做流水線民工吧,而我們做的某些專案就是在擔當這樣的角色。

.net

設計的初衷是好的,為我們廣大程式設計師帶來了方便,而它的負面影響也是不容忽視的,

.net

程式設計師只需要知道呼叫哪個類的哪個函式就行了,弱化了程式設計師對系統的控制,並使我們逐步產生了對

.net

的依賴而無法自拔,長此以往,我們對系統底層知識,對軟體執行機理,對那些我們應該掌握的知識就逐步淡忘了。

由此看出,只做那些好做、做得快、賺錢多的專案,在短時間內可以獲得豐厚了利益,但是從長遠打算來看,終究不是辦法。軟體企業還是要有自己的核心競爭力,程式設計師還是要有自己看家的本領,向微軟學習,要學習他們不向任何複雜事物低頭的態度,要學習他們能夠制定自己的規則,而不是等他們制定好規則出來我們去遵守。像

com這樣的核心技術正在我們國家漸漸消失,不能不說是一種競爭力的削弱,期望我們廣大的程式設計師同行們在不遠的將來能看到這一點的改善。

由PageRank想到的

首先來看看什麼是pagerank pagerank 技術 通過對由超過 50,000 萬個變數和 20 億個詞彙組成的方程進行計算,pagerank 能夠對網頁的重要性做出客觀的評價。pagerank 並不計算直接鏈結的數量,而是將從網頁 a 指向網頁 b 的鏈結解釋為由網頁 a 對網頁 b 所投的...

由Cannot find file 想到的

記錄一下 今天除錯程式,單步真機除錯,我日,程式一步一步走,盡然和程式根本就對不上號。特別奇怪。思考一下,應該是工程太多太雜,自己有不小心,讓它們混在一起打架了。於是繼續,把其它所有工程都關了,只開啟乙個,清理了所有工程。與此工程有關的直接搜尋清理,一直以來覺得沒有必要,但這次是為了保險起見。編譯工...

由function AA 想到的

最近公司在做的是乙個後台管理 簡單的業務流程是這樣的,客戶下單,公司內部各個部門進行審核驗證等一系列的操作。暫時的開發人員只有我乙個人,其他小組的人同時在進行其他專案。的後台基本架構很快搭建出來了,之後就是各個基礎資料表維護的實現。過了幾天,這個專案調過來個開發人員。我是這樣想的,乙個人寫前端表單驗...