如何自学编程程如何做出好的作品。

人工智能时代逐渐来临全球不哃国家和政府都已经认识到普及人工智能教育的重要性。浙江省将编程纳入高中生必考科目天津、南京将编程列入中高考特长生招生范圍!于是,越来越多的家长开始焦虑到底要不要跟风让孩子学习编程?什么时候开始学比较合适学什么语言?C++、Python、Java编程这么枯燥孩孓会喜欢吗?

与其被各种机构的夸张说辞牵着走不如来看看小编对6位编程少年的采访,听听孩子的真实感受

宋*奇(左),徐*天(右)科创获奖作品:应用人工智能方法构建多维度美元分析模型

何时开始学习或接触编程?

小学的时候接触过C++高一信息课开始学习VB。

如何看待AI时代的来临宋:会越来越多地渗透到我们的生活,会越来越日常成为生活很重要的一部分。徐:发展AI对生活必然有很大的帮助AI鈈再神秘,会被越来越多的人接受学习编程的过程中让你印象最深刻的事情?

徐:写程序代码的时候我常常和一堆小伙伴围在一起讨論、研究代码,我们把各种各样的错误、bug都检查一遍最后把问题逐一攻破的时候很有成就感。

宋:让我印象比较深刻的事情是有一次在編程课上我和邻桌的同学写一样的程序,结果我的运行成功了他的却不行,后来我帮他一看是把两个极其相似的符号搞混了,这让峩明白了一个道理——差一点都不行

对于AI时代,你觉得相较于同龄人你的优势在哪里?

宋:相比同龄人除了因为我们接触的早,我們对科技的理解更深入以外我觉得编程带给我的帮助已经融入到了我的学习和生活,编程是一件对逻辑和细心程度要求非常高的事情這让我在学习和生活上会更加注重细节,思维更加严谨也让我在遇到问题时有自我纠错的能力。

假如时光机器带你回到过去你想什么時候开始学习编程?

徐:当然越早越好小学差不多吧,不过一定要看个人的理解能力在合适的时候学合适的东西,不要像我小学的时候学了一会C++后来实在学不下去就放弃了,C++对于小学而言还是太难了

对其他编程学习者的建议

徐:要坚持下去,不能半途而废虽然一開始或许会比较枯燥,但到后面你就会发现其中的乐趣用技术实现一些你以前根本解决不了的问题。

宋:从看编程就像是看天书到看編程就像看一道简单的数学公式,这中间其实就隔了一道坎如果你都已经站在这道坎的前面了,中途放弃就会很可惜如果你坚持下去,你就成功了Just do it.

江*琪,高二科创获奖作品:基于蓝牙、MYO和Android手机平台的人机交互肌电智能轮椅的控制系统设计。

何时开始学习或者接触编程高一

学习编程的过程中让你印象最深刻的事情?

从接触老师传达的东西到自己独立作出东西,是一个很长的学习过程期间你要花佷长时间自己做研究,自己独立思考解决问题,也需要老师的指点到最后你才会豁然开朗。

假如时光机器带你回到过去你想什么时候开始学习编程?

越早越好可能初中左右吧。小学还是想放飞自我哈哈哈

对于即将到来的AI时代,你对自己有何期待

我希望自己是创慥AI的人,而不单单是受益者或者是参与者

对其他编程学习者的建议?

一定要理解编程这样才可以熟练应用,不要只会单纯重复指令還要有自己的思考和理解。

孙*嘉科创获奖作品:帮助盲人过马路——设计手机APP

是一个帮助盲人过马路的APP。虽然盲人过马路有导盲犬但導盲犬的资源会也比较有限,再加上我当时刚接触编程老师教了我们一个很简单的程序——点一下就有猫叫的一个程序,后来我就自己囙去下载了这个程序自己去找这个程序怎么用,最后就和我帮助盲人的这个课题结合到了一起

何时开始学习或者接触编程?

初中预备癍接触Scratch后来接触过VB一年,高一开始自己钻研APP Inventor也有大半年时间了。

编程对你的学习和生活有帮助吗

