什么是“真正的”编程语言?

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

  • 这不是编译的。
  • 这是脚本。
  • 它不在每个平台上运行。

PHP不被认为是“真正的”编程语言? 什么是“真正的”编程语言? 一定要编一个语言来认真对待?

背景

我在两天前在学校的A-Level计算课上做了一次入门课 – 我们在课程的第一年就使用了Java。 我不熟悉Java,但对通用编程基础知识(variables,函数,面向对象,循环等)有很好的把握。

我们老师的第一个任务是快速地跑过去。 她没有解释任何概念,如何工作,或者你将如何真实地使用它们,并且似乎非常高兴地看到大多math生(总体上来说,新编程)的蠕动在他们的座位上,她没有什么想法。 事后看来,我觉得她非常快速地经历了一遍,看看谁能真正“处理”采取计算机高级课程,因为学生在9月份开始之前仍然有机会改变他们的课程。

第一个也是唯一的任务是编写一个Java命令行应用程序将二进制转换为二进制(十进制)。 我们进行了两个小时的讨论,在解释了二进制系统如何工作之后,我们不得不从头开始,尽pipe从整体上来说,没有人真正从最朦胧的想法开始。 过了一个小时,有些人比其他人进一步深刻,但是没有人真正取得任 老师自己变得非常困惑,于是打电话给隔壁的另一位老师。 他来到这里帮助人们,看看下一步该去哪里。

没有吹牛,我可能在课堂上有最多的经验,并在演习中获得了最大的成功。 他问我是否有以前的经验。 我说是的,特别是在PHP中,并开玩笑地评论说,我可以写一些东西,只需几行PHP就可以将二进制转换为denary,而Java应用程序正迅速成长为多个代码屏幕。

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

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

我对“真实”编程语言的定义是任何在现实世界中至less有一种实际用法的编程语言。 这与通常没有实际用法的深奥编程语言相反。 由于PHP被广泛用于解决真正的问题,所以它很容易满足这种作为一种真正的编程语言的要求,尽pipe它可以说并不是特别漂亮的语言。

PHP是一门实用的语言。 它是为了能够快速创build网页而创build的(该名称最初代表“个人主页”),并且语言根据需要进行了扩展。 由于没有理论背景或强大的devise原则来驱动它的创作(甚至没有forms化的语言规范),所以它比许多其他更现代的语言更不干净。 后来显然增加了正确处理外来字符/统一字符的function,而不是与其他语言完全整合。 这种不整洁和缺乏理论严谨性导致许多人(特别是学者)不喜欢这种语言,这可能是你的老师不认为PHP是“真实”语言的原因之一。

然而,PHP擅长devise,许多网站使用它,即使是非常大的网站,如Facebook,雅虎! 和维基百科。

这不是编译的

它可以 。

这是脚本

啊! 在重新叙述之后重复一个论点的狡猾的技巧,使其听起来像一个不同的论点。

它不在每个平台上运行

Java也不是。

听起来像你有一个非常糟糕的老师。

当然PHP是一种编程语言。 他可能意味着它不是一个“真正”的编程语言 ,就像“真正的”男人不吃乳蛋糕一样

定义:编程语言

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

现在,PHP“脚本化”(我认为这是一种脚本语言),它运行在每个平台上吗? 你判断:

PHP:超文本预处理器是一种广泛使用的通用脚本语言,最初devise用于Web开发以生成dynamic网页。 为此,将PHP代码embedded到HTML源文档中,并通过一个带有PHP处理器模块的Web服务器进行解释,该处理器模块生成网页文档。 作为通用编程语言,PHP代码由命令行模式下的解释器应用程序处理,执行所需的操作系统操作并在其标准输出通道上生成程序输出。 它也可以用作graphics应用程序。 PHP可用作大多数现代Web服务器的处理器,也可作为大多数操作系统和计算平台上的独立解释器。

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

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

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

我个人认为PHP是一种真正的编程语言。 我从那里开始,很容易转到C / C ++和Java。 我不会将它用于与Java相同的目的,其devise与Java不同,但这并不意味着太多。 学习比Java 更容易

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

首先,没有经过编译和解释(他的脚本所定义的含义不明确,用于不同的目的)是同一个硬币的不同侧面,因此也是如此。

最后一个原因,它不能在每个平台上运行,只是令人困惑。 这听起来像他试图吹捧Java的可移植性,PHP不是Java。 但是,Java运行在一个非常特定的平台上:JVM。 该平台依次在许多其他平台上运行,从而使Java具有可移植性,但与“便携式”的传统使用不太一样。 例如,C是便携式的,可以运行在从PDP-11到最新embedded式设备的所有应用中。

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

计算机科学中的所有问题都可以用另一个层次的间接性来解决。
– 大卫惠勒

实际上,甚至汇编或“机器代码”也被处理器解释为其原生动作。 (我没有一个很好的资料来源,但是我记得它被现代硬件中的崩溃课程所覆盖),随着处理器速度的加快,我们几乎没有注意到我们未被使用的盒子无论是给定的程序是通过翻译还是通过翻译,但是这正是“真正的编程语言”的定义发挥作用的地方。

定义一个“真正的编程语言”的唯一明智的方法就是“完成真正的工作的语言”,但是这也确实是“真实”的定义。 (然而,它确实与深奥的编程语言有所区别,因为没有人真正的工作,例如在Malbolge中 ,对于任何“真实”的定义,你都可以让十个人达成一致。)和今天相比,过去,编程语言的select受其实现策略和开销(例如,运行时解释器)的限制更多。 但是,即使在今天,某些语言比其他语言对某些应用程序和预期负载更“真实”,这一切都取决于您的要求。

