在技术层面上,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们来支持:)
https://p6.toutiaoimg.com/large/pgc-image/11749823edbb4b4f8749eb9346da0af0 我就想知道,其他编程软件只需要最多500来m的空间就能配置好环境,c#是多少,而且,你能不能别占用c盘空间 仅就语言而言,C#非常完美。用过C#、Java、javascript做过服务端、手机端、前后端分离的项目,框架使用过mvc、vue…… 创业公司php都是首选,面向数据编程,速度快!前后台一个都能搞,迭代快!成本低!用java慢慢搞 产品没出来公司就被拖死了。 除了部署方便,C#完胜PHP。C#飘逸的语法,写起来行云流水,扩展方法、linq、事件、异步、注解 哪个不香?web方面,asp.net core的管道机制,为系统提供了无限的扩展可能。Razor语法、强类型的智能提示、编译时错误检查,还有Blazor。项目越大,越能体会出.net的优秀。有人说VS安装后会占用多少个G,我想说现在硬盘都已经白菜价了。 靠,你的网站居然只有一台web服务器,当你为2台以上web服务器设计时,你就知道php 的好了。 php天生就是基于多进程模型开发的,但是他的多进程都已经集成到比如fpm上面了,如果是Apache,就是Apache2handler,为什么要如此设计而不是把多进程交给dev去管理,就是为了方便稳定,降低程序员门槛,如果在多进程中用全局变量必然设计到锁,并发等问题,这无疑不是php的初衷,况且现在用持久化存储软件是通用方法,你的业务更是如此,当然缺点就是牺牲掉了php的高性能 C#居然已经沦落到去和PHP争高下的地步,可喜可贺。但是PHP既可以在Windows下运行,也可以在各种Linux发行版下运行,C#可以试着比一下这个方面。 html才是最好的编程语言[泪奔]我只会html c#能写web程序吗?桌面我用delphi......web我用php