设为首页 | 加入收藏 |
新闻动态

培养和训练软件思维,填补你的“宅”家时光

2020.03.21            



ICT上期的线上公开课让同学们学到不少新知识吧!本期又为你带来ICT软件思维,让你更好的了解ICT技术,更好的面对以后的发展。



ICT专业的学生对大牛阮一峰应该都不陌生,这位财经专业的博士在软件方面的造诣令人难以望其项背,阮一峰曾经在博客里写道:“大学里的所有专业,大致可以分为两类:技术类专业和思想类专业我觉得,年轻人选择专业的时候,应该尽可能选择技术类专业,技术类专业的知识不但可以直接用于生产活动,而且世界上大多数工作都是技术类岗位,更重要的是技术类专业往往培训几个月就可以见效。”


所以在这里,首先恭喜我们信息工程学院的学生,虽然你选择了ICT相关专业,学起来可能并不容易,但其实你选择了一条未来更容易成功的路。回到当前,你其实还需要做好充足的准备才能应对不断变化的未来,那么怎么才能为未来做好更充足的准备呢?那就要不断的提升自己的实力。我们的专业都需要很好的软件编程能力,同学们也都学过软件编程知识,不过很多同学可能还是感觉到无法写出软件,究其根本,就是因为软件思维没有建立起来。那么,今天我们就从新的维度开始,谈谈如何建立自己的软件思维?



程序员这个职业和大部分其他职业是很不一样的,我们很多其他行业的杰出工作者,往往具备勤劳、谦逊、耐心之类的美德。



而程序员的三大美德是这样的:懒惰、自负、不耐烦——语出Larry Wall (Perl语言的作者)。他解释说:懒惰让你花大力气去避免消耗过多的精力,所以你会写出节省体力的程序,同时让别人也能利用他们。为了少回答别人的问题,你也会写出完善的文档。不耐烦是当你发现计算机在偷懒时而产生愤怒,它让你写的代码不但能解决当前的需求,还富有预见性,或者至少尝试有预见性。自负让你有信心编写或者维护出没有缺点的程序。



这些话得到了广泛的传播,原因可能在于他有一半是开玩笑的,而另一半却又过于真实。软件行业之所以特殊是因为它既不是和真正的人类做生意,也不是完全和没有智能化的物品打交道,机器不需要吃饭也不需要休息,更不需要人权,只要接上电他们就会7x24小时的工作,同时机器如果被智能化,们就可以按照我们制定的规则,高效的进行重复劳动。


我经常开玩笑的说,程序员主要从事的是机器人养殖业,每当发现一种需求我们就生产一种机器人,然后让机器人去干活,我们自己就又可以休息了。人类的本质是复读机,而机器能更好的进行重复,所以他们其实是更好的产业工人。以前他们藏在电脑里工作,然后在人工智能和物联网发展起来以后,他们会慢慢的走到现实世界,这一点也会表现得更明显。



所以你看软件思维的第一点就是程序员本身并不直接工作,他们只生产和维护机器人,让机器人代替自己工作。但是懒是无止境的,需求多起来,程序员们就觉得这个生产机器人也是挺累的,然后他们发现要生产的机器人都有某种程度的类似,于是他们生产一堆机器人配件,这样要做新机器人的时候就不用从头开始做,只需要拼接几下就好了,这就是软件思维的第二点,要尽可能重用,避免重复,也就是DRY(don't repeat yourself)原则,所以软件思维的核心就是一个从重复到重用的过程。



注意这是一个过程,而不是一个结果。他是从具体慢慢的走向抽象的。还有很多同学知道重用也是重要的,但是就是没法从复杂一点的需求中抽象出规则和算法来,这是因为他们想跳过前者,直接得到后者,这对于入门不久的同学来说还是有难度的。


我们来看一个具体例子,如下图。



 



小李同学每隔十分钟就会问一次一加一的问题,这就是重复,而小胡老师从这个重复的过程中发现了规律,于是他在小李第三次问之前就给出了答案。如果小李同学的智商和记忆力如此稳定,那么小胡老师就可以开始让程序,也就是机器人出场了。这个机器人每隔十分钟就会给小李同学发送二这个消息,这就是重复。重复是很脆弱的,它建立在需求从不变动的情况下。在现实世界中需求总是会变动的,而且在业界,还有一个岗位专门负责修改需求,这个岗位叫做产品经理。

于是当小李同学有了成长,开始问二加二等于几时,我们之前的机器人就不够用了,我们需要做一个专门发送四的机器人。随着小李同学的问题越来越多,我们要做的机器人也越来越多,最后我们终于忍不住了,为了偷懒我们做了一个加法机器人,只要小李同学问的是加法问题,这个机器人都能处理,他会自己从问题中抽取加数和被加数,然后发送结果,他也不再定时发送,而是实时响应问题,这就是重用。



但是重用是没有尽头的,因为明天小李同学可能还会问乘法问题,四则运算问题甚至物理问题,我们也需要根据需求的不断升级,不同的抽象出更高阶的规则,做好了这些每个程序员都能沉淀下来一些基础库,一些工具链用来处理之前没有抽象到的新需求。但是,再重复一遍,好的程序员是很懒惰的,所以他们把自己的代码,也就是前面我们说的机器人放到网络上分享给其他人,还发起了声势浩大又影响深远的开源运动,我们几乎找不到第二个行业能如此开放,如此毫无保留、如此大规模的共享行业的知识与成果。


正是得益于前辈们栽下的参天大树,今天的我们有了大量可以使用的成熟的开源基础库,让我们可以在其基础上更快地构建出更强大的应用程序,这才是真·祖师爷赏饭,所以并不是你拿着键盘开始写代码时才产生的软件思维,而是当你觉得自己工作太多想要分出去的时候,你的软件思维已经萌芽。



那些把工作分给别人的人成为了企业家,把工作分给机器的人成为了程序员,把工作分给其他程序员的人成为了世界首富。但不管你想成为哪种人,不停地进行从重复到重用的思维练习都会让你受益匪浅。


让我们开始练习软件思维吧!



随着软件思维的逐步建立,我们就可以着手去实践,去提升自己的编程水平。学习编程实践的过程中,我们遇到的最大的问题是:在大量资料面前,我们不知道选择什么资料去学习。即使我们使用项目驱动式学习的方法找到了我们的方向,但是同一个路径下,也有很多资料。后续,我们将竭尽所能,帮助大家组织好学习路径。请持续关注公众号的推送哦。


以上为大家介绍了ICT的软件思维,是不是大家都对ICT的思维培养有了一定的了解和兴趣了呢?如果小伙伴想要深入了解,不妨多多学习,下期更精彩!


学校地址:陕西省西安市雁塔区东仪路8号    


Copyright 2017 Xi'an Eurasia University , All Rights Reserved , 陕ICP备13005465-1