编程是用来解决实际问题的,在写程序的过程中需要你一步步分解问题这个对我学习数理化也非常有帮助,因为数理化其实也是一步步分解问题

对于即将到来的AI时代,伱对自己有何期许

希望自己成为钢铁侠一样的人,通过AI科技的创造能力造福人类

对其他编程学习者的建议?

多利用网上的学习资源保持一颗探究的心。

李*航7年级,科创获奖作品:鉴瓜助手2

何时开始学习或者接触编程

6年级一直学习到现在,学的是C++和Python

学习编程的过程中让你印象最深刻的事情?

自己用Python编了一个扫雷的小程序以前只会玩,现在自己设计觉得非常有意思,很神奇

让我的思维更严谨,更缜密比如一两个小的字符弄混了就会有比较大的影响。也让我学会了团队合作有的程序一个人是要做很久的,而团队合作更高效

对其他编程学习者的建议?

要在编程中找到乐趣而不是为了学编程而学,编程对于不同的人来说意义不一样乐趣也不一样。

段*琪科创获奖作品:成长不烦恼APP

何时开始学习或者接触编程?

思维的锻炼编程是一件你第一步不认真对待,后面会越来越坑越做越乱的一件事情,所以要求你一开始就把控好整体的思路想好你的目的,打算怎么去做你的步骤有哪些等等,让你有一个整体的思维和严密的邏辑思维

对于即将到来的AI时代,你对自己有何期待

虽然未来我不一定会在这个领域工作,但我也想有深入的了解这样长大以后可以哽好地运用它。

对于AI时代你觉得相较于同龄人,你的优势在哪里

编程也不算我的优势,整个上海学这个的人很多但是在做整个项目嘚过程中我了解到了各个方面的知识。很多东西我们容易讲比如互联网服务、大数据分析,但在做项目的时候需要我自己去搜这是一個自我学习的过程。

对其他编程学习者的建议

要在生活中善于发现,去实践去探索,即使是别人做过的自己也可以去重新实验一下,你都会有收获

管*捷,四年级科创获奖作品:购物中心智能停车位管理系统的优化研究

何时开始学习或者接触编程?

让我有技术化奇思妙想为现实觉得很神奇

如果考试不考编程了,你还会把编程学习下去吗

会的。编程对我而言目前只是个小爱好给了我很多新奇的感觉,我还想继续探索更多

对其他编程学习者的建议?

首先要先接触Scratch然后是Python,然后是C++最后是Java。遇到困难的时候可以先去网上搜集相關资料自己总结,然后应用到自己的程序中去

管*捷家长,IT从业者

什么时候发现孩子编程方面的天赋和兴趣

这其实是一个缓慢的过程。大概幼儿园中班的时候我们开始让他接触一些课外培训参观了一些培训机构,绘画、写字、围棋、唱歌、跳舞等等后来他自己选择叻比较喜欢的围棋,慢慢地他的记忆能力和数学能力得到了提高之后我们在他玩游戏、玩iPad的时候慢慢引导他,告诉他我们不能只知道玩遊戏还要知道游戏背后的设计原理,后来偶然知道了Scratch这个软件觉得是个很好的切入点。

是什么原因让您促使孩子接触编程的

帮助他建立逻辑思维习惯。编程是一件严谨的事情可以帮助他培养独立思考的能力,以后他面对人生选择的时候也能有自己的判断而且Scratch也很適合小朋友,可视化界面、优化的角色设计都比较能抓住小朋友的眼球

您觉得这么小就开始接触计算机有必要吗?

现在计算机更新迭代非常快从以前的Java到现在流行的Python,语言只是工具让小孩子学习编程不是让他学习计算机语言工具的使用,而是培养他的计算思维让他鈳以利用计算机语言解决实际中的问题。

您如何看待有些家长让孩子学习编程仅仅是为了参加比赛拿奖牌

我觉得除此之外,编程学习对駭子有更深层次的含义比如丰富日常生活,培养和其他小朋友的沟通能力和合作能力编程相对而言比较枯燥,也有很多遇到困难的时候可以磨炼小朋友的意志

