为什么用php的人越来越少了?

news2024/11/15 10:35:43

首先这张图反映的只是某个编程语言的热门程度。

以下代表个人观点:

php这几年热度下降的原因:

1.存活时间长,在互联网技术日新月异的时代,一些更先进的技术会吸引一部分开发者

2.存活时间长,为了对历史版本作出一定的兼容,函数库的体积增大,一定程度上加大了程序员的负担

3.其他的就是其语言本身的缺陷:$符,函数名等等。

不过我不推荐使用传统的后端技术(php等),为什么?

首先用户体验越来越得到重视,ajax,spa(单页应用),angular等框架之类的相关技术的兴起,都从侧面反映出对前后端分离的一种认可和需要,前后端分离的关键简单说来就是把后端的模板渲染移到了前端,交由客户端进行处理,后端只是负责提供数据,页面通过ajax加载,页面无刷新,而传统的php则需要在后端进行模板的渲染,然后把生成的页面返回给客户端。可以明显看出,这样的分工是不合理的,客户端的工作量都移动了服务器端,假如有较高的并发要求,后端的开销是巨大的,因此前后端分离的概念也随之提出,后端提供一个api接口,接受请求返回数据,客户端拿到数据,渲染模板,分工变得合理了,同时数据的通用性更强了,android,ios等客户端也可以获取数据。可能你会说,php也可以只返回json啊,我想说,这是合不合适的问题,如果是这样,明显是牛刀杀鸡。在最求效率和成本的今天,已经不太合适了。

其次,传统后端语言面临的一个巨大冲击就是js后端的诞生,典型的nodejs就是把v8这个js解释器搬到后端,实现服务器的功能,前后端变得统一了,开发的成本减少。

很明显,我是看好js的,hybird app已经相当成熟了,在android和ios的应用中已经占有一定的比例,加上react native对ios和android的支持,js开发原生应用已经实现并且会越来越成熟。

语言上说Php7的新特性不是没有改善,仍旧不能挽救包袱太大的Php。

此外也不要满脸偏见地见js就是callback,见Java就是SSH。JS有promise可以不用没事瞎写callback,Java有诸如Play!这样的轻量框架,JVM上有Clojure和Scala这种更加现代化的语言,Ruby上是Rails碾压一切,Python上除了传统的wsgi container之外也有优秀高效的tornado和aiohttp。

可以尝试一下用用上面提及的这些简单的东西,在仓库的作用下可能可以把你的开发效率较之Php再提高那么一大截。私以为,一个万人骂娘说速度慢的Python都能在性能上和Php齐平,在社区上齐平(嗯当然中文社区不太平)的现在,Php由以前的不可取代变成了可以取代并且有全面更好的选择,剩下国内用Php最大的优势大概是人多价低了。

————————

因为烂

————————

貌似这么说太简单粗暴?PHP的烂是多方面因素累积的。

首先语言设计、效率、库的函数名、参数顺序问题,老生常谈了,基本上真正会PHP的都会知道这些方面的问题。当然说hhvm什么的大幅度提高效率,可是别忘了竞争对手同样在进步。在Java8效率直逼C++的今天,PHP的『效率』谈不上高,也就能跟自己比比看了。

其次是定位。PHP小站可以撑起全服务,大站可以承担中间层,这一点是一直以来广大人民群众对PHP的定位。PHP能够抬起头,以往的优势是一来简单,上手快,加上起步早资料多,以及当年的主要竞争对手之一ASP+vbs抱死了Windows,JSP当时还比较惨不忍睹,这才让PHP一枝独秀闯破天的。现在局势不同了,比效率?node完爆PHP,Java也早不是当年的蜗牛Java了;比易学易用?RoR和Python凭着语言设计良好的优势带着一堆包来教做人;比稳定?Java表示PHP也配谈稳定……到现在PHP的优势只在于源码积累多,以及可能的PHP7和hhvm带来的效率改进了。

