当前位置:C++技术网 > 资讯 > 关于新手刚接触github上的开源代码的疑惑?

关于新手刚接触github上的开源代码的疑惑?

更新时间:2017-11-14 13:35:54浏览次数:1+次

该软件是千牛主播tblive,项目源码在https://github.com/alibaba/tblive上,这种开源代码是否适合新手学习,如果适合该如何入手?

C++技术网会员解答:

    您好,感谢您对C++技术网的支持与信任。

    关于新手刚接触github上的开源代码的疑惑?这个要看新手是哪一种新手了。我大概分一下类:

1.语法级新手

    语法级新手,意思是刚学一门语言,对于语言的语法还不太熟。那么此时的新手,就什么也不要想,只需要看讲语法的书,做书上的编程练习题和例题。然后写一些简单的语法,重在练习语法,要把语法用熟。这是最基础的一关,需要扎实的学习。如果觉得可能比较枯燥,那么可以自己找点应用案例来写代码,还是为了练习语法的运用,在实际场景中使用则可以激发学习的欲望和兴趣。在解决了问题之后,得到成就感,然后就会越来越有兴趣了。

2.语言级新手

    语言级新手,指的是对于语言,基本上是没有问题的。掌握了一门语言,并不能表示就学会了编程。很多人以为,学会了C/C++就以为是程序员了。其实不然。此时的新手,缺乏的是解决问题的能力。在语法级新手阶段,是可以写点程序解决一点简单的问题。比如计算器、数学公式等等。千万不要觉得这些东西简单就不屑一顾。如果语法级新手不做这些练习,那么在语言级还是需要练习的。如果不练习,后果就是,在工作中,很多人家一下就想出来的思路,你都不知道他们是怎么想出来的。很多简单的技巧,你都没有用过。其实对于工作,还是白纸一张。很多人就会疑问,为什么我学好了语言,还是不知道怎么做开发。问题就在这里。

    当过了语法级新手,就进阶到语言级新手。此时的新手,具备完整的语法知识,而不是局部的语法点的应用。也就是对语法的综合运用,可以解决更多的问题。当然,还有很多语言书上简单带过的内容,但是在实际使用中又很常用的。比如文件操作。在语言考试里,基本不考文件操作,但是实际开发是必不可少的。

    那么此时你有了扎实的语法基础,然后可以自己查相关的资料就可以学会文件操作。否则,你就无从下手。当然,这个和练习编程有很大的关系。如果连基本代码都写不好,背语法是没有一点用处的。而在自己学习新函数使用的时候,往往要通过写代码验证通过才表明学会了。这就需要动手写代码。之前练习过基本的语法编程,那么此时就轻松了。

    语言级新手的挑战在于,对于整个语言的语法的综合运用。语法级可能只是运用了数组就可以了。然而语言级就需要用数组、指针、文件等。如果基础不扎实,这些就很难整合在一起,甚至无从下手。那么此级的新手,就需要针对语言整个语法的综合练习。练习的对象依然是实际的程序,比如写更复杂的版本,相对于语法级的版本。以前写的计算器,可能就只有加减乘除,那么现在就可以试试用函数指针的形式,支持更多的计算,而代码还很精简。然后将结果存入文件,作为计算的记录。下次再打开计算器时,可以读取历史记录。而记录都可以以数组的形式存储,而且要支持无限多的数组存储。那么此时还需要内存相关的函数。当功能完善了之后,这些语法全部都会用上,就不仅仅只是循环判断赋值这些简单的操作了。

    这部分的练习是在工作前需要完成的。一方面是熟悉了各种开发中用到的函数,开发也就是实际的功能开发,所以此时的练习是非常有用的。此时不需要看任何其他人的代码,自己去钻研,自己去想,自己去找思路。你会发现,通过一段时间的练习,你的思路会变得更加开阔和灵活。可以自己创新出一种思路。如果此时就开始各种模仿,很可能很多思路就埋没了,谁说得准你不是一个天才呢?

