php和python应该如何选择?
php现在名声不好,因为它曾经是"可怕"。
这篇文章试图回答一些关于php的常见论断,以便向非技术人员说明php并没有很多人说的那么差。
1.它是否鼓励不良做法?
不再是了。以前很多开发者都是被书本教会了非常不好的做法,所以php代码质量非常差。php曾经允许你做一些非常奇怪的事情,这使得构建非常容易,但是维护起来却是一场噩梦。
这些不再是常见的问题。随着高质量学习资料的引入,这些资料很容易学习和获取,一个新的开发者可以用正确的方法学习php。这可以防止初级开发人员编写一些维护起来非常痛苦的代码,因为他们没有我不知道建造东西的正确方法。
随着框架的引入,大部分导致许多糟糕体验的常见代码现在都自动完成了;所以开发者只需要使用框架,框架就能正确编码。
而且这些年来,一些不好的做法都是因为缺失了特性,导致了一些不应该被允许的事情。现在大多数情况下,甚至无法意识到之前写的东西会导致这个名声。
总结
它不再鼓励不良行为...
使用框架可以避免不好的实践。
现在有很多关于语言特性的讨论。不再支持不好的功能。
php添加了其他语言中存在的大部分(如果不是全部)功能。
2.它的安全性差吗?
过去,php应用程序的安全性通常很差,因为语言允许这样做。这些东西已经不用了,因为现在php应用的开发已经完全不同了。
通过使用自动加载器来包含文件,而不是动态地包含文件,远程和本地文件包含(php从原始地址以外的其他地址读取文件)。
通过广泛使用模板系统(可以自动处理显示动态内容的转义和安全问题),避免了在php中直接使用html(一个用户将javascript脚本添加到要显示给另一个用户的地方)导致的跨站脚本攻击。
通过在sql中使用预处理语句,可以避免sql注入攻击(这是由于需要构建sql查询并一起发送查询和数据,用户可以在查询中添加额外的sql命令)。另外,orm的应用也很广泛,它保证了用户数据和查询是分开发送的,sql不能把它当成一个单独的命令。
通过广泛使用和采用nonce系统的表单库,避免了跨站点请求伪造(其中用户可能被欺骗在你的网站上做点什么)。
总结
通过使用autoloader(所有主流框架的标准),避免了远程和本地文件包含。
通过使用模板语言作为标准或前端框架(如react),可以避免跨站点脚本(xss)攻击。
通过使用orm和广泛使用预准备语句来避免sql注入。
通过使用nonce令牌(所有主流框架都自动支持),可以避免跨站点请求伪造(crsf)攻击。
3.真的很慢吗?
那要看你拿它和什么比了。如果拿php和java,c或者go比,就慢一些。但是如果你拿php和python,ruby之类的比较,并不慢。php是同类语言中速度最快的语言之一,而且它还在不断提高自己的性能。
在大多数情况下,您的应用程序很慢是因为服务器过载或数据库查询很慢。这些问题在任何语言中都会存在。
总结
php比编译语言慢。
php比其他脚本语言更快。
网站慢通常不是因为没有快速语言,而是服务器或数据库造成的性能问题。
4.它的扩展性真的很差吗?
事实上,任何语言都是可以缩放的。编译语言(如go、c或rust)的扩展成本比脚本语言(如php)低。但是,它们不是为同一任务而设计的。其实都一样;这仅仅取决于您使用的服务器数量。如果您使用足够多的服务器,您可以扩展任何应用程序。php比其他脚本语言的扩展成本更低,因为它启动运行需要的资源更少,可以运行在cpu更多内存更小的服务器上。
此外,对于可伸缩性,数据库很重要。如果可以扩展数据库,就可以扩展应用程序。数据库比应用服务器更难扩展。很容易添加另一个读取数据库的客户机;然而,使数据库快速运行要困难得多。
总结
任何语言都可以是可扩展的;这取决于您使用多少台服务器。
扩展的真正问题是数据库,而不是使用的应用程序语言。
如果你能扩展你的数据,你就能扩展你的应用。
5.我应该一直用它吗?
不是。每种编程语言都有自己的专业领域。php非常适合web应用。你应该用它来构建网站和api。
如果您正在构建一个系统应用程序,其中每一毫秒都很重要,请使用rust或c。
如果你正在构建一个人工智能应用,python是一个很好的选择。
如果您正在构建一个saas应用程序,php是一个不错的选择。
如果你正在建造kotlin是构建android应用程序的一个好选择。
如果您正在构建一个运行在多个平台上的应用程序,java是一个不错的选择。
总结
每种语言都有其最佳用例。
php的最佳用例是web应用程序。
go,rust,c适合系统应用。
python适合人工智能。
kotlin适用于android应用程序。
java适合于平台无关的应用程序。
6.结论
每年都讲php,但是你的php现在是不是过期了?很多关于php的说法已经过时10年了。在我看来,如果有人给你一个过期10年的技术主题的信息,那么这个人可能不是你想要信任的技术专家。
php是创建web应用程序的一种很好的编程语言,我认为它是开发web应用程序的最佳语言。