[编程开发] 为什么总是一些技术小白在贬低PHP?

[复制链接]
loveme88 发表于 2023-10-4 17:57:52|来自:北京 | 显示全部楼层 |阅读模式
为什么总是一些技术小白在贬低PHP?
全部回复5 显示全部楼层
stefanie 发表于 2023-10-4 17:58:04|来自:北京 | 显示全部楼层
技术大佬刚出道的时候,web2.0方兴未艾,web开发欣欣向荣,满街投资人都在找项目,人人都说一些“共享经济”啊,“改变世界”啊之类的词,打招呼第一句都是“我有一个idea,就缺一个开发了”。
于是技术大佬潜心学习了江湖中著名的神器——PHP。
学成之后,技术大佬遇到找开发的老板,老板打开ppt,说完idea,再描绘一下未来市值万亿的远大vision,技术大佬微微一笑,伸出一根手指,说:“这个时间我就可以出一个mvp。”
老板试探的问:“一年?”
“那是C++”
“一个月?”
“那是Java”
“一周?!”
“那是python”
技术大佬自信的说:“一天!我用PHP,一天就可以出一个最小可用版本!”
老板大喜过望,当场拍板,拉技术大佬当合伙人。技术大佬带着一个前端,一个前台,三个人加上一个天天在外面跑投资人的老板,轰轰烈烈的就干起来了。
时光荏苒,转眼技术大佬在创业圈也混了三五年了,中间换了三个老板,一个黄了,一个跑了,还有一个大家也没想到的拿了B轮,结果老板答应的期权不给了,还找了个大厂来的CTO把技术大佬替了。技术大佬跟CTO交接的时候,CTO轻蔑一笑:“PHP?垃圾。”
这边技术大佬办完离职还没出门,隐隐听到那边CTO已经慷慨激昂的跟老板汇报:“问题很多,前面的技术什么都不懂。架构要改造,用Java全面重构!”
技术大佬大受刺激,他发愤图强,终于也混进了大厂。一去学长就给他介绍,我们系统用Java开发,是微服务架构,组件化设计,RPC调用,异步处理,高并发支持,云计算,大数据,AI加持。。。
技术大佬深受震撼,打开了技术全新的领域。他废寝忘食的学习,什么拦截器 过滤器 注解 依赖注入 控制反转 设计模式 注册中心 配置中心 断路器 服务降级。。。
现在技术大佬搞个需求,先建表结构,再搞entity mapper dto vo po bo。。。刚开始还觉得有点繁琐,不时想起PHP一个array打天下,一个+啥都干的纯真年代,后来这种时候也越来越少了,深深被Java优雅的对象思维 思维领域 领域设计 设计模式所折服。
大厂又混了三五年,技术大佬也有了几分疲态,真正搞技术的时候不多,倒是搞周报,搞绩效的时候更多,效果也更好。技术大佬萌生去意,正好通过猎头对上一个老板,老板说:“我这公司项目业务都挺好,就是原来技术这块有点薄弱,正缺你这样的专家!”
技术大佬和老板一拍即合,马上离职加入了新公司。初来乍到一了解,原来的系统是PHP开发的,原来的技术都不会Java,技术大佬眉头一皱,吐出几个字:“PHP?垃圾!”,转身去找老板:“这个技术架构不行,团队要重新组建,招一些Java来重构。”
一说完技术大佬总觉得这场景似曾相识,仔细想想,又没什么印象。
anyway,新人新气象,技术大佬拉起一支小团队,搞微服务,搞重构,轰轰烈烈就干起来了。
但是公司业务始终没做起来,折腾一段时间没有起色,技术大佬也只有带着几个下属,黯然离去,投奔了下一个一心改变世界的老板。
圈子里浮浮沉沉好几年,还真赶上了一波运气,技术大佬加入的某家公司上市了。技术大佬奋斗的大半生终于也有了点成果,财富自由,解甲归田了。
归隐田园的技术大佬很悠闲,天天喝喝茶,偶尔炒炒币,经常玩玩3C数码啥的,这天装了台5950X,看看满屏的绿线小框框,还是挺赏心悦目的。
设备是到位了,一时也没想好玩点啥游戏,一看这设备跑跑多线程并发不错啊,不知道能压多少,一时技痒,想着写个demo跑跑bench吧。
后期都在带团队,搞管理,自己动手写代码,那都不知道猴年马月的事了,技术大佬也有点感慨。
这手一生,开始竟然无从下手,一想要下个jdk,装个ide,再调调maven或者gradle啥的,估计这三分钟热情早消耗完了。
鬼使神差,技术大佬搜索了一下lamp集成包,装完就跑起了一个PHP环境,看着这黑底白字的简陋命令行窗口,技术大佬有种见到高中要好同学的亲切感。
找找资料写点代码跑跑,哎?这PHP竟然早已支持协程,Java到现在还没有啊。再看看框架,流行的Laravel可以啊,控制反转,依赖注入,设计模式板板正正的,甚至感觉比Java的Spring设计的还完美。这个swoole框架也不错,异步处理简单明了。
兴致尽了,技术大佬又刷上了知乎,正好刷到个问题:“为什么总是一些技术小白在贬低PHP?”
技术大佬不由的点了回答问题添加了一段回答:
这看PHP高不高,低不低,要分三个阶段,前贤早就总结了:
第一个阶段叫看山是山
第二个阶段叫看山不是山
第三个阶段叫看山还是山
qidi 发表于 2023-10-4 17:58:09|来自:北京 | 显示全部楼层
深入了解过PHP的都知道,PHP底层设计和实现有很多可取之处.
就拿array这个PHP中最强大的数据结构来说,其底层实现独树一帜,有很多精妙绝伦的细节设计.


