学编程到底难不难?看完这一篇再无疑虑!

短文涨姿势,看了不白看,不关注等啥?
本人作为一名软件工程师和培训师,曾经被很多人问到过“编程到底难不难学?”“我作为一名非计算机专业的学生,能不能学会编程?”“我能不能通过自学编程找到一份程序员的工作?”这样的问题。毫不夸张的说,这样的问题在我的职业生涯当中被问过不下100次。我深深的感觉到,很多学员对这个问题确实是很关心的。在网上搜索,可以看到类似问题的答案五花八门,我觉得有必要针对这个问题写一篇文章专门来阐述一下我的个人观点。
我这篇文章重点阐述4个问题:
一、非计算机专业的学生能不能学会编程
二、学编程需要什么基础
三、报班学还是自学
四、学习要避免哪些错误想法

一、非计算机专业的学生能不能学会编程?

我的观点非常明确:只要你想学,肯定能学会!我在培训学员的过程中,遇到过很多非计算机专业的学生通过学习转型为软件工程师拿到高薪的例子。可能有人会说,那都是别人成功的例子,放到我身上未必可以。而我认为:只要你的智商能够达到正常人水平,你肯定也能学会!为了说服你,那么我们来做个小实验。
我们找一段英文文章,不用太长,300个单词左右就可以,然后随意用一款翻译软件,或者是从网上找一个在线翻译的服务,把英文文章粘贴进去进行翻译操作。你会发现,通过计算机翻译出来的文章可以说是“狗屁不通”!这说明什么?其实说明至少目前来看,计算机对我们人类的语言理解程度极低!那么我们再来思考一个问题:计算机能不能理解编程语言呢?答案是肯定的:能!那么,计算机能够准确的理解编程语言,但不能理解我们人类的语言,说明了什么?说明我们人类的语言远比编程语言要难!而我们可以反问自己:我们既然能够掌握很难的人类语言,为什么不能掌握相对简单的编程语言呢?所以我的结论非常肯定:只要智商达到正常人的水平,谁都可以学会编程!区别只是有的人学的快一点,有的人学的慢一点,但经过一定时间的训练,最终都能掌握这项技能。
有人表示不服,会说:我曾经学习过编程,我认为编程语言比人类语言更难!你凭一个小小的实验就能证明人类语言比编程语言更难,岂不是很荒唐?我们可以来对比一下两种语言的难易程度。人类语言所表达的不仅仅是“我们想干什么”,还包括我们的思想和感情,比如喜怒哀乐这些情绪,并且,同样的一句话,放在不同的背景下,所表达的意思也不尽相同。比如说,你考试得了满分,有人对你说:“你太棒啦!”这显然是在夸奖你。但是,如果你把一件非常简单的事情办砸了,有人对你说:“你太棒啦!”这显然是在讽刺挖苦你。同样的一句话放在不同的环境中,其意义也大不相同。
我们再来对比一下编程语言:编程语言根本没有感情因素在里面,也不涉及到什么“一语双关”这样的语言技巧。编程语言的功能只是用来描述“我们想让计算机干什么”。说的更直白一点,编程语言其实就是各种指令的集合。我们只需要把这些指令正确的组合在一起,计算机就会乖乖的按照我们的指令给我们办事,你也完全不必要担心计算机会把我们的意思理解错了。当然,想要准确的掌握编程语言,是需要经过一定时间的训练的。
从专业角度来讲,目前非常火的“人工智能”技术领域,有一个非常热门的探索方向就是计算机对人类语言的识别,称之为“自然语言处理”,简称NLP。这是在最近十多年才开始被各国专家大力研究的一个高难度课题,并且研究才刚刚取得初步成果。而让计算机识别编程语言,早在四五十年前就已经实现了,并且已经做的非常完美,这足可以证明人类语言远远比编程语言更难。
说到这里,可能有人会问:“为什么我总觉得学编程比学人类语言更难?”问题出在哪里呢?是你的心态发生了变化!想想你当初学说话是什么样的心态?用一句俗语概括就是“无知者无畏!”你当初学说话的时候,是在1-2岁左右,你根本不担心能不能学会,你只管大胆的表达,你不怕别人笑话你吐字不清,你不怕别人笑话你词不达意...总之,你当时不懂得惧怕,你只是努力的表达你心里想说的话。而现在呢?你害怕学不会,害怕投入了大量时间和精力却无所收获。你顾虑太多,瞻前顾后,失去了那种“无所畏惧”的精神,从而导致你遇到点困难就退缩了!因此我建议你,想学就大胆的尝试,遇到困难勇往直前,一遍学不会再来一遍!经过一段时间的努力,你肯定能掌握一门编程语言。

