• 合适么?现在学ASP.NET Core入门编程……


    现在都快找不到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学习曲线平缓,对初学者友好,易于入门

    欢迎补充,拒绝拆台。


  • 相关阅读:
    vue开发chrome扩展,数据通过storage对象获取
    Vue手动集成less预编译器
    Google Translate寻找之旅
    Javascript Range对象的学习
    Javascript Promises学习
    SublimeText 建立构建Node js系统
    We're sorry but demo3 doesn't work properly without JavaScript enabled. Please enable it to continue.
    npm安装包出现UNMET DEPENDENCY报错
    (转载)命令行说明中格式 尖括号 中括号的含义
    Linux重启网卡服务Failed to start LSB: Bring up/down networking.
  • 原文地址:https://www.cnblogs.com/freeflying/p/9103284.html
Copyright © 2020-2023  润新知