软件开发培训机构去哪个学校学编程要多少钱?

内存越来越大,空间却越来越小!原文链接:overflow.blog/2023/01/30/is-software-getting-worry/本文为CSDN编译,未经授权禁止转载!作者|艾萨克·莱曼译者|新

内存越来越大,空间却越来越小!

原文链接:https://stack overflow . blog/2023/01/30/is-software-getting-worry/

本文为CSDN编译,未经授权禁止转载!

作者|艾萨克·莱曼译者|新月

编辑|梦想在丹

出品| csdn (ID: csdnnews)

最近偶然看到尼基塔·普罗波科夫的一篇文章《软件幻灭》(https://tonsky . me/blog/dis enchant/)。这让我想起了Maciej Ceg?Owski的帖子《网络超重的危机》(https://idle words . com/talks/website _ obesity . htm),以及其他几个类似的帖子。

越来越多的软件开发研究人员认为,现在的应用程序越来越大,越来越慢,出现的问题也越来越多。但是,以这个时代的硬件水平,我们应该可以写出更快、更小、更健壮的应用。1996年问世的DOOM可以在怀孕测试器(https://www . CNET . com/culture/programmer-makes-original-DOOM-playable-on-inflation-test/)和数百种其他意想不到的设备上运行。另一方面,到2022年,聊天应用在后台运行时实际上会占用0.5GB(甚至更多)的内存,有时甚至会让设备完全没有反应,即使是在高端硬件上。

对于这个话题的帖子,一般认为80%的批评是公平合理的,20%只是无病呻吟。

大多数开发者都知道,永远不要说,“这只是一个智能手机操作系统。能有多难?”差不多吧。或者,“90年代的电子表格应用程序只需要10 KB。为什么这个应用程序需要一个G?”你永远无法想象一个应用程序的复杂和困难,除非你自己构建它。

但这并不意味着我们不能进行客观的批评。现在的应用确实比以前慢了,呈指数级增长却没有相应的附加值。事实上,几乎所有的现代应用程序都可以优化。我们可以提高它们的速度,也许甚至可以提高几个数量级。我们可以删除代码。我们可以编写微型的专用库。我们可以找到压缩文件的新方法。

但是我们为什么没有这样做呢?

普罗波科夫的回答是“软件工程师并不以自己的工作为荣”。虽然这句话有一定的道理,但我坚信努力工作,出色完成任务是人之常情。只有当一些事情反复阻碍我们时,我们才会失败。所以,与其抱怨人类的懒惰,解释为什么今天的软件这么慢,漏洞百出,不如多想想:“是什么样的力量和驱动力创造了一个让软件工程师很难全力以赴做好工作的环境?”

对此我有几个答案。

软件开发培训机构去哪个学校学编程要多少钱?

速度、可靠性和磁盘空间对客户没有吸引力。

在工程师眼中,软件是由交互组件、输入和输出组成的网络。这个模型既准确又实用。然而,这不是包装、营销或销售软件的方式。对于商人和客户来说,软件是一系列的功能。

以库存管理应用程序为例。营销将展示高分辨率的库存照片、醒目的颜色和各种功能亮点:

  • 跨多个仓库跟踪库存;

  • 物流、供应链和销售系统综合

  • 多层次的周报和月报;

  • 细粒度的访问和安全控制;

  • 所有终端即时更新;

  • 可以在Windows中,马科斯Linux操作系统 继续跑。

这些说法是可证伪的,也就是我们只需要一个小时的演示,就可以证明软件是否能做这些事情。但是只有一个和速度有关。该软件可能实际上非常慢,需要几秒钟来响应按钮点击,但它仍然可以保证“即时更新”。

速度会影响用户对应用的整体体验。速度是质量的重要标志,但这个特征很难吸引人。如果你花了很多时间优化核心流程,而竞争对手正在开发一种新型的报表,那么接下来你可能会失去很多客户。对现有客户的调查显示,当被问及下一步开发什么时,大多数人会问功能,而不是速度,除非软件太慢了,无法使用。而且董事会也不可能允许公司暂停现有的产品开发计划,花六个月的时间处理技术债务。功能,功能,还是功能,这些对我们的压力从来没有减轻过。

程序员希望编写快速的应用程序。但是市场不在乎。

你可能会注意到我们上面没有提到可靠性。谁敢说他们的应用没有bug?我们没有办法保证这一点,更不用说通过产品演示来证明了。我们一定要说“90%的单元测试覆盖率和全套集成测试吗?”没有人能理解这意味着什么,如果你向他们解释,他们会感到厌烦。我们无法向客户解释可靠性,让他们相信你的故事,同时对这个话题感兴趣。敏捷时代告诉他们,bug是不可避免的,你只能尝试修复它们。因为没有全面的方法来度量软件中的缺陷,所以不能作为产品特性的比较。我们花时间测试、重构和改进,但可能根本没人注意到。

程序员希望编写无错误的应用程序。但是市场不在乎。

此外,我们没有提到磁盘使用情况,尽管有时我们会在“下载”按钮下方的一小段行中显示下载文件的大小。相比以上特性,磁盘使用量在客户心目中的影响力实在是太小了。你上一次责怪开发人员(不是你自己的电脑)耗尽了磁盘空间是什么时候?你会根据下载文件的大小来选择一款电子游戏吗?可能永远不会。你会发现有人抱怨最新的使命召唤太大了,但是新版本发布的那一周,还是赚了10亿美元。

减少可执行文件或者输出包的大小是一个吃力不讨好的工作。但这通常是一项高科技工作,不仅需要了解正在构建的应用程序,还需要了解它所依赖的数百个底层库。此外,我们通常不鼓励这项工作,部分原因是这是一个雷区。你可能不明白一行代码的作用,但这不代表它没用。也许这只会给那0.01%在智能手机上运行Ubuntu的用户带来问题。但也许你付出了很多努力,最后只是阻止了应用每四年发生一次。跳跃崩溃。即使是最小的工具功能,最终也会发展成为企业智慧的产物。我们不需要惹上这样的麻烦。

一些程序员想写更小的应用程序。但这对市场和我们都没有好处。

软件开发培训机构去哪个学校学编程要多少钱?

消费软件被低估了。

分发应用程序并不难。互联网的诞生或多或少就是源于此。但是卖应用就像拔牙一样。人们愿意花15美元买一个三明治或一张电影票,即使遇到烂片也只能叹气,但即使一个感兴趣的应用只需要1美元也会犹豫。只有两类人愿意为高质量的软件付费:企业和游戏玩家。不知何故,我们生活的世界的其余部分希望软件是免费的。

这种期望损害了消费者应用程序的质量。构建一个应用程序的成本大约是5万到50万美元。如果不能让用户付费,就必须通过其他方式收回成本。以下因素是Web和原生应用扩张缓慢的主要原因:用户跟踪、广告、营销漏斗、捆绑销售、付费订阅、针对上述所有内容的对策,以及数百种其他不体面的收入来源。人们往往认为这些都是因为商家的贪婪,但其实很多时候都是绝望,没有更好的办法。网上大部分热门网站只能勉强维持。

我并没有夸大这种制度造成的浪费和低效。如果以合理的价格发布一个独特的高质量应用,结果往往是无人问津,下载量为0。因此,您只能在免费试用/订阅模式下重建。但是,即使下载达到几百次,也只有少数用户愿意付费,这些收入不足以支撑你的开销。然后,接下来,你只能在免费版做广告,虽然 用户界面 设计师可能会强烈反对。然而,即便如此,你也会发现广告浏览的收入只有几分钱。所以,你只能投放更多的广告。然后,用户会抱怨广告太多,因为在他们看来,你应该让他们继续免费使用应用。你试图将一些广告变成应用内购买。而且用户还会继续抱怨。无奈之下,你加了一些“行动号召”,鼓励用户为无广告体验版付费。原来很多人很快就把应用删了。为此,你增加了分析和遥测,这样你就能想出如何留住客户。但是,你发现“保留”可能是“上瘾”的代名词。在这个循环中,用不了多久,你应用程序将完全“面目全非”,成为一台无趣的收入机器, 滥用用户的注意力和隐私。但还是赚不了大钱。

如果人们愿意为应用付费,我们就可以避免这一切。但不幸的是,他们不愿意,所以应用程序变得臃肿,缓慢,漏洞百出。

软件开发培训机构去哪个学校学编程要多少钱?

开发商并不清楚自己的实力。

看到这里,肯定有人会说,你只知道怨天尤人,那么软件开发者就没有责任了?我认为有些地方我们可以做得更好。

即使在经济衰退期间,开发商也有非凡的影响力。我们可以坚持使用(或不使用)某些技术。我们仍然有很高的薪水,福利和认股权。我们可以联合起来改变整个公司的文化和工作环境,虽然这种力量很微弱。好的程序员不好找,大家都知道,我们知道他们也知道。

这是我们的优势,我们可以更好地利用它。

我们应该在每次冲刺中留出一些时间来解决技术债务。当有机会优化和改进代码时,我们应该尽量推迟功能开发。我们应该说服老板支持开源项目。我们要建立一个预期,让大家知道我们不用把所有的工作时间都花在开发新功能上,我们的标准和行业对我们有更高的期望。

很多时候,这些做法不会有任何负面影响。我们的要求并不过分。每个行业都有专业的标准和要求。为什么我们认为软件开发不能建立类似的标准和要求?

唯一需要注意的是,这些激励措施对我们不利。这是一场硬仗。有些经理不希望我们花时间解决技术债务,仅仅是因为他们不理解。有些销售人员会担心我们的软件没有竞争力。投资者可能会威胁将我们的工作外包给更灵活的开发人员。顾客的态度和市场力量的改变需要一些时间。然而,如果改变现代软件的状态是一个有价值的目标,那么这种努力是值得的。

软件开发以后还能提高吗?

我对软件的未来并不乐观。在20世纪90年代,程序员可以构建微型和高度优化的应用程序,因为他们在那个时候没有选择。客户的计算机只有32MB的内存和200 MHz的单核处理器。如果应用程序不能做到极简,它就不能运行。两年前买的基本款 Macbook Air 的内存是原来的250倍,四核处理器的速度是单核的几倍。我们有更多的选择,但我们提交的90%的应用程序都是垃圾。除非有人投诉,否则我们不会做优化。我们将把整个网络浏览器打包成消息应用程序、笔记应用程序,甚至是我们用来编写代码的工具。

在过去的二十年里,我们一直在努力提高软件开发的速度,降低软件开发的难度,让软件更容易使用。诚然,现在我们正在以前所未有的速度创建应用程序,应用程序拥有的功能数量比以前更多,软件开发人员的经验也比以前更少。从商业的角度来看,我们很容易看出它的吸引力。但我们也为此付出了代价,我们的客户、电能乃至整个地球都为此付出了沉重的代价。

这种情况不会在一夜之间改变,甚至可能在未来五年都不会改变。但我仍然充满希望。

最新一波的Web编程语言和技术(如WebAssembly、ESBuild、SWC、Bun和Yew)正试图使编译和运行时的速度和可靠性达到一个新的水平。Rust不仅可以提供媲美C view的性能,而且对开发者非常友好。这种高级语言在Web服务器上越来越受欢迎。此外,还有Tauri等轻量级电子替代品,有望成为Web开发者的第一个跨平台框架。摇树也将给编译器和包装器带来新的希望。

就市场而言,几款热门游戏(如“死亡细胞“还有”艾萨克联盟》)已经以付费下载的形式进入移动平台。虽然革命尚未成功,我们仍需努力,但这对于全球最大的科技消费群体智能手机用户来说,是软件成本再教育的一个突破。

如果我们在过去的20年里一直致力于提高生产率(尽管这个过程会牺牲效率和财务可持续性),也许在未来的20年里,我们可以解决集体的技术债务,找回失去的效率,改善经济交流,而不会失去软件给我们生活带来的生产率提高。

软件开发培训机构去哪个学校学编程要多少钱?

软件开发培训机构去哪个学校学编程要多少钱?

创业项目群,学习操作 18个小项目,添加 微信:FX951741939  备注:小项目

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1825684320@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.fxzy666.com/15400.html