什么是"真正的"编程语言?

Jac*_*ack 68 php programming-languages terminology

最近一位老师说"PHP不是一种真正的编程语言",但在我看来,这只是一个弱的理由:

  • 它没有编译.
  • 它是脚本化的.
  • 它不会在每个平台上运行.

PHP不被视为"真正的"编程语言吗?什么是"真正的"编程语言?编译语言是否必须认真对待?

背景

两天前,我在学校的A-Level计算课上做过入门课程 - 我们在课程的第一年使用Java.我不熟悉Java,但对常规编程基础(变量,函数,面向对象,循环等)有很好的把握.

我们的第一项任务是老师快速地跑得很快.她没有费心去解释任何概念,它们是如何工作的,或者你将如何实际使用它们,并且看起来非常高兴看到大多数学生(总的来说,他们是编程新手)在他们的座位上没有最简单的想法,她在谈论什么.事后看来,我认为她很快就能看到谁可以真正"处理"计算A-Level,因为学生仍有机会在九月开始之前改变他们的科目.

第一个也是唯一的任务是编写一个Java命令行应用程序来将二进制转换为denary(十进制).我们进行了两个小时的品尝会议,在解释了二元系统是如何工作的之后我们必须开始,尽管总的来说,没有人真正有一个最模糊的想法从哪里开始.一个小时后,有些人比其他人更进一步,但没有人真正取得任何重大成就.老师自己变得很困惑,她从隔壁叫另一位老师.他来帮助人们,看看下一步该去哪儿.

没有吹牛,我可能确实在课堂上有最丰富的经验,并且在练习中得到了最大的成功.他问我以前是否有过任何经历; 我说是的,尤其是在PHP中,并且开玩笑地评论说我可以在几行PHP中编写一些将二进制文件转换为denary的东西,而Java应用程序正迅速发展成几个代码屏幕.

他回答说,"PHP不是一种真正的编程语言!"......!经过一番讨论,他给出了上述三个原因.但是,我指出你可以在任何运行Apache的平台上运行PHP,但我不认为他真的知道Apache是​​什么,并且没有那个!

Mar*_*ers 101

首先,我们需要知道编程语言是什么.编程语言至少是由计算机读取并指示它执行某些操作的东西.许多人还希望通用编程语言图灵完整的.但是,可能存在特定域的语言不是图灵完整但仍然是该特定域的有用编程语言的情况.编程语言可以编译或解释,它们可以在许多平台上运行,也可以只运行一个特定的平台.不同的需求需要不同的编程语言 显然,PHP是一种编程语言.

我对"真实"编程语言的定义是任何在现实世界中具有至少一种实际用法的编程语言.这与通常没有实际用法的深奥编程语言相对立.由于PHP被广泛用于解决实际问题,因此它很容易满足成为真正的编程语言的要求,尽管它可能不是一种特别优美的语言.

PHP是一种实用的语言.它是为了能够快速制作网页(最初代表个人主页的名称)的特定需求而创建的,并且语言根据需要进行了扩展.由于没有理论背景或强大的设计原则推动其创作(甚至没有正式的语言规范),它不如许多其他更现代的语言干净.正确处理外来字符/ unicode字符等功能显然会在之后添加,而不是与语言的其余部分完全集成.这种不整洁和缺乏理论严谨性导致许多人(特别是学者)不喜欢这种语言,这可能是你的老师不把PHP视为"真正的"语言的部分原因.

然而,PHP擅长它的设计目的,许多网站都使用它,甚至像Facebook,Yahoo!这样的非常大的网站!和维基百科.

  • 好的回答马克!我只是想:`PHP =='PHP:Hypertext Preprocessor'|| PHP =='个人主页'` - ?! (6认同)
  • @Jac Webb-Heller:这个名字最初是'个人主页'的缩写,但随后随着PHP的发展而改变. (3认同)

Que*_*tin 59

它没有编译

PHP可以编译(例如通过HHVM).

它是脚本化的

这只是说PHP没有编译的另一种方式.

它不会在每个平台上运行

Java也不是.

听起来你在那里有一个非常糟糕的老师.

  • 是的,老师试图通过声称他不知道不值得知道的东西来证明自己的无知. (9认同)
  • @John:但他说的是正确的.老师在所有方面都是错误的,如上所列. (2认同)

Dip*_*ick 34

当然PHP是一种编程语言.他可能意味着它不是一种"真正的"编程语言,就像"真正的"男人不吃乳蛋饼一样.

  • 这可能是某种形式,但......我喜欢乳蛋饼.我觉得我不得不说出来. (4认同)

TNi*_*TNi 21

define:编程语言

