大家说说 PHP 容易学吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
t2doo
V2EX    PHP

大家说说 PHP 容易学吗?

  •  
  •   t2doo 2014-04-10 16:40:28 +08:00 11281 次点击
    这是一个创建于 4220 天前的主题,其中的信息可能已经有所发展或是发生改变。
    都说PHP这门语言是dirty and quick,quick我明白是啥意思,可这dirty是神马意思呢?我只会css/jquery/php,我觉得PHP挺好的啊,至少做一个网站平台是没啥问题的,那为啥要说php dirty呢?
    < href="/tag/dirty" class="tag">
  • dirty
  • PHP
  • Quick
    55 条回复    1970-01-01 08:00:00 +08:00
    ccbikai
        1
    ccbikai  
    PRO
       2014-04-10 16:48:54 +08:00 via Android
    .= 虽然不会php,但是php最让我反感的是这句话前边的东西
    NemoAlex
        2
    NemoAlex  
       2014-04-10 16:57:04 +08:00
    PHP 好学是其优点之一
    缺点主要是 API 设计混乱,文档差,语法难看,5以后虽然有面向对象的一些东西加入,但还是没有良好的基因,使得大型项目难以组织
    还有就是用的人水平良莠不齐,一搜什么乱七八糟的都能出来
    t2doo
        3
    t2doo  
    OP
       2014-04-10 17:18:45 +08:00
    感觉Javascript比php要dirty多啦,还好有jquery存在,我喜欢php,它让我赚了好多银子
    zythum
        4
    zythum  
       2014-04-10 19:00:50 +08:00   1
    @t2doo Javascript 其实很干净的。 最少在api设计上。而且限制非常少。很接近lisp。

    你觉得dirty可能是因为做浏览器兼容做恶心了。或者你觉得api设计太少。太多需要自己封装。所以把这些功劳给了jquery.
    zakokun
        5
    zakokun  
       2014-04-10 19:07:26 +08:00
    我觉得php恐怕是最好学的编程语言了...我反正是很感谢php带给我一份舒适的工作
    loading
        6
    loading  
       2014-04-10 19:13:40 +08:00 via iPhone
    学python吧,当然:php是世界上最好的语言没有之一
    cyokvip
        7
    cyokvip  
       2014-04-10 19:42:54 +08:00 via iPhone
    学容易,精通难
    jybox
        8
    jybox  
       2014-04-10 20:18:18 +08:00
    @zythum 据说 Javascript 的类型系统很混乱,比如 Object 和 Array 区分很模糊,typeof 的结果也不合逻辑,不知道大牛有啥见解。
    zakokun
        9
    zakokun  
       2014-04-10 20:35:25 +08:00
    还有,你这猫好喜感...起司猫吗?
    rannnn
        10
    rannnn  
       2014-04-10 20:54:23 +08:00
    @jybox object和array咋模糊了{} []完全不一样嘛。 typeof除了null和regexp有点诡异
    zythum
        11
    zythum  
       2014-04-10 20:58:40 +08:00   1
    @jybox
    Array 是数组啊。 Object是对象。Array 继承 Object。主要是js没有set,或者map这样的数据接口。所以只能用Object来做这个事情。
    你觉得模糊可能是因为 [1,2,3][0] 和 ({a:1,b:2})['a'] 看上去都是中括号。但是你看下php,set,map,array 都是用array。难道不觉得更加混淆

    typof 来说,对于基本都是对的。number, undefined, boolean, string, null.
    对坑爹的是object 和 function.

    还有就是 typeof '' === 'string', typeof new String === 'object' 这样的东西。
    但是如果从原来上说是对的。 一切都是new做的怪。
    说实话。如果真的要像lisp。那应该是没有new这样东西的。估计当时PM说,java现在火,设计api要像java...所以...
    michaelye1988
        12
    michaelye1988  
       2014-04-10 21:01:21 +08:00
    刚入门PHP,可能是还不习惯,目前我还是喜欢java。
    Sunyanzi
        13
    Sunyanzi  
       2014-04-10 21:11:09 +08:00
    虽然我写 php 写了十好几年 ... 但我依然认为最好学的编程语言是 Python ... php 次之 ...

    当然这只是说上手难度 ... 往精了走哪个都不容易 ...
    towser
        14
    towser  
       2014-04-10 22:03:26 +08:00
    学到凑凑合合弄个东西出来容易,学好它难,比JAVA难。
    hitsmaxft
        15
    hitsmaxft  
       2014-04-10 22:25:39 +08:00
    行百里者半九十, 这句话很适合phper
    pagecho
        16
    pagecho  
       2014-04-10 22:27:21 +08:00
    毕业设计是php做一个租赁系统,之前没学过php,赶鸭子上架,代码被我写得邋遢死了。。。还好老师不看我代码。这种很敷衍的写法……我自己都要被这堆代码笑死了。
    hitsmaxft
        17
    hitsmaxft  
       2014-04-10 22:34:35 +08:00
    面试phper可以这么面

    1. 请问你用的php是什么版本号? 能答得上, 恭喜, 8k月薪
    不用2了

    现在你们知道php多么良莠不齐了吧
    gaicitadie
        18
    gaicitadie  
       2014-04-10 22:34:44 +08:00 via Android
    php那一堆函数命名方式,参数位置,没有规律,必须死记硬背。还好有phpstorm。

    跑个题,jetbrains的ide能颠覆人对语言的看法,用了phpstorm以后,php仿佛变成了另一个语言,美妙而富有表现力
    baocaixiong
        19
    baocaixiong  
       2014-04-10 22:38:21 +08:00
    @gaicitadie explode 等等函数的位置,像delimiter各种一下在前一下在后的。昏呼呼的。。
    mikej
        20
    mikej  
       2014-04-10 22:50:22 +08:00
    不知道从哪儿看到的话:每种身份下都有不同的阶级。
    riaqn
        21
    riaqn  
       2014-04-10 23:02:18 +08:00
    不是好不好学,而是是否值得去学。我认为对于现在还没有接触php的开发者,就不用特意去学了。
    jacy
        22
    jacy  
       2014-04-10 23:08:41 +08:00
    我编程从basic入门的,但是学网页却没从asp开始,因为我觉得php更好懂。。
    raincious
        23
    raincious  
       2014-04-10 23:11:50 +08:00
    PHP现在就像是一堆各种东西拼凑出来的(本来就是),所以出了个SPL来解决这一系列的问题。

    很多问题很明显,比如isset()吧,可以(但我有些强迫症的认为应该是isSet,虽然函数名小写化之后是一样的),但是为什么empty()就不是isEmpty?。

    另外php函数取名也不都是规范的,各种扩展有各自的规范就不说了,比如is_array这样的取名方式,突然来一个gettype就一点也不好玩。
    Precious
        24
    Precious  
       2014-04-10 23:44:15 +08:00
    说dirty是因为最开始迁到代码里,没有和应用分层设计
    还有历史遗留原因下各种奇怪命名的函数 (其实C语言也是啊)
    还有当年门槛低,项目的各种遗留问题,来一个人加一个功能,必然不好看啊
    你看现在的PHP框架,其实代码写得也很清爽了啊
    PHP不适合现在的分布式大规模计算,只能个人、小企业建站,必然阻扰他的发展
    wwek
        25
    wwek  
       2014-04-10 23:49:24 +08:00
    php容易学,这是毋庸置疑的。
    没有哪一门计算机语言是完美的。
    更具自己的场景选语言。

    php不适合做分布式计算? 你不能用任何一门语言完成所有的工作。 分布式计算中,php做数据呈现不就非常好。

    不知道楼上的说 php只能个人,中小企业。笑话 。全球大互联网公司几乎每家都在用php啊。
    jakwings
        26
    jakwings  
       2014-04-11 00:14:45 +08:00
    @rannnn @jybox @zythum ECMAScript6 似乎要实现 typeof null === 'null'
    其它非 primitive 类型的变量,看来以后都要继续得到 'object' 了(其实挺合理的了)。
    用较新版的 node 测试:
    node --harmony-typeof -e 'console.log(typeof null)'
    jakwings
        27
    jakwings  
       2014-04-11 00:18:02 +08:00
    @jakwings 伴随着 typeof 的改变,还有 Array.isArray 来判断是否为数组。
    yakczh
        28
    yakczh  
       2014-04-11 00:34:18 +08:00   1
    容易学的东西大家都会,紧接着市场很快就饱和,平均待遇就被拉低 你要待遇高,得学一门不容易学的语言, 比如c/c++ 之类的
    jeffw
        29
    jeffw  
       2014-04-11 00:38:09 +08:00
    我觉得还是蛮好学的嘛
    sunshineg
        30
    sunshineg  
       2014-04-11 00:47:00 +08:00
    赞同 @cyokvip ,PHP上手快,但是成为大神的比较难....

    @楼主,前几天也有用户在sf上问到类似问题,希望答案有帮助 :) http://segmentfault.com/q/1010000000461429
    davidyin
        31
    davidyin  
       2014-04-11 02:39:27 +08:00
    易学难精
    rannnn
        32
    rannnn  
       2014-04-11 08:03:13 +08:00
    @jakwings typeof null === 'null'提案被拒绝了,不排除未来会从V8移除,所以最好不要依赖
    t2doo
        33
    t2doo  
    OP
       2014-04-11 09:14:21 +08:00
    @sunshineg 发现一个不错的网站:)
    icanfork
        34
    icanfork  
       2014-04-11 09:15:57 +08:00
    所有语言精通都难
    所谓万事开头难,你现在只是在寻找你认为容易开头的一门语言
    其实只要掌握它,你就是master
    你甚至能从中体会到别人领悟不到的东西
    又何谓哪种语言dirty
    bakac
        35
    bakac  
       2014-04-11 09:34:31 +08:00
    我倒是认为PHP的官方文档和python的一样好,而且最重要是文档下面的评论区旺旺有更详细的使用示例,相比之下某GO语言的文档只是扔出源代码让你自己读 2333333.
    另外JS的自由度很大,也非常之简洁
    ichou
        36
    ichou  
       2014-04-11 10:23:41 +08:00
    PHP 入门容易是因为它的内置方法多入牛毛吧 想要什么几乎都有
    PHP 难学也是因为它的内置方法多入牛毛吧 用了大半辈子还是离不开查手册
    以前有个同事没事儿就翻 php 的函数看,后来他白头到老了,阿门
    zythum
        37
    zythum  
       2014-04-11 10:29:06 +08:00
    @jakwings
    话说以后会不会有

    Object.isObject
    String.isString
    Number.isNumber

    但是按照这样,undefined, null怎么办....
    Random
        38
    Random  
       2014-04-11 10:41:38 +08:00
    @ichou

    拼标准库的内置接口的话看和谁比了.

    和lua、 Javascript这些比当然多多了.

    但是和自带电池的语言比如python、ruby比, php又少多了, 甚至未必能拼过Go.
    wdd2007
        39
    wdd2007  
       2014-04-11 10:47:21 +08:00
    写出来容易,写好难。
    loserwn
        40
    loserwn  
       2014-04-11 11:36:44 +08:00
    看对语言的态度了。语言无非是工具,拿来用的。
    好用,能用的顺手,最重要。
    好与不好,都是对于自己。不用太在乎别人的感受。
    jakwings
        41
    jakwings  
       2014-04-11 12:07:08 +08:00
    @zythum 或许,不过我估计有 isArray 就能够简化很多代码了(Polyfill 也好容易写)。再搞下去 Javascript 都要变 PHP 了。null 和 undefined 可以直接 === 判断。数字的话一般都是(从字符串转数字)判断有穷数字,直接 isFinite(x) ,或者干脆 typeof 。
    Javascript 就是个坑!Orz 算了,用 polyfill 好了……Orz Orz
    NemoAlex
        42
    NemoAlex  
       2014-04-11 13:43:32 +08:00
    看到你们说 Javascript dirty
    前端的东西有 TM 干净的么
    哈哈哈
    hourui
        43
    hourui  
       2014-04-11 15:59:35 +08:00
    语言只是一个工具。
    dirty与否,是取决于用工具的人。
    Narcissu5
        44
    Narcissu5  
       2014-04-11 16:42:00 +08:00
    居然没有人提到php的性能问题,还有进程模型
    ren2881971
        45
    ren2881971  
       2014-04-11 17:01:03 +08:00
    我只说一句 Java是最好的语言。 你们吵吧 哈哈哈
    h2ero
        46
    h2ero  
       2014-04-11 17:57:36 +08:00
    我只想说php的文档很好。
    zxx
        47
    zxx  
       2014-04-11 18:07:29 +08:00
    @zakokun 我断断续续自学了10年 还没入门
    lincanbin
        48
    lincanbin  
       2014-04-11 20:16:23 +08:00
    @Narcissu5 现在Web开发性能瓶颈一般在数据库那块,一般是I/O
    解释型语言和编译型语言实际用起来差别不大。
    poboy
        49
    poboy  
       2014-04-11 21:34:47 +08:00
    可能是用习惯了吧,先入为主,别的语言也学过java,python,还是喜欢php,虽然python简洁,但是他的缩进。。。
    thcode
        50
    thcode  
       2014-04-11 23:07:53 +08:00
    @zythum 朱一你博客域名到期了啊
    xcc7624
        51
    xcc7624  
       2014-04-12 00:33:37 +08:00
    这种问题,在网上经常看到,语言重要,但是最重要的还是人,三流的程序员就算用了lisp就能写出好的代码出来吗?照样dirty。个人感觉,根据自身水平和要解决的任务的情况选择合适的编程语言。
    pubby
        52
    pubby  
       2014-04-12 00:50:05 +08:00   1
    看到有人提php性能问题,那要看用来干什么

    对网站来说,能达到每秒20个请求,就能支撑一个日pv 100万的网站

    如果达不到,那瓶颈也绝对不在php本身。
    johnlui
        53
    johnlui  
       2014-04-12 01:19:46 +08:00
    @zythum 接近lisp这话好像是我说的?别打我我什么都不知道~~~ :)
    zythum
        54
    zythum  
       2014-04-12 09:39:55 +08:00
    @thcode 谢谢 知道了

    @johnlui 呵呵
    wssgcg1213
        55
    wssgcg1213  
       2014-04-12 15:20:17 +08:00
    其实js是最依赖宿主环境的语言没有之一, 光论ECMA5标准其实一点也不dirty啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1212 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 23:37 PVG 07:37 LAX 16:37 JFK 19:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86