学.Net还是学Java?
因为.Net和Java是国内市场占有率最高的两门技术,对于准备学习编程语言的初学者来说,.Net和Java是初学者首先考虑的两门技术,因此很多人一遍遍的问“学.Net还是学Java”,社区中也每天都有“.Net控”在唱衰Java,也有“Java控”在唱衰.Net,一时间硝烟四起,让初学者更加迷惑。
    做为一个.Net、Java、Delphi、Python、PHP等语言都进行过有一定复杂度的项目开发的人来说,我对任何一门语言都没有宗教式狂热崇拜,因此我也相对理性的对整个问题进行分析。
    从北京、广州、上海等地区2010年的就业统计数据(由于没有到更权威的数据,这些数据是我对主流招聘网站和技术网站的相关数据进行的并不是太严谨的分析)来看,.Net和Java的职位数量比例为2:3,从就业网站和主要技术社区数据来看,2010年.Net和Java的学习人员数量比例为1:3。从数据上看,.Net的职位绝对数量比Java低一些,不过Java学习人员数量比.Net学习人员高出3倍,因此.Net职位的竞争激烈程度低于 Java。

    由于.Net秉承了微软技术的入门简单的特点,经过短时间的学习就可以掌握拖拉控件的快织梦源码商城网站
速开发方式,很多人被.Net的快速开发方式所满足,认为自己“学成了”,不再深入研究,因此人才市场上充斥着很多只会拖控件、而不懂.Net更深入一步技术的.Net开发人员,比如很多ASP.Net的书上都是讲 ASP.Net服务端控件,很多所谓“精通ASP.Net”的人连什么是Http、HTML、JavaScript、Dom等基本概念都稀里糊涂,实际公司项目中很多功能点的实现不是简单的拖一个ASP.Net服务端控件就能搞定的,因此看似学习.Net的人非常多,但是真正满足企业要求的人则比较少;而Java则入门门槛比较高,如果想要配置一个Hello World级别的学习环境就会涉及到很多技术,开发环境也要学习者自行配置,对于初学者来说可能花费一周时间都无法配置一个最简单的环境出来,Java的开发环境也不像.Net开发环境那么可用性强,Java和.Net的区别就像Windows和Linux的区别,正因为Java学习门槛非常高,很多学习者被淘汰了下来,这样能够撑过一个个难关学习下来的开发人员都是水平比较高的人员。因此.Net初级开发人员的工资平均是比Java初级开发人员的工资平均略低的。但是由于.Net中高级人才非常缺乏,因此掌握.Net深入技术的开发人员在企业内部是非常吃香的,招聘人员经常发出这样的感叹“招合适的Java工程师能招来一堆,招合适的.Net工程师一个月都招不来几个”。

    .Net入门快,在.Net中微软为开发人员提供了一套最佳的技术架构搭配、集成的开发环境,用微软的技术架构开发出的系统就可以保证最好的效果,而不用像Java开发人员那样去学很多开源框架再去学习搭建技术架构、开发环境,因此.Net学习周期比Java短,有了语言基础后再进行集训式的就业班学习,那么.Net学习者学习3个月可以进入就业,Java学习者需要5个月可以进入就业。

python入门教程视屏    微软的本地化推广工作做得非常好,因此学习.Net有大量的中文资料可以参考,因此除非研究很高深的领域,否则中文资料基本能满足开发者的需求;而 Java由于走的是高端路线,因此除了初学者资料外,大部分Java资料都是英文的,学习Java需要参考很多英文资料。因此如果英文非常好的学员学习 Java就会很轻松,而英文不是很好的学员学习.Net会更好。

    综上,Java入门门槛比较高,需要有足够的毅力和百折不挠的精神,只要你能坚持下来你就可以将很多人在入门门槛上就将很多竞争者甩在身后。.Net入门门槛比较低,装上VisualStudio就可以马上进行开发,不需要进行太多的配置、不需要学太多基础知识,这样
