讨论下 PHP 转 go 的水平

2023-12-08 11:05:54 +08:00
 v2li32
今天摸鱼又看到 php 性能不行的帖子,我是专业 phper,也能写 java,python,不爱写 go 是因为不喜欢 go 的语法。


不知道因为性能问题转 go 的人是否深入理解过 php.有没有了解到 php 的常驻模式下运行,了解到 select,epoll,然后在去得出结论 php 性能不行。

都是跑在 linux 下的编程语言,都在用 select,epoll,谁又能差谁很多,不晓得大多数 phper 有没有搞到这一步。

在回到开发效率上,php 真的是 web 语言开发效率第一。
orm ,一对多,多对多关联,起码是把 java 开发效率秒的车尾灯都看不到。


再说项目开发,项目大了,什么动态静态语言开发出来的都是屎山。

不是公司硬性规定,或者自己喜欢学一下 golang ,转 golang 是为了什么。。写 php 的应该都不会喜欢 golang 的写法。

以下 phper 转 go 先评价下自己的 php 评分。

会 curd 一个框架的评 a
...+多个框架基础的 redis 队列,自定义进程都能搞评 b
...+可以随意很快上手不了解的框架评 c,
...+可以随意点击框架/扩展包看个大概流程评 d,
...+了解 php 为什么跟 java 比性能不行,linux 下调试追踪,会多进程网络编程评 e,
...+能看懂部分 php 源码实现评 f.

所以你(phper)转 go 在 a,b,c,d,e,f 那个层次呢。
10258 次点击
所在节点    PHP
83 条回复
jowan
2023-12-08 14:33:47 +08:00
CRUD NO CURD

SpringCloud 全家桶 开发效率真比不上 PHP 吗 2023 年了 还秒的尾灯都看不到 离谱
abcdexx
2023-12-08 14:42:01 +08:00
orm ,一对多,多对多关联,起码是把 java 开发效率秒的车尾灯都看不到
-------------------------------------------------------------------------------------------------
go 里面用 gorm 做这些也很方便啊
6jiayoung
2023-12-08 14:44:09 +08:00
go 工资比 php 高
jowan
2023-12-08 14:50:28 +08:00
PHP 门槛低入门快 是得益于他没有严格的数据类型约束
无需静态编译 大部分情况不需要维护内存开销
开发者没有额外的心理负担
变量未释放就未释放 有溢出风险也无伤大雅
一个 FPM 生命周期结束自然就没了
业务迭代效率高 代码写起来 无需过度考虑
虽然有不少人使用 Phalcon 、Swoole 这些 C 扩展的常驻内存框架
但不可否认绝大部分 PHP 程序员 还在用 FPM 这套
而 PHP 的优点也是他的弱点 起码在高并发的 FPM 模式下
其他静态语言无需像它一样频繁地 fork 进程开销
如果在相同水平的程序员用其他语言写出来的是屎山
那么他用 PHP 写出来的必定是粪山
为什么 因为你在做 codereview 时
前面$data 是 array 在后面可能突然变成了 string 最后还可能是 int
代码逻辑实现的不好 用什么语言都一样
在 PHP 里面会更明显一点 讨论语言本身意义不大
lifei6671
2023-12-08 14:51:48 +08:00
@lesismal #16 70 台是运维要求部署的最低配置。实际上这些 pod 的负载很低。而对应的 PHP 复杂就很高了,CPU 都快 80%了。
lifei6671
2023-12-08 14:52:58 +08:00
@lyxxxh2 #12 没太看懂你说的什么意思,tob 和 toc 在代码上有不同吗???
lifei6671
2023-12-08 14:53:46 +08:00
@brader 我们是 PHP 转 go ,又不是从新招人,架构师和开发都是那一群人。。。
lesismal
2023-12-08 14:57:00 +08:00
@lifei6671 #25

你们的运维兄弟是懂怎么挣钱的。。。
z1829909
2023-12-08 14:59:49 +08:00
再说项目开发,项目大了,什么动态静态语言开发出来的都是屎山。
这句话很不认同
php 的项目, 代码管理上稍微松懈一点, 从开始就屎了, 下限贼低. 如果想让项目慢点腐化, 对人员素质和维护的成本都有很大要求.
go 最起码整体风格一致, 你的代码能跑起来, 就没有太多低级错误.

