“但我为什么要学 Python?”她哀叹道,“我喜欢 Scratch!”
“我知道,”我说,“但不同的编程语言适用于不同的任务。”
“这太愚蠢了,”她说。
我能理解特伦斯·埃登故事中的小女孩。 在高中,我迷上了 Turbo Pascal。 我感觉可以用它做很多事情。 然后我去上大学了。 我上的第一门课是 Java,第二门是汇编。 我记得当时感觉非常沮丧。 为什么不能只用我已经熟悉的语言编程呢? 我四年来一直都有这种感觉,然后就换了专业。 现在,我对于语言跳跃更加冒险,但并不多。
我们之所以会有不同的编程语言,是因为它们在某种程度上做着不同的事情。 确实存在可以用多种语言以相同方式编写某些内容的情况,您可以选择自己喜欢的语言。
真正的答案是,一些编程极客(以最令人愉快的方式)认为他们可以创造一种更好的语言,这可能反映了现代需求和风格。 所以他们就做到了,并说服了一大群其他极客认为这是一个好主意,从而让这种语言流行起来。 这算得上是一种奇迹。
我们不会在客户端网络上看到这种情况,因为让所有主要浏览器都使用一种全新的语言比殖民火星可能更容易。 网络通过缓慢的演变和框架级别来实现创新。
答案出奇地简单而真实。 几十年前,我教过的一种语言是 Logo,它是由一位儿童心理学家专门为你们的“儿童”程序员设计的。
它引入了一个革命性的概念,即可编程的“乌龟”。 它鼓励使用带参数的函数。
感谢您的解释。 它简洁明了。 答案可能在于我们为什么会有不同的语言。
我要说,因为它们在许多层面上以显著不同的方式做事。 C++ 允许您完全控制资源,无论是源代码还是内存位置。 如果你需要这样做,它非常强大,如果你不需要,它非常令人讨厌。 Python 不关心这些东西,所以它可以更自由地使用,允许您更快地编写可用的代码……但如果您需要控制内存位置,就别想了。 VBA 非常强大,它在 Microsoft Office 中的存在使您可以几乎无限地扩展这些工具(我曾经在 Excel 中编写了一个遗传算法),同时使用主软件中已经过良好测试的功能。 像 PML 和 AutoLisp 这样的脚本语言允许普通用户扩展非常昂贵的专有产品。 等等。
为什么会有不同的菜肴?
为什么同一道菜也会有不同的菜谱?
这两个问题都有很多相当明显的答案,这些答案与为什么我们会有多种编程语言以及多种基本完成相同工作的软件或硬件的答案非常相似(或完全相同)。
“让所有主要浏览器都使用一种全新的语言比殖民火星可能更容易。”
WebAssembly 完全改变了这种局面,因为我们不必说服浏览器制造商添加新的语言。
现在,我们必须说服语言编译器编写者为 WebAssembly 编译——而且看起来他们会争先恐后地这样做。
我也想到了“WebAssembly!”,一秒钟后又想到“但 IE…”
这和我们为什么在世界上有不同的语言一样?
公平地说,人类语言从来没有由一个人“创造”,而是通过隔离和时间从其先前形式中自然演变而来。
只有一种语言,机器语言,汇编是它的第一个抽象。 所有其他语言只是进一步的抽象。
我认为你只需要问问自己
“为什么我们有不同的
编程语言?”你就会得到答案。
实际上,有很多情况下,可以用多种语言以相同的方式编写某些内容。 我创建了一种名为 progsbase 的技术,可以同时使用多种语言进行编程。 还有大量库可供 13 种语言使用,效果很好。
对多种语言的需求可能被高估了。
感谢您的解释。
用不同的语言告诉同一台机器不同的东西,无论如何都不好笑。
“醒醒”用英语
“早上好”用法语
“早餐准备好了”用德语
我认为是由于那些极客的自我意识造成的:)。 IMO,我们还没有改变对编译器的看法,仍然为它们工作。 主要区别在于框架和运行时。 为什么样式很重要? 想象一下,向某人解释你的设计需要多长时间,然后用某种特定语言实现它? 你是否不止一次希望你熟悉的不同语言的特定运行时包可用? 为什么要用每种语言的严格语法来表达相同的东西,我投票支持自由语法、混合运行时和 IDE,它可以根据用户个人风格显示所有内容:)
我也有类似的经历。 我在初中时上了大学的 BASIC 和 Turbo Pascal 课程。 我的高中不让我毕业,因为我的成绩单上没有“计算机/打字”课程,所以我参加了自学课程,自学了 Turbo C,以便能够毕业。
我精通三种语言,并且已经对汇编语言有了一定的了解,所以我不打算在大学学习计算机科学,因为我不想再花四年时间学习另一种语言。 我选择了电气工程和计算机工程专业,仍然不得不学习 Fortran。
事后看来,考虑到我的职业生涯,也许我应该在大学学习计算机科学,但计算机科学专业本身就有些奇怪。 如果你已经精通计算机,这个专业似乎远远落后于你可能已经学到的东西。 我认为这是因为大多数描述都是为几乎没有知识的人写的,而如果强调它对已经有一定知识的人的重要性,它听起来就像行话一样。
类似的经历……BASIC FORTRAN,放弃了 Pascal,但我不能在上高中时参加任何计算机课程,除非会打字。 这些故事如此相似,真是太神奇了。
这让我想起了一封高中生写的一封信,她差点放弃了计算机科学。 她在小学时上过 BASIC 课程,做了很多作业,但她讨厌关注历史,而孩子们应该享受使用计算机进行实验的乐趣。
后来,她决定再试一次计算机科学,这次她决定跳过 BASIC,直接学习 Pascal——结果她讨厌那些愚蠢的任意语法规则。 幸运的是,她偶然发现了 Scheme,她想知道:为什么不在学校里使用它呢?
多年来,我探索了很多语言——事实上,我非常喜欢这样做——但我发现我最喜欢的语言有三个共同点:几乎没有语法、简单明了(通常几乎不存在)的优先级规则,以及在抽象和元编程方面具有惊人的能力。 Lisp 和 Scheme、Forth、J 和 Smalltalk 都是此类语言的示例。 几乎所有源自 ALGOL 的东西都是僵化的;这些语言可能都是用石头雕刻出来的。
我的问题不是“为什么会有这么多语言?”而是“当我们知道灵活的语言可以创造奇迹时,为什么还要忍受这么多僵化、难以使用的语言呢?”