关于programming:练习题-计算器-2

在上一题的根底上将计算器的外围逻辑提取进去,封装一个框架无关的计算器模块,并革新你的计算器利用。 限度你不能够应用 eval() 函数来执行计算你不能够应用 new Function('...') 函数来执行计算用例在上一题的根底上减少一些边界状况的解决: 用户能够看到显示屏显示以后输出的数字或最初一次操作的后果。用户能够看到一个蕴含数字 0-9、操作符 —— '+'、'-'、'*'、'/' 和 '=' 按钮的输入板,一个 'AC' 按钮(用于革除所有)。用户能够通过点击输入板上的数字来输出最多八位数的数字序列,任何超过8位的数字的输出都将被疏忽。用户能够点击 'AC' 按钮来革除所有的外部工作区域,并将显示值设为 0。初始值为 0,输出操作符则以 0 为操作数,否则按支出的数字作为操作数;最初输出等号后,将计算结果作为下一轮计算的初始值;以后操作数为 0 时,再反复输出 0 时须要疏忽,避免出现 00000123 这样的显示;临时不反对数字正负符号输出,所有操作符号都以最初输出为准;例如:当初是 3 + ,再输出减号变为 3 -如果上一次输出的是操作符,当初输出等号反对主动去掉多余的操作符再进行计算。脚手架class Calculator { // 接管计算器输出 press() {} /** * 计算以后输出的后果 * @return number */ compute() {} /** * 显示以后的输出值 * * @return string */ display() {}}const calculator = new Calculator()// 以下 press 入参只是范例,能够自行定义calculator.press('3').press('+').press('4').press('×').press(5)calculator.display() // 3 + 4 * 5calculator.compute() // 23ps:以上只是参考范例,大家能够自行封装扩大。后续会减少操作符和操作数的反对,有条件的能够思考如何封装可扩大的插件化的计算器模块,另外有趣味的能够尝试应用 TS 来编写。 ...

June 26, 2022 · 1 min · jiezi

关于简单

PS本文是对 MXB的一篇文章的翻译。这个在“峰采#2”的时候预告过。正文????在1997年的电影《接触》中,朱迪福斯特发现了一个包含太空船建造计划的外星信号。当试图按照这个设计组装飞船的时候,工程师们惊讶地发现那只是一个空的金属舱。他们说:“这种垃圾是不安全的”(不是原话哈),因此他们将一个复杂的壁挂式座椅安装在里面。当船发射时,座椅开始剧烈的振动并被猛烈地撕裂了。女主在她死前的几秒钟成功地解开了安全带,并终于意识到:那个设计其实一直都很完美。女主在平稳的反重力下享受了剩下的旅程并成功抵达外星。我们总是假设复杂的问题需要复杂的解决方案。我们试图通过发明工具和技术来解决问题;但在这个过程中,我们创造了另一层复杂性,反过来又导致了一系列的问题。将简单作为一个特性显然并非每个问题都有一个简单的解决方案。大多数复杂的工具都存在是出于为真实的需要。但我认为积极地质疑对复杂性的需求是很有价值的。有时,构建东西的更聪明的方法是做减法,而不是做加法。静态网页现在再次兴起,正是因为它们很简单。它们不会尝试使用聪明的抽象来管理服务器端代码 - 它们没有任何东西。它们不会尝试使用高级防火墙来防止安全漏洞,因为静态网页完全摆脱了数据库。世界上一些最重要的东西都是故意设计的“简单”。在任何系统中,错误的可能性都会随着其复杂性而直接增加 - 这就是为什么大多数选举仍是通过将纸片放在一个盒子里来实现。自主思考,质疑复杂性开发人员痴迷于“最佳实践”这个概念。这里的潜台词是:存在一种正确的方案,而所有其它解决方案要么不完美,要么仅仅是“反模式”(anti pattern)而已。但是每次出现新技术时,最佳实践的定义都会发生变化,使之前的方案变成毫无价值的垃圾(译者:原文如此)(即使它仍然可以完成目的)。不可否认,我们在项目中做技术选型的时候有一个因素是自负。为了向其他人展示我们多么聪明,我们想出了更难,更炫酷的方法来完成任务。当然,最终它们都解决了具体问题 - 但这并不意味着它们始终是最佳解决方案,无论情景如何。使用最新最好的技术很酷;但我们始终应该问一个问题:我们的选择是否真的对用户有益,还是只是为我们自己选的。毕竟,“开发者体验”只是达到目的的手段。如果我们正在谈论DX (开发者体验)- 我会在任何时候毫不犹豫的选择简单。PPS《接触》Contact挺好看的。没有看过的推荐补一下课。翻译的时候一直在想simplicity翻译成简单还是简洁好。似乎这里出现了语言的一个小偏差 - 中文不存在一个和simplicity完全匹配的词。或者说,简单在不同的场景可以有不同的理解。最后还是翻译成简单了。翻译的流程是先用Google Translate过一遍。然后再手动改。有点偷懒????。但其实GT的结果还是很烂的????。

March 10, 2019 · 1 min · jiezi

峰采 2018-12-09

开篇原创的文件实在没有时间写了。所以这个是一个文章,链接推荐贴。有点像阮老师的weekly。但是暂时不会是每周都有的。毕竟不是专职做这个的。内容嘛,没有限制。但多数是技术相关的。正文https://www.linuxjournal.com/…Chrome OS稳定版可以直接运行Linux Apps了。Windows 已经可以 apt-get了。Chrome OS现在也可以了。商业巨头在帮桌面Linux续命,而Ubuntu已经将重心转向了cloud。https://wetransfer.com/方便的传送大型文件https://www.cacher.io/方便快捷的代码短片记录。还是gist好?
https://www.bloomberg.com/amp…IBM收购红帽。$190 per share啊,要是我我也卖了。已是旧闻。但前几天有rumor说Google要截胡。应该不会吧。不管是谁买,一件事是可以肯定的:open source is eating the worldhttps://github.com/ncw/rclone类似Dropbox的开源文件同步软件。好处是对接各种云存储,包括国内的青云。做图床或者私有备份都可以。https://blog.cloudflare.com/c…技术就是用来被颠覆的。当容器,kubernetes在颠覆云计算的时候,cloudflare已经在颠覆容器了。这东西有个名字叫Worker。再过几年,也许大家就不再用docker, k8s说事了。。。。到时候我吃什么喝什么呢?https://www.slidescarnival.co…免费,好看的slides模板。支持Google Slides和Powerpointhttps://www.gatesnotes.com/Ab…比尔盖茨喜欢看《硅谷》。认为其中很多内容很真实。《硅谷》确实NB,我最喜欢的美剧之一。码农必刷。https://2018.stateofjs.com/co…2018 Javascript 报告https://nginxconfig.io流行软件里面有必Nginx的配置更多的吗?这个在线工具能减轻你配置Nginx的痛点。http://benhoad.net/hooli-sign…《硅谷》fans才能get到。有好事者创造了Hooli box signature edition。这样一本正经的幽默实在是无敌结束完成之后发现有图片会好很多。这次算了吧。

December 9, 2018 · 1 min · jiezi

学习编程并不是学习编程语言

作者:zooboole英文原文:《Learning programming is different from learning a programming language》我们都是程序员,也是学习者。令人惊讶的是,如此多的人以为自己在学习编程,却已经步入歧途。你可能正在学习编程语言,而不是编程本身大家都知道计算机科学不是研究计算机,它反倒是利用计算机研究自动解决问题的。问题解决是计算机科学,不是编程。这就许多计算机科学专业的学生似乎不理解他们为什么要学习算法或数学的原因。如果你以前上过计算机科学课,你就应该知道我在说什么。因为你会注意到编程与编程语言几乎没有关系。问问自己为什么伪代码在这些课程中如此常见。但是,大多数自以为是的程序员总是落入陷阱。在意识到进行编程时到底什么是应该要做的之前,我们学习了几十年的编程语言。我自己也是受害者。我花了十多年的时间一点一点地学习各种编程语言。我学的越多,就越难以简单的方式解决问题。我以为是没有找到合适的工具。但问题是,当我甚至还不知道这个工作要做什么时,就去寻找合适的工具,而忘记了找出真正的工作是该做什么。编程语言的奇怪之处在于它们总是在不断发展。编程语言几乎每天都在变化,跟进很难。而大多数优秀的程序只使用了编程语言的一小部分。首先,学习编程语言的问题就像在学习木工之前学习如何使用木工锯,锤子和各种切割机器。木工需要注意:想法,可行性分析,测量,测试,客户行为。资深木匠感兴趣的事物不止于锤子和钉子。在他对这项工作的研究中,还需要时间来检查钉子、着色剂、木材等的质量。学习编程和学习编程语言的区别是什么呢?编程是通过一次下达指令来设置一个系统自动运行。我们每天都这样做。我们教我们的孩子,命令我们的士兵,服务我们的客户。我们给予或收到指示,以自由/独立的方式生活。父母不需要跟随并指导你在生活中所做的每一个动作。他们可能已经在生活的许多方面为你编程了。大多数学校和教学网站都会教授编程语言的语法。他们可以添加一些设计模式(当你忽略究竟是什么设计时)、一些算术计算。教你如何声明变量以及如何使用它们;教你如何声明数据类型以及创建它们。这并不能教你推理。但后来,您将会遇见推理方法。使用那些方法来学习,会让你觉得是浪费生命或者花了很多时间来学习编程。我们用编程来解决问题,编程语言是帮助我们达到目的工具。它们就象工具箱,我们称之为框架,帮助你组织你的思维。如果你正在学习编程且仍然无法设计和编写真实应用程序,那么这就意味着你正在学习编程语言而不是编程。我们经常会遇到想知道如何创建程序的学习者。对于程序员来说,程序是一个问题求解。在使用任何编程语言之前,他通过关键分析解决了问题。当你解决任何问题时,你可以用任何编程语言来编码。我们来看看平方求解的案例。为了求解平方,我们将它与自己相乘。我们可以用各种语言实现它,例如:C语言function square(int * x) { return x * x;}PHP语言function square ($x){ return $x * $x;}Javascript语言function square(x){ return x * x}Scheme(a Lisp dialect)语言(define (square x) (* x x))您应该注意到实现中只有语法是不一样的,解决方案是一样的。这也是你几乎可以使用任何编程语言的主要原因之一,在这种语言中你可以更轻松地构建任何类型的软件。编程可以让你更容易理解一门语言通常,问题出在人类语言,它充满了局限和错误。人类语言不能用来指令机器,因为它们不理解。你学习编程时,是在学习一种新术语和工具,来帮助你以计算机或其他程序员可以理解和同意的方式编写逻辑。通常,你将从简单且类似人类语言的符号–伪代码开始。它是从人类语言到计算机编程语言的良好过渡工具。这通常是为了避免浪费时间在具体的编程语言上,这样你可以完全专注于推理。通过它,你将发现构成良好编程工具(语言)的核心部分。你知道了真正需要的是什么、掌握了编程语言的核心目标。在编程实践过程中,你会不知不觉地就学会了这门编程语言。相关文章如何学习一门计算机编程语言

November 20, 2018 · 1 min · jiezi