而且转 go 真没几个是因为性能转, 大多是为了工作, 或者公司技术选型要求, 或者自己爱好. 你还整了个 abcd 评级, 别人愿意写哪个就写哪个, 为什么要去套你这套规则呢, 这个规则还是适合你自娱自乐用来约束自己玩吧.
flyqie
2023-12-08 15:00:03 +08:00
`什么动态静态语言开发出来的都是屎山`

楼主你开心就好,一个 array 走天下靠文档来维护,已经非常痛苦过了。

现在 php 和 golang 都在用,确实得承认 php 在 web 上不错(swoole 、workerman 也用到过),我 cli 小工具也一直用 php 写,但 php 维护麻烦是客观存在的,不止 php 是这个问题,其他弱类型也是这个问题,php 推的强类型现在用起来还很麻烦,个人觉得算是树大难掉头。
whyso
2023-12-08 15:05:47 +08:00
@6jiayoung #23 绝杀!哈哈哈
z1829909
2023-12-08 15:09:03 +08:00
我还是建议你不要这样企图去给别人下定义或者控制他人. 现实和你预期的不一样, 你会很痛苦.
coderzhangsan
2023-12-08 15:10:45 +08:00
我的看法如下

1 为什么用 go:卷,面向工资编程
go 语言创造之初,是想替代 c++,更应该去做系统层面服务,而国内用这个语言搞应用开发,尤其是 web 应用开发,有 java/php 生态完善的工具语言不用,非要打着性能大旗,重新造轮子,如果不为了这点工资,毫无意义,至于说什么节省了多少台机器,这些机器加起来才多少钱,开发人员成本才是大头吧,一个 go 程序员至少比 php 高出 3k 起,还租不起几台机器?高可用高性能的系统从来都是优秀的架构设计,语言只是锦上添花;以此推论,下一个应用语言风口是 rust 。

2 phper 转 go 缺点
绝大多数 phper ,主要工作都是在 web 应用项目,写接口或页面,高级网络编程及其原理,没几个熟练的,大概率转过去也还是写接口,从一门语言转向另一门语言,必然会将自己"母语"的开发思想和习惯带过去,写出的代码大多数不符合当前语言设计的。

3 基础和逻辑思维很重要
op 列出了 a-f 评分,php 这门语言,上手学习快,正因为如此,很多人不太重视基础知识的学习,对很多内置的库和函数研究不透彻,所以业务上偶尔出 bug ,不了解具体原因,就会用其他方式解决,譬如引进另一个工具;逻辑思维对任何一门语言都重要,不再乎你看了多少源码,如何结合业务实际高质量的代码,理解业务并做出契合业务的设计,这点很重要。
yangzzz
2023-12-08 15:19:58 +08:00
@6jiayoung 哈哈,还是这个老哥说的实在
dobelee
2023-12-08 15:22:27 +08:00
别写这种无聊的引战帖子了,打份工而已非要分个高下。
php oop 工程化基本都是走 Java 代码风格路线,跟 go 还真没法比。
至于韩天峰搞的那些花活,说实话折腾起来挺累的,我建议直接用 go 。
rm0gang0rf
2023-12-08 15:27:13 +08:00
在下一直 php, 没赶上过复杂业务或者大项目, 没遇到过高并发, 一天也就是 20-30g 的流量,别的参数也没算过...
28Sv0ngQfIE7Yloe
2023-12-08 15:33:49 +08:00
>>> orm ,一对多,多对多关联,起码是把 java 开发效率秒的车尾灯都看不到。
------

没写过 PHP ,是真的吗?
jianchang512
2023-12-08 15:34:22 +08:00
其实就是同样一堆烂代码的情况下,go 能跑的更好
rm0gang0rf
2023-12-08 15:36:04 +08:00
@Morii 是真的
whahuzhihao
2023-12-08 15:38:51 +08:00
转语言主要还是就业市场的因素。但是根源上来看还是语言特性影响了 PHP 的使用范围,进而缩减了他的市场。
参考 https://pphc.lvwenhan.com/part-two/bottleneck-of-programming-language/section-3
PHP 的语言特性是单线程阻塞的,即使用 php-fpm 模式也改变不了这一特性。如果用 swoole 、workerman 这类常驻内存的框架,为啥不一步到位换成 go 呢。
go 的语法虽然恶心,但是入门门槛也低。相比与转 java ,转 go 应该是 phper 最后的倔强吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/998612

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX