加入10个软件开发邪教

每个程序员都知道这种感觉。 您已经写了几行,对其进行了测试,然后将它们检入了一些存储库。 现在是时候停下来,喘口气,也许反思一下这一切的威严,然后又开始沉迷于对您最新的程序员的狂热。

不管您是从今年秋天开始第一个编程类,还是一直在编写位敲打式代码都没关系,因为必须将其切换到Altair的前面板中。 谈论诸如正确性或准确性之类的世俗事物真是太有趣了。 只有客户端对代码是否符合规范进行争论。

[编程艺术发展Swift。 InfoWorld可以帮助您导航正在运行的东西和正在运行的东西 | 通过InfoWorld的App Dev Report新闻通讯了解编程方面的热门话题。 ]

真正的肾上腺素激增源于像诗人那样在荒野中徘徊,在编写代码的艺术上有些细微差别使人受折磨和困扰。 将变量和函数粘合在一起很无聊。 只有当您跳上某些潮流,落后于一些有才华的天才并加入关于告诉计算机该如何做的细节的激烈辩论时,生活才值得生活。

您可以在这里找到10个最诱人的Kool-Aid投手。

神奇的空白

让我们从最激烈的辩论之一开始,即关于如何在代码中构造空白的问题。 从字面上看,这是关于您看不到的东西的辩论,并且通常没有任何作用。 但是完全无关紧要无关紧要,因为程序员可以争论几个小时,以便在代码中使用制表符或空格,甚至更糟的是,如何在行中包含空格。

[ 9谎言程序员告诉自己 | 我们暗中爱着的9种不良编程习惯 ]

一位代码审阅者告诉项目经理,我的代码太低了,以至于当它出现在屏幕上时,他可以立即看到可怕的缺陷。 事实证明,“标准”只是臭名昭著的Airbnb样式指南中的 19.4 ,该指南是该公司格式化JavaScript的首选方式。 我的错误不是在等号的两边都留有空格。 (我仍然感到as愧,但是有罪的公共职业是我的12步计划的一部分。)我的审稿人能够完美地将我的剧本称为“非标准”。 为什么? 因为有人费力地编写了一份认真认真,认真认真的规则清单,然后团队在愚蠢的时刻决定接受它。

但是,让我们不要陷入一个事实,即大多数解析算法都不关心空格,而是在不停顿的情况下跳过空格和制表符。 称他们为“白人至上主义者”只会激怒他们。 让我们称它们为纯粹主义者,并庆祝他们对细节的关注,因为在今天,这太罕见了。

圆括号或标签

C语言给我们带来了许多令人惊奇的想法,但是最具争议的可能是使用大括号来指示代码块的开始和结束。 有些人发现拆开嵌套的块并弄清楚大括号如何匹配很容易。 他们知道这是从行号和GOTO语句时代起的一大飞跃。

不过,还有其他人发现计数和匹配是一团糟,与旧的意大利面条式代码相比并没有太多进步。 对于他们来说,对于诸如Python之类的较新语言以及诸如YAML之类的数据格式有很多喜欢,它们使用缩进来指示嵌套块的开始和结束位置。 当然,他们一直在计算空格或制表符,而不是大括号,但这对他们来说是一个进步。

您可以选择跳过这个漩涡,并认为表达式块只是表达式块,但是您无法加入参数。 选择您的毒药:大括号或标签,不要回头。

功能编程

编码人员喜欢以简单,简洁,简洁的方式将指令写到计算机上,并且他们希望在方便和方便时发布这些命令。 问题在于,有人发现分析和优化软件要容易得多,在这些软件中,指令以很好的功能排列为黑盒,并具有明确定义的输入和输出。 看似随机的指令来增加其他变量或关闭某些功能(功能程序员称之为“副作用”)只会使问题复杂化。

函数式编程的崇拜者认为,我们都应该追求这种干净的函数结构,而不是在随机的时间扔掉副作用。 这使得创建无错误,高度线程化的代码变得更加简单。 大概他们相信。

现在,对于功能方法的真正信奉者有数十种语言。 其中许多人屈从于现实,即副作用有时会使代码更易于创建和维护。 ScalaFrege之类的功能语言生活在无处不在的Java虚拟机支持下的世界中,而Rust是必须编写系统代码的人的最新选择。

非功能编程

函数式编程的致力于者往往是编写复杂的算法以解决抽象数学问题的学者,换句话说,就是一些最容易以函数式方式编写的算法。 世界上的其他地方都为人们使用混乱的用户界面,这些用户界面往往不会以嵌套的功能抽象的方式思考。

在最流行的编程语言列表中,很少有功能选项,这主要是因为程序员已经厌倦了在使用功能直接外套的情况下构建最常见的应用程序。 这些替代方案已经采用了命令式,声明式和面向对象编程之类的名称。 与其说是相反的动作,倒不如说是从不陷入功能崇拜并坚决拒绝加入的集合或程序员。

打字编程