数组和字典有序的实现,打包数组优化(普通数组将被视为C数组处理),数组的动态扩容策略,哈希的实现和哈希冲突的解决.
全在这张图展示的数据结构中.

透过PHP的array,可以实现更多高级数据结构.
比如Redis的有序集合,用PHP array实现的话,只需两步:
1.插入时,用二分查找找到插入位置.
2.然后用array_splice把元素插入到数组中.
同理,用PHP array也可以轻松实现定时器的管理,而不需要实现小根堆,跳表,红黑树这些复杂的数据结构.
binary_search(找位置) + array_splice(插入删除) + array_pop(弹出最小)
  1. <?php
  2. public function timer_pos($ele, $arr) {
  3.         $min = 0;
  4.         $max = count($arr)-1;
  5.         while ($min <= $max) {
  6.                 $mid = floor(($min+$max)/2);
  7.                 $value = $arr[$mid]['time'];
  8.                 if ($ele === $value) {
  9.                         return $mid;
  10.                 }
  11.                 if ($ele > $value) {
  12.                         $max = $mid - 1;
  13.                 } else {
  14.                         $min = $mid + 1;
  15.                 }
  16.         }
  17.         $mid = floor(($min+$max)/2) + 1;
  18.         return $mid;
  19. }
  20. public function timer_add($after_ms, $func, $tick = 0, $timer_id = false) {
  21.         // ...
  22.         $pos = $this->timer_pos($timer['time'], $this->timers);
  23.         array_splice($this->timers, $pos, 0, array($timer));
  24.         // ...
  25. }
复制代码
不过需要注意的是,数组这种内存线性连续分布的基础数据结构,虽然拥有有序支持二分查找和O(1)性能的随机访问速度,但相比跳表和树这些内存分布离散的数据结构,数组在扩容时成本比较高.
动态大小的数组在扩容时非常简单粗暴,底层数组大小不够时,会申请一块比原来更大(涉及策略,PHP底层是原来的2倍)的内存,然后把原来的数组复制到新的数组里.
除了PHP的array,PHP的字符串设计得也很好,了解过的都知道,PHP底层字符串(zend_string/smart_str)跟Redis的SDS字符串设计上基本是一样的.
菜鸡只会低头啄米,而雄鹰却能看到优秀的软件之间的共通之处.
bhtl 发表于 2023-10-4 17:58:32|来自:北京 | 显示全部楼层
???
steking 发表于 2023-10-4 17:59:13|来自:北京 | 显示全部楼层
因为现在很多培训机构开设了python课程,为了显示python的“优秀”,这几年这些培训机构的水军狂贬PHP。
slipknot 发表于 2023-10-4 17:59:26|来自:北京 | 显示全部楼层
我不太喜欢争论这些编程语言孰优孰劣的问题,因为 PHP 对我来说只是个在特定条件下解决需求的工具。不论其他人如何看待这门语言,只要它能解决我的问题,别人说别人的话,我做我的事。
而且从自己的实际体验出发,如果自己觉得 PHP 用起来体验很棒。但对方就是说这个语言不好,那我们可以从两方面来考虑:

  • 对方是实事求是的观点。那说明他以偏概全了,因为我用起来觉得很爽的场景他没考虑到。
  • 对方不是基于事实得出的观点。这种情况下,还有什么好争论的呢?
另外,针对你这个提问,我有两点建议:

  • 「总是一些技术小白在贬低 PHP」这种提问方式不太友好,因为反过来看的话容易让人认为只要贬低 PHP 的人就是技术小白。事实上,我从 2006 年开始学习 PHP,就不断看到有人指出这门语言的缺陷,这其中有些人我知道他们并不是技术小白。
  • 多了解几门编程语言后就会发现,作为一门编程语言,它一定会有针对性的业务场景和语言特性,但一定也会有其他方面的缺陷和问题。所以当有人提到语言的缺陷时,他也许只是想发表一下自己的见识和观点,如果不由分说的认为其是在发表「贬低」的言论,那我们讨论的就不是一个语言,而是一个活生生的人了,这样不好。
其实有时候我觉得一门语言说他好也罢,坏也罢,只要能有人提起都还算是不错的。不信来看看这份编程语言 Top50 列表,估计有好多让人拿来写一个 Hello World 的兴趣都没有。
C \ Python \ Java \ C++ \ C# \ Visual Basic \ JavaScript \ Assembly language \ PHP \ SQL \ Classic Visual Basic \ Groovy \ Ruby \ Go \ Swift \ MATLAB \ Fortran \ R \ Perl \ Delphi/Object Pascal \ Scratch \ Prolog \ SAS \ Objective-C \ (Visual) FoxPro \ Rust \ Julia \ COBOL \ PL/SQL \ Ada \ Scala \ VBScript \ Kotlin \ Lisp \ VHDL \ Dart \ PowerShell \ Haskell \ Lua \ D \ ABAP \ Clojure \ Apex \ Scheme \ Transact-SQL \ TypeScript \ Logo \ Ladder Logic \ Tcl \ Elixir

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则