天天看點

學ASP.NET入門程式設計,合适麼?

現在都快找不到ASP.NET的教育訓練課程了。

知道我要開課做教育訓練,有同學勸我:“憋講那什麼.NET,講Java,現在這個火!”我說我Java不熟,“唉呀!C#轉Java,分分鐘的事!以飛哥你的經驗,……”

其實,我是有點心動的。不得不承認,他說的都是事實。要不要再回頭把Java撿起來?……

+++++++++++++++++++++

這裡我突然想補充幾句。在【超劃算】免費課程,付費講解 裡我提到:能自學,就不要教育訓練,可能有些同學還沒明白為什麼。其實很簡單,就因為自學能力是開發人員必不可少的能力。做程式員,想吃老本,是不可能的。

以飛哥為例,當年轉行做程式員,教育訓練學校裡學的是Java Web和WinForm,但第一份工作就是做的ASP.NET WebForm開發。這玩意沒人教啊!都自己學的,看書看視訊,一點一點琢磨,論壇QQ群到處提問(一起幫的靈感應該就萌芽于這個時候吧?哈哈哈,臭不要臉的打個廣告……)之後沒多久,DataReader都還沒捂熱乎呢,就出來了Linq to SQL,怎麼辦?還是得自學。莫非因為這個你還再上個教育訓練班?接着WebForm頁面生命周期還沒捋清楚呢,MVC又橫空出世,得!又悶着頭追呗。再後來什麼NHibernate,JQuery,Bootstrap,Autofac,AutoMapper……現在“一起幫”上使用的所有技術,沒一個不是自學的。

是以,你要明白:哪怕是你參加教育訓練,也隻是帶你入個門而已。“師傅領進門,修行在個人”,後面的路,太長太遠太多分岔,你最後走到哪,沒有人知道。

你看,飛哥學Java web的,結果做ASP.NET;你現在學ASP.NET,誰知道你以後做什麼呢!

+++++++++++++++++++++

咳咳,回主題,左思右想之後,我還是選擇開設ASP.NET課程,為什麼呢?

  • 從我自己的角度考慮,ASP.NET我最熟悉,這是教學品質的保證;
  • 從同學們的角度考慮,ASP.NET入門軟體開發也是一個不錯的選擇!

首先,現在.NET平台真的是一支潛力股。

要明白這一點,要先明白為什麼現在.NET涼了。其實這個“涼”字,就意味着它之前曾經“火”過。火都沒火過,怎麼涼呢?從小就生活在“網際網路”時代的孩子不知道,在網際網路之前,是PC時代。所有的軟體,幾乎都是windows桌面軟體,微軟才是當之無愧的霸主。用Java開發的桌面系統,你根本就不敢用。是以Java所謂的“跨平台”其實就是一句空話,windows平台就沒它什麼事。那時候開發應用程式,流行的是VB,或者C++。

然後,進入網際網路時代(直覺的說,就是大家都開始“做網站”),出現了PHP、JSP和ASP三足鼎立的格局。現在看來,這三個技術都是非常原始和粗糙的,本質上就是在靜态網頁裡面“嵌入”動态内容,在性能、安全和代碼可維護性上都有相當大的問題。

2002年,ASP.NET WebForm(差別于現在流行的ASP.NET MVC)橫空出世,一時風頭無兩。因為都是過去時了,我就簡單的說一下為什麼,三個原因:

  1. 編譯執行。極大的提高性能和安全性(至少理論上是這樣的)
  2. 通過頁面控件實作“表現層和背景邏輯分離”。即使在現在,這都是一個非常了不起的設計理念和技術成就。雖然因為各種各樣的問題,目前MVC成為主流,但我相信,這是一個“波浪式的前進,螺旋式的上升”的過程。
  3. 頁面事件機制。習慣于WinForm開發的同學,可以無縫對接到Web開發。

當然,還有仿Java的C#語言功不可沒,這個後面我單獨講。

有同學可能要搖頭了,大飛哥你吹牛逼不上稅,ASP.NET這麼牛逼,那它為什麼就“涼”了呢?