第一代语言使程序员摆脱了跟踪CPU内部寄存器并引用具有x等变量名称的数据的需要。 程序员立即滥用了这种自由,开始将各种数据塞入各处的变量中。 当这变得太令人困惑时,聪明的编程语言设计者建议要求程序员在变量的初始声明旁边再添加几个字符,这些字符将拼出要塞入变量的数据类型。 然后,计算机可以仔细检查计算结果,并确保进入函数的至少所有数据都是正确的类型。

一群具有数学头脑的程序员创建了详尽的类型化数据理论,这些类型想象出优雅而复杂的类型层次结构,这些类型层次结构收敛于将在计算结束时返回的一个真实且无错误的事实。 打字语言崇拜者渴望创建近似于这个美丽理想的程序。 他们想要严格定义的类型,以使编译器可以保证错误类型不会遗留任何错误。

无类型编程

一旦打字语言爱好者开始受到关注,反对运动就开始宣布打字数据的许多工作有点浪费时间。 并不是程序员会故意添加一个字符串和一个整数,然后程序在运行时会立即崩溃并出现异常。 并不是像编译器通过提前几分钟标记此问题来节省大量时间。

非类型化的恋人认为,每次定义类型时都要拼出一个类型是不值得的。 不仅如此,类型化还为创建灵活的数据结构增加了严格的限制,这些数据结构会随着计算过程中可用数据的增加而适应和改进。

不仅如此,而且一些自动编译器在理解和推断变量的正确类型方面也变得越来越好。 如果计算机能够解决问题,我们是否应该将整理工作留给他们?

低码/无码

编写软件很难。 因此,毫不奇怪的是,程序员会被启发去创建任何自动化程序,这将使他们免于编写更多代码的麻烦。 当这种自动化变得足够复杂时,开发人员便开始吹嘘说,任何人都可以用很少甚至没有代码来创建复杂的东西。

问题是,这项工作仍然需要像程序员一样思考隐藏的抽象和精心设计的数据结构。 这种想法需要加以整理,并以某种方式(例如JSON文件或某些XML)进行设置。 自动化程序通常将这项工作视为单纯的配置,但是有时我们花在摆弄配置文件上的时间可能与使用官方编程语言编写的指令一样多。

这些细节并不重要。 程序员总是会被自动化吸引,因为他们讨厌两次做同一件事。 更重要的是,西服将始终梦想着自动化将削减成本并提高利润。 这个梦想将通过数月与非代码选项的纠缠来维持低代码或无代码崇拜。

Prolix代码

在过去的30或40年中,编程Oracle预测我们将单击图标,拖动流程图或挥舞双手告诉机器要做什么。 除了键入内容外,还可以将击键添加到某些文本文件中。 尽管有预言,命令行和基于文本的编程语言也不会消失。 如果有的话,程序员似乎比以往任何时候都喜欢打字,而最新的疯狂似乎全是文本。

隐私拥护者

人们喜欢他们的隐私,程序员也不例外。 如果有的话,程序员就知道入侵计算机的性能如何。 问题在于,许多业务模型都涉及使用复杂的软件来预测客户的需求。 当然,我们可以直接问人,但是大多数人都忙于填写其他表格。 因此,使这些业务模型正常工作的唯一方法是消除对隐私的担忧……但仅此一个例子。 当在工作和其他人的隐私之间做出选择时,通常没有竞争。

有一些有趣的折衷。 隐私保护数学可以在某些情况下起作用,并且有一些复杂的方法可以确保我们可以提供一些隐私保护,同时还可以提供一些新颖的阅读功能。

开放的拥护者

每个人都喜欢开源和开放标准的想法,直到它通过允许竞争者蓬勃发展而与自己的业务模型发生冲突。 开源软件的一些最大支持者也是那些拥有最专有秘密秘诀的人。 例如,谷歌一直支持精彩的开源项目,并公开反对使用数字版权管理软件,该软件使内容创作者有能力赚钱。 但是,如果您询问他们的搜索引擎排名算法,他们会划清界限。 那还没开

他们并不孤单。 大多数公司都采用灵活的开放方式。 如果开放性适用于其他人的业务模式,但不适用于您自己的业务模式,则总是好的。

上述所有的

尽管所有这些邪教组织听起来都是绝对的,真正的信徒的行为就像规则是愤怒的神颁布的法律,他们准备部署闪电,但事实是,编程世界充满了巧妙的技巧,可以使我们扩展定义。 如果您对自己的做法有些聪明,那么经常有可能会加入两个对立的邪教组织。

例如,某些功能语言足够灵活,可以让您在需要时进行一些非功能性的技巧。 同时, 其他人会争辩说,甚至像C这样古老的位敲打工具最终都是功能性编程语言。 一些类型仇恨者通过仅定义所有函数以采用类型层次结构中最通用的对象来破坏类型检查语言。

没有理由为什么你不能变得如此聪明,创建自己的邪教组合,将这些不同的哲学融合在一起,无论它们似乎有多少冲突。 您就是编写代码的人。 您就是在这里下订单的人。

From: https://www.infoworld.com/article/3440104/10-software-development-cults-to-join.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值