可以很轻松的掌握入门.Net学习,是有很成就感的事情,能让你有兴趣进一步学习,但是你不能止步于此,因此你会发现身边也有无数的人也是“轻松入门”,你就需要继续深入学习,深入学习同样需要毅力和探索的精神,你要在这个阶段上把绝大部分竞争者甩在身后,小吹一把:我教的有个学生面试回来说“在咱班里比我感觉我掌握的不是太好,但是和一起参加面试的北大某鸟的学生比我简直就是高手”,呵呵。在我讲“.Net入门简单”的时候,有学生问“.Net把问题都简化了岂不是.Net程序员都不值钱了?”,我的回答是“8位补码转换器微软简化的是重复性的东西和低级的东西,这样我们就能从这些低级的工作中脱身出来研究更深入的东西,因此.Net把问题简化了只是使得那些只沉迷于简单的东西的人不值钱了,会使得研究深入的人更值钱”,这就是“.Net入门容易,深入同样难”这句话的意思。有人会问“哪些知识属于深入的知识呢?”,比如你不仅要会用ADO.Net,还要研究 ADO.Net架构中的设计模式,再比如你不仅要会拖拉ASP.Net控件,更要明白ASP.Net控件内部发生了什么。这里允许我做一个广告,如果你想从学习一开始就尽快脱离控件型开发人员的行列,你可以跟着视频教程matlab软件手机版《传智播客.Net视频教程》学习,然后每天登陆博客园等高端.Net社区,你会发现你进步是非常快的。

    可能因为我最近都是在讲.Net的课程,对.Net的描述中有或多或少的偏向,但是抛去个人因素考虑,我没有暗示Java好还是.Net好,请根据自己的情况进行选择。而且.Net和Java并不像360和QQ那样必须二者选其一,并不像很多初学者认为的那样“学一门语言就靠这门语言吃一辈子”,工作中很可能这个项目用Java,那个项目用.Net,因此你可以喜欢某个语言,但是不要抱着一门语言不放,更不用担心“Sun被Oracle收购了,Java是不是完了?”、“我学.Net,如果微软没落了我是不是就失业了”之类的问题,不同语言只是不同的工具,换了一个新的工具可以很快的熟悉新的工具,大部分内容都是相通的,比如java中的web开发很熟悉了,转而用ASP.Net也会发现大部分东西都是和JavaWeb一样的,很快就能上手ASP.Net,难道你现在用的是诺基亚手机,你会害怕诺基亚倒台你就不会用手机了吗?“Java完了、微软死了”这类问题不是开发人员去关心的事情,而是华尔街那些金融大鳄去考虑的问题,咱们只管用技术去赚钱养家就是了。
如果你开始决定学习.Net了,那么你的下一个问题很可能是“学了.Net我能做什么?”。
.Net目前主要的开发方向是:Web开发、桌面系统开发、移动开发。
Web开发通俗的说就是开发网站,包括类似于大众点评网等这样的互联网以及OA等内网
系统,Web开发是目前.Net开发的主要方向,大部分招聘.Net 的职位都是做Web开发,以我教的传智播客.Net班为例,2010年几个就业班的学员90%以上到的都是Web开发方向的职位。
桌面系统一般指的是使用WinForm技术开发Windows软件,比如以Windows软件形式运行的仓库管理系统、图书管理系统等,也就是一般说的 C/S开发(不严谨的说法),目前很多公司都有WinForm开发的产品,不过由于大部分公司的产品都开始转向基于Web的版本,WinForm版本都处 于维护状态,因此基本不再招聘WinForm版本的新员工。
移动开发主要指的是手机开发。.Net手机开发目前主要是WindowsMobile的开发,目前中国大陆地区Windows Mobile开发的工作非常少。微软在今年(2010年)推出了WindowsPhone7(简称WP7)手机操作系统,微软在WP7手机操作系统的推出 上继续采用了微软一贯的“落后半步、后发制人”的战略,微软惯于后发制人,比如当年就曾经用 IE干死了曾经领先一时的Netscape浏览器,再比如.Net更是从先行者Java口中夺下了半壁江山。因此我个人非常看好WindowsPhone 的前景,预计在2011年底WindowsPhone将会在移动市场上掀起狂澜,对移动开发感兴趣的朋友可以提前关注一下WindowsPhone的开 发。

      微软在技术的延续性上做的非常好,无论是Web开发还是WinForm开发还是移动开发,他们采用的技术都是相通、相近的。因 为他们都是基于同一个.Net Framework进行开发的,调用的语法、类都是一样的,学习的时候只要学习特有的小部分内容就可以了,比如访问数据库都是ADO.Net、系统间通讯 都是WCF。对于想学习.Net抓紧工作的同学可以先以Web开发方向为主要学习方向,关于Web开发方向要学什么东西、怎么学,我将会在下一篇文章中 介绍。
         移动开发市场将会越来越大,微软现在推广WindowsPhone的力量非常大,而且商业策略非常厉害,因此我预计在2011年底WindowsPhone将会在移动市场上掀起狂澜,到时候WindowsPhone开发也将会带来非常多的工作机会。
        如果对WindowsPhone开发感兴趣,可以在把Web开发掌握熟练后提前做知识储备。因为WindowsPhone界面用 Silverlight,可以先学习Web下的Silverlight,这样也不需要安装额外的开发环境,掌握了Silverlight再学 WindowsPhone开发就会轻松很多了。
        对于移动开发来讲并不是只有手机客户端的开发,还会涉及到服务端的开发,所以ADO.Net、XML、WCF、ASP.Net等服务端编程技术同样 需要学习。WindowsPhone是移
