软件开发入门知识总结
目前软件开发后端市场主要被java/.net/php三足鼎立,.net这一足近几年已经呈现逐年下降的趋势,毕竟微软的wp系统(windowsphone系统)没发展起来!
软件开发移动端(客户端)市场操作系统玩家主要是android、ios,基于他们的客户端开发语言分别是java、objective-c(swift)。服务端可以由java/.net/php这三家的web开发支撑。
任何软件都分为三端:前端(包括android、ios、h5)、接口(--客户端和后端交互的接口)、后端(服务端、支撑端)。h5属于web前端,web前端涉及的技术有html、css、javascript等。后端会和数据库端打交道,数据库常见的有mysql、oracle、sql server、db2、sybase。
一提到web开发,目前在世界上流行性的三个帮派就是php,java和asp.net,这个世界上的百分之99的网站或者类似的应用都是由这三种语言的开发,这里请原谅我忽视某些小众语言如python之类。三种语言经过长达十几甚至二十多年的发展形成自己的生态圈,生态圈里面的世界千姿百态,生态圈外面的世界大漠黄沙、寒风凌厉。所以不管你是准备进入web开发的新人还是准备转型其它生态系统的老鸟,这篇文章都能给你很大的收获。
俗话说,技术是为生活服务的,这句话一点都不。先人看到鸟就发明了飞机,在计算机领域几乎所有应用都能够在日常生活中得到启发。现在我们就用通俗易懂的方式---超市来比较这三种语言的生态系统的差别。
如果把web开发比做开一家超市,网站的内容就是超市里面摆放的琳琅满目的商品,数据库就是这个超市的仓库,html5(抱歉,现在都是html5时代了,麻烦你就不要再用以前老掉牙的东西了)就是这个超市的货架,web服务器就是用来让你去选择购物的一条条道路,而和你互动的javascript就是那些穿着卡哇伊短裙的促销或者你们老公吴亦凡。
那么先说php,为什么呢?因为php是吼的语言。php在web中的优势是数都数不过来,所有web应用中百分之七十都是php做出来的没有理由让你不先说它。如果用php做超市开发,那么php在生活中就如同红旗连锁、舞东风(不好意思,成都就这两个多)或者你家楼下或者拐角任意的一家便利店。php开发有什么优点呢?快捷、,你不需要花很多的钱就可以开一家便利店了,仅仅在开始阶段使用lamp(linux+apache+mysql+php)就可以做网站开店运营。学习成本是为低廉的,如同只要你有点小钱就能在老家开个便利店一样,任何一个有点基础的程序员都能够在一段时间学习之后就能使用lamp找个笔记本或者五六年前的台式机去搭建个网站,所以相对沃尔玛那种大型超市或者万达广场,你身边的便利店是多的一样,php开发的web应用也是多的。
优点分析:
1.php的生态环境标配就是lamp(linux+apache+mysql+php)其实这句话是不完整的,完整说起来是html5+javascript+php7+linux(选择centos7或者ubuntu)+apache(或者nginx或者其它)+mysql,现在已经进入云计算时代了,懒得折腾配置的人直接去阿里云租一台 便宜68元包月的云服务器,足够支撑一两万人服务,类似学校、工厂、单位的使用了(如果我这篇文章火了,阿里云童鞋请赞助我广告费),一旦服务器出现问题,阿里巴巴有一群高薪苦逼的程序员随时帮你解决问题,这就直接把服务器维护者的工资省了。
2.这里特别直接上手php7,因为php7比以前的版本性能上直接提高了100 %还要多,实现模块化管理,后期便于进行业务拓展,业务拓展的意思就是你开的便利店想要扩大规模把先把隔壁的房子也租了直接打通,可以放更多的货物,模块化的管理让你进行升级时候更容易,比如多加一个服务器之类的。
3.这套方案的除了你需要一台服务器或者租个阿里云之外,其它的一切都是免费的,如果你是学生党或者刚工作的,用自己笔记本或者台式机在开始的日子凑合凑合也行,那就是零消费了。
4.nginx能够实现反向,这个功能老牛逼了,用apache还是nginx真是幸福的烦恼。
缺点分析:
后期延伸性相对差一点,随着人流量增多,你也有钱了,想要开连锁超市或者大场的时候,问题就出现了?因为web开发的后期问题都集中在流量和数据库上面,虽然现在php7已经在优越性提高了很多,但是你还是会发现不能满足你的需要,你的商店人满为患,大家结账需要排好久的队伍,当队伍后面等的人不耐烦就会开车去沃尔玛购物,体验性也会越来越差(很多大公司比如facebook都解决了这个问题,但是人家技术积累不是你开便利店挣得钱能够实现的,如果你真实现了请我吃饭),你不得不选择其它解决方案,比如java。
所有人都说java与生俱来的模块化编程就是为大型软件开发服务的,因此黑java的人说java 大的本事就是把一个小的项目开发成一个大型项目,这也从一个侧面体现出了java是团队开发的不二之选。那java是什么呢?java就是沃尔玛、家乐福、永辉那种大型场,java有足够多的框架和开源项目让你解决目前你能够解决的一切场问题,一个仓库的东西不够,没关系我们采用分布式数据库来解决,一个收银台不够,没问题我们先采用多个web服务器来增加收银台数量再采用负载均衡服务器把人流平均分到多个收银台中,这样人们就可以很快的付钱回家。如果采用刷支付宝或者支付,那服务器是不是要经常调用用户的信息?没问题,采用缓存服务器就行了,把用户的信息直接放到缓存的服务器中,这样每次就不用去数据库调用了,数据库的负担大大减少。如果你要问这些技术去哪里学,阿里巴巴已经把很多类似的技术开源了,去网上找呗。因此用java进行web开发是只有你想不到没有你做不到,想想天猫双十一那么大流量人家都搞定了,何况你现在遇到的这些毛毛雨。
优点分析:
1.javaweb开发的标配是html5+javascript+java+apache(或者nginx或者其它)+mysql(或者oracle或者nosql)+linux(rehat或者centos或者ubuntu或者其它)+......(无穷无尽的拓展)
2.技术上没有上限和瓶颈,越往后积累越多,水平也越高,未来二十年都不用担心饭碗问题
3.模块化的开发,不用担心以后的扩展问题,生意好的时候想开几家店开几家店,遇到金融危机时候想关几家关几家,同时用户体验不会下降
4.主要的核心技术掌握在自己手里面,哪怕万一其中一门语言不行了,迁移其它语言也是很容易的
缺点分析:
1.亲爹是oracle,导致java不是php那种纯粹的开源技术,只是部分开源,万一哪天你赚钱了,要当心oracle要来收保护费(参考android案件oralce和google之间的撕逼)
2.oralce是一个比微软更没有下限的公司,一切所作所为都让人担心java的未来
3.需要团队开发,因此你需要招人,当然这也增加了很多就业岗位,也算是一个优点了
4.到了一定规模资金上花销比php大,但是比.net小
后到了我们.net的web开发,也就是asp.net,首先请各位同学记住asp.net和asp是完全不同的东西。这里所说的都是asp.net,asp.net就是最上面所说的万达广场,只不过这个万达广场的老板不是王健林而是微软,微软已经把大厦建好(框架、技术搭建好),这时候你仅仅需要对你租的那个门店稍微装修一下,然后拎包入住就行了。只要你按时付房租,微软就会把你这个大爷伺候好,会给你提供各种羞羞服务(捂脸)。比如你彻底告别了命令行,包括数据库的等等操作都会有图形界面的软件来让你轻松操作,如果你技术够厉害,一个人就可以解决所以余下的问题,因此.net技术大受各种外包公司或者技术相对较差的企业以及个人开发者欢迎。现在微软的云服务更是为你想的周到,让你从开一家便利店到开沃尔玛那种大场所需要的一切问题都给你解决,当然你只需要付钱。当然你也可以趁万达广场人流量多自己推个小车烤肠(使用盗 版的服务器或者软件),但是微软会派会派保安在你把生意做大后来强行收费的,专门养大了宰是微软擅长的。
优点分析:
1.只要给钱,从便利店到大场微软会给你提供一站式服务,你仅仅做一些边边角角的工作就行。
2.由于需要工作少,团队人员少,节省请人的工资钱,更适合单干。
3.比oracle靠谱点
缺点分析:
1.所有技术都是微软提供的,缺少核心技术积累,到后期如果你有幸成为那种大型企业的话,你会发现现在市场上所有的技术都不能来解决你的问题,痛苦万分。
2.找不到靠谱的.net大牛,除了北京的微软亚洲研究院,你想找个牛逼的程序员团队比让柳岩做你女友都难。
3.微软的所有服务都要钱,这对于创业团队来说是难的,你接的头几笔项目资金很可能连微软的服务器都不起,现在前期可以使用云服务来节省开支,好了很多。
4.生态系统封闭,.net技术开源很晚,所以用的人比其它两个来说很少,技术成长先易后难,前期拖拉控件很爽,一段时间后很容易遇到市场现有方案解决不了的瓶颈问题,那才是试炼的开始。
5.时代的变迁,现在是移动互联网时代,而微软在移动互联网的作为让大家比较失望,大家普遍担心微软很可能成为向柯达、诺基亚那样曾经伟大的公司,让很多人对它热情减少。
6.亘古不变的iis+c#+sqlserver套餐,当然你也偶尔尝试下mysql或者oralce甜点
7.也是重要的,微软的技术经常是在一定阶段采用自杀的更新,从vb,com,vfp,j++到现在半死不活的vc,不好就扔了,失业一大批靠这种吃饭的程序员,微软总是打脸般的进行技术换代,让它生态系统下的程序员过几年就要推倒重来学习不比学习一门新的语言简单多少的新框架新内容,拜托人家三四十岁了难道还要和二十多岁的小伙一样去熬夜学你的新技术吗?
好了,这次把世界上 流行的web开发语言及其生态系统讲的比较清楚了,该如何选择取决于你。再次强调您要选择任何的语言 好深入进去去了解其中的框架,不断进行高质量的代码优化才是重要的。请记住代码的质量比其它一切一切都重要。你要是说.net不好,世界上 大的程序员技术问答网站stackoverflow就是.net开发架构,人家仅仅用了24台服务器就搞定了几千万人的访问,你说.net比你java开发的学校选课网站遇到哪怕一千来号人就卡成狗的差?你说.net技术好,那京东那个翔一般购物体验能够和java的天猫比?你说php只能做小型网站,马克同学的facebook可是除个别外几乎垄断世界的虚拟网站,流畅性以及优越性可甩某鹅场几条街。
您说哪个才是 好的web开发语言?