最后一根稻草则是JS、CSS的普及以及相应的开发模式的改变。老早以前的HTML里JS效率不高,特别是ms系神奇的IE特殊标签以及自家JScript解释器特立独行,带来的结果是网站大都页面代码揉一起。后来人们慢慢地开始觉得拆开来更有利于模板和程序分开设计,这才出现了前后端概念。PHP带着一众框架跟上了模板化的步伐。但是后来人们发现了Ajax的威力,浏览器突然间蹦跶出来个webkit,JS解释器跑出来个V8,新标准一步步确立,人们总算觉得B/S应该像C/S架构那样彻底拆开来了。不到一两年时间,AJAX遍地跑,此时对于小站,模板合成渲染已经可有可无;对于大站,服务器端合成个模板的开销比对接几个请求还要高,PHP开始落后了。

Node的出现不仅仅是在中间层和轻后端占据了一定话语权,更重要的是前端开发者可以在自机搭建完整的开发环境了。前端一独立,前后分离成了必然,大量的请求其事都是静态的页面和js,以及AJAX拉取的数据,前二者跟PHP已经没一毛钱关系了,后者又有各式各样的额外选择而不需要非PHP不可了,偏偏PHP的优势不突出,缺点倒是挺突出……新项目选择PHP的自然会逐渐减少,就连很多老项目也开始转变使用诸如node这样更方便的新技术来重构(例如阿里淘宝酱的强势承载Node层)。

PHP仍然出现在不少超级大站的后端外层,仍然是在做一些模板合成工作,相比之下PHP模板引擎还是比较成熟好用的。但是很明显,web大哥的地位已经摇摇欲坠了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12774.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FRNet:Feature Reconstruction Network for RGB-D Indoor Scene Parsing实验补充

FRNet做了大量的消融实验,这里仔细来分析一下。 1:ResNet backbone: 作者消融实验使用了ResNet34作为backbone来提取特征,将最后一层的输出简单相加起来,然后通过不断的上采样获得最终的输出。并且只在最后一层进行监督…

FAM DBCO, 6-isomer,DBCO-羧基荧光素琥珀酰亚胺酯-6-异构体

产品名称:DBCO-羧基荧光素琥珀酰亚胺酯-6-异构体 英文名称:FAM DBCO, 6-isomer 荧光素 (FAM) 是荧光染料之一。FAM 的这种衍生物含有环辛炔基团(二苯并环辛炔,缩写为 DBCO 或 ADIBO),用于通过无铜、应变促…

MyBatis 关联映射

文章目录一、关联映射概述二、一对一查询1.association 元素2.嵌套查询实例演示3.嵌套结果集实例演示三、一对多查询1.collection 元素2.嵌套结果集实例演示四、多对多查询1.嵌套查询实例演示2.嵌套结果集实例演示五、自动补全 get、set 方法一、关联映射概述 在此之前&#x…

飞瞳引擎™集装箱AI检测云服务,集装箱信息识别功能免费,全球顶尖AI高泛化性,正常集装箱识别率99.98%,全球2000企业用户

党的二十大报告指出,加快发展物联网,建设高效顺畅的流通体系,降低物流成本。空箱闸口智慧监管为青岛港提高集装箱运输物流效率提供了保障。飞瞳引擎™AI集装箱识别检测云服务,自动化识别检测集装箱信息大幅降低物流成本提升效率&a…

EFK部署centos7.9(三)Kibana部署

系统类型:Centos7.9 节点IP: 192.168.11.140 软件版本:nginx-1.14.2、kibana-6.5.4-linux-x86_64.tar.gz 上传或者下载安装包 Wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.4-linux-x86_64.tar.gz tar zvxf kibana-6.5.…

供应链解决方案SRM是什么?企业实施SRM有什么价值?

企业业务对外的两个最重要的出口就是广义的 “买”和“卖”。在“卖”的方面,企业为了使自己的产品和服务赢得市场、赢得客户,更为重视这方面的管理和更加投入了在市场上的力度。管理软件供应商纷纷推出了CRM产品,企业也开始利用这种管理思想…

字符串的算法题目

题目一: 描述 对于一个长度为 n 字符串,我们需要对它做一些变形。 首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把这个字符串中由空格隔开的单词反序,同时反转每个字符的大小写…

RabbitMQ 服务启动失败问题小结(Windows环境)

RabbitMQ 服务启动失败问题小结(Windows环境) 最近在Windows环境上安装RabbitMQ服务时,踩了不少坑,往上的回答让人很崩溃,几乎一样的回答,起不到帮助作用;特此做个记录总结; *****…

