即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

趣文:编程其实是文科

微信 Python开发者 11℃ 0评论

(点击上方蓝字,快速关注我们)


来源:伯乐在线专栏作者 – 玻璃猫

如有好文章投稿,请点击 → 这里了解详情

编程究竟是文科还是理科?

还用问?编程当然是理科喽!或许很多人会不屑地回答。

然而,情况真的如此吗?

让我们先来看看一个程序员故事,或许里面有着你我的影子。

学习编程的小灰

多年以前,工科出身的小灰打算学习编程

学习编程的头一个月,小灰如鱼得水

学习编程三个月,小灰略有疑惑

求职和初入职场,海量的知识扑面而来

工作若干年,小灰又将面临新的挑战

工作之余,小灰回想起自己编程道路上的得与失,不禁感慨道:

文科还是理科?

若要评判编程是文科还是理科,我们需要首先明确一下文科与理科的各自特征。

文科:以知识和经验总结为主,例如历史学、法学

理科:以计算和逻辑推理为主,例如数学

当然,绝大多数学科都不是纯粹的文科和理科,而是两者均有涉及。其中有些学科更偏重文科,但也具有少量理科成分,例如地理学。

也有部分学科更偏重理科,但具有少量文科成分,例如化学、生物学。

对于这些“混合型”学科,我们往往依照其侧重点,来划分文理科。因而毫无疑问,地理学属于文科,生物学属于理科。

那么,对于“编程”这样一门学科,究竟是文科成分占主导,还是理科成分占主导呢?让我们来做一些具体分析。

编程中的理科部分:

1.基本逻辑

这里的基本逻辑,指的是编程中所涉及的各种基本逻辑元素,比如程序中的循环控制、条件控制逻辑,比如数据库中的SQL查询逻辑,比如多线程的同步异步逻辑。

诚然,逻辑是学习编程的基石,但逻辑绝不会成为一个程序员从初级走向高级的门槛。因为这些逻辑的学习成本真的不高,只要方法得当,一个十二三岁的普通孩子也可以轻松掌握。

2.算法

如果说基本逻辑仅仅是入门的基础,那么算法就是理科编程的真正难点。可是,对于绝大多数人程序员来说,如果不是专门从事算法研究,不是ACM竞赛的参赛者,那么算法对他来说仅仅是一个大致原理的理解,仅仅是一个API的调用。算法很重要,但是相对于其他能力,算法又显得不那么关键。

编程中的文科部分:

1.知识

知识是一个广义的概念。在编程这个领域,知识可以是某种语言规则,比如Java中final类不能被继承;知识也可以是某个底层原理,比如Mysql中Myisam引擎的索引数据文件分离;知识也可以是某种设计原则,比如面向对象的开放封闭原则,比如系统设计的CAP原则。

或许有人会说,编程当中的知识不需要像文科那样死记硬背,最重要的是“理解”。可是,理解与记忆原本就是密不可分的,不去记忆,谈何理解?历史事件需要理解,法律法规也需要理解,但历史学与法学,并未因此而脱离“文科”这一属性。

2.经验总结

如果说编程知识是一条一条清晰的文字,那么编程经验则显得抽象而模糊,很难直接用语言表达。

深厚的编程经验可以让你写出可扩展性更强的代码,可以让你快速定位出线上的bug,也可以让你设计出高可用的系统。知识由书本得来,经验则是在一次次的采坑中逐渐总结和积累获得。可以说,经验的作用还在知识之上。

总结起来,在逻辑、算法、知识、经验四个方面,绝大多数程序员花费几个月的时间掌握了编程的基本逻辑,却需要花费五年甚至更长的时间来学习大量编程知识,总结编程经验。算法虽然学习成本很高,但因为过于“专业化”,而居于次要地位。

由此可见,编程虽然有着一定的理科元素,但更多的特征仍旧偏向文科,足以把整体定位成文科。

如何学好这门文科?

无论编程的真面目是文是理,作为一个程序员,我们都需要热爱自己的职业。算法和设计思想是天马行空的艺术,项目研发则是脚下泥泞坎坷的道路。做好程序员,最重要的是踏实和耐心,希望各位亲们都能一步一个脚印,走出属于自己的路。

关注「程序员的那些事」

每天看 IT 趣图

↓↓

专栏作者简介点击 → 加入专栏作者 )


玻璃猫:互联网公司的码农一枚,喜欢算法和面向对象设计。个人微信号:13522239721 个人订阅号:dreamsee321欢迎一起交流讨论!

打赏支持作者写出更多好文章,谢谢

转载请注明:CodingBlog » 趣文:编程其实是文科

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情
(21)个小伙伴在吐槽
  1. 编程更多是一种艺术活,类似于写作或者绘画,不过如果想登峰造极,就需要使用理性的思维去总结去发展
    CuiHongsh2017-02-21 12:36 回复
  2. 必须是文科啊,每天起那么多变量名,太考验词汇量了!
    bingo2017-02-21 12:41 回复
  3. 求不瞎说,吓的我把写了半天的代码全删了
    陈止风2017-02-21 13:21 回复
  4. 错了,编程是工科。
     胖鱼Joe2017-02-21 13:26 回复
  5. 明明是工科/呲牙
    2017-02-21 13:28 回复
  6. 工科
    echo2017-02-21 13:54 回复
  7. 用文理科的概念去定义编程本身就有问题。
    田川2017-02-21 14:25 回复
  8. 世界上不只有文科、理科,还有工科...
    好名字2017-02-21 14:29 回复
  9. 如果从知识和经验的积累来定义文科的话,恐怕绝大多数工科都可以看作是文科了吧!
    叫做狗狗的猫咪2017-02-22 00:36 回复
  10. 编程序是文科,除bug是理科
    刘灿-智慧涟源2017-02-22 04:24 回复
  11. 肯定是工科啦。只不过要求程序员时而文艺点,时而严谨点,时而科学点......总之就是看起来什么都像一点,但又不是很像。
    孤灯残云2017-02-22 05:28 回复
  12. 二十几岁的你未必比十三岁时的你聪明和精力充沛
    一去二三里2017-02-22 06:12 回复
  13. 明显是文科,写代码就像写文章啊。
    露笑容2017-02-22 06:28 回复
  14. 农科
    JAC_byz2017-02-22 07:12 回复
  15. 对呀,说到底是沟通、与机器沟通的问题,所以是一个文科~~~/憨笑
    2017-02-22 07:28 回复
  16. 坦白說我覺得算法很重要。不太能理解這篇文章的邏輯。如果不明白算法在做什麼,你根本都不知道自己的數據該用什麼算法合適,做出來對不對
    捧花使者。2017-02-22 09:40 回复
  17. 理工科
    机器之泪2017-02-22 11:36 回复
  18. 文科靠感觉,编程又不是靠感觉来编程,虽然要记的东西很多,但是其中的骨架是理科的!
    2017-02-22 14:49 回复
  19. 有理科也有工科吧,理科那块叫「计算机科学」,工科那块叫「软件工程」
    蚂浓2017-02-23 04:35 回复
  20. 讲了一堆,结果就是你需要好好学习/晕
    云之彼端,约定之所2017-02-25 12:57 回复
  21. 难道不是医科吗/微笑
    Chill June2017-02-28 13:26 回复