「方便」有的時候,不見得是好事 …

「方便」在某些層面上,的確不是見好事,特別是程式語言的學習。

比較Java與.NET,事實上它們的概念與實作,基本上是一致的,都是非常徹底的物件化語言開發平台,都以類別庫提供應用程開發所需的功能,萬事萬物均被封裝成為物件作處理。

儘管 Java 與 .NET 均是以OOP為基礎而發展的應用程式開發平台,但是你去觀察這兩者的開發人員,他們一開始入門的方向卻有很大的差異,Java開發人員會從文字模式開始入門,然後逐步討論類別、oop設計,瞭解基本的套件與核心類別的使用之後,才會進入Swing等視覺化設計的UI課程,相反的,.NET開發人員,一開始可以就直接從視窗下手,按兩下按鈕,建立事件處理程式碼,就開始了視窗程式的設計之路。

對於一個具備基礎的Java程式設計師來說,所謂的Java應用程式是:以Java言語為工具,OOP為基礎,引用現有類別與設計新類別,根據應用程式的對象,再決定以網頁或是Swing為視覺化UI包裝應用程式的內容。

對於一個具備基礎的.NET程式設計師來說,可能以為VB.NET是一種視窗應用程式開發工具,C#是一種視窗應用程式開發工具,ASP.NET又是另外一種Web應用程式開發工具,可能經過漫長的學習過程才會發現,VB.NET與C#其實只是一套語法,運用.NET類別庫與設計新類別的語法,而所謂的ASP.NET,只是以網頁為視覺化介面,透過VB.NET或是C#引用.NET類別庫與設計新類別建立的Web應用程式。

會有這些差異的原因,會有這些認知上的差異,很大的一個原因在於,微軟總是為開發人員包裝了很多好用、方便且功能強大的工具,入門者很容易透過這些工具建立.NET應用程式,但是,相對的,學習的方向也就同時被糢糊掉了。

回到前一篇討論的LINQ,.NET開發人員初次接觸這門技術,同樣將焦點放在它的方便性與一致性,然而,對於資料存取技術,只是為了將其包裝得更好用,更一致化,因此微軟大費周章的建立一套新的語法 ?? 我想,開發人員不會在意用SQL存取關聯式資料庫,更不會在意用API存取XML,更何況,這些技術他們都很熟了,而且夠好用了…

LINQ 經由物件來處理資料的搜尋運算,同時完美無縫的融入程式語言,就如同 if-then 等內建言法,成為語言的一部份,這兩點,才是 LINQ 的威力所在,從這裏出發,你會看見 LINQ 的價值,當然,要有具體的認知,需要一些範例來說明,未來,我們將針對這一部份進行更深入的著墨。

8 則留言:

Fish 提到...

其實我的開發經驗沒有許多,
不過以我個人親身的感覺,
基本上兩大陣營所主張的不一樣,
從語法來看是差不多的,
但到了屬性和事件之後的機制就不一樣了,
然而到後面的Web或分散式,
所用的開發模式更不一樣了,
可以從.Net 1.0看起,
微軟的教科書從不說UML,
Java的教科書一開始就有說這個,
但後來微軟到了.Net 2.0之後,
漸漸地講UML了,(現在還是沒有許多)
這二個東西深入學真的很不一樣,
光從JVM和CLR的機制就不太一樣了。
以上是對康廷數位兄的話,
所作的感想。

康廷數位 提到...

從技術本身的層面來看,是真的有蠻大的差異,畢竟是兩家完全不同的公司,但精神上來說是一致的,從OO出來,這點真的是非常的重要
無論如何,有了其中一種技術的經驗,要轉換就方便了。:)

呆呆 提到...

小弟覺得「方便」在某些層面上,的確不是見好事,但大多時候是好事,可以省很多時間,今天看了一小段由 章立民 老師 vb 20008 線上教學,其中 的 一個變數設定,本來要 dim x as integer=0 現在可以 dim x = 0,這就省很多打字的時間了,但小弟覺得其實可以更 簡單些,連 dim 都可以省了,因為打 dim x = 0 跟 x=0 是一樣的意思,且更合我們常人的想法.....!

