在技术层面上,C#就是吊打PHP

写过几篇关于C#的文章,引来了不少讨论。

之前我一直无意于各种编程语言的纷争,在我的认知里每种编程语言都有它的特点,适合不同的场景,选择一个满足用户需求的才是最明智的。

但是现在不同了,C#在Anders Hejlsberg的带领下,一路披荆斩棘,现在已经遥遥领先于各类语言,而且随着微软对跨平台的支持,VS这个世界第一的代码编辑器,我似乎看到了秦国要统一六国的影子,优秀的语言淘汰落后的语言,就像历史选择一样,不也挺好吗?

先挑软柿子捏,PHP:)

我做码农20多年,用过不少语言,C#是用得最多的,也是现在的主要开发语言。可以说现在的C#已不再是原来那个只能开发windows应用程序的鸡肋了,于是我就说:PHP与C#根本就不是一个量级的。结果这句话,引起了PHPer们的强烈不满:

◆呵呵,什么时候连net的也敢来说吊打php了。什么世道?

◆吊打php就算了吧,效率瓶颈更多不是语言本身,而是数据库,架构等影响的。facebook不也用php?除了微软自己,你再找一个大规模用net的来看看?

◆Php你会吗?

◆吊打?你不感觉脸红吗?你难道没有犯罪感吗?

◆首先应用场景不同,其次很少软件有什么屌炸天的功能需要优化到语言执行效率上,软件执行瓶颈在硬件设施上,最后学习成本上,php要低很多

◆胡说八道 php是web开发王者,不是因为成本低,而是因为它就是为web而生

◆胡说八道 继续吹net

......

今天公平起见,我不比桌面应用,就以PHP最擅长的Web项目来举例子,让那些PHPer们看看,PHP跟C#语言相比有多么严重的缺陷。

之前做过一个微信现场摇一摇的项目,时间比较紧,所以就在网上找了一套现成的PHP代码,简单修修改改,匆忙上马。成本方面,不得不说PHP有非常大的优势,复制过来修修改改就能用,Apache、MySql都不用花钱。

结果没几天,用户反馈说摇一摇人少了正常,人一多服务器就崩了,100多人一起摇就不行了。

有问题肯定要解决嘛,于是查代码,发现了其中的逻辑:每个手机每摇一次,都要到后台数据库把计数加1。极端情况下,100多人1秒钟内就可以摇5下,数据库1秒钟就要写500次,而且还要做同步处理,这啥服务器能受得了啊?这TM是哪个垃圾程序员写的代码!

当时我想,原因找到了,解决还不简单吗?根本不需要每次都写数据库,只要做一个全局哈希表的缓存,每个人的计数都只在缓存中更新,游戏结束之后再批量更新到数据库,不就解决这个问题了吗?

然而想法是美好的,我用了PHP的全局变量,也记录了结果,可是不对啊,每个用户都只能访问自己的,汇总那里根本取不到值啊,百思不得其解。查资料一看懵逼了,PHP竟然没有所有用户共享的机制,所谓的全局变量只是针对当前用户的全局变量,而不是所有用户的全局变量,要想实现只能通过数据库、文件或memcached等外部方式来实现。数据库和文件肯定性能低,memcached我一看,这不就是再配置一个网站专门存储内存变量吗?这也叫解决方案?在C#中几行代码就能搞定的事情,在PHP中因为本身不支持,就得再配一个网站,简直超越了我对软件架构设计的想象,PHP不是世界上最好的语言吗?就这?我到此刻也终于理解那个程序员为什么每摇一次都写数据库了,这种性价比最高,小规模使用没问题,大规模有问题了你得回头找我来提供服务。

理解归理解,问题还是要解决。

既然无论怎样都要再配一个网站,我就索性用c#+asp.net写一个,毕竟这个是高频应用,脚本肯定没有编译好的二进制效率高。于是用C#写了一个缓存接口,在php中调用,此后这个项目2000人的摇一摇都没再出过问题。

从成本上说,PHP确实有优势,前提是项目简单要求不高,且有现成代码可以利用的基础上。

从技术上说,PHP相比C#没有任何优势,C#就是吊打PHP!PHP能做的,C#都能做;C#能做的,PHP很多做不了;C#与PHP都能做的,C#也有能力比PHP做的好。

欢迎PHPer们来喷,也欢迎C#er们来支持:)

在技术层面上,C#就是吊打PHP

展开阅读全文

页面更新:2024-04-26

标签:秦国   微软   胡说   缓存   瓶颈   程序员   成本   优势   语言   代码   简单   数据库   项目   用户   技术   科技   软件

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top