关于当今软件开发的四件会让过去的程序员大吃一惊的事

简介:   过去的盲点给我们提供了另一种思考未来的方式。 技术变革的步伐并没有放缓。 在一两年之内,我们大多数人仍然会思考世界。 我们期待着很多变化,并且我们花了大量时间想象它们。 但是在雷达之下发生了什么? 我们期望哪些发展永远不会实现? 我们今天很少有人期望发生什么革命?  软件开发改变了世界。 我们只看到其中一些即将到来。关于当今软件开发的四件会让过去的程序员大吃一惊的事

  过去的盲点给我们提供了另一种思考未来的方式。 技术变革的步伐并没有放缓。 在一两年之内,我们大多数人仍然会思考世界。 我们期待着很多变化,并且我们花了大量时间想象它们。 但是在雷达之下发生了什么? 我们期望哪些发展永远不会实现? 我们今天很少有人期望发生什么革命?

  软件开发改变了世界。 我们只看到其中一些即将到来。关于当今软件开发的四件会让过去的程序员大吃一惊的事。

  如今,计算机已经在我们的生活中生活了数十年-在大多数时间里,我们一直在观察它们,并试图预测未来。 有些变化并不难预料。 我们知道更快,更强大的硬件将推动语言的复杂性上升。 我们预测了代码将渗透到我们周围设备中的方式,从而取代了多合一的个人计算机。 我们已经花费了数年的时间来预测虚拟现实和人工智能的巨大变化。

  但是其他变化出乎意料。 过去的开创性程序员可能没有想到以下四件事。

  1.编程语言仍然是文本

  1978年,布莱恩·克尼根(Brian Kernighan)编写了这是世界上第一个" Hello World"程序,却不知道他的代码将变得多么有名。

  今天,大约半个世纪之后,您将毫无疑问地认识到此基本C代码的语法。 这说明了什么:编程语言是保守的。

  即使语言混乱是真实的,即使新的API和框架一夜之间出现了,主流仍在缓慢地转变。 面向对象的程序设计是在1960年代由Simula发明的。 在1990年代,它随着C ++的发展而声名显赫,尽管有一些颇具挑战性的挑战者,但它仍然是当今的主导范式。 实际上,现代编程的最显着特征之一就是,世界上许多最重要的语言都具有相似的C风格的语法,从C#到Swift,Dart到Go,Java到JavaScript。 变化越多,它们保持不变的程度就越高。

  编程专家已经预测了我们编写程序的方式将会改变。 我们一直期待着任何人都可以使用的自然英语语言,然后是根本没有任何文本的流程图风格的可视化语言,然后是可以自行编写的AI语言。 除了有趣的实验和利基工具,我们仍在以与上一代相同的方式来编写代码。

  2.大多数软件便宜或免费

  20年前,安装新的专业软件意味着要旋转CD,单击安装向导,以及逐个观看进度缓慢的进度条。 一些安装程序会客气地建议您使用等待时间来喝咖啡。

  假设您想要合法的许可证,安装软件还意味着花大量的钱。

  如果您有资格获得合适的晋升,Office 95的价格为几百美元。 但是,需要新的专业版本的完整副本的企业将以599美元的价格上钩。 那是在1995年。按通货膨胀因素调整后的价格,今天购买Office 95的价格将达到惊人的1033美元。 (当时,企业仍然认为这是一笔交易,因为它将多个应用程序捆绑在一个程序包中,并且使其最重要的竞争对手Novell PerfectOffice的价格低了。)

  对于企业开发人员而言,这个故事更加昂贵。 由于分别购买操作系统,开发工具,数据库软件和其他工具的巨额成本,大多数Microsoft开发人员要么从Microsoft购买MSDN订阅(几千美元),要么在一家这样做的公司工作。 甚至被厌恶的Microsoft FrontPage也以699美元的标价推出。

  今天,这种模式已经消失了。 发生了什么? 首先,开源软件赢得了开发界的青睐。 它拥有最热情的社区,一些世界上最有价值的软件,而且价格无与伦比(免费)。 然后,它传播到商业世界,在这里,公司现在比通过购买座位许可证更可能通过Amazon Web Services或Azure等方式支付计量使用费用。 然后,这种技术传播到了消费者世界,科技公司推出了他们的软件,并向其他人出售了将广告展示在观众面前的机会。

  一些公司仍然可以靠软件换钱的模式生存(Adobe和许多游戏开发人员一起想到了)。 但是这些往往是中小型软件公司。 微软,谷歌和苹果等大型公司的软件销售收入越来越小。 有些人,例如Facebook,甚至没有办法为其软件付费。

  3.桌面应用程序只是一种特殊的Web应用程序

  自从1990年代初某个时候互联网首次引起公众的关注以来,我们一直期望互联网能够改变世界。 结果,尽管它摧毁并重建了我们世界的基本组成部分,但它引发的许多转变都让人感到意外。 如果您已经呆了足够长的时间,那么您会看到音乐业的消亡,商业的重塑,印刷媒体的消亡,以及分享新闻和信息的分布式社交团体的兴起。 所有这些变化都是巨大的,但没有一个是意料之外的。

  另一个不足为奇的变化是台式机软件逐渐被网络应用所取代。一旦可以在Web浏览器中使用JavaScript进行某些操作(具有通用兼容性且无需安装过程),它便迅速成为二手首选。 在不同的域中反复重复此过程。 当然,桌面应用程序对于某些功能和某些专业领域仍然很重要……或者是吗?

  在Node.js的帮助下,Electron创建了一个桌面外壳,其中封装了客户端Web堆栈(JavaScript和DOM)和Web服务器堆栈(具有一些用于插入操作系统API的扩展)。 如果这听起来有些沉重的开销,那您没错。 更糟糕的是,每个Electron应用程序都会获得此重量级执行环境的独特副本。 这听起来像一场肿的噩梦,但是计算能力和内存已经如此丰富,以至于开发人员可以负担这些开销。 剩下的就是历史了— Electron成为了适合构建Atom和Visual Studio Code等应用程序的专业质量工具。

  当然,本地桌面应用程序并没有全部消失。 但是Electron蓬勃发展,并且出现了新一波技术,这些技术可以帮助开发人员将桌面应用程序隐藏在Web应用程序中。 WebAssembly打破了大门,通往Blazor等新项目。 世界已经倒转了。

  早在互联网时代,我们就知道台式机和网络之间的性能差距会缩小。 我们知道,当今的关注点(JavaScript语言的缓慢解释特性,HTML DOM的额外层,非本地图形API)将不再那么重要。 我们中有些人甚至知道,每种类型的应用程序最终都会在网络浏览器中运行。 但是,有没有人意识到这种开发模型的优势-广泛的应用范围以及在各处使用相同技术的诱惑-会导致我们将桌面应用程序置于伪造的虚拟化Web浏览器和Web服务器中? 而且该设计的成本几乎变得微不足道了吗?

  4.我们输掉了安全战争

  在2000年代初,我们一直在寻找新的计算方法,并且还在不断增加安全风险。 不可信的应用程序可能会安装病毒。 黑客可能会使网站崩溃,并窃取信用卡数据,文档和电子邮件。 身份欺诈难以抗拒。

  快进到今天,情况基本上是一样的。 数据仍然被盗。 网络仍被黑客入侵。 我们即将解决的早期互联网计算机安全性的唯一挑战是病毒挑战,因为我们已经为游戏和大多数消费者应用创建了巨大的沙盒模型。 但是,随着通用的全球计算和物联网的发展,我们需要捍卫的范围变得不可思议。

  安全专家知道,万无一失的安全性是不可能的。 取而代之的是,我们争取一种称为"深度防御"的东西-防御措施的分层序列,迫使攻击者阻止多个系统窃取我们的秘密。

  但这是问题所在。 在过去的二十年中,我们未能巩固最薄弱的环节:最终用户。 尽管我们已经开发了生物识别技术,但与保护数据相比,我们更有可能使用面部识别来索引我们的Facebook图片。 不能(实际上)证明人与人之间的身份。 我们拥有很少用于我们自己的数据或通信的加密工具。 这使两个月前的安全专家大为震惊:神秘地,带有任意大写和特殊字符规则的文本密码仍然是一件事情。

  当然,安全是持续不断的斗争,人性很难改变。 但是,仅通过询问就可以窃取数十亿美元时,我们就无法保护最终用户。 而且,如何解释世界上技术最先进的国家何时举行受到低技术网络钓鱼攻击影响的选举?