Nginx缓存配置教程

问题引出 假设某电商平台商品详情页需要实现 700 QPS(假设宽带是千兆宽带) 千M局域网宽带网卡速率按照1000进位,所以1Gbps1,000,000,000bps125,000,000Bps≈119.21MB/s 当达到500QPS 的时候很难继续压测上去。 假设每个页面主体渲染所需要的…

java的static关键字及类加载顺序

Java中static可以修饰类、变量、方法甚至可以构成静态块,让我们来了解下它们各自的使用以及加载顺序吧。 基本用法 static关键字修饰类 java里面用static修饰内部类,普通类是不允许声明为静态的,只有内部类才可以。 public class StaticT…

苹果电脑硬盘读写软件有哪些?Tuxera NTFS2023mac读写硬盘软件

格式化是将硬盘重置到初始状态或者是转换硬盘格式所需的一项重要步骤,格式化可以解决大部分用户遇到的硬盘问题,不过在进行格式化之前,大家需要提前了解格式化的具体注意事项,以避免不必要的损失。下面本文就来着重介绍磁盘格式化…

windows xp 邮件服务器漏洞溢出

缓冲区溢出攻击过程概念解释:第一步:入侵着测试目标机的25和110端口第二步:入侵着测试目标机缓冲区溢出第三步:判断目标机器是否发生缓冲区溢出第四步:得到确切缓冲区溢出位置所在的区间。第五步:得到确切缓…

基于低代码开发平台搭建的生产制造管理系统

在现代化社会中,信息化管理模式早已成为企业管理的主流趋势。尤其是随着企业信息化的程度已经成为影响企业创新、发展以和企业经济效益的重要因素之后,生产管理信息化就变得至关重要。因此,拥有一套完备的生产制造管理系统对于提高企业的工作…

Nginx安全控制

安全隔离 通过代理分开了客户端到应用程序服务器端的连接,实现了安全措施。在反向代理之前设置防火墙,仅留一个入口供代理服务器访问。 使用SSL对流量进行加密 常用的http请求转变成https请求,因为http协议是明文传输数据,存在…

黑马redis学习记录Ⅲ SpringDataRedis客户端

学习视频:https://www.bilibili.com/video/BV1cr4y1671t/ SpringDataRedis客户端 SpringData 是 Spring 中数据操作的模块,包含对各种数据库的集成,其中对 Redis 的集成模块就叫做 SpringDataRedis,官网地址:https://…

基于eNSP中大型校园/企业网络规划与设计_综合大作业

作者:BSXY_19计科_陈永跃BSXY_信息学院注:未经允许禁止转发任何内容基于eNSP中大型校园/企业网络规划与设计_综合大作业前言及技术/资源下载说明( **未经允许禁止转发任何内容** )一、设计topo图与设计要求(简单列举18个)二、相应…

漏洞深度分析|Apache Airflow example_bash_operator DAG 远程代码执行漏洞

项目介绍 Airflow 是一个使用 python 语言编写的 data pipeline 调度和监控工作流的平台。 Airflow 是通过 DAG(Directed acyclic graph 有向无环图)来管理任务流程的任务调度工具, 不需要知道业务数据的具体内容,设置任务的依赖…

Vue实现搜索关键字标红高亮加粗

博主介绍 📢点击下列内容可跳转对应的界面,查看更多精彩内容! 🍎主页:水香木鱼 🍍专栏:后台管理系统 文章目录 简介:这是一篇有关【Vue实现搜索关键字标红高亮加粗】的文章&#xf…

光流法draw_flow()函数报错

光流法draw_flow()函数报错 1 import cv22 from scipy import *3 4 5 def draw_flow(im, flow, step16):6 """ Plot optical flow at sample points7 spaced step pixels apart. """8 h, w im.shape[:2]9 y, x mgrid[step / 2…

苹果电脑pd工具箱Parallels Toolbox中文

ParallelsToolbox中文版是一款体积小巧、功能齐全的电脑系统工具箱,Parallels Toolbox将所有的功能均非常直观的展现出来了,在这里可以轻松实现驱动器清理、视频转换、桌面隐藏、锁定屏幕、音频录制等一系列操作。 专为创意人士、学生、小企业主、长期多…