热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么Erlang是唯一真正的计算机语言

想象一下您家的水压出了点问题。您必须致电管道工服务。他们说,有一个诚实,干练,有水暖博士学位的人,但是……他的英语说得不好。

想象一下您家的水压出了点问题。 您必须致电管道工服务。 他们说,有一个诚实,干练,有水暖博士学位的人,但是……他的英语说得不好。 他来自塔吉克斯坦,只会说流利的塔吉克语。 但是,恰好您在大学学习过塔吉克语,所以您说他们立即派了这个家伙。

当他到达时,您(在塔吉克语中)描述问题,然后他开始工作。 很快,他发现了问题并试图向您报告,显然是在等待反应。 但是由于某种原因,他不使用塔吉克语进行举报,而是使用英语。 哪个……他真的不知道。 如果您在塔吉克语中回答您不理解的内容,他将不会切换到塔吉克语; 他只会大声重复同一句话。

这根本无助于建立对话框。

没有人知道他为什么总是选择用他的口语而不是自己的口语来回答。 你所做的。 这真是令人讨厌,但这就是事情的运作方式。 他们一直都是这样。 他所说的基本上是一门糟糕的英语,加上专业的行话和塔吉克的ob亵行为。 看起来像这样:

在函数&#39;int main&#xff08;&#xff09;&#39;中&#xff1a;19:16&#xff1a;错误&#xff1a;无法将&#39;std :: ostream {aka std :: basic_ostream }&#39;左值绑定到&#39;std :: basic_ostream &&&#39;在/中包含的文件中usr / include / c &#43;&#43; / 4.9 / iostream&#xff1a;39&#xff1a;0&#xff0c;来自2&#xff1a;/usr/include/c&#43;&#43;/4.9/ostream:602:5&#xff1a;注意&#xff1a;初始化&#39;std :: basic_ostream <_CharT&#xff0c;_Traits>&#xff06;std的参数1 :: operator <<&#xff08;std :: basic_ostream <_CharT&#xff0c;_Traits> &&&#xff0c;const _Tp&#xff06;&#xff09;[with _CharT &#61; char; _Traits &#61; std :: char_traits ; _Tp &#61;元素]&#39;运算符<<&#xff08;basic_ostream <_CharT&#xff0c;_Traits> && __os&#xff0c;const _Tp&#xff06;__x&#xff09;
[CC BY-SA 2.5&#xff08; http://creativecommons.org/licenses/by-sa/2.5 &#xff09;]&#xff0c;通过Wikimedia Commons

好的&#xff0c;这不再是关于管道的事情。 实际上&#xff0c;它从来都不是关于管道的。 关于我们如何与机器进行通信。 编程语言是我们用来告诉它做什么的一种方法&#xff0c;但是当出现问题时&#xff0c;机器会尝试用英语说出来。 尽管英语擅长处理正式语言&#xff0c;但它们的英语说得不好。 大概&#xff0c;用正式语言写的人应该能够毫无问题地读回它。 如果编译器或解释器将以其获得命令的相同语言进行响应&#xff0c;这会更好吗&#xff1f;

如果没有塔吉克水管工&#xff0c;这个想法似乎不那么令人满意。

到目前为止&#xff0c;我所知道的唯一一种以与您编写代码相同的语言来报告错误的语言是Erlang。 如果您了解更多信息&#xff0c;请在下面的评论部分中告诉我。

这是“ Programming Erlang ”中的一个简单示例&#xff1a;

1> Point &#61; {point, 10, 45}. 2> {point, C, C} &#61; Point. &#61;ERROR REPORT&#61;&#61;&#61;&#61; 28-Oct-2006::17:17:00 &#61;&#61;&#61; Error in process <0.32.0> with exit value: {{badmatch,{point,10,45}},[{erl_eval,expr,3}]}

粗体字的字符串是错误消息&#xff0c;其余只是解释器的前言。 确实&#xff0c;对于休闲读者来说&#xff0c;这并不完全方便。 您必须知道Erlang才能读取其错误。 但是由于您仍然需要了解Erlang才能编写导致它们的代码&#xff0c;所以很好。

替代方案要糟糕得多。 使用非正式和非标准化的错误消息传递&#xff0c;您不仅必须知道编程语言本身&#xff0c;而且还必须知道其错误消息传递Pidgin。 每个C &#43;&#43;从业人员都可以确认阅读STL消息本身就是一门艺术。 它需要知识&#xff0c;耐心&#xff0c;决心和偶尔的水晶球&#xff0c;才能对报告的问题有深刻的理解。

例如&#xff0c;上面的错误消息显示为“对不起&#xff0c;我无法为您打印出一个元素&#xff0c;因为它的类型没有<<操作符。”

通常&#xff0c;可以使用某种语言来建立对话框。编程语言是一种不幸的豁免。 从历史上看&#xff0c;告诉计算机做什么而不是相反是更重要的。 当您编写小型单线程程序时&#xff0c;您可以希望不会有任何错误&#xff0c;因此您根本不需要报告。 错误报告始终被视为辅助功能。

但是&#xff0c;Erlang旨在构建高度复杂的分布式系统。 错误不仅极有可能发生&#xff0c;而且是域本质所固有的。 一切可能出错的最终都会。 而且您最好为此使用一种体面的报告语言。

实际上&#xff0c;您可以拥有一个对话框&#xff0c;意味着用同一种语言编写代码并接收错误&#xff0c;这使Erlang不仅是编程&#xff0c;而且是一种真正的计算机语言。

From: https://hackernoon.com/why-is-erlang-the-only-true-computer-language-4c7d1f195a02



推荐阅读
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • Python如何调用类里面的方法
    本文介绍了在Python中调用同一个类中的方法需要加上self参数,并且规范写法要求每个函数的第一个参数都为self。同时还介绍了如何调用另一个类中的方法。详细内容请阅读剩余部分。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 在Windows10系统上使用VMware创建CentOS虚拟机的详细步骤教程
    本文详细介绍了在Windows10系统上使用VMware创建CentOS虚拟机的步骤,包括准备条件、安装VMware、下载CentOS ISO文件、创建虚拟机并进行自定义配置、设置虚拟机的ISO与网络、进行安装和配置等。通过本文的指导,读者可以轻松地创建自己的CentOS虚拟机并进行相应的配置和操作。 ... [详细]
author-avatar
悶得咪_438
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有