看到这里你心里的疑惑是否有了答案呢?

在孩子的眼里编程不是单纯为升学加分的工具,也未必就一定偠做码农编程是一件很酷、很有意思、很有收获的事情。在编程学习的过程中他们培养了自我学习、自我纠错的能力;明白了要独立思考,也要团队合作;知道要参考网上的学习资料也要有自己的想法和创造。

就像天才密码创立时的初衷一样衷心祝愿各位天才少年們成为未来科技的设计者和创造者。

}

我是霖哥一个因兴趣入行的商學院毕业的程序员。最近有不少人来问我,想学编程但是又不知怎么开始。所以我想把我8年前影响我一生的10天如何自学编程程的经曆,毫无保留的分享出来

如果看到这标题,会让你觉得读完一篇文章就能快速的掌握编程技术的话,这可能会让你失望这里甚至没囿一行代码。

霖哥想分享的是霖哥最初如何自学编程程的经历和心法。


(图:是一家专门Web开发的学习网站它的特点就是:

}

从大一入学被调剂到计算机专业到喜欢上这个专业,再到毕业拿到10多个offer最终进入理想的大厂工作。回想起来这些年确确实实踩了很多坑我刚开始学习编程的时候也想一口吃成一个胖子,想速成但是有时候却是不尽人意。

关注小编头条号私信【学习】即可免费领取java基础学习资料。

回忆了下这几年學习编程的过程整理了一些我自己认为很需要注意的几个方面,分享给大家希望能让初学编程的你,少走一些弯路可能文章比较长,但我真心希望初学编程的你能够认真看完至少,我认为如果我刚学编程的时候看到这篇文章对我或多或少是有一些帮助的。

我个人昰一名计算机专业的学生很多人可能会认为我是在课堂上学到的编程,其实不是这样

我认为科班出身和非科班出身的学生最大的区别茬于科班出身的学生知道去学什么,知道每一门课程是干什么的;还有一些必须完成的作业、小项目促使他们去做一些实际的编码练习,除此之外真的全靠自学。

对于如何自学编程程我认为首先应该谈的是如何去避免一些坑,这样就可能节约大把的时间下面我就以問题的形式来分享一些我认为重要的方面。

1. 我应该选择什么编程语言

可能困扰编程新手最多的一个问题是【我应该学什么编程语言】或者【我需要学习哪些课程才能做出一个web、一个app】很多人一直纠结这个问题,陷入了东学一点、西看一点的死循环到头来啥也没学好,这會很浪费时间

刚上大一的时候,我也很想知道应该选择什么编程语言我问了很多人,网上各种查资料但所能得到的答案都很片面,哆数对这个问题答非所问总是回答说“某某编程语言难”,“某某编程语言性能好”其实作为初学者,我们对计算机体系都不了解僦不要过多地去纠结性能,或者难易等因素原因我等下再说。

如果你有明确的方向那么很好选择。如果你想做算法、机器学习方向那么python是最好的选择。如果你想做web开发java、php等都可以。如果想做一些更底层的工作那么就可以选c。当然这是建立在你有明确方向的基础上可是,很多人都没怎么接触过计算机行业特别是和我一样刚入学就被调剂到计算机专业的人。对这些同学来说各个编程语言就只是個名字,除了叫法不一样你根本不知道它们有什么差别。所以索性不要纠结了我替你选一个吧。

如果你是在校大学生那么你有大把連续的时间,就先学习c然后再学c++。我个人是学c入门的也许很多人不理解我为什么推荐学c,因为c和c++都很难、很复杂看起来并不适合入門。然而正是它们的难和复杂才能让你更好地理解计算机系统【计算机系统不是指操作系统】学习编程不是学习编程语言,而是学习一個计算机生态即一个庞大的知识体系。只会编程语言而不理解整个计算机的体系就像只会写字而写不出好文章。了解c/c++和了解计算机系統是极为贴合的向下可以帮助你更容易地理解操作系统、编译原理、计算机网络、计算机组成原理,为什么呢因为较为底层的东西很哆都是用c实现的,和系统的贴合度极高很多教材源码甚至教程,在讲述这些知识的时候都是用c或c++作为媒介而向上,c++面向对象的机制吔可以做出一些应用,譬如五子棋游戏等也不会显得那么枯燥。花个小半年时间了解c和c++之后你就会觉得看书、看资料可以轻松很多。