3.经验级新手

    过了前两级,那么就是有基本的开发能力了。然而在实际的开发中,虽然可以应付一些,但是还是不够的。这一阶段算是开始工作到工作一两年的状态。不要以为工作一两年就了不起,如果不努力,十年如一日。因为工作中接触的有大量的自己不知道的领域和技术,当然还有各种开发经验套路。你自然很多都不知道。此时你就需要多学习,多请教别人。请教的内容绝对不能是语法类的,否则只能说明你水平太菜。而且语法类的问题,别人一般懒得回答你。你要请教的是经验类的问题。一个问题一般是如何解决的,是思路型的问题。这叫做取经。真的是取经哦,即经验,而不是取法,即请教语法。

    此时需要多看看别人的源码,多学习自己负责的工作相关的代码,学习代码里的技巧,凡是那些你没有用过的,觉得巧妙的,觉得方便的,都要学习。然后工作的内容毕竟是有限的,所以你要继续扩展,就可以看开源代码了。当然,此时也是需要讲究的。不是所有代码都要看。你此阶段只是需要掌握编程技巧。像那种大而全的项目,暂时你还没有能力消化,而是需要注重基础经验的学习。所以可以找一些小的项目案例,看看人家如何实现功能,思路是如何的。如果是你,你如何去做。

    当然,更重要的,是此阶段你需要写很多的小软件。可以是实用的,也可以是解决某个复杂问题的。反正要结合实际的使用场景,让你做的小软件更像是正式的产品,而不是一个demo。甚至你可以对它持续的更新。需要记住的是,你需要大量使用的不是你用烂的技术,而是没有用过和用的不熟的技术。这样你的技术才会不断的扩展加深。反复用一个技术,你就要优化,提升,变得更方便,更强大,而不要机械式的复制过去使用。

4.项目级新手

    项目级的新手,很多。这类新手是写小软件还行了,但是写成一个大项目就不行了。此时需要丰富的开发经验,而不只是简单语法运用。一些小经验也不够用。所以这是现在新手最多的级别。当然很多新手前面没有过关,就强行到了这个级别。所以其实那感觉,你懂的。写了一个大软件,结果语法还很低级。不用笑话什么,这个和现实的教育以及工作太相关了。可以说,大部分老师都不一定能够总结我这些话来告诉学生。有明显的发展的过程,才能针对性的培养学生。而不是说靠有些学生自己悟性高然后自己突变了一样。所有的人都可以学好,每一个人的长处都不一样,这么多阶段,只是有的人卡在了一些阶段,连老师也不知道。只能说是教的人水平不行,自己都没有整清楚一个学习阶段的发展。

    能到这个阶段的人,说是新手,一点都没有错。不要觉得自己能独立写几个项目就很了不起。你只是没有见过比你优秀的人。你所掌握的,在广大的开发者里面,真的不值得一提。所以还需要继续学习。所以此时你需要大量的练习,在实践中总结经验,在总结中优化你的开发思路,优化代码。那么设计模式就是你需要学习的东西了。而在此前的阶段,看设计模式有点为时过早,效果不好。设计模式是前辈们的思想精华。是通过大量项目开发不断积累出来的精髓。在项目级新手这一级,就需要学习人家的优秀的经验,然后要动手实现的了,要理解的足够深刻。然后自己可以从基本的模式中组合使用,能够衍生出更多的模式,适合实际的问题。

    当然你并不是一定需要学习设计模式,如果你足够聪明,很多模式你也想的出来,然后自己就用上了。别人能想到,你也想到了,你是聪明的。一般学习别人的经验,会让你成长的更快,站在巨人的肩膀上,可以飞的更高。

5.框架级新手

    对项目的开发都很熟悉了,对于绝大多数人,都已经可以成为高手,甚至被成为大神。但是,绝对不是这样的。即使是这样,我们依然要继续学习。走入框架级。进入这一级别,你仍然是需要大量学习的新手。你对于框架的理解,对于框架的应用,对于框架的设计,以及框架解决的问题等都要做深入的思考。站的层次要足够高,才看的足够远。学习的对象就是一些已经存在的优秀的框架,先吸收人家的精华,然后消化,然后大量思考,针对自己的领域和问题,开发出更适合的框架。

    我们说的走架构师的过程,必须过框架级新手阶段。不要去空谈理论。你可以学习很多框架,但是你写不出来,没有卵用。谁都可以想出框架模型来,但是能否实现,是否好用,是否健壮,都需要实践去验证。如果你设计的框架,自己都开发不出来,那别人也不容易开发出来。毕竟自己最熟悉每一个细节。因为很可能在实现的过程中,会发现各种问题,然后很多问题最后发现是设计缺陷,也就是框架不行。所以导致扩展不行,支持的功能有限。最后框架就死了。

    回到问题,这个软件是千牛主播项目,一个2.0版本的项目。如果你想去研究,至少也得是项目级的新手。当然,如果你只是想研究里面的几句代码,那请便。但是那样的话,还不如看看简单一些的程序呢?一个框架里会有很多与框架相关的东西,很容易让你云里雾里。如果此时去研究框架,但是自己的水平不够,很浪费时间。

    还是那句话,在合适的时间做合适的事,学习合适的内容。不急不躁,大神之路,需要冷静。