别急,說完了好的,我們再說差的。歸根結底,微軟在兩個方面犯了錯:

  1. 不開源。前些年,微軟在開源這個問題上,幾乎得罪了所有的程式員。程式員,尤其是“優秀的”程式員,是一群要“打破砂鍋問到底”滿腦子黑人問号的家夥,code is everything。你不給我看源代碼,對不起,不和你一起玩!o(´^`)o
  2. 綁死Windows平台。之前的.NET,雖然理論上是完全可以跨平台的,但微軟為了自己的利益,一直把.NET Framework死死的綁在windows平台。這就帶來兩個問題:
  • 費用。這個就沒什麼好說的了。Linux是免費的,而windows得花錢買,而更大的問題是:花錢買的還不如免費的!windows做為桌面系統,那是沒說的;但是作為伺服器,和Linux相比,确實笨重了些。不說其他的,就圖形界面一項,就帶來了伺服器CPU、記憶體,以及遠端管理帶寬上的負擔。
  • 安全性。一是由于微軟沒有開源,客戶擔心你微軟自己有沒有做什麼手腳;另外就是大衆(包括大部分程式員)普遍認為:windows沒有Linux安全。不管事實是否确實如此,但人們就是這樣認為的,你又能怎麼辦呢?

是以,那些年,微軟是眼睜睜地看着ASP.NET由熱變涼,一籌莫展。很多.NET開發人員,都不得不轉Java,轉PHP去了。

好在這些都已經是老黃曆了。2016年6月27日,微軟正式釋出.NET Core 1.0 RTM版本,徹底的開源、真正意義上的跨平台,完美的解決了之前制約自身發展的兩個核心問題,伺服器不想用windows,用Linux吧!一下子什麼問題都解決了。這一天,雖然來得稍微遲了一些;但無論如何,他終于來了。我相信,這必将.NET的發展帶入一個全新的廣闊天地!而 Windows Build 2018 開發者大會,更是給我們帶來了驚喜,接下來的.NET Core 3.0,除了傳統的ASP.NET(網頁開發)、Unity(遊戲開發)、Xamarin(跨平台),居然還會支援人工智能(ML.NET),哈哈,這是要逆天啊!

形象點說,.NET天生麗質,但以前太“傲”了還有點“作”,但現在人家已經放下身段,程式猿同學,這時候還不一親芳澤,可惜了喲!ʅ(‾◡◝)ʃ

雖然飛哥寫得嗨,可能有些同學已經暈了:“你說的這些我都不懂,能不能簡單點?學這什麼ASP.NET就業形式怎麼樣?”

呵呵,“面向工資程式設計”,了解了解。

首先,你要了解一點:工資的高低是和能力挂鈎的,而不是語言種類。做一個簡單的歸謬你就能明白了:假設工資高低按語言依次排序,A語言 > B語言 > C語言……,那大家都一窩蜂的學A語言去了,C語言不就完蛋了?或者用人機關又不傻,不會都搶着用C語言開發降低工資成本?你說會不會因為A語言很難學會,是以……安啦!不可能的,隻是一門程式設計語言而已,哪有這回事?别說現在這些語言都是接近自然語言的進階語言,就是彙編,其語言本身,也是非常簡單的。你現在覺得難,你沒學沒用而已。中英雙語人才難找,但會個七八種程式設計語言的,一抓一大把!主流程式設計語言其實都非常接近,差别也就重慶話和東北話一樣,就這點差别,還可能展現在工資上麼?!

有些同學可能不服了,“哪裡?Java的工資就比.NET的高,好吧?”我們姑且認為事實确實如此(飛哥也沒做過統計,我更傾向于是初級的Java開發人員工資比初級的.NET開發人員工資高一點,但都是初級,高也高不到哪裡去,呵呵),原因是什麼呢?

我覺得,其本質是“Java入門要比.NET難”。這倒不是文法層面的難,而是各種配環境協調中間件亂七八糟的東西,學Java就必須搗騰這些玩意。.NET就不同了,靠着微軟這顆大樹,坐擁Visual Studio這一宇宙最強IDE,開發環境就一個“微軟全家桶”。甚至在WebForm時代,拖拖控件連個資料庫就可以開發了,小白同學不知道多開心……但是,随着.NET Core問世,這種現象肯定會改變,.NET Core的配置就麻煩多了。此外,微軟的東西,簡單有簡單的做法,進階有進階的玩法,歸根結底,還是看你自己的努力程度。到了一定的高度,語言平台其實都不是關鍵。

我經常對像轉行和正在轉行的同學講,入門的工資,真的不要太在意。先入行,有了第一份工作再說!

那學ASP.NET,工作好不好找?我覺得,無論你學什麼語言,都差不多,第一份工作肯定比較難,你沒工作經驗啊!

有些同學說“Java好找工作一些”,理由是“Java相關的招聘崗位多一些”。結論我們暫時不管,這個理由明顯是有問題的。Java的崗位多,但現在學Java轉Java的人也多啊?

作為求職者,大體來說,就業市場總是處于一個“動态平衡”的狀态。我已經不止一次的聽人說,“.NET不好人”,項目沒辦法轉Java了。随着.NET Core的推出和普及,我相信.NET有了更多的底氣堅持.NET平台,情況會越來越好。但即使是現在,.NET也不是一個“小衆”平台,怎麼也比什麼php、python,甚至ruby、perl之類的強,找份工作,問題不大。

另外,大家關不關心“加班”的問題?是不是聽說過很多996,行軍床,7x24輪班,以至于程式員死在電腦前的流言?但飛哥做程式設計10年了,就沒怎麼加過班,哈哈。我也琢磨過這事,是不是運氣太好?後來覺得還是托了ASP.NET的福。一方面,願意選擇ASP.NET、肯花錢買windows server(伺服器沒人敢用盜版)的公司,“壓榨人工”的渴望就不太強烈(這個表述大家領會意思就可以了,不要怼飛哥。我知道,這個推斷是不全面的、不可逆的)。另一方面,使用ASP.NET的多半不是網際網路行業,做的是2B(to Business)系統,一般都比較成熟穩定,緊迫性不高,比較從容;不像2C(to Customer)那樣“趕”,需求今天改明天變,而且是你追我趕的要“啖頭湯”。是以作為開發人員,雖然收入上會少點,但以飛哥這個年紀來看,命還是比錢要重要些。

+++++++++++++++++++++

好長,是繼續寫呢?還是下回分解?

無論如何,中場休息會兒吧,先,O(∩_∩)O~

+++++++++++++++++++++

接着寫。

選擇由ASP.NET入門,還有以下幾個好處。

ASP.NET是一門綜合技術,适合打底子。

大體上來說,學會ASP.NET,你應該掌握以下相關技能:

  • 前端。包括HTML,CSS和JavaScript。這裡順便說一下,飛哥的課程會使用JQuery和Bootstrap,而不是“更極端化”的Vue或者Angular之類的,嗯,具體的理由課程裡講吧。一言難盡,而且容易引發口水戰,哈哈。
  • B/S系統(Web開發/網站開發)相關知識。比如GET/POST請求、Http協定“無狀态”、cookie、session、重定向等等。這些東西都是通用的,無論是ASP.NET,還是Java Web,或者PHP,都一樣。(其實我一直有點好奇,“純前端教學”是怎麼弄的?比如學習Ajax,背景的接口怎麼辦?誰提供這個接口?教育訓練學校公開一個接口,讓同學們調用?那我要改改接口呢?還有,往背景傳值呢?怎麼看傳值過後的變化……)
  • C#語言。C#是一種通用程式設計語言,除了可以開發網頁(ASP.NET),還可以幹很多很多事情。桌面應用(Winform/WPF)、遊戲(Unity)、手機APP(Xamrian),幾乎啥都能幹。以及接下來.NET Core 3.0的人工智能(ML.NET),哈哈,是不是要逆天?
  • 資料庫操作。和學前端必然要了解一定的背景知識一樣,ASP.NET一定會調用資料庫,是以操作資料庫的SQL語句,“增删改查”你得會。

當然,在此基礎上,你還會接觸到一些計算機原理(記憶體/磁盤/CPU)、資料結構和算法(池/樹/散列)、系統安全、性能優化,以及系統架構等方面的知識。

很多同學想轉行做開發,但不知道具體的方向。我收到過很多這樣的問題,也很頭痛,不知道怎麼回答。

前面已經講了,任何一個方向都可以很有前(錢)途。是以,最理想的不是你以為的,或者教育訓練機構吹噓的什麼“簡單”“好就業”“有前途”的技術,而是你感興趣你有天賦的那個方向。但是,你對什麼感興趣,你對什麼有天賦,飛哥怎麼知道呢?這就像“小馬過河”一樣,水深水淺隻有你自己試過才知道。

+++++++++++++++++++++++

又跑個題,有兩種成本,人們總是錯誤的了解:“機會成本”和“試錯成本”。

機會成本,總是被有意無意的忽視;而試錯成本,大家下意識的抗拒。但很多時候,“試錯成本”是必不可缺的——人的成長依賴于這些錯誤。

比如飛哥我,學國貿做律師,搞裝修寫代碼,一路折騰過來。後悔麼?很難說。但是,我知道,如果不是這一路折騰,我不會像現在這樣活得透徹。很多人,哪怕功成名就,在外人眼裡風光無限,但從内心來講,他們是迷茫的。(飛哥就不謙虛了,哈哈)

很多同學說他很迷茫,我明白這種迷茫,看不清前面的路嘛。但我真的無能為力,首先飛哥沒那種未蔔先知的本事,我也看不清未來,誰敢說他看得清未來?那不都是神了?!其次,這未來是你的,是你自己選擇你自己創造的。“走自己的路”,非常重要。有些家長,不,應該是很多家長,想要給孩子鋪一條他們認為的“金光大道”,從來不問孩子願意不願意。結果呢?孩子們“叛逆”“不聽話”“和父母鬧”,甚至很多人間悲劇。“我吃的鹽都比你吃的飯還多”,“我都是為你好”,“我……”,家長們覺得自己很委屈。

但我是站在孩子們這一邊的,哪怕孩子選的路,更崎岖更艱難。因為每一個人都是獨一無二的,他們是擁有自我意識的生命體,而不是别人的克隆體。他們要有自己的喜怒哀樂,自己的人生價值。

你看家長們說話,都是“我”怎麼怎麼,這個“我”,像不像一個“找”字?

認識自我,成就自我,就是一個不斷尋找的過程。要去找,找到屬于自己的那一撇,成就一個大寫的“我”。别人領着你,不是找,要自己去找。找嘛,就是東遊西蕩,這裡瞅瞅,那裡看看。怕沒有用,不去找,你永遠找不到。我看到很多人裹足不前,我看到很多人随波逐流,一輩子懵懵懂懂,一輩子郁郁寡歡。

+++++++++++++++++++++++

書歸正傳。

前面我也說了,入門學什麼,和你之後幹什麼,沒有絕對的關系。所有的教育訓練,都是帶你“入門”而已,什麼“教育訓練三個月,相當于三年工作經驗”之類的鬼話,信它就有鬼了!在入門階段,廣泛的“見識”是非常有必要的。注意:我說的是“見識”,不是“基礎”。因為很多人一說“基礎”,就是計算機原理,資料結構啥的。不是這樣的!真不能“再多說幾句”了,簡單點,見識就是“看見認識”,一個簡單的了解,在此基礎上,你才能知道,你的“興奮點”在哪裡;然後,一步一步地找到自己的方向。

學了ASP.NET這整個一套技術,你以後可以做前端,也可以做背景,或者像飛哥一樣做全棧;或者,不做ASP.NET,做JSP做PHP,也就是把C#換成Java或PHP而已;再或者,有了C#和資料庫的基礎,你還可以做桌面做遊戲,做人工智能,一切皆有可能!

我們這種“課程免費,付費講解”的模式,可以最大程度的降低你的試錯成本。反正聽課是免費的嘛,有了興趣有了方向,再花點“打賞币”深入鑽研就是了。

不得不說,其實我有一個夢想,\(^o^)/~

假如“一起幫”這種模式能夠普及的話,我們是不是就可以有一個涵蓋各種語言各種技術的“大課堂”?然後所有同學可以免費的自由“選修”各種課程,會不會發展出一種新的教學模式?

路漫漫其修遠兮,再說吧,哈哈。

接着說,選擇ASP.NET入門的下一個理由:C#确實是一門非常優雅的語言。

相較于其他動态網頁開發技術,ASP.NET所獨有的C#語言:嚴謹、優雅、開發人員友好……就語言本身而言,除了“文法糖”稍微多一點以外,幾乎沒有槽點。(但飛哥個人而言,是超喜歡這些文法糖的……)

弱類型的腳本語言就不用說了,所謂的“靈活”其實就是“坑多”,所謂的“輕量級”其實就是“幹不了啥大事”——典型的就是JavaScript!真的是“女淚男沉”,說它“生于倉促,死于……”,還TM死不了,最近活得蠻滋潤。JavaScript的曆史,真的充分證明了“隻要站在風口上,豬都飛得起來”這句話。但這玩意真不适合教學,尤其是初學者。我之前的課程,講完HTML和CSS之後,根據投票結果,先講JavaScript,唉喲,那個之難受啊……看來有些東西不能确實是不能講民主的啊!

C#,是現代化的、工程化的、強類型的、預編譯的、真正面向對象的進階程式設計語言。雖然最初是模仿Java,但青出于藍而勝于藍,從2.0版本引入泛型開始,就拉開了和Java的距離,之後引入Linq、靜态擴充方法、Lamda表達式等文法特征,不誇張的說,甩出Java幾條街。C#缺的,是“平台支援”和“社群環境”,也就是之前一直“不開源”拖的後腿。.NET開源跨平台,真的是大勢所趨人心所向。.NET Core一經宣布,.NET陣營一片歡欣鼓舞,甚至高呼“Java可以去死了(強烈推薦,“濤吳”知乎2.1K高贊答案)”。當然,這隻是情緒宣洩而已。.NET生态環境的完善、意識的轉變,還需要時間,是以我說“.NET是潛力股”,在目前來看,它還隻是有潛力,真正形成絕對優勢,再怎麼也是三五年以後的事情。而且Java也不會閑着,接下來,在Java語言的完善上,Oracle應該不會像之前那樣,拖拖拉拉一直跳票了。

為避免口水戰,特地聲明一下,飛哥對Java沒有任何惡意啊!要不是Java/PHP之類的壓力,.NET怎麼會開源呢,是不是?就是要這樣競争,開發者才能得到實惠,一家獨大就不好玩了。\(^o^)/~

學會了C#,再學JavaScript,就容易得多。

比如C#有類型檢查(強類型),JavaScript沒有類型限制(弱類型),C#是“有”,Javascript是“沒有”,沒有的東西你怎麼講?你必須得用“有”的來對比,是不是?我上課講:“JavaScript不會編譯生成一個可執行檔案”,你是不是暈的?什麼是“編譯”,什麼是“可執行檔案”?我是不是還得把C#代碼怎麼編譯,編譯後生成的dll/exe檔案給你看看,然後你才能明白?與其這樣,不如一開始我們就先學C#!

還有JavaScript很多“模仿”C#/Java等工程語言的知識點,比如JavaScript的“面向對象”,你不知道真正的面向對象什麼樣子的,學JavaScript的半吊子一定是稀裡糊塗的;還有“名稱空間”,JavaScript語言本身,是沒這玩意的,也是一種“模仿”,但為什麼要模仿,為什麼要這樣模仿,要講清楚這些問題,你隻能首先去了解它模仿的對象……

總之,這一次,我是一定要先講C#的,JavaScript放到最後。

OK,最後的一個理由:ASP.NET學習曲線平緩,對初學者友好,易于入門。

當年,我能自學入門ASP.NET,但絕對無法自學入門Java Web或PHP的。

其他不說,開發環境我就配不起來。大約記得,是看張孝祥的Java視訊,第一節課,配Windows的環境變量,直接把我打懵了;也看過鳥哥的PHP開發,LAMP四大元件直接把我給吓尿了……

但ASP.NET,相比之下,就太特麼簡單了,宇宙最強IDE——Visual Studio一裝,齊活!那時候還是WebForm,拉拉控件,配一配屬性,連上資料庫,耶!一個看上去像模像樣的網站就出來了。

當然,這種拉控件的開發方式也一直被人诟病。但是,你要注意這個但是,對于初學者而言,最重要的是什麼?是興趣,是及時回報,是成就感。你可以志存高遠志在千裡,但你也一定要知道,“千裡之行始于足下”“不積跬步無以至千裡”。

我們這種零基礎班,又是線上教學,學習曲線不能太陡,否則會讓你開始懷疑人生。可能是我自己智商不咋的吧,我覺得程式員的門檻還是比較高的。并不是像有些人說的那樣,“教育訓練班随便學個幾個月”,出來就八千上萬的工資。我知道的,從入門到放棄的太多太多。自學學不下去,放棄了;進教育訓練班,跟不上課程,放棄了;教育訓練出來找不到工作,放棄了;工作一段時間,壓力太大,放棄了……一波一波,大浪淘沙。還有之後的中年危機,真的是“長江後浪推前浪,前浪死在沙灘上”。說白了,現在程式員的工資還将就,大環境是一方面,門檻也一定是有的。

門檻低一些,入門就容易一些。入了門,再談之後的發展,顯然要務實得多。

而且這裡必須澄清一點:入門的難度,和你最後能精通到什麼程度,其實沒啥關系。又不要臉的拿飛哥自己做例子了,呵呵,現在我回過頭來,什麼環境變量也懂了,LAMP也沒問題了,是不是?因為入門簡單,就放棄持續成長,那是自個兒的事。

真正的長文啊!統計了一下字數,7K+了。

回過頭來,總結一下,學習ASP.NET入門的四大理由:

  1. .NET平台真的是一支潛力股
  2. ASP.NET是一門綜合技術,适合打底子。
  3. C#确實是一門非常優雅的語言。
  4. ASP.NET學習曲線平緩,對初學者友好,易于入門。

歡迎補充,拒絕拆台。

學ASP.NET入門程式設計,合适麼?

繼續閱讀