动设备操作系统,手机作为一种移动终端,必须与服务器端结合才能发挥巨大的作用。WindowsPhone是为移 动互联网时代量身打造的,移动互联网时代的服务模式是“手机终端+互联网络+应用软件”,也 就是所谓的“云终端+服务器”。比如开发一个查询公交线路的手机软件,WindowsPhone端只是一个交互和展示页面,具体查询、运算逻辑是放在服务 器端的,手机端软件向服务器发出查询请求,服务端进行查询、运算,然后将运算结果返回给手机端软件,由手机端软件进行显示。除去手机单机游戏、短信管理、 播放器等完全不需要服务端支持的应用之外,大部分手机应用都是需要服务端支持的,比如邻讯、淘宝手机客户端、金蝶随手记、手机版金山词霸、新浪手机微博 等。WindowsPhone只是承载移动终端软件的操作系统,而服务端技术用于开发互联网络应用,所以未来移动互联网时代软件的主流应用模式将是“手机客户端+互联网络应用服务端”,这种模式要求做移动互联网开发的程序员不但要掌握WindowsPhone这样的手机终端软件技术还要掌握开发互联网络应用的服务器端技术。
.Net应该学什么怎么学(一)
本篇中我将主要讲解做Web开发要学哪些东西,怎么学,由于内容比较多,我将分几次发。
下图是我推荐的学习内容和学习顺序(除了这里列出的内容,要走向高手之路肯定还有更多技术需要学习,我这里只是对于初学者列出的主干学习内容,并不是全部):
 
    开发者口中的.Net全称是.Net Framework,在中国大陆,一般将.Net读作“道特耐特”(中文音标比英文音标更好读,呵呵)或者“点耐特”。.Net是微软推出的一门技术,它 是一个技术平台,基于这个平台进行开发可以简化很多工作。关于到底什么是.Net,不是一两句
话能说清楚的,而且也没办法让初学者理解到底什么 是.Net,因此你只要记住.Net这个词,随着我们越学越深入,你就会理解.Net到底是什么东西了。
    基于.Net平台上有很多语言,比如C#、VB.Net、IronPython、F#、Powershell等,F#、Powershell是满足特定用 途的语言,IronPython、IronRuby等并没有广泛应用,VB.Net是仅次于C#的第二大基于.Net的语言,不过按照微软的战略是把主要 精力放到C#上,VB.Net只是微软为了将VB开发人员平滑的转移到.Net平台下的语言。因此对于语言来说大家学习C#即可。C#在中国大陆的叫法一 般是“C sharp(C煞普)”,也有少数人读成“C井”,我不推荐这种叫法。
    初学者可能会弄不清C#和.Net的关系,.Net是一个技术平台,而C#是这个技术平台上的一门语言,就像Windows是一个操作系统,而Word、 QQ、FireFox则是在Windows上运行的一个程序。初学者不必纠结于这个概念,不是很明白也没关系。
    .Net的开发工具是VisualStudio,VisualStudio现在有VisualStudio2005、VisualStudio2008、 VisualStudio2010等版本,注意不要纠结于“到底装VisualStudio2005还是VisualStudio2008,听说有的公司 还在用VisualStudio2005”、“到底是用新版本的Visu
