2017年PHP程序员未来路在何方

jopen 7年前
   <p style="text-align: center;"><a href="/misc/goto?guid=4958997304153970485" title="PHP"><img alt="2017年PHP程序员未来路在何方" src="https://simg.open-open.com/show/d724e7eac4328714bc401ca487666b3e.gif" /></a></p>    <p>PHP 从诞生到现在已经有 20 多年历史,从 Web 时代兴起到移动互联网退潮,互联网领域各种编程语言和技术层出不穷, Node.js 、 GO 、 Python 不断地在挑战 PHP 的地位。这些技术的推动者非常热衷于唱衰 PHP , PHP 语言的未来在哪里?PHP 程序员当如何应对未来的变革?</p>    <p>作为老牌的 Web 后端编程语言,PHP 在全球市场占有率非常高,仅次于 Java ,从各个招聘网站的数据上来看 PHP 开发的职位非常多,薪资水平也非常不错。实际在中小企业、互联网创业公司 PHP 的市场地位是高于 Java 的。Java 在超大型企业、传统软件行业、金融领域优势更大。目前来看 Node.js、 GO 、 Python 、 Ruby 等语言还难以企及 PHP 和 Java 。</p>    <p>PHP 语言之所以能有今天的地位,得益于 PHP 语言设计者一直遵从实用主义,将技术的复杂性隐藏在底层。PHP 语言入门简单,容易掌握,程序健壮性好,不容易出现像 Java 、 C++ 等其他语言那样复杂的问题,如内存泄漏和 Crash ,跟踪调试相对轻松很多。PHP 官方提供的标准库非常强大,各种功能函数都能在官方的标准库中找到,包括 MySQL、Memcache、Redis、GD 图形库、CURL、XML、JSON 等等,免除了开发者到处找库的烦恼。PHP 的文档非常棒,每个函数都有详细的说明和使用示例。第三方类库和工具、代码、项目也很丰富。开发者可以快速、高效地使用 PHP 编写开发各类软件。到目前为止市面上仍然没有出现比 PHP 更简单易用的编程语言。所以 PHP 的前景还是很广阔的,与其纠结于编程语言的选择,不如好好地深入学习使用 PHP 。</p>    <p>作为一个资深的 PHP 开发者,在技术上给各位 PHP 程序十点未来的建议,希望对大家有所帮助。</p>    <p><strong>1. Composer</strong></p>    <p>第一点就要提 Composer ,自从 Composer 出现后,PHP 的依赖管理可以变得非常简单。程序内依赖一些类库和框架,直接使用 Composer 引入即可,通过使用 <code>composer update</code> 安装依赖的包。解决了过去加载外部库的各种难题。Composer 也有国内镜像,速度非常快。现在绝大部分 PHP 开源的项目都提供了 Composer 的支持,建议大家在项目中使用 Composer 来解决 PHP 代码包管理的问题,不要再使用下载源码、手工 include 的原始方法。</p>    <p><strong>2. PHP7</strong></p>    <p>PHP7 版本对 Zend 引擎做了大量修改,大幅提升了 PHP 语言的性能,使用 PHP7 可以使你的程序性能瞬间翻倍。即使是 WordPress 这样重量级的软件运行在 PHP7 都能有上千 QPS ,相当于一台服务器每天就能处理 8000 万次请求。使用 PHP7 ,做好 MySQL 优化,使用 Memcache 和 Redis 进行加速,这套技术架构完全可以应对相当大规模的系统。除了某些亿级用户的平台之外,一般规模的系统完全没有压力。</p>    <p><strong>3. PSR</strong></p>    <p>PSR 是 <a href="/misc/goto?guid=4958870330348147121">http://www.php-fig.org/</a> 组织制定的 PHP 语言开发规范,约定了很多方面的规则,如命名空间、类名<br /> 规范、编码风格标准、Autoload、公共接口等。现在已经成为 PHP 技术社区事实上的标准了。很多知名的 PHP 框架和类库都遵守了 PSR 规范。PHP 开发者应当学习掌握 PSR 规范,在开发程序时应当尽量遵循 PSR 规范。</p>    <p><strong>4. Swoole</strong></p>    <p>2017 年 PHP 还局限于做 Web 网站吗?No ,如果你还不知道 Swoole ,赶快去了解一下吧。Swoole 的口号是重新定义 PHP 语言,Swoole 是一个异步并行的通信引擎,作为 PHP 的扩展来运行。Node.js 的异步回调 Swoole 有,Go 语言的协程 Swoole 也有,这完全颠覆了对 PHP 的认知。使用 Swoole PHP 可以实现常驻内存的 Server 程序,可以实现 TCP 、 UDP 异步网络通信的编程开发。过去 PHP 只能做一个 Web 网站,现在使用 Swoole 可以做 Java 、C++ 才能实现的通信服务,比如 WebSocket 即使通信、聊天、推送服务器、RPC 远程调用服务、网关、代理、游戏服务器等。如果你想用 PHP 做点 Web 系统之外的东西,Swoole 是最好的选择。</p>    <p><strong>5. Laravel</strong></p>    <p>最近几年最火热的 PHP 框架,官网号称是为 Web 艺术家设计的框架,可见这套框架有多优雅。Laravel 提供的功能模块丰富,API 设计简洁,表达力强。而且它的社区非常活跃,代码贡献者众多,第三方的插件非常多,生态系统相当繁荣。 Laravel 底层使用了很多 symfony2 组件,通过 composer 实现了依赖管理。如果还在纠结使用什么 PHP 框架,不如选择 Laravel 。 Laravel 提供的命令行工具基于 symfony.console 实现,功能强大,集成了各种项目管理、自动生成代码的功能。</p>    <p><strong>6. Phar</strong></p>    <p>PHP5.3 之后支持了类似 Java 的 jar 包,名为 phar。用来将多个 PHP 文件打包为一个文件。这个特性使得 PHP 也可以像 Java 一样方便地实现应用程序打包和组件化。一个应用程序可以打成一个 Phar 包,直接放到<br /> PHP-FPM 中运行。配合 Swoole ,可以在命令行下执行 <code>php server.phar</code> 一键启动服务器。PHP 的代码包可以用 Phar 打包成组件,放到 Swoole 的服务器容器中去加载执行。</p>    <p><strong>7. C/C++/GO</strong></p>    <p>任何技术有优点就有缺点,PHP 作为一门动态脚本语言,优点是开发方便效率高。缺点就是性能差。在密集运算的场景下比 C 、 C++ 相差几十倍甚至上百倍。另外 PHP 不可以直接操作底层,需要依赖扩展库来提供 API 实现。PHP 程序员可以学习一门静态编译语言作为补充实现动静互补,C/C++/Go 都是不错的选择。而且静态语言的编程体验与动态语言完全不同,学习过程可以让你得到更大的提升。</p>    <p>掌握 C/C++ 语言后,还可以阅读 PHP 、 Swoole 、 Nginx 、Redis 、 Linux 内核等开源软件的源码,了解其底层运行原理。</p>    <p>现在最新版本的 Swoole 提供了 C++ 扩展模块的支持,封装了 Zend API,用 C++ 操作 PHP 变得很简单,可以用 C++ 实现 PHP 扩展函数和类。</p>    <p><strong>8. HTML5</strong></p>    <p>作为 Web 前端新一代标准,HTML5 未来前景非常广阔,市场需求量非常大。从 PC 网站、B/S 企业软件、移动端网页、APP,这些领域都在拥抱 HTML5,掌握了 HTML5 才能在下一波互联网技术大潮中存活下来。</p>    <p><strong>9. Vue.js</strong></p>    <p>PHP 程序员除了写后台程序之外,还有很大一部分工作在展现层,和浏览器前端打交道。2017 年你还在用 jQuery 操作 DOM 实现界面渲染吗?已经完全 out 了。现在用 Vue.js 可以非常方便地实现数据和 DOM 元素的绑定。通过 Ajax 请求后台接口返回数据后,更新前端数据自动实现界面渲染。2017 年再不学 Vue 就晚了。</p>    <p>如果你不光要写 Web 程序,同时还希望兼顾 Android 、IOS 、PC 客户端等平台,React Native 是一个不错的选择。</p>    <p><strong>10. 深度学习/人工智能</strong></p>    <p>互联网的未来属于人工智能,如果你还不了解机器学习、深度学习、人工智能这些概念,那你需要尽快学习了解一下。现在互联网巨头们都在布局人工智能,包括 Google 、 非死book 、微软、亚马逊和国内的百度。虽然现在还处于科学研究的阶段,但未来互联网的各个领域都会应用到人工智能,包括自动驾驶、大数据分析、网络游戏、图像识别、语言处理等。当然现在普通的工程师可能还无法参与到人工智能产品中,但至少应该理解深度学习/人工智能的基本概念和原理。</p>    <p>来源:<a href="/misc/goto?guid=4959004515046886239">segmentfault</a> 作者:韩天峰(<a href="/misc/goto?guid=4959004515140293910">matyhtf</a>)</p>    <p>来自: <a href="/misc/goto?guid=4959004515046886239" id="link_source2">segmentfault.com</a></p>