根据这一点,似乎PHP是一种编程语言.它是否是一种真正的编程语言是完全主观的.它是否是一种好的语言也是主观的.当然,它通常不用作应用程序编程语言,但它可以用于通过CLI开发shell应用程序.我从来没有这样做过,所以我对它的理解是粗略的,但它是可能的.

现在,PHP是"脚本化的"(我认为这是一种脚本语言),它是否可以在每个平台上运行?你判断:

PHP:Hypertext Preprocessor是一种广泛使用的通用脚本语言,最初设计用于Web开发以生成动态Web页面.为此,PHP代码嵌入到HTML源文档中,并由具有PHP处理器模块的Web服务器解释,该模块生成网页文档.作为通用编程语言,PHP代码由解释器应用程序在命令行模式下处理,执行所需的操作系统操作并在其标准输出通道上产生程序输出.它也可以用作图形应用程序.PHP可用作大多数现代Web服务器的处理器,也可作为大多数操作系统和计算平台上的独立解释器.

资料来源:http://en.wikipedia.org/wiki/PHP

Java甚至可以在每个平台上运行吗?不.只有那些存在JVM的人.

最后,是否需要编译语言?许多人不是.即使Java也不是以与C或C++相同的方式编译的.然后你还需要看看Perl,Python等.

就个人而言,我认为PHP是一种真正的编程语言.我从那里开始,很容易转向C/C++和Java.我不会将它用于与Java相同的目的,它的设计与Java不同,但这并不意味着什么.这是更容易比Java学习我.


小智 10

首先,没有被编译和被解释(他确实用脚本来表示,有些含糊不清并且用于不同目的)是同一枚硬币的不同方面,因此也是同样的原因.

最后一个原因,它不会在每个平台上运行,只是令人困惑.听起来他正试图宣传Java的可移植性,而PHP根本就不是Java.但是,Java在一个非常特定的平台上运行:JVM.该平台反过来在许多其他平台上运行,从而为Java提供了可移植性,但它与传统的"便携式"使用并不完全相同.例如,C是可移植的,可以运行在从PDP-11到最新嵌入式设备的所有设备上.

但是,C通过指定自己的抽象平台的规则来做到这一点,并且编译器根据这些规则将C代码转换为汇编.这就是Java的可移植性与C类似的方式:它们都定义了规则,这些规则被转换为特定的具体机器(处理器)的指令; 差异在于何时发生.

计算机科学中的所有问题都可以通过另一层次的间接解决.
  - 大卫惠勒

实际上,甚至装配或"机器代码"也被处理器解释为其本机动作.(我手边没有一个好的资料来源,但我记得它现代硬件中一个速成课程轻描淡写,无论如何都是一个很好的演示.)随着处理器速度越来越快,我们几乎没有注意到我们未充分利用的盒子一个给定的程序是在asm中还是在一个解释器中运行,但这就是"真正的编程语言"的定义发挥作用的地方.

定义"真正的编程语言"的唯一合理方法是"完成实际工作的语言",但这也真正影响了"真实"的定义.(然而,它确实与深奥的编程语言有所区别,因为没有人真正的工作,例如,在Malbolge,任何"真实"的定义,你可以让十个人同意.)而且,与今天相比,你的编程语言的选择在过去受到其实现策略和开销(例如运行时解释器)的限制.然而,即使在今天,对于某些应用程序和预期的负载,某些语言比其他语言更"真实" ,这完全取决于您的要求.

听起来你的老师只通过玩具网络应用程序体验过PHP(也许使用'应用程序'是他所看到的一个延伸).玩具程序不是真正的工作.PHP肯定有很多问题,但我不能说它不是真正的编程语言,除了开玩笑.

调试是厌恶的,不情愿地进行,并且永远吹嘘.
  - 丹卡明斯基

"真实"与"难以做"(与"真实工作"有关)之间存在某种联系,而您的老师可能一直在表达这种情绪.这一直在我看来是一种自行车的形式(对于这一点来说,这是一个更好的术语,但我记不起来了),一个人对物品价值的估计与人们必须投入的努力有关(例如,当我提供有关屋顶颜色的输入以及是否应该有标志时,自行车是更重要的.我们本质上比其他人更重视自己的努力 - 仅仅因为我们熟悉它,如果没有其他原因 - 即使这样做也没有意义.PHP虽然有缺点,但确实让事情变得简单,


Dan*_*iel 9

Facebook,Digg,维基百科,雅虎.我猜那些不是真正的网站.


Mat*_*len 5

早在我学习PHP时,我也不相信PHP是一种编程语言。

我不确定在哪里接受这个想法,但是我在某处了解到脚本语言不是编程语言。因此,我将这种想法应用于其他语言,例如JavaScript和SQL。

从那时起,我改变了主意,并了解到,从高级语言(例如PHP,Javascript)到低级语言(例如c,汇编器)的语言种类繁多,介于C#和Java之间。