首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

学计算机就会个编程?太low了

由于非计算机专业科班出身,自己学习计算机科学是从专业需要出发,学习编程,进一步学习数据结构和算法,再去了解计算机原理和系统架构,和计算机专业的课程路径正好倒过来。

编程

入门一门编程语言是非常容易的,特别是像Python、JavaScript等脚本语言,很快就能上手并独立解决实际问题。自己在大学时大概用了一两个月熟悉了VB(Visual Basic),并开发了船舶配积载的计算软件,帮助完成专业作业。现在的编程软件越来越强大,提供丰富的工具包,网上还能找到许多可复用的代码资源。因此,会编程算不上什么“神技”,只是一项基本技术。遗憾的是,现在很多计算机科班出来的学生,也没掌握好这门技术。

学会了编程,帮助我从一些繁复的任务中解脱出来,避免简单重复劳动,用代码与计算机沟通的感觉也很好。但是,人总要成长,不能老停留在舒适区。学会了编程,写个留言板、控制器、统计排序之类的小模块、小程序还可以,开发一个大系统就力不从心了。这就需要进一步学习数据结构和算法。

数据结构和算法

编程语言是程序员的招式,数据结构和算法就相当于内功。有个例子说,编程好比是开车,数据结构和算法是汽车内部的变速箱。一个开车的人不懂变速箱的原理也是能开车的,一个不懂数据结构和算法的人也能编程。但是,如果一个开车的人懂变速箱的原理,比如降低速度来获得更大的牵引力,或者通过降低牵引力来获得更快的行驶速度。那么爬坡时使用1档,便可以获得更大的牵引力;下坡时也可以使用低档限制车的行驶速度。

回到编程,比如检索功能,用什么样的算法来查找,如何建立索引,选择什么数据结构来存储,如果不懂数据结构和算法的,可能随便选择一种方法也能完成功能,但是后期随着信息数据量的增多,不同的数据结构和算法在不同量级的数据下运算效率差异巨大,随便选择的肯定会存在性能问题,而一个懂数据结构和算法的人,在实际编程中就会选择适当的方式方法来解决相应的问题,极大地提高程序性能。

掌握了数据结构和算法,就掌握了盖房子的原理,可以成为一名合格的建筑师了。但是,做任何事都会受到客观环境和资源的局限,盖房子也要做预算,这就需要学习计算机与网络基础知识,学习系统架构。

计算机、网络和系统架构

任何计算机、网络的资源都是有限的,要编写一个高效的程序,就需要了解计算机能够提供多少资源,如何优化调度,如何与网络环境相匹配。

架构,是一切系统的基础和核心。随着技术发展,信息系统的规模越来越大,复杂程度越来越高,系统的结构越来越重要。对于大规模复杂系统来说,总体架构的设计比起对计算的算法和数据结构的选择更重要。选择合理的系统架构,光了解计算机网络原理,光学习理论知识是不够的,还要熟悉业务模式,对所处行业有相当的经验,甚至还需要管理和艺术方面的知识和能力。

例如当前火热的微服务架构,似乎人人都推崇不已,但也并非绝对理想的模式。分布式的集成性,数据分散治理的一致性,开发测试运维的复杂性,都需要结合组织架构、业务模式等审慎权衡。

勿在浮沙筑高台

计算机是一个入门容易精通困难的专业。即便进行了系统性的学习,能否遇到一个好的团队讨论、协作,能否有合适的项目练习、实践,能否用数字化思维分析、解决问题,都会影响最后的结果。信息爆炸时代,各种新概念层出不穷。吾生也有涯,而知也无涯,不能被动接受信息。要克服焦虑与浮躁,打好基础,了解知识的背景和相关性,主动选择和过滤信息,把所学的知识应用好,提高职业技能,解决问题才是王道。

勿在浮沙筑高台

lzl727@20180331

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180331G1HFRG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券