软件编程需要掌握什么_为什么编程这么难掌握?

软件编程需要掌握什么

为什么编程这么难? 因为它不再与编程有关。

请允许我详细说明。

我在1987年编写了第一行专业代码。这是用BASIC编写的应用程序,它可以计算计算机租金。 (是的,当时的计算机非常昂贵,因此按月租用它们是有意义的。今天,我们实际上将它们赠予了。)当您从列表中选择一台计算机时,该程序就可以工作了,它提供了租用期限和该程序计算了每月付款。 该程序还具有一项功能,使您可以打印结果的硬拷贝。

就我必须做的工作而言,我90%的工作是实际的编程 。 剩下的10%涉及创建可执行文件,将其复制到软盘上,然后在我办公室其他人的计算机上安装代码。

我花了大约一个星期的时间来编写程序。 诚然,这并非完全是火箭科学编程,当我回头看时,也不是很好的编程。 但是,它奏效了, 我得到了报酬 -双赢,可以这么说。

快进30年,直到今天。 上周,我为我所教的课程写了一个程序。 该程序称为WiseSayings 。 这是一个网络应用程序,可根据要求以明智的说法列表中的随机说法进行响应。

与智说的联系

我花了大约30分钟的时间来编写代码,包括应用程序数据检索和配置。 但是,仅对应用程序进行编程是不够的。 这只是为什么编程如此困难的开始。 如今,容器非常流行,因此我必须创建Dockerfile,该文件允许用户在Docker容器中运行WiseSayings。

但是,还有更多。 我不仅需要创建Dockerfile,而且还必须将容器映像发布到DockerHub上,以使其他人更容易使用。 这意味着镜像构建,然后在我登录DockerHub帐户后进行推送。

到目前为止,一切都很好,对吗? 错误!

作为一个雄心勃勃的编码员,我想象过会有数百万人想要使用我的应用程序。 因此,我需要使其易于扩展,并且WiseSayings可以在Kubernetes下运行。 我编写了一个deployment.yaml以创建Pod和ReplicaSet,以便我的容器化WiseSays应用程序将在云中运行,并且至少要提供一个service.yaml以从Kubernetes集群外部提供对Pod中逻辑的Web访问。

如果我想提供安全性和路由,则需要创建一个或两个Kubernetes密钥,一个TLS证书和一个ingress.yaml来管理所有内容。 我可以继续。 我们甚至没有谈论过创建网页来呈现我的应用程序的响应,也没有谈论过对该应用程序的多语言支持。 谁知道,也许我预期的数百万用户中有一部分会在中国。

事情如何改变

我的主要观点是为什么编程如此困难:30年前,我创建一个程序所需要知道的就是BASIC编程语言以及如何将代码构造为子例程-这就是我们当时所说的函数和方法。 打印起来有点困难,因为打印机驱动程序不是操作系统的一部分,并且您的程序需要全面了解所使用的打印机。 但是,就是这样。 我的大部分工作都围绕如何在代码中表达特定的应用程序逻辑。

今天,要创建我的小WiseSayings应用程序,我不仅需要了解一种编程语言 (在本例中为在Node.js下运行JavaScript),而且还需要对互联网的工作方式有基本的了解,以及如何摆弄诸如状态码和所有其他名称/值对之类的东西,我可以将它们塞入HTTP标头中。 然后,我需要了解Docker和Kubernetes的基础知识。 我还想补充一点,在Kubernetes基础知识中,实际上没有什么是基础知识 。 当您使用任何Kubernetes API资源时,需要真正掌握的时间,即使对于像Pod这样基本的东西也是如此。

现在您可以真正了解为什么编程如此困难。

编写实际代码并在GitHub上获取它仍然需要大约半小时,但是我现在要花一些时间使我的用户可以使用我的程序。 我以前的分发方式涉及将可执行文件的文件复制到软盘上,然后移交给用户,然后将该文件从磁盘复制到台式计算机上。 过去,花费数分钟进行本地代码分发的工作现在已经转变为现在构成“编程”活动的大部分工作,而不管代码是发给办公室另一端的用户还是发给世界各地的用户。

现在,不要误会我的意思。 在任何情况下,我都不想回到BASIC和软盘时代。 我们今天制作的程序远远超出了30年前我在运行DOS 3.3的IBM AT上进行BASIC编程时的想象。 我认为我们做到这一点非常酷,因此您可以将手机摄像头对准报纸,并使设备实时向您朗读文本 。 我想随时在YouTube上观看iPad上的场景摘要,随时观看威尼斯商人 。 (是的,有时候我很难遵循吟游诗人的语言。)

这些都是惊人的成就,但它们是有代价的。 如今,尽管商业软件一直需要许多人的共同努力,但即使是简单的东西也很难,而且影响深远。

在过去,对编程语言的了解和对软件设计的基本了解足以使您进入竞争环境。 如今,您需要了解网络,部署工具,自动配置,测试其各种形式(从单元测试到分布式规模的性能测试)以及众多开发框架的详细信息。

用篮球做类比,过去您只需要打一个球,一个篮框以及运球,传球和投篮的能力。 今天,您还需要了解所有这些内容,以及如何出售门票和经营特许摊位。 这是很多工作。

这值得么? 当然。 但是, 增加的复杂性使该行业更难涉足。 也许这是一件好事。 医学,工程学和核物理一直是“难做”的职业。 如果做得好,在这些领域中的工作会带来非凡的收益,而做得不好时,它们会带来严重的后果。 软件开发现在处于同盟中。

如今,软件在世界范围内运行。 很快它将在世界上大部分地区运行。 也许是时候设定一个较高的标准,并使其尽可能地难以演奏。 然而,这是可悲的认为,当我的下一个版本出现时,那人将不得不做很多比写在BASIC一个简单的程序开始。 我很幸运有机会玩游戏,软件改变了我的生活。 其他人可能并不那么幸运。

翻译自: https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/Why-is-programming-so-hard-to-master

软件编程需要掌握什么

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值