这就是我为什么从 PHP 转向 Go 的原因

2020-04-01 22:22:32 +08:00
 wangbenjun5

记得以前有一次面试,面试官是一个和我年龄相仿的人,他就 PHP 里面 count 的用法连续问了我很多情况下的结果:

count(0);
count('00000');
count("0")
count(1)
count(null)
count("null")
count($undefinedVariable)
...

平时一般只会用 count 去计算数组或集合的元素个数,没想到还有这么多种情况,就一下子被问到了,只怪自己基础不扎实,没把 PHP 的手册背下来。。。

很多 PHP 的内置函数令人非常头疼,很多函数有很多功能、可以接受各种参数,返回的结果更无章可循,相比之下,go 的内置函数就非常简单明了,其参数类型固定,基本上一个函数只干一件事。

在写 PHP 的时候,每次调用别人写好的函数都非常不放心,因为你根本不知道这个函数返回的结果是什么东西,它可能是数组、可能是字符串、也可能是个数字。。。即使函数有注释也不一定可信,这其中有部分原因是因为开发人员水平较差,但是 go 的类型限定保证了一个函数只会返回一个固定类型的结果。

写 PHP 的时间越久你就会发现 PHP 的弱类型带来的好处远远大于坏处,项目写到最后几乎无法维护!而且里面会出现各种各样的奇怪 bug 。虽然说良好的编程习惯和规范可以避免部分情况,但是很多时候你没法通过这点保证。

使用 PHP,一个接口写完,很多时候心里压根没底,但是用 GO,写完只要编译没报错,基本上都没问题。

17331 次点击
所在节点    程序员
155 条回复
php01
2020-04-02 09:02:45 +08:00
基本上可以认定为人的问题。
php 写的好的,写 go 也不会有问题。
php 写的不好的,写 go 也会有问题。
反之亦然。
AngryMagikarp
2020-04-02 09:03:02 +08:00
这种情况在 Python 上也有。

因为一个大型项目参与的人一定很多,而人员之间水平参差不齐,弱类型确实更容易导致混乱。注意这个“更”字,这是相对的。

PHP 是世上最好的语言。
yvescheung
2020-04-02 09:05:44 +08:00
这真的是为了面试而面试了,我知道茴香豆有几种写法但是我也成不了鲁迅
2379920898
2020-04-02 09:07:37 +08:00
你不如转个客户端,后端语音只是一种工具,学到不同的思路才能恒久远
skys215
2020-04-02 09:12:14 +08:00
> "就一下子被问到了,只怪自己基础不扎实,没把 PHP 的手册背下来"

换了 go,基础就扎实了吗,就不用背手册也能通过面试了吗
dongisking
2020-04-02 09:21:57 +08:00
1,1,1,1,0,报错(没答对)。我看了一下好像也没多难啊
qq1340691923
2020-04-02 09:23:52 +08:00
不建议转 go 真的。。
qsnow6
2020-04-02 09:24:29 +08:00
不写测试的锅,不要怪弱类型语言
everhythm
2020-04-02 09:27:19 +08:00
这种题目你仔细想想,不是有病么

早在 c++ 面试题年代,就有诸如 n = ++i+i++; 问你 n 和 i 值的题目

我为什么不写成 i+=1; n+=i; i+=1; n+=i; ?

是个正常人,根本不会这么写代码,我有健壮的符合工程的代码写法,为什么要研究这种刁钻且无用的写法?
qq1340691923
2020-04-02 09:29:07 +08:00
go 也就比 php 好一点,不如搞 java
KasonPasser
2020-04-02 09:30:38 +08:00
新的 PHP 版本中只能 count 数组。
zjsxwc
2020-04-02 09:31:38 +08:00
go 就是没有泛型不爽,什么时候有泛型就完爆别的 GC 语言了
jin7
2020-04-02 09:32:36 +08:00
不推荐 go 语言
sagaxu
2020-04-02 09:40:32 +08:00
@zjsxwc 完爆不了,go 的 gc 目前稍有劣势
Still4
2020-04-02 09:47:15 +08:00
说下我转 go 的原因,php 的多线程太弱了,线程之间内存不共享我要你干什么
Godikov
2020-04-02 09:49:42 +08:00
病句,去掉“的原因”。
ericguo
2020-04-02 09:50:17 +08:00
现在从 PHP 转 Go 不是新闻,从 Go 转 PHP 才是新闻。
tt67wq
2020-04-02 09:52:21 +08:00
我司正在从 go 转向 php
从鄙视链的高层走向底层
fenglangjuxu
2020-04-02 10:01:56 +08:00
Warning: count(): Parameter must be an array or an object that implements Countable
除了最后一个 全是这个报错 这是什么脑残面试题啊

PHP 7.3.11 (cli) (built: Dec 13 2019 19:21:21) ( NTS )
始终坚信:php 是世界最好的语言~
fenglangjuxu
2020-04-02 10:03:26 +08:00
但是是有结果的 如果屏蔽报错

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

https://www.v2ex.com/t/658465

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

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

© 2021 V2EX