zoukankan      html  css  js  c++  java
  • 为什么很多人觉得学习PHP很简单?

    沙发
     
    阿豆学长长ov 2019-7-28 10:23:12 只看该作者
    写过C/C++,PHP、Java,对比一下,PHP确实是最容易上手的编程语言(注意:我没有说最简单),我从C++转PHP,只花了2个小时熟悉一下语法,然后就开始写代码了 :)。

    我理解主要原因如下:
    1)内置API很完备
    基本不要去找第三方库,这对初学者来说,方便很多,效率高很多,毕竟找个第三方库要熟悉、要研究,总归不放心,语言直接就有了,很多人都是直接google一下API然后拿来就用,我开始也是这样的。

    Java ?我们一个项目有100多个第三方包。。。。。 ,而且这100多个第三方包还是从几百个包中挑出来的,可以脑补一下初学者自己去选第三方包!

    2)编程简单
    初学者拿个php写个面向过程的脚本,只需要查查API就可以了,30分钟搞定;能快速搞定一个事情,能让人产生成就感,这个非常重要;至于面向对象么,后面慢慢学也不迟呀。

    C++和Java的面向对象对于初学者来说简直就是噩梦,对象都没有你跟我谈面向对象 ?

    如果用C或者C++写面向过程呢? 嗯,除非你写hello world,否则请先好好看看《UNIX环境高级编程》《Linux系统编程》。不懂操作系统,你就别想写C和C++程序,到一边写hello world或者冒泡链表这类简单和数据结构玩去吧 :)

    3)并发和内存管理简单
    (注:以下经验来源于PHP 5.3,现在是不是这样不清楚)
    并发:nginx + php-fpm,完美的解决了大部分的并发问题,程序员只要关注写业务逻辑即可,PHP中要用线程或者进程,要么是很特殊的情况,要么是闲的蛋疼;

    Java 和 C++ ?写并发写的吐血,线程、锁、可见性、异步IO、Reactor模式......搞清楚这一堆你才能玩,一不小心出个问题都不知道怎么查。

    内存管理:JVM的垃圾回收没问题一切都好,有问题定位和调优就蛋疼了,平均一年有3 ~ 5次搞这个,24G内存怎么dump?dump后怎么从生产服务器传到开发服务器?传下来后用MAT打开耗费3个小时怎么办?。。。。。。不要问我,我也不知道怎么办!

    C和C++ ?碰上内存问题你就死菜了:1年都定位不出来,然后只能另外写个脚本定时每月重启,这样的事情我不会告诉你是在哪家公司遇到的,因为我怕被打!
    而我们的PHP业务运行了3年,内存泄漏内存爆掉都发生过,很容易就定位出来了,但从来没有说要调优。

    但写好PHP并不容易,事实上用PHP把业务写完很容易,但用PHP把业务写好的话,需要非常扎实的基本功,要求写代码的人逻辑非常严谨:
    1)变量名本来是report,结果写成了reprot,运行OK,结果就是不对,面对一屏花花绿绿的代码,你要是能一眼看出那就是天才!
    2)==和===,不说了,新手100%必中,高手80%踩中!
    3)isset vs empty,和上一个类似
    你以为这几个问题看起来都是小问题?图样图森破,这些问题原理很简单,但是导致的业务问题就千奇百怪了:有的用户正确有的用户不正确,有的用户早上正确但下午不正确,有的用户用Chrome正确但用Firefox就不正确!
    定位出来问题后,要么你想打自己三个耳光,要么你想打写代码的三个耳光!

    所以我认为PHP是最快上手的语言,但PHP同时也是对严谨性要求很高的语言!
    当然,对初学者来说,PHP确实是世界上最好的语言 !:)

    注:
    1)以上内容基于个人经验和经历,本人不是语言专家,不保证理解都完全正确
    2)PHP的问题, @Laruence 是权威,如果他能站在语言设计者和实现着的角度来回答,应该会有趣得多 :)
     
     
     
     
    板凳
     
    dxf17 2019-7-28 11:40:24 只看该作者
    PHP的部署简单,概念比较少(官方也倾向于让各种概念保持模糊,驱使人们用直觉来学习PHP编程)。
    为什么说PHP比Java和C要简单呢?Java和C有一个类似的特点,就是它提供了很多概念,却没有提示你该怎么用。
    比如C的指针。你可以用指针实现动态数组,可以用它记录回调函数,或者指向一个结构体。好了,能做这些,然后呢?为什么要做这些?初学者可能会很困惑,他不明白这些东西和他想实现的电子表格管理软件有什么关系。
    再比如Java。有类,继承有接口,然后呢。组合代码,代码重用,这些跟我想做的电子表格软件有什么关系吗?
    但是PHP的思路完全不一样,它给你展示PHP是怎么用的,但是却不解释这些概念。我觉得这给新手以很好的指引,因为编程就是这么一回事,它终究是用来解决问题的,拘泥于概念对学习的帮助不大。
     
     
     
     
    地板
     
    简单350 2019-7-28 12:03:13 只看该作者
    我来说一说我的体验。
    有一次准备写一个小脚本,跑一个api,把里面的json解析并且写入数据库。

    最开始打算用c#,折腾了半天,百度了无数资料,还没找到如何解析json,导入各种命名空间,仍然不停报错,低配笔记本安装一个vs更是卡上半个小时。c#写一个get请求请问要多少行代码?php的file_get_contents函数请问多少行代码?

    然后打算用python,然后遇到了md5加密问题,遂百度,得知要调用md5,至少先import hashlib,然后new一个对象,update,最后获取md5,至少四行代码把,php呢?一个md5()函数就能搞定。

    java更别说了,初学者光设置一个环境变量就要百度好几页把。还有庞大的eclipse的ide,或者手动编译,到处碰壁,初学者的耐心还剩下多少?

    php环境安装简单,代码风格灵活,内置无数方便的扩展和函数库,教程资料丰富,类c的语法,而不是python各种怪异(看似方便,但对初学者不友好)语法,学习成和移植成本大大减少。开源项目丰富等等,各方面都是他的优点。

    php的内置API和自带的扩展非常方便调用,而且写法很适合伪代码转换为实际PHP代码,理解也狠符合正常人的思维。
    Talk is cheap. Show me the code
    json_decode(file_get_content(url.'?token='.md5(time())))请问从这段代码来看待我的需求以及从学习php简单这个角度来看待题主的问题,还有什么编程语言比php方便?请大家就题主的问题来讨论好吧!!!
     
     
     
     
    5#
     
    白刃玄衣及 2019-7-28 13:11:08 只看该作者
    PHP一行命令就能建立一个HTTP+SQLite服务器:
    php -S 0.0.0.0:80 -t /wwwPHP四行代码就能提供一个数据库驱动的HTTP+JSON服务:
    $db = new PDO("sqlite:{$_SERVER['DOCUMENT_ROOT']}/../data.db3");
    header('Content-Type: application/json; charset=utf-8');
    $id = (!isset($_GET['id'])) ? 0 : intval($_GET['id']);
    echo json_encode($db->query("SELECT * FROM posts WHERE id = {$id}")->fetchAll());你说PHP简不简单?
     
     
     
     
    6#
     
    六月清晨搅 2019-7-28 13:43:22 只看该作者
    因为他们不考虑代码复用和 bug 预防。传入数据不做 schema validation;和 db 交互直接手写 sql 而不是使用 query builder;不考虑错误处理;出了 bug 再改而不是考虑如何预防 bug。直接用自带函数然后用各种 ad-hoc 的方式解决问题 (比如 json_encode 对于空 array 或者 空 object 的处理)。


    但是我即使能够理解这些也不能理解为什么有人觉得 php 概念少。Warning, Notice, Parse Error, Fatal Error 要理解对吧;C 扩展怎么装要理解对吧(否则你怎么拿 multibyte string 扩展处理 utf8);然后各种情况下 & 要理解对吧;然后 seterrorhandler 之类的要理解对吧;PHPUnit 的 ad-hoc 设定要理解对吧;然后所谓的 PHP data constructor 的 array,isset 等等与函数的区别要懂对吧。!![] 这种坑要懂对吧。 然后像是 array(__NAMESPACE__, "funcName" 也得懂吧。同时支持 psr-1 和 psr-4 的注意事项要懂吧。


    然后你就算懂了这些,有时候懒得写工具函数的时候,你去找了一找;然后发现像是 camelCase -> anyCase / anyCase -> camelCase 这么简单的工具还要自己写。


    看到有人吹 php 自带函数的,连 find 都没有的标准库还好意思吹。
     
     
     
     
    7#
     
    戏做顿 2019-7-28 14:41:20 只看该作者
    来自一个山沟的二狗在一个没有人听说过的城市读了大学,然后走到帝都上了培训班,然后一年时间月薪过万,从此成为了父老乡亲眼中挣大钱的人。
     
     
     
     
    8#
     
    快乐人L 2019-7-28 14:56:27 只看该作者
    因为确实很简单啊。5个工作时,从零构建一个常规公司官网到上线,可以了吧
     
     
     
     
    9#
     
    因为PHP一般都是在Linux系统运行,没有线程的概念,基本上不需要攻城师自己管理内存。而且PHP提供了很多实用的内置函数,特别是处理字符串和数组相关的,为Web开发提供了很多方便,让代码更好写了。
    此外,虽然PHP也可以用来开发诸如web服务器这种客户端软件,但是主要还是被用来做Web开发,应用环境比较单纯(较少涉及底层操作,这也和PHP的设计初衷有关),所以可能相对C这种底层语言更容易一些吧。


    真牛逼。
    大概人们觉得学习 PHP 很简单因为看到的 PHP 工程师都是这个水平的?
     
     
     
     
    10#
     
    Gordon520 2019-7-28 16:39:55 只看该作者
    不说那么多,就说一个,strtotime('1 year 10 days ago')直接就能取时间,还有哪个语言的内置api 能这么干?
     
     
     
     
    11#
     
    伊索谗言 2019-7-28 17:32:10 只看该作者
    PHP 独特的语法混合C、java、perl以及php自创的语法。它可以CGI或者perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
    PHP的特性包括:
    1. PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。
    2. PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,
    PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;
    PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。
    3. PHP支持几乎所有流行的数据库以及操作系统。
    4. 最重要的是PHP可以用C、C++进行程序的扩展


    <ignore_js_op>




    PHP全套视频教程:https://pan.baidu.com/s/1kUO4JYn


    PHP-新课程大纲- :https://pan.baidu.com/s/1cgxWDK


    PHP-WEB前端页面制作快速入门-:https://pan.baidu.com/s/1mhIxfZy


    PHP-PHP高级课程-高级语法- https://pan.baidu.com/s/1bplL69p


    PHP-PHP高级课程-高级实战- https://pan.baidu.com/s/1eSAced0


    PHP-PHP高级课程-JS实战https://pan.baidu.com/s/1geX0tZP
     
     
     
     
    12#
     
    123456835 2019-7-28 18:28:45 只看该作者
    因为你没去写c/c++这种变态的语言,什么各种数据类型,int void float char返回值类型,参数声明都要有类型。各种类型指针,内存分配。一不小心内存溢出。没事还有它的各种继承方式,友类。多态。虚函数。
    学了其他语言我才明白为什么 vb Python java c# JavaScript 那么大众化流行。真他妈好学简单!
     
     
     
     
    13#
     
    风来时狂放 2019-7-28 18:42:08 只看该作者
    你得看和谁比。
    C?php更容易上手一些。毕竟新手学C只能花式向世界问好。
    C++?不不不这两个东西不应该相提并论。
    rust?比楼上C++简单一些,如果你的代码里没有lifetime出现那么简单很多。但是还不是不能相提并论。
    Java?那必然……不要忘记class struggle。
    python?这毫无疑问的,python更好。
    js?就问你学php要不要学js。


    总之,php相对某些语言确实简单,但是怎么可能比js简单。
     
     
     
     
    14#
     
    万胜 2019-7-28 20:11:18 只看该作者
    三本狗感谢php
     
     
     
     
    15#
     
    123456868 2019-7-28 20:21:30 只看该作者
    因为真的简单啊

    这是唯一一门我从来都没有学过,也没有看过任何书,但我拿到手就就能用的语言
     
     
     
     
    16#
     
    dxf17 2019-7-28 21:35:09 只看该作者
    一般来说,同等工作经验的Php比同等经验的Java前端能力厉害一些,因为他们时间多,,有时间折腾前端三大框架那些蛋疼东西
     
     
     
     
    17#
     
    永远爱你冰塘 2019-7-28 23:09:03 只看该作者
    php之所以简单,主要还是PHP主要以脚本语言为主,类似于C语言,所以入门还是比较简单的,但这也仅仅是相对而言。任何语言编程的学习都是艰苦漫长的过程的,PHP也不例外,想要做到精通也不是那么简单的事情的。他是一个长期学习的过程,及时掌握了PHP的应用,在工作中还是要不断的去学习的,因为技术更新的速度太快了,不得不去学习进步。做编程最重要的还是坚持吧。
     
     
     
     
    18#
     
    戏做顿 2019-7-29 00:19:44 只看该作者
    作为一个PHP程序员来说,接触过C/C++、Java等语言的开发后,你就会有感觉怎么PHP那么容易了。
    个人觉得PHP容易学是因为有以下几点原因:
    (1)语法学起来容易
    就语法来说,PHP是弱类型语言,使用起来并不会要求变量非要定义某个类型才行,对比的其他几种语言的学习来说, 你会发现PHP的基础语法使用比C/C++和JAVA都容易。
    (2)环境容易搭
    PHP的环境学习之初直接下载个环境集成软件就可以开始干了,不像C/C++或者是JAVA搭建个环境都很麻烦。
    (3)做东西出来快
    一门编程语言竟然被说学起来容易,那它一定是做东西出来很快,效果比别的编程语言快!不的话如果PHP学起来容易但是做个东西很久才有成品,那它一定不会被人说容易!
    对比过C/C++或者是JAVA,你就会发现你从零开始学到写个留言板、一个简单的cms系统快得很。你再从0学C/C++或者是JAVA到做出点东西看看,对比时间真的很长。


    最后还是得说明,并不是说PHP容易学就一定是最好的语言,反而我觉得各个编程语言有它的特点也跟他的底层有关系。编程语言只是一个工具,还要看你做什么用什么工具编。
     
     
     
     
    19#
     
    宇宙无限 2019-7-29 00:52:04 只看该作者
    相比其他服务端语言,PHP肯定简单点,脚本语言本来上手就容易些,不是编译型,弱类型语言,语言简洁,多个内置函数就可用,加上不能多线程,只能结合swoole等扩展弄单线程,多进程,正是因为简单所有开发速度快,支持多个平台;我也刚入PHP坑,一个朋友在教PHP,利用工作之余跟着他在学,我纯属于个人兴趣爱好,以后是否会转行做PHP并不一定,也算是get一门新技能吧~
     
     
     
     
    20#
     
    xinting_6ym 2019-7-29 01:03:11 只看该作者
    第一次被邀,就写点什么,也作为对自己的一个回顾,表达能力有限,请多见谅.

    我粗浅的认为,人在接触跟自己思维方式相匹配的事物的时候,会产生一种莫名的亲切感,而PHP的一些feature决定了它和非常多初学者的思维方式不冲突(比如:弱类型,既能面向过程又能面向对象, etc..).说白了,就是学习门槛不高.这样,初学者会很容易在PHP的学习过程中的到一定的成就感,有了初期的成就感之后,他们就会愿意去学这个东西.有了这个意愿了,就不会轻易放弃这个东西了(我这里说的是初学者).

        就我了解的情况来看,PHP目前有各种各样的开源项目,开源框架(这都归功于程序员们天生的喜欢自己造轮子的强迫症.),这给初学者和刚入门的同学提供了非常丰富的学习资源.当然,这些各种各样的项目的质量确实是参差不齐,但是有谁在初学程序的时候,不是靠看别人的代码过来的呢?随着初学者掌握的知识和经验越来越丰富,自然而然的就会对之前看过的那些代码产生自己的见解.

        上面有人提到了PHP的部署容易,这个feature也确实给初学者带来了很大的方便.能让初学者真正把精力放在学习编程这件事情上.也许有人会说,初学者部署的时候也会遇到很多问题.对于这一点,我不否认,因为我本人也帮很多初学者解答过初期搭建apache+php+mysql环境的问题(当时的xampp之类的套件还没有现在这么方便易用).即便是初学者在搭建环境上多花了一点时间,在真正开始学习写代码的时候,就不用再管编译或者deploy之类的事情了.

        当然,学习PHP简单,并不就是说PHP需要学习的东西不多.由于PHP在web开发中的普遍使用,web开发中和后端语言无关的内容都得了解到,比如HTTP协议啊,HTML啊, MYSQL啊等等...虽然在大牛眼里这些东西都是毛毛雨,但是在初学者眼里,这些东西都还是挺复杂的东东.但是这些东西,在初学PHP的时候完全不用关心.当然学习其他语言的初期也不用关心这些东西:)

        随着后来的学习和实践等等,遇到的问题越来越多,要学习的东西还是挺多的.比如像 @Laruence  鸟哥那样,研究PHP的源码,分析各种诡异BUG的真正原因. 这又要看得懂C了.并且PHP源码里面的各种宏扩展,要看懂也并不是只看懂C那么简单.

    好像有些偏题了....就说这么多吧....

    我其实更想看看 鸟哥@Laruence 的观点
     
     
     
     
     
  • 相关阅读:
    oracle数据库导入导出命令!
    windows 7资源管理器崩溃解决方法
    迅雷和vs 2010的冲突
    当前网页正在试图打开您的受信任的站点列表中的站点,招人烦的alimama和淘宝
    <xhtmlConformance mode="Legacy"/>时,UpdatePanel会失效。
    头回遇见网上找不到的问题,“缺少实例ID,实例ID是必需的”
    修改基础表后,刷新关联视图的两种方法
    关于PetShop的一些记录。
    Linux poll机制分析
    volatile原理与技巧
  • 原文地址:https://www.cnblogs.com/SofuBlue/p/12120222.html
Copyright © 2011-2022 走看看