二、学编程需要什么基础

弄清楚为“什么非计算机专业的学生也能够学会编程”这个问题之后,很多人都要问:如果我现在开始学习编程,需要哪些基础知识?网上有很多人在回答这个问题的时候,提到要学习计算机基本原理、计算机网络基础知识、二进制计数法等相关知识。我个人认为,只要有高中学历作为基础,就可以开始学习编程,至于网上提到的那些基础知识,可以在学习过程中慢慢补足。
为什么要强调高中学历作为基础呢?我个人认为:学习编程需要一定的逻辑思维能力,还需要一定的数学和英语的底子,而高中学历者所具备的思维能力和掌握的知识,就已经具备了学习编程的基本条件。只要具备了这个基本条件,就完全可以开始学习编程了。至于网上有人提到的“计算机基本原理、计算机网络基础知识、二进制计数法”这些基础知识,其实也可以看作编程技能的一部分,等需要用到这些知识的时候,有针对性的补习一下这部分内容也为时不晚。

三、报班学还是自学

关于怎样学习编程,其实无外乎有两种选择:1、报培训班2、自学。我个人建议在有时间又有钱的基础上尽量选择报培训班学习。为了避免做广告的嫌疑,我在这里不提任何一个培训班的名称,只是简单的说说为什么报培训学习效果更好。
首先,培训班一般都有成熟、明确学习路线,这样你不用在学哪些课程上花太多的时间进行筛选。其次,培训班有专门的任课老师教学,有问题能及时问老师,这样也能减少你搜索问题答案的时间。第三,舍得花钱报培训班的学生往往都是真心实意的想学编程,所以同学们相聚在一个班级里通常都有一种比较好的学习气氛,大家在一起有问题也能互相讨论,你会感觉到“不是一个人在战斗”,这样的学习氛围会让你在遇到困难的情况下坚持下去,同时,同一群人一起学习也能扩大你视野,你通过与同学的交流能学习到一些你所不知道的技能和知识点。第四,在培训班多认识一些人,积累一些人脉关系也有利于将来在职场互相帮助,万一当年你所在培训班的某个同入职了一家不错的企业,可能还会把你也推荐给这家公司,要知道:公司内部员工的推荐比自己从网上投简历能获得更大的面试机会。
当然了,培训班也不是白上的,毕竟需要金钱和大块的学习时间。如果实在没有条件报班学习,也可以选择自学。那么应该如何自学呢?我的建议是:前期以看视频为主看书为辅,后期正相反,以看书为主看视频为辅。为什么是这样的思路呢?前期建议大家以看视频为主,是因为一般视频课程讲解的比较浅显易懂,我们很快就能入门和上手,容易产生成就感,从而能让我们更好的坚持下来。反过来,而一开始就买一本厚厚的专业书开始啃,一则是容易让我们感觉到学习压力很大,二则是有些专业性的术语会让初学者难以理解,导致学一段时间就想放弃。
当学到自我感觉已经入门的水平,可以选择以看书为主,以看视频作为辅助。这是因为已经入门的情况下,我们应该提高学习效率,而书本上对理论知识的讲述往往更加精炼,不会参杂题外话,单纯的讲述知识点,所以看书学习效率更高。
另外,如果学到了一定程度,就要动手做一个阶段性项目。比如说:学了Java的JDBC以后,就可以做小的信息管理系统,实现对表格数据的增删改查。这种练手用的阶段性小项目,还是建议大家跟着视频去做,成功率更高。无论是报班学习还是自学,坚持是最主要的。很多人往往是开头几天兴致高涨,甚至晚上也加班加点,但坚持不了几天,就松懈了,这样肯定不能学有所成。
另外,对于初学者而言,那些“上课认真听讲、做好笔记,下课勤练习,及时复习”之类的话就不多说了,那是你学习态度的体现。在这里分享一条可操作性极强的学习技巧,那就是“加注释”!具体做法是:在照着例子敲完一段程序,并且能正确运行的情况下,给代码添加注释。注释加的越详细越好,这么做看起来似乎是有点多此一举,但其实这种做法会在不知不觉中提高你阅读程序的能力。因为你所添加的注释代表着你对程序的理解,所以加注释会迫使你更认真的阅读和思考程序,坚持这么做一段时间之后,你会发现,你阅读程序的能力会有显著提高!