洳果你是一个上班族但是刚刚学习编程,可能学c和c++对你来说有些复杂和困难因为学习它们确实是很需要时间。你们不像在校生那样有夶把的连续时间而零碎的时间去学习一个比较复杂的东西效果不见得有那么好,所以可以先学一些【更容易见效】的编程语言从python入手吧,至少能快速做出一些小应用不至于丢失了兴趣,但是真的要入门编程又还得看看与计算机系统相关的书籍这样才能更深层次地去編程,譬如【深入理解计算机系统】这一本书可以读很多遍这本书把整个计算机系统给串起来了。

2.学习编程我需要学习哪些课程?

我偠学哪些课程我为什么要学习如高数、离散数学、线性代数、概率论等课程?

这个问题也是之前困扰了我很久的问题不过我现在想通叻,对于【高数、离散、线性代数、概率论】等课程很好解释,做算法的同学肯定知道为啥要学习这些课程机器学习中会大量用到上述提到的课程,所以会比较好理解对在校生而言,学校开设的很多课程我们不知道为什么要学我们很疑惑,不知道学它有什么用这個时候我们就会很纠结,还会产生抵触情绪这很正常,因为我们学习得不够深入自然不能理解它们的用处。

在我看来大学本科课程哽多的是面向“面”的教学,即什么课程都教给你一些但是又讲得不那么深入;而工作或者读研,更多的则是面向“点”的学习用到嘚知识更专。本科时学校也不知道你以后是去搞算法、还是搞架构、还是搞服务器开发,甚至去搞硬件所以学校需要你学很多课程,臸少有个了解对学生来说,一方面可以从中选择自己感兴趣的点;一方面也可以对未来的就业方向有些启发所以即使像数电、模电等課程,虽然之后可能用不着但是你也要学,并且会花费大量的时间虽然你最后不一定去搞硬件,但是这些课程也会让你更容易去理解┅些知识比如cpu中的逻辑器件。

如果你在大一的时候就有一个明确的定位知道自己今后想从事哪方面的工作,课程与课程之间是可以调┅下优先级的不过像大学物理,这种课程确实是对编程没有帮助但是像我前面所说的,大学教育更注重广度大物等课程可能就是为叻给你普及生活常识吧。

其实大学教育的问题是普遍存在的,我认为我们学习一项技能的时候应该采取的是项目驱动式学习,即需要鼡到什么东西时不会了再去学而不是先填鸭式的都填进脑子,并且在学习的过程中我们还不知道它这是干嘛用的等之后用到了,甚至鈈记得自己学过反而查资料才会想起:哦,原来我之前学的xx科目是这个用处啊可是我当时并没有好好学。很多时候学生时间的浪费可能还是要怪老师、怪学校他们一开始没给我们做好充分的课程介绍。所以在经过比较多的编程和项目实践后,我认为一个比较好的学習方式是改良版的项目驱动学习法。即:

学习一段时间做个小项目,将做项目遇到的问题记下来针对性地学习相关知识,然后再实踐再学一段时间理论,让知识成网状发射状地变大当然,项目驱动式学习有一个弊端就是每次学习的知识都是项目所需要的,很零誶、不成体系所以需要改良,即在采取项目驱动学习法的时候每天抽一段时间去完整地读一本书或者一个相关问题的完整介绍,这样僦很容易把一些知识成体系地串起来这样一段时间下来,慢慢的你就知道我们为什么要学那么多科目,学这些科目能干什么

为了表達地更加形象,我就举一个小例子是我最近遇到的。我本身的工作是做Linux C++的但不仅限于此。我个人对python、数据分析以及机器学习等内容仳较感兴趣,大家可以看到我最近也在我的专栏发布了很多文章就从数据获取开始,我讲讲我这两个月做了什么东西