alStudio2010还是用VisualStudio2008”这样的问题, 因为这些版本并没有本质的不同,使用方法都类似,就像你会用WindowsXP,换了Windows7以后经过短暂的熟练会用Windows7了一样。因 为VisualStudio2010比较消耗资源,如果你的计算机配置较好可以安装VisualStudio2010,如果配置较差则推荐安装 VisualStudio2008。
    要学习Web开发一定要按照正确的顺序进行学习,很多人被一些《21天精通***》这样的垃圾书的影响,不学C#、不学.Net Framework、不学Dom,直接上来就学ASP.Net,拖两个控件、配两个属性、双击控件写一个事件响应方法,就开始自诩“精通ASP.Net”了, 照着书控件拖来拖去,可是连C#、.Net、ASP.Net、HTML、JavaScript之前的关系是什么都不清楚,闹出了很多笑话。欲速则不达,速 成的结果就是以后浪费更多的时间,回想这么多年你走过的路,有多少次为了走快点就跳着走,最后又浪费时间返工的事情,按照正确的顺序才能更快、更好的掌 握.Net。
    有的人可能认为“我不想成为高手,有一口饭吃就行了,会拖控件就行了呗”,千万不要以为会“不拖控件的开发”就是高手了,高手没有那么好当的。我没有奢求 学编程的人个个都是以“成为世界顶尖级程序员”、“国内.Net开发者中的知名开发者”为目标,这个也不现实,
大部分人学编程只是看做软件开发工资不低, 想赚几年钱娶媳妇生娃,这种想法并不是多没出息的想法,毕竟“老婆孩子热炕头”是最朴实的幸福,你不需要背负“振兴中国软件产业”这种的重任,但是最起码 应该到一份不错的工作,工作几年以后能有钱交得起房子首付(对于大部分人来讲,能够交得起首付成为房奴都是很奢侈的事情)、每月供月供吧,如果只会拖控 件的话就不是能不能成为高手的问题,而是能不能养家糊口的问题了。
    下面来详细讲解学习的各个步骤:
一、C#面向过程编程。
为什么光盘无法格式化    学习C#语言分为C#面向过程编程和C#面向对象基础两部分。听到“C#面向过程编程”有人会问了“C#不是一门面向对象的语言吗,哪儿来的面向过程编程?”,其实面向对象不是代替面向过程的,面向对象是面向过程的一个补充和发展,面向过程就是代码逐行执行,面向过程就是if/else,面向过程就是for循环,面向过程就是变量、函数,C#中最基础的也是if、for、变量、函数等这些东西,这些东西就是C#的面向过程部分。对于编程的初学者来说,最难的不是类、继承、控件、ASP.Net、AJAX之类神乎其神的东西,而是“程序化的思维方式”,也就是怎么把一个问题的解决方式用计算机的思维方式进行描述。
    我接到过很多想深入学习.Net学生的咨询,当我问到“你的.Net基础怎么样”的时候,很多人都回答“学过C#、.Net、ASP.Net,感觉基础还 行”,但是我给了他一个很简单的题,比如“用for循环累加的方式计算1到100之间整数的和”、“提示用户输入两个数字,然后程序打印两个数字的和”, 很多人都做不出来。
    对于初学者来说先不用管面向对象、ASP.Net之类的东西迷惑,先学习用最朴实的for、if来编写程序,通过亲手编写练习题代码来逐渐形成程序化的思维方式,这个阶段也不要使用“看起来很酷”的WinForm或者ASP.Net页面来做,因为那样就会涉及到这个阶段不需要去了解的问题,先编写最简单的控制台程序就可以。推荐大家看我录制的视频教程《【传智播客.Net视频】第1季C#编程基础》,这个教程针对C#零基础的同学进行讲解,并且在课程中给出了非常多的练习,一定要自己亲手把代码熟练的写出来,记住是亲手写出来,而不是照着我的代码抄,更不能是看懂了我的代码就以为自己掌握了,要知道“看懂了”和“会写了”之间差着十万八千里呢。 对于初学者来说一开始写那些练习可能有点困难,先理解我写的代码,然后自己总结成“先***后***,再***,如果***则***”这样的用语言描述的 算法,然后照着算法描述自己写代码,发现有地方写起来遇到问题的话再参考我的代码,最后做到不用看我的代码、不用看算法描述也能把代码写出来,这样第一阶 段的任务就完成了。
下面列出我视频教程中的一些练习题,大家可以自测看这个阶段自己是否合格:
练习1:提示用户输入用户名,然后再提示输入密码,如果用户名是“admin”并且密码是“888888”,则提示正确,否则提示错误,如果用户名不是admin还提示用户用户名不存在。
文本框图片可爱练习2:提示用户输入年龄,如果大于等于18,则告知用户可以查看,如果小于10岁,则告知不允许查看,如果大于等于10岁,则提示用户是否继续查看(yes、no),如果输入的是yes则提示用户可以查看,否则提示不可以查看。(给出测试用例。)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。