四、学习要避免哪些错误想法

在学习编程的过程中,任何人都难免走入一些误区。下面就来说说学习过程中的一些典型误区,以及如何避免走入到这些误区当中。
首先,我认为最典型的一个错误想法就是“项目结束就算完成任务”误区。我们在学习过程中,为了增强实战能力,肯定会做一些软件项目。当项目完成之后,谁都会有一些成就感,这是很正常的。但是,很多人错误的以为:项目能够成功运行了,自己的任务就算完成了。其实不然,多数人在做项目的过程中,为了实现某个功能,上网查询了大量资料,然后按照网上所说的方法一步步实现了这个功能。但是,为什么要按这样的步骤去实现?其中的原理是什么?有没有更优化的解决方案?对于这些更深层次的问题没有自己的思考,只是知道项目可以运行了。因此,如果真的想实实在在的提高自己的水平,就应该在完成项目之后,对项目中所涉及到的知识点进行一番仔细的研究和梳理,尽量做到对整个项目的每个细节都了如指掌。殊不知,很多成功的企业,在做完一个项目之后(不仅仅限于软件项目)都会专门对这个项目进行“复盘”,回顾项目中的每一个环节,总结成败得失。那么作为一个学习编程的学员,更应该如此。
第二个典型错误想法就是“不注重底层知识”。很多人在学习过程中,都追求使用最先进的工具,包括一些第三方框架,而忽略了对底层知识的研究。追求好的工具和框架这本身并没有错,毕竟这些工具和框架能够大幅度提高开发效率。但是,永远都不能忽略对底层知识、基本算法的研究。如果只是单纯的追求使用好的工具和框架,不注重底层知识和算法,无异于一个足球运动员只追求好的运动装备而忽略了对球技的练习。久而久之,你会感觉到很疲惫也很茫然,因为新的工具和框架层出不穷,其更新速度也堪称日新月异。但如果你的基本功非常扎实,对软件底层原理理解非常透彻,你对那些层出不穷的框架和工具就不会有那种“学不完”的压力,甚至有一种拿来就能用的感觉。
第三个典型的错误想法就是“希望一劳永逸”。很多人把学习看作是一种压力和负担,这也不难理解,毕竟学习总比看电影、听音乐、吃美食要累。如果你开始学习编程之前抱的想法就是“学习到一定程度,有能力拿到自己期望的薪水之后就再也不用学习了”,那我建议你干脆不要学编程,因为现在无论是哪个行业,技术、思维方式的更新都非常快。一旦停滞不前,肯定会被时代和行业所淘汰,软件行业在这一点上体现的尤为突出。千万不要觉得从培训班毕业,找到了一份不错的工作就是你奋斗的终点,其实,这只是你一个新的开始!

以上仅是我个人的一点浅见,希望本文对想学习编程的同学有所帮助。

如想系统学习Java编程,可以点击链接https://edu.51cto.com/lecturer/2256836.html观看我在本站的视频课程,有问题也可以加入我的QQ群291839907一起讨论!

猜你喜欢

转载自blog.51cto.com/2266836/2463418