编写go语言代码三条基本原则

VSole2022-08-04 11:14:05

这是一篇翻译文章,为了使读者更好的理解,会在原文翻译的基础增加一些讲解或描述。

软件工程是当您添加时间和其他程序员时编程发生的事情。— Russ Cox

Russ 正在区分软件编程和软件工程。前者是您为自己编写的程序,后者是随着时间的推移许多人会使用的产品。工程师会来来去去,团队会扩大和缩小,需求会改变,功能会被添加,错误会被修复。这是软件工程的本质。

三条基本原则

  • 清晰可读
  • 化繁为简
  • 生产力
你会注意到我没有说性能或并发性。有些语言比 Go 快一点,但它们肯定不像 Go 那样简单。有些语言将并发作为最高目标,但它们的可读性和生产力都不高。性能和并发性是重要的属性,但不如清晰、简单和生产力重要。

1.1 清晰可读

程序代码应该主要是方便人类阅读,并且可以在机器上运行。代码的阅读次数比编写次数多得多。一段代码在其生命周期中将被阅读数百次,甚至数千次。清晰很重要,因为所有软件,不仅仅是go程序,都是由人类编写的,以供其他人阅读。机器也使用软件这一事实是次要的。

如果你正在为自己编写一个程序,也许它只需要运行一次,或者你是唯一会看到它的人,那么就做对你有用的事情。但是,如果这是一个多人贡献的软件,或者人们会在足够长的时间内使用它,要求、功能或运行它的环境可能会发生变化,那么您的目标必须是为您的 程序是可维护的。

1.2 化繁为简

简单是可靠性的先决条件。— Edsger W. Dijkstra

为什么我们要追求简单?为什么 Go 程序简单很重要?

控制复杂性是计算机编程的本质。— Brian Kernighan

我们都遇到过你说“我无法理解这段代码”的情况,是吗?我们都参与过你害怕做出改变的程序,因为你担心它会破坏程序的另一部分;您不了解且不知道如何修复的部分。这是复杂性。

构建软件设计有两种方式:一种是简单到没有明显的缺陷,另一种是复杂到没有明显的缺陷。第一种方法要困难得多。— C. A. R. Hoare

复杂性将可靠的软件变成了不可靠的软件。复杂性会扼杀软件项目。因此简单是 Go 的最高目标。无论我们编写什么程序,我们都应该同意它们很简单。

1.3 生产力

设计是一门艺术,要求编写的代码当前可用,并且以后仍能被改动 --Metz

我要强调的最后一个基本原则是生产力。开发人员的生产力是一个庞大的话题,但归结为这一点;你花多少时间做有用的工作而不是等待你的工具或绝望地迷失在外国代码库中。Go 程序员应该觉得他们可以用 Go 完成很多工作。

有玩笑说 Go 是在等待 C++ 程序编译时设计的。快速编译是 Go 的一个关键特性,也是吸引新开发人员的关键特性。编译速度是经久不衰的话题,公平地说,在其他静态语言中需要几分钟的操作,在 Go 中只需要几秒钟。这有助于 Go 开发人员感觉与使用动态语言工作的同行一样高效,而不会出现那些动态语言固有的可靠性问题。

Go 程序员需要意识到编写代码是为了阅读,因此将阅读代码的行为置于编写代码的行为之上。Go 甚至通过工具和自定义来强制所有代码都以特定样式格式化。这消除了学习项目特定方言的困难,并有助于发现错误,因为它们看起来不正确。

Go 程序员不会花几天时间调试难以理解的编译错误。他们不会在复杂的构建脚本或将代码部署到生产环境中浪费时间。最重要的是,他们不会花很长时间去理解同事写的代码。

Go 是一种旨在提高生产力的语言,它是为大规模、工业规模的软件设计而构建的。

