1. 程式人生 > >學ASP.NET入門編程,合適麽?

學ASP.NET入門編程,合適麽?

C# ima 大會 linux rap 推薦 關心 gif 檢查

現在都快找不到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入門編程,合適麽?