栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 资讯 > 其他资讯

零经验的人学编程难吗,学编程真的很难吗?知道这些,帮助新手减少一半的学习时间

零经验的人学编程难吗,学编程真的很难吗?知道这些,帮助新手减少一半的学习时间

在大众眼里,大家都觉得编程很难。其实就编程语言而言,难度没有太大区别。每种语言都有自己的优缺点,但有一个难点是所有程序员都有的:软件开发的难度。

本期就来说说软件开发中的难点,希望通过以下几个问题帮助小伙伴及时解决自己的困难。

很多人认为好的编程语言可以让开发者事半功倍,帮助他们快速解决问题。毫无疑问,在很久以前的汇编和Fortran时代是这样的。如今编程语言已经逐渐成熟,但是程序员还是要面对一些困难和挑战。但这与编程语言无关,原因如下。

01

阿姆达尔定律

作为程序员,当我们需要执行一系列的任务时,我们会不由自主地想到阿姆达尔定律:在计算机的处理器和内存之间,改变其中的一个,就可能大大提高计算机的速度和性能。然而,很多人在升级内存的时候升级了处理器。结果就是花了最好的资源,却没有达到最好的效果。

比如你想吃面条,烧开水要十分钟,煮面条也要十分钟。即使你找到了加快水烧开的方法,煮的时间也不会减少到十分钟以内,也不可能把煮的速度提高一倍。

这就是阿姆达尔定律想要告诉我们的关键点:你所能达到的最大速度提升,受到优化工作比例的限制。

根据这个规律,当我们审视编程工作的时候,会发现工作难度的原因有很多。首先,我们的工作需要按照一定的顺序来完成。毕竟,同时做不同的事情,很可能导致所做的每一件事都是乱七八糟的结果。

比如每天上班时间9点,你可能在敲代码,可能在搭建,可能在开会,但是同一时间你只能做一件事,不可能一边敲代码一边开会。当我们把规律运用到会议中时,我们发现即使我们试图把搭建时间降低到0,也不会很快加快你的项目,其他因素仍然会限制你的工作效率。

拿我们之前的例子来说,当编程语言还没有今天这么成熟的时候,要把程序转换成计算机能运行的代码是非常困难的。甚至在很久以前,我们需要将程序转换成1和0,然后手动输入到计算机中,这在我们的工作中花费了大量的时间。

如果能找到一种更高效的方法(比如Python)来指挥计算机,将会大大提高我们的编程效率。就像我们现在,编程语言发展的越来越好,不需要像以前一样用傻乎乎的操作。以前需要90%时间的操作,现在只需要10%的时间就可以完成,这意味着即使这部分工作的时间降为0,效率也只能提高1.11倍。效率提升降低81倍。

但是,由于90%的软件开发工作都是非常艰巨的任务,而编程语言只占其中的一部分,所以再好也不能(直接)减轻我们的负担。

02

为什么编程这个工作这么难?

传达需求

从上面的分析来看,编程的难度和编程语言关系不大。编程的难度是什么?这里有个实验告诉你。首先,假设我们不需要电脑做任何事情,而是告诉你的朋友需要做什么,替你的朋友做所有的决定。

不,你要花很多时间向你的朋友解释所有的背景信息。他需要知道程序处理的真实问题,你需要提供什么功能。你必须解释清楚所有的内部和外部因素。而且还有很多突发情况和细节需要处理。

同时,你还需要考虑不同组件的两两组合,以及用户可能尝试的各种操作和将要发生的事件,这些都需要你明确告知好友。困难不仅限于你需要掌握所有的实际细节,用你朋友能理解的方式传达所有的信息。

到目前为止,我们还没有谈到计算机、编程语言、理解需求等。这些是更艰巨的任务。

描述和规格

区分描述和规范并不容易,我们经常会踏入它的思维陷阱。如果你只有一个描述(“红色汽车”),你可以测试实际情况是否符合描述(“红色,但不是汽车”),但这个描述不足以传达如何制造汽车。这就是规范的作用。

编程时要做很多决定。只要记录下决策的结果,你就会得到一个杂乱无章的计划。所以在编写程序的时候,单靠描述是无法帮助你很好的完成编程工作的。你需要一份说明书。

当我们看到一个描述(“列表文件”)时,我们很容易认为这是一个规范,所以我们觉得应该能够告诉计算机执行这个动作。但事实上,有很多决策需要考虑(“文档应该按什么顺序列出?每个文件一行?”)

当我们编写一个程序时,规格说明通常只是一个描述。计算机无法知道如何“画出一个矩形”,但如果不知道这个矩形的位置、大小等主要因素,它就无法运行。所以在写代码的时候,你会发现很多未完成的决策,这也是我们经常出错的原因。我们很难根据一个描述来创建一个规范。

03

如何解决软件开发的外部问题?

最快的解决方法是我们可以找到一些不受阿姆达尔定律限制的方法。如果任务之间的速度不是完全独立的(比如优化一个任务可以加速另一个任务),那么我们可以考虑从技术方面来解决这个问题。

编程时,更好的语言和开发环境往往可以大大加快效率,更少的人写程序可以缩小组织的规模。如果由同一个人来写接口的前后台,可以降低沟通效率,不仅可以降低写代码的成本,还可以改变工作方式,降低其他工作成本。

迭代速度是另一个杠杆。你需要了解所有的细节,然后建立一个思维模式。或者你可以根据一些显而易见的细节建立一个小的思维模型。最后,基于这个模型创建一个小程序,验证这个思维模型,这样每个编程过程都会为你积累模型,你的模型也会变得更加丰富和准确。

但是,为了保证这种方法的有效性,你需要快速测试并得到反馈。理想情况下,新代码将在输入后立即开始运行。改变开发环境,实现更快的迭代周期,可以让开发人员从第一种方法变成第二种方法,从而帮助他们理解问题。

04

写在最后

更好的编程语言能快速提高工作效率和生产力吗?我认为,相比较而言,有更好的发展环境的机会更大。作为一名优秀的程序员,我们需要做的是通过更好的工具去理解现有的代码,实现更快的开发迭代周期,减少愚蠢的劳动。

通过在许多方面改进我们的工作,改变软件开发的方式是可能的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/news/1180295.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号