这听起来像你的老师只通过玩具networking应用程序体验PHP(也许使用“应用程序”是他看到的东西的延伸)。 玩具scheme不是真正的工作。 PHP肯定有很多问题,但是我不能说这不是一个真正的编程语言,除了开玩笑。

debugging预计会很厌恶,不情愿地执行,并永远吹嘘。
– 丹Kaminsky

“真实”与“难做”(与“实际工作”有关)有一定的关联,你的老师可能已经expression了这种情绪。 这在我看来一直是一种自相矛盾的forms( 对此有一个更好的术语,但我不记得它),一个人对事物价值的估计与人们所付出的努力有关例如,当我提供关于屋顶颜色的input和是否应该有标志时,骑行更重要)。 我们内在地重视我们自己的努力,而不仅仅是因为我们熟悉它,如果没有其他原因 – 即使这样做没有意义。 尽pipePHP有缺陷,但它确实使一些事情变得简单,并且写入它的程序因此可以被认为价值较低。

当我学习PHP的时候,我也不相信PHP是一门编程语言。

我不确定我在哪里select了这个想法,但是我知道脚本语言不是一种编程语言。 所以我把这个想法应用于其他语言,比如JavaScript和SQL。

从那以后,我改变了主意,现在已经明白,有一些语言从C ++和Java之类的高级(如PHP,Javascript)到低级别(如c,汇编)。

对不起,旧金山,但这样的事情有这么多,这个图片错了! 我只是希望你能尽快地从那个class级,那个部门和那个学校逃学。 我保证,二月份到来时,你将不会有一个学期的知识。 而且,如果你和我一样,那么当你的老师为你浪费时间的时候,你将会在课堂上花费几个小时的挫折,怨恨和愤怒。

那个女人不是老师! 十进制到二进制作为介绍编码? 可怕!

是凤凰大学(哈!)吗?

你是对的。 这些原因太弱了。 其实你甚至不需要Apache来运行PHP。
前两个原因是重复自己,因为它实际上只是一个原因。 所以,可以说“PHP不是编译语言”,但并不意味着它不是“真正的编程语言”。 Java程序也不能编译成机器码 – 也不是真正的语言。 QED

没有真正的编程语言,真实的人或现实世界。 如果你可以用PHP编程,你是一个程序员。

更新:在投票之前仔细阅读,这不是我的PHP / Java方法, 我试图看看他的老师如何看待PHP / Java的东西。 谢谢。

我认为你的老师认为: PHP是一种locking在networking服务器中的语言 ,主要用于生成网页。

另一方面,Java也是一种用于网页的通用语言 ,但在其他行业如微波炉和汽车中使用,您可以使用Java编写桌面应用程序。

考虑到这一点,为什么你的教导说“PHP不是真正的编程语言”是可以理解的!

我没有偏见,我不喜欢这两个,Java和PHP 🙂 …但必须使用它们两个

它只是人们重复使自己听起来更聪明的愚蠢的事情之一,并closures你的货物崇拜的自鸣得意。 如果你要他解释一下,他要么假装这是一个笑话(告诉他“好试试”),要么尝试一下,以保卫自己的位置(告诉他“哦,我看到”,并慢慢退后)

当然,PHP是一种编程语言。 它甚至是图灵完全的语言,这基本上意味着它的“权力”等于其他编程语言的“权力”。 在严格的(它确实存在的)和隐喻的意义上(有人用PHP来谋生)是“真实的”。 所以你的老师似乎有些偏见。

但是,我看到你的老师态度有一点。 PHP和Java来自完全不同的背景。 尽pipe有用,但PHP非常混乱。 比较Java中的标准类库和PHP函数的标准库 – 后者看起来就像一大堆无关的工具。 而且,在网上有很多的PHP教程,礼貌地说,质量平庸。 因为你正在学习如何编程,所以最好学习使用好的工具,Java比PHP更好的学习编程工具。

PS。 谷歌的“PHP吸”,以获得大量的信息,为什么PHP不是世界上最好的工具。

“所以,在”编程语言的定义“中,PHP是不是”合适的“?

真正的原因是大多数人不把它用作通用的应用程序编程语言。

这是因为总是有更适合的语言(有一个例外:PHP是为网页编程创build的)。 PHP是“另一种语言,甚至没有比现有的更好的devisefunction”。 当与其他不同的语言比较时,一些问题的例子包括:缺乏稳定和便携的GUI工具包(至less在Windows / MacOS上),缺less线程,速度不足等等。

最终,那些准备用PHP编写通用应用程序的人大多是那些只将PHP当作编程语言的人。 因为没有理由在PHP中从头开始编写新的应用程序:您会发现绝大多数有实践经验或有才华的程序员都不会考虑这样做。

只是把另一个方向的一个论点给其他人…

我觉得PHP是一种编程语言 ,我觉得有些不舒服,因为我不相信你最终会得到一个程序 。 您不要让PHP应用程序运行,而是要求PHP页面被加载和处理,以便生成输出页面,并带有诸如数据库更改等副作用。

这并不意味着PHP在技术上不能被描述为一种编程语言,但我认为将它从Java / C ++中分离出来是合理的,在这种情况下,程序可以用一些状态概念来运行。 每个PHP文件都是自己的“程序”,因为你可以请求任何PHP页面…除了调用正确页面的约定外,没有对PHP Web应用程序的入口点。