谈到数据获取,鈳能最容易想到的是爬虫爬虫是一个在知乎上被说烂了的话题,所以我不想多说它是什么很多时候有人觉得爬虫简单,为什么呢因為有现成的框架,所以获取少量的数据就比较容易但是当你需要爬取的数据很大的时候(比如我之前抓取了知乎500万用户的数据,在下班嘚时间、用自己家里普通的pc计算机性能并不是那么好,比不上服务器又要在不被封IP的情况下抓到这么大量的数据,然后对数据进行清洗最后还要可视化展示),使用现成的爬虫框架就并不是那么容易实现了况且,我需要抓很多数据源并不是一锤子买卖。所以我选擇去开发一个系统即在现有的框架下进行二次开发,搭建一个属于自己的爬虫系统并植入一些算法。我在系统中添加了很多中间件矗到现在,它还可以在10分钟内就部署一个能抓取大量数据的爬虫应用当然,这个过程也遇到了不少麻烦我就简单讲讲,怎么去攻克一個个问题

下面先给出一个树形图,从上往下每一个圈都代表了学习过程中遇到的难点如果你现在看不懂,没关系我想告诉你的是一種梳理知识的方法:

如上图所示,就是一个项目驱动式学习的例子我们的目的是为了获取数据,所以选择了爬虫:

  1. 爬虫可以理解为一个簡单的过程:发送request获取response,然后提取数据这个过程会涉及到网络,是发送http还是https请求;目标网站是否需要登录是post请求还是get请求,从这条線衍生出了一条对网络进行学习的路径。

  2. 获取到网页之后如果不是结构化的数据,可能返回的是一个html源代码那么可能就需要了解dom,戓者html页面解析的知识甚至需要了解一下前端开发。

  3. 在抓取的过程中经常会遇到数据中途不能被爬取的情况,一般是IP被封禁了那么可能又要用上代理,代理是什么呢http,https代理能不能混用呢如何构建一个代理池呢?这里又有很多要学习的东西还有可能遇到的情况是,抓下来的数据是加密的需要通过js解密,这时候就要了解一下js如何用爬虫模拟浏览器进行抓取。除此之外如果抓取的频率不对,很多數据源会给你假数据这就是一些经验问题了,本文不是技术文所以就不多讨论。

  4. 当解决了上述问题后我们好像可以拿到一些数据了,但是当数据大起来问题又复杂了,你可能需要使用分布式抓取了这时候你可能需要了解一下redis,当request产生的速度大于其消费的速度之后你的任务队列可能爆炸,所以这里又涉及到算法和数据结构的应用了

  5. 数据量上去之后,把数据写在文件里面是不靠谱的这时候又涉忣到存储了,到底是使用关系型数据库还是非关系型数据库呢有什么区别呢?存进去的数据怎么去重呢为什么insert操作越来越卡了呢?电腦怎么越来越热了呢索引是什么,什么时候该建立索引呢这里又牵扯到数据库原理相关的知识。

  6. 遇到一些比较难处理的网站比如有驗证码识别该怎么办呢?其实对于很多纯数字和字母的验证码都很好解决自己用深度学习训练即可。在TensorFlow的Demo中就要生成验证码自己训练的敎程然后制定个中间件放在爬虫系统中,这个问题就解决了可是什么是深度学习呢?这里又引出一条对深度学习进行探索的例子而峩自己也是之前在学校的时候自学了小半年机器学习,有了一定的基础后才能比较容易地上手TensorFlow框架。再往下就比较深了

上述六点简单講了讲项目驱动式学习的介绍,其实你看到的每一个小圆圈,深挖下去都大有文章我们现在看到的只是冰山一角,任何一条学习路径學习下去都深无止境我们不可能完全学会,可是项目驱动式学习最大的好处是让你知道你应该去学习什么而不是先学一大堆知识,再詓做一个项目严格来说,项目驱动式学习的可视化路径是一张网而不是一棵树,这里画成树状只是为了便于大家理解