目录
相关文章
|
2月前
|
开发者
代码之外:软件开发者的职业素养提升之道
软件开发不仅是编写代码,更涉及职业素养的全面提升。本文探讨了软件开发者如何在沟通技巧、团队合作、持续学习、时间管理和职业规划等方面提升自我。良好的沟通能促进团队协作,持续学习助你紧跟技术潮流,高效时间管理则有助于实现工作与生活的平衡。通过这些方面的努力,开发者能够打造更加成功的职业生涯。
|
2月前
|
开发者 UED
代码之外:软件开发者如何培养跨界思维
在技术飞速发展的今天,软件开发者面临的挑战已超越单纯编码技能。本文探讨了跨界思维的重要性及其对职业成功的推动作用。跨界思维能促进创新、提高适应性和增强沟通能力。通过学习新知识、参与多学科项目、建立多元化网络、培养创新思维及学习设计思维,开发者可全面提升自身能力。这不仅增强个人竞争力,还促进团队创新。
|
4月前
|
算法 搜索推荐 开发者
代码的诗意:软件开发中的审美与实用主义
【7月更文挑战第17天】在数字世界的编织过程中,开发者往往沉浸于逻辑的严谨与功能的实现,却忽略了代码本身的艺术性。本文将探讨如何在追求软件实用性的同时,不丢失编程过程中的审美体验,通过案例分析展现优雅代码的力量,并讨论如何培养对技术之美的感知能力,最终达到技术与艺术的和谐统一。
|
6月前
|
存储 搜索推荐 程序员
SnippetsLab:程序员的秘密武器
SnippetsLab:程序员的秘密武器
190 0
|
网络协议 Linux C语言
让你提前认识软件开发(4):破除几个有关软件开发的错误观念
让你提前认识软件开发(4):破除几个有关软件开发的错误观念
82 0
|
前端开发 程序员 开发者
开发者要想走更好的出路必须选全栈工程师这条路吗?
虽然说“技多不压身”,“术业有专攻”,但是作为程序员,尤其是做业务场景的开发者来说,并不是会的面越广越好,而且现在的技术迭代速度太快,不管是前端领域还是后端领域,技术栈或者技术框架更新迭代的周期越来越短、越来越快,学习成本越来越大,尤其是要做资深的全栈工程师,需要学的知识是非常的多,而且还需要各个方面的时间沉淀,考虑到人的精力会随着年龄的增长而递减,成反比例,所以虽然全栈工程师有着丰富的工作从业经验和经历,但是如果想要具备各个方面都差不多,难度是很大的。
200 1
开发者要想走更好的出路必须选全栈工程师这条路吗?
|
测试技术
【软件测试基础理论】软件内卷早已存在!(非功能-可移植性)
【软件测试基础理论】软件内卷早已存在!(非功能-可移植性)
|
程序员
程序员得到的报酬与他们的生产力不成正比
导读:原文作者John D. Cook在johndcook.com上发表的《Why programmers are not paid in proportion to their productivity》,由国内整理编译成《程序员得到的报酬与他们的生产力不成正比 》。
1153 0
|
测试技术 程序员
那些会阻碍程序员成长的细节[1]
罗马非一日建成,软件系统也不是一天能够写出来的,在经年累月的编码生活中,总会有那么些个不经意的瞬间暴露出来,而这些不经意的外在表现日积月累,犹如水滴石穿,会产生巨大的力量反作用于程序员的成长。我简单列了几条,你来看一看,兴许就在身边实实在在发生过。
1130 0
|
程序员
项目难做,程序员难当,软件开发中的 9 大难题
是什么让项目变糟?何时起我们下班回家时开始盘算:“见鬼,我得离开”?下面是我们程序员不时要面对的一个问题清单,这些问题让我们筋疲力尽。
979 0