微信号:cpp_coder

介绍:最专业的C/C++编程学习和程序员发展的综合平台.提供C/C++、汇编语言等、STL、MFC、QT等等学习、数据结构算法思维分析、各领域项目经验分享、资源下载、招聘和资讯的综合服务.

当文科生遇上编程会是怎么样的情况?

2015-07-09 08:51 CPP技术网

体验更好的排版体验,请“阅读原文”。

文科生为什么要学编程?一个现实问题,那就是工作。文科生的优势在于写作能力与人际沟通能力,如果再懂一些编程知识,在今天的职场上是普遍受欢迎的。从美国到中国,越来越多的互联网企业开始招募懂编程的文科博士、硕士,这些可都是高薪噢!我们实验室的毕业生在BAT(百度、阿里巴巴、腾讯)、微软、新浪等都留下了足迹。
再拔高一点,从全球大趋势来看,英国把2014年设立为“Year of Code”。从2014年9月开始,英国5~16岁的学生都必须学编程。美国总统奥巴马也专门发表演讲,呼吁所有美国人学编程。
当下有本畅销书叫做《你编程还是你被程序控制:数码时代的10条指令》。作者写道:“你是想要指挥技术,还是让我们被技术及那些懂技术的人指挥?如果你选择了前者,你就获得了文明自主殿堂的一席之地;但如果你选择了后者……那可能是你最后一次能自己有权作出的选择了。
当然,还有其他一些更实际的收益。如果做学术或商业研究,懂编程才能自己从网上抓第一手数据;而且可以促进学科间合作。这里有效的共同语言不是中文或英文、而是数学或统计模型和编程语言。
不过,文科生学编程,主要为了训练编程思维方式。什么是编程思维?

第一,你能把你面对的问题“计算化”,也就是用计算机可以理解的语言把问题表述出来。你每天都会面对问题,回家房子太乱,上班面对数据也太乱。为什么你会感觉无从下手?因为你并不知道你要解决的问题是什么。所以首先要明确问题——是垃圾太多需要扔掉,还是物品摆放不合理?垃圾太多应该怎么办,物品摆放不合理又该怎么办。你手头有哪些工具可以用?你期待最后整理成什么样子?明确问题之后,用计算机可以理解的语言把问题表述出来——编程思维就是培养你的这种能力。
其次,这可以培养做事逻辑。初学者最容易犯的重大错误就是事先考虑不周、计划不全,只想到明显的结果而没有穷尽所有的可能性,结果留下隐患,即所谓bug。还有,这样可以培养规范化的习惯。比方说定义方法、变量,哪些字母大写、哪些小写,前后拼写一致,标点准确,格式对齐、缩进,还有句句留注释,等等。
有人问,你纠结这些细枝末节干什么?这样训练下来,我们都成了机器人,还有什么创新能力?事实恰恰相反。魔鬼存在于细节之中。恰恰是这些细枝末节,最容易被忽视,最容易出错。计算机对错误是零容忍度的。而且,规范化是培养这样一种思维:尊重规则,在规则基础上创新。
那么,文科生学编程具体要学什么呢?我们系的博士生5年前也躲着编程走,现在都在学——有些在学习比SPSS更强大的R语言、有的学习适用于文本挖掘的Python语言,也有的学习更专业的Java、C++等语言。这在亚太地区算是领先的,但在欧美大学文科生学编程就不是新鲜事了。专攻哪种语言好呢?我认为只要能熟练地掌握上述任何一种都好。当你系统地掌握了一种语言,你就会发现,各种语言之间的差别不大,肯定比学完英语再学法语德语容易。
最后谈谈怎么学编程。

第一,投入时间。

“一万小时定律”说,每天花4小时专做一件事,每周5天,坚持10年,有了这一万小时,基本上你就可以成为某个领域的熟手。诸如此类的还有“10年法则”等等。如果10年太长,等不及,那你就要增加投入,每天8小时,5年练成。
这些法则定律传达的信息是:要掌握某种知识,必要的甚至大量的时间投入是必不可少的。我在美国从博士生到升大学终身教授的9年间,几乎天天写代码,通常深夜才有时间,一转眼就是窗外鸟鸣,东方已白。时至今日,实验室一批高手,我不需要自己操刀,但同样学习新语言,不然怎么与他们以及遍布全球的合作者沟通?
除此之外,动手写,犯错、改正,再犯错、再改正,这是学编程最重要的过程。
第二,文科生别着急啃那些厚厚的教程,先看教学视频。

第一次没看懂很正常,别着急。 “重复”、“过遍数”是开始学编程的不二法门。如果觉得视频跳跃性太大,可以学习如C++技术网这种完全针对零基础入门程序员培养的网站,因为网站以程序员为中心,必然会更加贴心周到,学习才更加好,而不要自己一个人孤身奋战。
第三,学规范,纠细节,养成好习惯,终身受用。

学外语,尽量不要看词典,而是从上下文猜词义,学到的才是活语言。学编程,恰恰相反,要随时查手册,才能“被训练”出规范。

 
CPP技术网 更多文章 宏、常量、枚举、结构体和共用体对比分析之常量 宏、常量、枚举、结构体和共用体对比分析之结构体 C/C++声明定义初始化和赋值独家剖析深刻理解 mfc的消息机制,多窗口的互动 MFC中的窗口类:C++类与窗口句柄的结合深入浅出分析
猜您喜欢 使用 NodeJS+Express 开发服务端 RxAndroid——针对Android平台扩展的RxJava 《近匠》趣播,手机视频聊天的四维社交 职场加油站 | 作为一个高大上的数据分析师,如何选择合适的公司? 用Swift搭建数据驱动型iOS架构