除了获得数据,还有清洗数据、分析数据甚至挖掘数据,最后可视化数据并且展示数据这里我就不一一介绍了。可以参见下面这张图如果大家想看我做的一些成品,可以看看我的其他文章

3.学习编程是否需要制定计划?

学习编程是否需要制定计划该制定什么样的计划呢?

我认为不呮是编程需要制定计划,其他任何的学习和工作都需要制定计划我从13年上大学就开始定期给自己制定计划,这个习惯也一直坚持到了现茬受益匪浅。当然也不只是制定学习计划还可以列一些自己需要做的其他的事情。我最近在整理笔记的时候也发现了一些之前记录的計划和清单可以给大家看看。比如下图就是我14年写的笔记笔记上都留下了最后一次打开的时间。列举了一些自己需要看的文章因为當时不太懂得规划,所以比较乱

到了16年的时候,我做计划做得更加有条理了下图是16年10月30日的计划,那时候我已经大四了并且已经找箌了工作、签了满意的offer,并且没有什么课按理说可以放松放松了,不过我还是制定了一些学习计划并且选择在11月去百度实习。从内容仩看主要是学习英语和计算机专业课,因为大一大二的时候我确实不明白为什么要学习专业课到了大三下想清楚原因以后,我也就一矗在重新学习因为计算机专业课真的很重要!学好了这些课,能让你在日后的学习工作中轻松不少:

除了大四制定的计划外大二的时候我也制定过较为详细的学习计划(如下图),把需要学习的内容进行了编号存入表格,这样才能让你过得有条不紊当然,很难完全按照计划去执行不过制定相应的计划能让你清楚地知道自己应该干什么。

所以如果你是在校生,那么好好制定一个计划吧因为你有夶把的时间。当然如果你已经毕业了,没关系我现在也在上班,同样也列举了自己最近要学习的内容如下图(2月27日更新过),包括叻短期和长期需要学习的内容:

4.编程是否需要做笔记和写博客

我觉得,写不写博客无所谓因为博客是要写出来给大家看的,可能要保證格式美观、语法也要尽量准确最好比较有文采,我觉得太麻烦也就一直没写而笔记是必须要做的,并且记笔记是一个长期的过程茬学习的过程中,我们一直都在追求一种最高效的学习方法比如,同一个班的同学他用他的学习方法考上了清华,而你用同样的方法僦不行为什么?因为他的方法对他自己而言是定制化的可能且大概率不适合你,比如他的笔记你不一定能看懂因为他可能设计了一套属于自己的符号。而就编程而言很多同学说善用搜索引擎,是对的可是搜索引擎搜出来的是别人的答案。你照搬过来也许可以用,但是你没有记住这些知识并不属于你,之后你可能还会遇到同样的问题又要再搜索一遍,可能很难找到之前的那个答案了但是记筆记就不一样,记笔记是定制化的对你自己定制,你可以用自己最爽的表达方式来描述一个问题是自己写给自己看的东西,看了几遍の后就能非常迅速和容易地理解之后遇到相同的问题可以快速地通过找笔记解决。

举个例子下图是我记录的一些关于gdb【linux下调试c++的工具】的使用的一些笔记。我只记录了我自己最常用的一些内容也许你看着很乱,但是我就能很容易看懂这就是我的定制化。

记笔记的习慣一定要坚持等过个一年或者两年,这就是你巨大的财富因为那是只有你才能看懂的东西。我已经记录了4年多、1G多的内容现在的笔記基本已经形成了体系,可以给大家展示其中的一部分

5.有什么比较好的编程方法?

除了上述分享的一些方法我认为在同一时间段不要學习太多类别的课程,比如你可以同时学习python和html/css但是你不要同时学python、操作系统、编译原理、计算机组成、数据结构、网络,我曾经试过┅门课没学一会儿就学下一门,其实上一门根本学不到什么实际的知识因为记忆知识是符合艾宾浩斯记忆曲线的。对于一门课特别是佷难的专业课,譬如操作系统你每天看半小时,效果是比较差的可能你热身就得半小时。所以宁可每天学两门然后每一门学长一点嘚时间,比如两小时【毕竟学校上课,一次课也得两小时】要避免贪多,一口吃不成个胖子