软件go语言
本作品采用《CC 协议》,转载必须注明作者和本文链接
微软安全研究人员发现,一年前用 Go 语言编写的 Hive 勒索软件有了用 Rust 重写的新变种。
DarkBit勒索软件分析
2023-05-15 09:10:03
json内容包括:文件大小限制:最小为25MB,最大为6GB,不同大小的文件被分成不同的部分,每个部分的大小也不相同。如 1000MB 到 4000MB 的大小的文件,被分为3部分,每部分大小不超过 10000 字节。DarkBit 会单独加密这些较小的部分中的每一个,而不是一次加密整个文件。文件扩展名限制:排除特定的文件扩展名。利用 Go_Parser 解析 runtime 库,把生成map文件导入到 x64dbg 检测处理器是否为
被盗账户直接损失价值数千英镑的游戏内虚拟物品,至于黑客使用的盗号手段,十分简单......
同时,美国司法部长梅里克表示,警方正在构建Hive开发人员、管理员和附属机构的地图,作为逮捕、扣押Hive 勒索软件组织以及其他行动的重要支撑证据。最终,Hive勒索软件组织被FBI一锅给端了,整个组织结构遭到了毁灭性的打击。目前尚不清楚的是,Hive勒索软件组织主要领导与核心成员是否已经被逮捕。持续增强勒索攻击的打击力度美国FBI联合欧洲警方共同执法,对Hive勒索软件组织进行彻底的打击,进一步体现了全球主要国家对于勒索攻击的态度。
globeimposter和phobos家族仍然是云上传播勒索病毒的主要来源,占据10月公共云勒索样本量的近60%。值得注意的是,除网络漏洞入侵外,RDP爆破方式进入受害者服务器成为10月入侵方式的主旋律,由此可见,云上的弱密码问题仍然需要引起重视。
快速编译是 Go 的一个关键特性,也是吸引新开发人员的关键特性。这有助于 Go 开发人员感觉与使用动态语言工作的同行一样高效,而不会出现那些动态语言固有的可靠性问题。Go 程序员需要意识到编写代码是为了阅读,因此将阅读代码的行为置于编写代码的行为之上。Go 甚至通过工具和自定义来强制所有代码都以特定样式格式化。Go 是一种旨在提高生产力的语言,它是为大规模、工业规模的软件设计而构建的。
据研究人员声称,间歇性加密让攻击者可以更有效地规避使用统计分析来检测当前勒索软件感染的系统。针对使用不同文件大小的BlackCat勒索软件的研究表明,间歇性加密为威胁分子在速度方面带来了显著优势。该勒索软件是用Go语言编写的,据开发人员声称,这有望加快勒索软件的运行,此外使用间歇性加密(图1)。PLAY勒索软件该勒索软件于2022年6月首次露面。
最近,Cyble的网络研究人员调查了印度银行和金融服务行业IT公司Nucleus Software于2021年5月30日遭受的一次攻击,分析发现该公司是BlackCocaine勒索软件团伙的受害者。
最近,Cyble网络安全人员调查了印度银行和金融服务行业IT公司Nucleus Software于2021年5月30日遭受的一次攻击。调查发现,对该公司实施网络攻击的是BlackCocaine团伙。根据调查,域名的WHOIS信息显示BlackCocaine 勒索软件的域是在2021年5月28日注册的,由此可以判断,Nucleus Software是BlackCocaine勒索软件组织的第一个受害者。研究人员报告称,一份名为的文件最近被提交到不同的公共沙箱。但目前,还未确定 BlackCocaine 的初始感染媒介。2021年4月至5月期间,亚太地区的网络攻击增加53%。
弄清其中使用的网络武器和数字技术,有助于帮助我们提前识别风险并合理规避风险,以免在面临网络攻击时深陷网络泥潭,防患于未然。破坏性攻击旨在破坏数据并使目标系统无法运行。HermeticWiper特别针对Windows注册表文件ntuser.dat和Windows事件日志,以尽量减少可用的取证文物。
VSole
网络安全专家