這些本來就是程式器本身要去做判斷目前是什麼型別的,但還有要加強的地方,就像一個很簡單的功能,不知道 vb 2008 有沒有加入(我無 2008),例如 一個 Button1 內有寫一些程式碼,但複製的時候,應該連程式碼都複製,這才是真正複製,我在 2005 程式碼是不複製的,還要手動再去複製,有用過 foxpro 的人都知道,這點foxpro 就顯得 聰明多了,希望 vb 2008 把 foxpro 好用的功能都加入,讓我們這些 學 xbase 的老人可以由心底真正想用 vb,不知 2008 在程式效能上有無加強,一個 3 萬多筆的資料 用grid 顯示都覺得太頓了(2005),我用 foxpro 50 萬筆都覺得很順,希望老師能叫 微軟加強這點啦!不要一直要求使用者更換硬体,應該是如何讓程式輕巧,試想現在很多大賣場,公司,工場都還在用 dos + et3 +clipper (foxpro) 說,那些硬体都還只有 486 大有人在.... 以上為過年 又 老了一歲的老人 的牢騷,希望大家不要見怪!

風之幻術師 提到...

很同意呂大的看法。 在下正自學java中。也學過vb6。

java真的用記事本在學…。初學者,建議事用記事本學。等熟了後,再用IDE。
java也是有IDE可用。

且還真多…。

康廷數位 提到...

老實說,我並沒有用記事本學Java,因為很懶,而且語法還有方法名稱屬性記不起來,所以一開始就直接用NetBeans,哈 …

不過有一段時間沒碰了,今年或許有機會再接觸,Java是個好東西,祝你學習順利

Good Luck ^^

康廷數位 提到...

Hi,呆呆,FoxPro本身就是針對單機資料庫所需而設計的一種工具程式,它與整個.NET平台很難去類比,就像專為某種賽車比賽設計的跑道,沒有辦法與整個都市建設所建構的交通公路網作比較的道理是一樣的。

同樣的,複製的問題也是一樣,在沒有OO的時候,複製程式碼是很方便的作法,對於.NET或是Java這種平台而言,反而會變成一場災難。

至於資料,這牽涉到效能的調校,.NET強調跨網路運算,如果你只是要作作單機或是區域網路的資料存取,事實上還是可以弄到很順的呀,當然,這牽涉的細節太廣了,這裏就不討論。

至於軟硬體,哈哈,這牽涉又更廣了,與人類的經濟發展有關啊,不一直汱換,經濟就會停滯,弄不小心,會崩盤,人類文明毀於一旦了XD

扯太遠了,新年新希望,祝呆呆今年功力突飛猛進,一起努力學.NET吧…

Good Luck ^^

cv85609 提到...

您好,請問一下,VB2008相較於VB2005,有增加很多新東西嗎?除了LINQ和Sliverlight之外,其他的基本工具和語法有沒有差異很大?看了悅知2008書系中,ADO.Net 3.5 和 VB2008 這兩本的目錄,看起來似乎都是講很基本的東西,若和VB2005差異不大,有點猶豫該不該買。另外悅知不打算出 ASP.Net 和 LINQ VB語法系列的書嗎?雖然觀念一樣,但C#看了有點吃力說,又沒辦法現抄現用,呵。

康廷數位 提到...

Hi,cv85609 ,這一次的2008對於技術本身,C#與VB.NET主要在於擴充了語法對於LINQ支援的部份。

ASP.NET則是整合了Ajax的擴充套件進來。

比較大的主要在於VS工具的功能的增強,例如JavaScriprt的編輯支援,可以分割對照的網頁原始檔與所見即所得畫面。

另外,就是將WCF、WPF等.NET 3.0的東西整合進來。

除了上述這些,事實上與.NET 2.0是相同的,悅知這一次的書系,的確是定位在入門的部份,至於VB語法系列,我在「 工商時間 - Visual Studio 2008 書系 」這一篇的留言回應裏面有作了一些說明,你可以看一下。

祝 學習愉快。:)