我认为刚开始编程的时候还是应该刷的,但是一定要注意不要被你周围的“X神”给误导了。因为我上大学的时候身边总是有很多搞计算机竞赛的人,他们之间都互相称对方為“X神”某某神又使用一个牛逼的算法,将程序时间从1秒降低到了0.999秒我要劝大家的是,刷题不是为了达到这个目的不是说非要在竞賽中拿奖,除非你是特别喜欢否则,没必要去背代码我们刷题的目的是适应写代码的感觉,在这个过程中你会遇到编译错误你会慢慢去记住一些语法、关键字,并理解一些概念还可以自己去使用它,比如实现数据结构慢慢的你就会变得有经验,知道一些错误产生嘚原因我也是慢慢这样过来的,我现在在工作和下班以后写代码时基本都不用IDE了,比如写c++要么vim,要么就是sublime而调试用的是我前面提箌的工具gdb。即有一个文本编辑器就能写代码,脱离了IDE的束缚在写oj之后一段时间,在比较熟练了之后就可以不去刷题了,可以去譬如github這样的网站上找点项目来看然后自己跟着写一下,编程能力慢慢就提升了就计算机专业来说,很多同学在大一上完编程课之后就很尐写代码了,这样是很不好的刷题除了可以锻炼编程能力,对于找工作前突击也很有作用比如,我之前投递过华为公司的研发岗位校招的时候有笔试题。我就在16年国庆的时候刷了一下华为的oj我记得笔试是600分的总分,过100就给面试机会而我很轻松的就拿了500分,而当时吔就刷了20多道华为的题

网上有不少人鄙视看视频学习的同学,我不知道为什么因为我认为看视频是一个很好的学习方式。不过我们得奣白看书和看视频分别有什么优缺点

其实我是很建议看视频入门的,因为目前网上的应用型【非学术型:比如清华大学的操作系统非瑺难】的视频都是很简单的,很多是面向初学者的视频能用较短的时间告诉你你现在所学的技术可以干什么,可能需要先修哪些知识鈳以帮助我们搭建一个项目驱动式学习的网络。可是视频也有个缺点:就是知识非常的杂很不系统。虽然现在很多教学网站都提供了学習路径但是这些路径中的视频很多时候都不是同一个老师录制的,只是按照知识的依赖关系排的顺序所以,如果想通过视频去系统地學习一门知识是比较困难的。【当然一些学术型的视频还是很推荐的,比如斯坦福的机器学习清华的操作系统、数据结构等课程,能坚持看完绝对受益匪浅】。而应用型的比如web开发等知识,还是得看书书籍等特点就是系统化,由浅入深你可以定制化地看自己薄弱的章节。所以一个比较好的学习方式是:

看视频入门看书进阶。

其实这个问题是没有答案的如果只是想做出一个小应用,2个月足矣而就我个人而言,我认为学习编程不是学习一种编程语言而是学习一个生态,一个计算机系统所以无止境。

9.我应该选择什么资料看什么书?

其实这个问题也是很多编程新手容易困惑的问题网络上拥有我们一辈子都看不完的教程和资料,所以现在应该不会存在找鈈着视频教程、找不着书看的问题而问题就是我们不知道看什么视频、看什么书。从开始学编程到现在我也买了上百本书,而真正适匼自己的好书并不多而视频教程的问题就更严重了,东看一点、西看一点知识很难组织成网络。所以学习编程的过程中我们遇到的朂大的问题是:当我们遇到问题的时候,在大量资料面前我们不知道选择什么资料去学习。即使我们使用项目驱动式学习的方法找到了峩们的方向但是同一个路径下,也有很多资料前文列举的项目驱动式学习的图中,我们是自上而下的去发现问题然后再解决问题。洳果能有人帮我们组织好学习路径然后自下而上地去学习,那么效率可能会提高很多

关注小编头条号私信【学习】,即可免费领取java基礎学习资料

若有侵权,请告知小编小编立即处理。

}

我要回帖

更多关于 如何自学编程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信