hello大家好,今天来给您讲解有关从零开始学习机器人编程的相关知识,希望可以帮助到您,解决大家的一些困惑,下面一起来看看吧!

机器人编程是一个迅速发展的领域,它将我们带入了一个充满机遇和挑战的未来。对于那些对技术充满好奇心和激情的人来说,学习机器人编程是一个非常有意义的选择。

了解机器人编程的基础知识是必不可少的。了解电子和计算机科学的基本原理,学习编程语言如Python或C++,了解传感器和执行器的工作原理,这些都是成为一名合格机器人程序员所必需的基础知识。

深入学习机器人操作系统(ROS)。ROS是一款开源的机器人软件平台,它提供了许多工具和库,使得开发机器人应用程序变得更加简单。学习ROS可以帮助我们理解机器人的底层架构,并掌握如何使用ROS编写和调试机器人程序。

通过实践来强化学习是非常重要的。购买一台机器人套件,进行实际的搭建和编程实验,可以提升我们的技能和知识。这样做不仅让我们更加熟悉机器人的各种部件和组件,还可以让我们在解决实际问题时锻炼自己的创造力和解决问题的能力。

除了以上的学习方法,参加机器人编程相关的讲座、研讨会和培训课程也是很有帮助的。这些活动可以与其他机器人程序员交流经验和知识,了解最新的技术和发展趋势。它们也提供了一个实践应用自己所学知识的机会。

保持学习的热情和持续投入也是非常重要的。机器人编程是一个不断进步和演变的领域,只有不断学习和探索,才能跟上时代的步伐。

从零开始学习机器人编程需要掌握基础知识,深入学习机器人操作系统,进行实践和经验积累,参加相关活动,并保持持续学习的热情。通过这些方法,我们可以成为一名合格的机器人程序员,并为未来的科技发展做出贡献。

从零开始学习机器人编程

第一、先到一些网络上看一些文字记录及视频,通过视频学习工业机器人的使用。第二、再找一个培训机构比如现在社会上很多的工业机器人培训的机构,报一个班,然后按照他们的学习套路学习,快毕业以后会有相关工作推荐。第三.如果第2点觉得投入过大,可以找相关的自动化公司,特别是那种系统集成企业(就是某些代理某个品牌的企业),去这些地方实习,或者找相关的简单工作,从头开始,他们一般有一套完整的培训体系,可以学到的东西比较多,但是时间上可能也会比较长,大约半年以上。如果是学生的话,建议在实验室多动手操作,不要只完成书上的内容,还要多想想如果出现其他内容怎么处理?如何解决,你学习的会比较快。

如果学习了工业机器人,会不会好找工作?

学习这个工业机器人,很好找工作,前提条件为工作区域仅限长三角,珠三角,京津冀等地区。其他内陆地区,这个行业暂时没有那么细分,主要是被电控工程师兼任了。一般一个电控会学习一些工业机器人的知识,内陆地区的企业没有设置这个岗位,任务都被电控做了。

.在上述三个地区,这个行业比较成熟,可以去到上游机器人厂商,如ABB/YAMAHA/EPSON/KUKA/安川等,也可以去中游机器人代理商,同样去到下游设备商,这三者中需求量最大的应该是中游,待遇最好的是上游,下游设备商,一般小厂没有这个岗位,大厂有专门的岗位,能力要求比较高,也可以获得比较好的待遇,不过辛苦和压力是肯定的。 如果是入门的,也建议先去中游,做几年再往上游或者下游扩展。中游比较好进,培训也比较齐全,但待遇可能没那么好。进入方式可以从学校校招,也可以通过一些合适的培训机构引进,现在也一些培训机构开设了机器人课程,价格还不菲大概2万上下吧,一般三个月左右,进去的时候可能会告诉你,包推荐工作或者学出来会拿到多高的薪酬云云,这个时候需要清醒大脑,不要抱那么大的期望,一心一意学习,学出来以后去往真正实践,你才发现差一大截。真正的学习,还是得项目中实践。

从零开始学习编程机器人

对于工科领域来说,脱离实践的学习都是肤浅的,对于控制这种强调经验的技术更是如此。如果去问一个程序员怎么学习一块技术,他必然让你去多编程。机器人领域也是。如果想把基本功打扎实,那么实践更是必不可少了。对于普通学生入门来说 一款合适的机器人平台 + 入门级的控制算法进行试验。同时深入地学习相应地理论知识。对于一个有控制基础,需要现学现用的工作者来说,啃一本诸如《现代控制工程》的书籍,在工作者演练,下面的平台内容直接略过。关于平台的选择和相应的学习教程,我放在防止大图分散了重点。先结合机器人来说一下控制。对于设计任何一个控制系统来说,需要了解自己的输入、输出、控制元件,和算法。在一个简易的机器人系统里,分别对应的原件是:

输入 --- 传感器 (声呐,红外,摄像头,陀螺仪,加速度计,罗盘)

控制元件 --- 电机

控制算法 --- 控制板 (小到单片机,大到微机)

输出 --- 你的控制目标 (比如机器人的路径跟踪)对这四方面都有了解之后,才能基本对机器人的控制有一个较为感性的认识。这是入门的基础。如果你对输入和输出做一个测量,比如用电机将某个轮子的转速从10加速到100,把这个测量勾画出来,那么这一个响应曲线。如何将电机准确快速地从10加速到100,这就需要一个简易的反馈控制器。上面所说的各个传感器元件,都有廉价版可以购买学习,但随之引入的问题就是他们不精确,比如有噪声。消除这个噪声,你就需要在你的控制系统中引入更多的控制单元来消除这个噪声,比如加入滤波单元。上面说这么多,只是想表达,理论和算法都是有应用背景的,但学习一些暂时无法应用的算法也并不助于入门,甚至可能走偏门,觉得越复杂越好。所有的工程应用者都会说某某算法非常好,但是经典还是PID。倘若不亲手设计一个PID系统,恐怕真的领略不到它的魅力。我大学本科的控制课程包含了自动控制理论和现代控制理论,但是直到我设计一个四旋翼无人机的时候,才真正建立了我自己对机器人控制的理解。推荐的那本《现代控制工程》是一本非常经典的专业书籍,需要理论知识,再进行详细的学习。我的建议是先玩,玩到需要时,认真学习这部分理论。-----------------------------------------------------------------------------------------------------

推荐一些机器人平台。核心都涉及到运动控制。基于arduino的机器人平台是最大众的平台了,这是一个开源社区,很多关于机器人的简易设计和控制算法实现都能在google得到。淘宝arduino机器人,包括arduino控制板和各类简易传感器,几百块之内钱都能得到。同时推荐一下Udacity上的Robotics课程,基于arduino也都能实现完成。国外的有些Robotics课程使用的都是Lego Mindstorm作为实验平台(略土豪版)。红外,声呐,陀螺仪这些传感器Lego都有,同时它的电机也可以实现闭环控制。Imperial College London的Robotics课程就是以Lego为实验平台的,Andrew Davison的课件上所有的理论都可以用Lego实现Andrew Davison Robotics Course。如果这些都玩腻了,可以试试玩一个机器人飞行控制,比如四旋翼飞机。飞行器是六自由度控制,因此比小车要更加具有挑战性,也需要更精确的控制系统。下面这是我以前的一个四旋翼DIY,基于arduino MultiWii的。依旧淘宝四旋翼飞行器。

MultiWii是一个基于arduino的开源飞控平台,所有c代码都可得,不多于一两万行。如果把这些都研究透了,相比已经是专业水平了。

以上机器人家上看到的,望采纳,谢谢

从零开始学习编程

如果你只是想玩玩,想做点小东西的话。就学学Java,然后买几本实例教程,慢慢练。如果你想系统的学习。说说我的想法啊。你要有一个目标,学到什么样,你变成才算入门。精通啥的就不说了,文无第一,你说你自己精通,总会有大牛站出来鄙视你。那什么叫做入门呢,我的理解是,你看到一个现有的程序,用脑袋想想,大体能明白他是怎么实现的。当然不用完全明白,这不太可能,但是让你照着这个程序写一个差不多的程序不会毫无想法。到了这个程度你就差不多入门了。说白了就是学习的第一阶段模仿,不用创新,你只要能看着现存的东西去模仿就好了。会了模仿才能更进一步。不过这个模仿可不是让你照着code抄,而是黑箱。不求一模一样,只要有个大体的思路,可以去实现就行。那么为了实现这个入门,你需要一系列的系统学习。像那种用实例来学习的,也只能学习表面,总有你没有见过的事物,所以你需要学习的是本质,是原理。当然通过实例由浅入深是可以的,但是你不能舍本逐末。编程与理论是两条线,但是这两条线是伴随关系。很多初学者不知道该怎么学,所以说科班是很有必要的,起码实用。那么我在说说这个学习的过程。首先你要选择一门编程语言,如果你是那种肯吃苦,耐得住寂寞的人,我建议你从C开始学。为啥这么说呢,因为C比较底层,你想用C开发点有意思的程序特别是带GUI的,不说痴心妄想吧,起码很累。但是C的好处是语法简单,学好C以后,上可以实现数据结构,算法,下可以用来研究OS,算是学习期间比较全能的一套语言了。如果你比较急于求成,想短期内做点有意义的小程序,那就学Java。Java的库比较多,比较容易写一个带GUI的程序。而且OO的思想你早晚都要有。与此去把理论学习了,什么离散数学,计算机结构,数据结构,算法,一个一个来。这时候你可以学学汇编和机器语言,这个不是说要你用汇编去干啥,而是为了让你明白CPU的工作原理,然后试着自己用or,and,xor这类的原件自己设计一个CPU。不是让你真的去做一个实体CPU出来,只是画画电路图。当你明白CPU工作原理之后,你会有一种豁然开朗的感觉,原来计算机是这么精巧的。之后你可以开始学习操作系统原理的。这时候你可以去装一个Linux,然后熟悉熟悉那些system call。研究研究文件结构什么的。羡慕那些天在shell里面敲命令的前辈们吗?其实这些一点都不难,等你熟悉了,你就会觉得windows太不适合编程了。很多人都说Windows写程序好,VS是IDE神器什么的。可是假如没有VS还有人用Windows写程序吗?所以他们与其说Windows好还不如说VS好,Windows只是附属品。Linux随意的多,想C这类的语言,没啥lib可用的时候,有没有IDE都差不多。但是像Java这个变态语言,我反正不会用VIM这类软件去写,累死了。学习系统的时候,你就要学平行处理和线程控制了,parallel和concurrent这些。计算机的CPU就那么几个核,甚至是单核。但是计算机同时运行这么多程序,就是靠OS的平行处理功能的。学好这些很有用。在向上一层可以学的东西可就多了,Network这一块可以学学那些协议比如TCP,UDP或者HTTP之类的,然后尝试着用C写一个简单的服务器,监听一个端口发点信息啥的。你也可以用Java写,Java做这些比C简单点。但是C更贴近系统,因为Java用的是虚拟机,毕竟隔着一层。如果你对3D图像感兴趣就学学OpenGL。简单的小程序用C就够了。太复杂了就要学学C++。反正我是很不喜欢C++的。虽然功能强大,但是开发起来太累了,特别是学了Java之后,你会觉得C++这么能这么麻烦?可是想做底层开发你又不得不学C++。所以看你自己的定位了,如果不是很想深入,C就够了。学到OpenGL你就能体会到Linux的优势了,配置环境从网上找一些命令一敲就好了。当年我上graphics的课时,第一次作业,我都写完了,那些用Windows的同学们还在研究配置环境呢。他们本以为第一次配置好了之后就能体现出VS的优势的时候,才悲剧的发现这学期每个作业都要用一两个新的lib。所以他们只能忧郁的看着我那云淡风轻的一边喝咖啡一边敲代码。计算机的分支太多了,你能学的还有很多,比如数据库。其实数据库语言很简单,学学MySQL你就能学个大概。与此同时你可以学学网页开发,html+css+js为前端,后端的选择太多了,比较传统的比如PHP,如果你Java学的好就学JSP。微软那些就不说了,Python什么的也不错。说到这里,这个脚本语言你也是有必要学习一个的,Python是比较常见的选择。学完python你可以比较一下,C,Java,Python,你会发现越底层的语言功能越少但是很方便去实现那些基础结构,比如数据结果啥的。越是高级的语言功能越多,什么都是现成的,但是那些基础的东西都被隐藏了。这也是为啥10行的python,java要写30行甚至更多的原因。可是底层的语言却更快。当你习惯了Python的开发效率的时候,你可以能不会再去碰其他的语言,但是这并不代表你一开始就不用学,否则你怎么会理解其中的原理呢。说的编程语言,你就不得不学一下编译器开发了,compiler可是一个很神奇的东西,但是一句两句说不清楚,买本书自己研究一下,这个也是非常实用的。学到这里基本上基础的东西就学的差不多了,但是学无止境,CS既然是是一门科学,那就总也没有尽头,但是当你理解并明白了基础知识之后,一切新的知识学起来都不会太难。

从零开始学习编程的人

这个问题还是仁者见仁智者见智,毕竟理论和编程是两件事,完全掌握对于每个人的意义也是不一样的,因此时间也就不一样。

开始行动永远比思考更重要,如果你想开发一种新的技术,完全不需要启动资金,只要有足够的时间和精力,还有支撑你这个梦想的硬件条件,还有持之以恒的决心,这个想法终会实现。在现在这个社会,不管想要在什么行业或角度上达到金字塔的顶端,你必须比旁人更努力,越是高瞻远瞩的尽早开始越是比别人取得成功更快,编程不仅仅是为了就业,对于6~16岁的青少年也是一样可以的,在简单学习编程的同时可以培养孩子的创造力和想象力。一、如何从零开始学习编程

首先必须要了解编程语言的最基本语法,不同编程语言的基本数据也是不一样的,它是为了让内存空间更方便和规范,不同的编程语言的声明变量也是有很大不同的,有的称为强类型定义语言,有的称为弱类型定义语言。编程语言都有逻辑控制语句,有点像我们高中数学中学到的,有条件语句,循环语句,中断循环语句等等。学习逻辑控制语句之后还要学习运算符,包括算术运算符,关系运算符,逻辑运算符等等,几乎编程语言都是有函数的,所以对函数也要绝对了解。二、什么程度算是编程入门

如果一个人想要系统的学习一门代码编程语言,首先需要清晰对于自己来说,入门到底是什么程度,学成什么样才能完成自己的目标,精通几乎是不可能的,毕竟人外有人,天外有天。在我看来,所谓的入门应该是看到一个已经完成了编程就能大体想明白是如何实现的,至少让你照着这个编程写一个不会大脑里空无一物,学到这个程度就差不多是入门,我们都知道学习的第一阶段就是模仿,所以只要能模仿现存的东西去有一点点的创新就可以了。

学习新兴技术和知识是任重而道远的,社会在不断的更新换代,我们人类作为这个社会的主宰者,也应该跟随社会不断的变化,未来是充满阳光和光明的,这条路很长,希望与君共勉。

学习编程从零开始

在你学习编程之前思考一下你的目标,当你有最终目标时道路会更加的清晰。你想要写什么?网站?游戏?iOS或者Android应用?或是你是想自动化完成一些乏味的任务让你有更多的时间看窗外的风景?也许你只是想更具有就业竞争力找个好工作。所有的这些都是有价值的目标,这些目标都是你编程学习推动力的一部分,没有推动力的人,是无法在略显枯燥的漫长学习之旅中走远的。不要浮躁

Badprogrammingiseasy.EvenDummiescanlearnitin21days.Goodprogrammingrequiresthought,buteveryonecandoitandeveryonecanexperiencetheextremesatisfactionthatcomeswithit.

不管是在线下还是线上的书店,满目都是《21天学通Java》这种速成书目,它们都承诺在很短一段时间内就让你能够学会相关技术。MatthiasFelleisen在他的著作HowtoDesignPrograms,SecondEdition一书中明确指出了这种「速成」的趋势并予以了以上的讽刺。

所谓的「捷径」或者说「银弹」是不存在的,智者说过,精通某个东西需要10年或10000个小时,也就是汉语中的「十年磨一剑」,所以不用着急,功不唐捐。

培养兴趣

Mostgoodprogrammersdoprogrammingnotbecausetheyexpecttogetpaidorgetadulationbythepublic,butbecauseitisfuntoprogram.

_LinusTorvalds

沉醉于编程,编程更是为了兴趣。兴趣是推动力的不竭源泉,保持这种充满兴趣的感觉,以便于你能将其投入到你的10年/10000小时的编程时间中。编程很有趣,那是探索的喜悦。那是创造的喜悦。看到自己亲手完成的作品显示在屏幕上很有趣。有人为你的代码而惊叹很有趣。有人在公共场合称赞你的产品、邻居使用你的产品、以及在媒体上讨论你的产品很有趣。编程应该十分有趣,若并非如此,就找出导致编程无趣的问题,然后解决之。

在这里对于初学者有两个大坑:

如果初学者们只与预先构建好的「发动机和组件」接触(没有理解和思考它们构造的原理),这会严重限制他们在将来构建这些东西的能力,并且在诊断解决问题时无从下手。

第二个坑没有第一个那么明显:幼稚的「整体论」方法有些时候会显得很有效,这有一定的隐蔽性与误导性,但是一两年过后(也许没那么长),当你在学习路上走远时,再想回过头来「补足基础」会有巨大的心理障碍,你得抛弃之前自己狭隘的观念,耐心地缓步前进,这比你初学时学习基础知识困难得多。

但也不能矫枉过正,陷入还原论的大坑,初学时便一心试图做宏大的理论,这样不仅有一切流于理论的危险,枯燥和乏味还会让你失去推动力。这种情况经常发生在计算机科班生身上。

为了更好理解,可以将学习编程类比为学习厨艺:你为了烧得一手好菜买了一些关于菜谱的书,如果你只是想为家人做菜,这会是一个不错的主意,你重复菜谱上的步骤也能做出不赖的菜肴,但是如果你有更大的野心,真的想在朋友面前露一手,做一些独一无二的美味佳肴,甚至成为「大厨」,你必须理解这些菜谱背后大师的想法,理解其中的理论,而不仅仅是一味地实践。但是如果你每天唯一的工作就是阅读那些厚重的理论书籍,因为缺乏实践,你只会成为一个糟糕的厨子,甚至永远成为不了厨子,因为看了几天书后你就因为枯燥放弃了厨艺的学习。

编程是连接理论与实践的纽带,是计算机科学与计算机应用技术相交融的领域。正确的编程学习方法应该是:通过自顶而下的探索与项目实践,获得编程直觉与推动力;从自底向上的打基础过程中,获得最重要的通用方法并巩固编程思想的理解。

作为初学者,应以后者为主,前者为辅。

启蒙

学编程应该学哪门语言?」这经常是初学者问的第一个问题,但这是一个错误的问题,你最先考虑的问题应该是「哪些东西构成了编程学习的基础」?

编程知识的金字塔底部有三个关键的部分:

算法思想:例如怎样找出一组数中最大的那个数?首先你得有一个maxSoFar变量,之后对于每个数

语法:我怎样用某种编程语言表达这些算法,让计算机能够理解。

系统基础:为什么while(1)时线程永远无法结束?为什么int*foo(){intx=0;return&x;}是不可行的?

启蒙阶段的初学者若选择C语言作为第一门语言会很困难并且枯燥,这是因为他们被迫要同时学习这三个部分,在能做出东西前要花费很多时间。

为了尽量最小化「语法」与「系统基础」这两部分,建议使用Python作为学习的第一门语言,虽然Python对初学者很友好,但这并不意味着它只是一个「玩具」,在大型项目中你也能见到它强大而灵活的身影。熟悉Python后,学习C语言是便是一个不错的选择了:学习C语言会帮助你以靠近底层的视角思考问题,并且在后期帮助你理解操作系统层级的一些原理,如果你只想成为一个普通(平庸)的开发者你可以不学习它。

下面给出了一个可供参考的启蒙阶段导引,完成后你会在头脑中构建起一个整体框架,帮助你进行自顶向下的探索。

完成Codecademy的Python部分。这只是热身部分,尽快完成它,因为你永远只是在浏览器里,你不会学到如何搭建开发环境。在Codecademy这类的编程学习网站学到的那点儿东西,哪怕你只想做一个小的不能再小的项目,你都不知道该从哪儿开始。

完成MIT6.00.1x(中文化)(如果你英语不过关,完成麻省理工学院公开课:计算机科学及编程导论。MOOC是学习编程的一个有效途径。虽然该课程的教学语言为Python,但作为一门优秀的导论课,它强调学习计算机科学领域里的重要概念和范式,而不仅仅是教你特定的语言。如果你不是科班生,这能让你在自学时开阔眼界;课程内容:计算概念,python编程语言,一些简单的数据结构与算法,测试与调试。支线任务:

完成Python核心编程

完成HarvardCS50(如果你英语不过关:完成哈佛大学公开课:计算机科学cs50。同样是导论课,但这门课与MIT的导论课互补。教学语言涉及C,PHP,JavaScript+SQL,HTML+CSS,内容的广度与深度十分合理,还能够了解到最新的一些科技成果,可以很好激发学习计算机的兴趣。支线任务:

阅读《编码的奥秘》

完成《C语言编程》

[可选]如果你的目标是成为一名Hacker:阅读Hacker'sDelight

PS:如果教育对象还是一个孩子,以下的资源会很有帮助:

5-8岁:TurtleAcademy

8-12岁:PythonforKids

12岁以上:MITScratch或KhanAcademy

入门

结束启蒙阶段后,初学者积累了一定的代码量,对编程也有了一定的了解。这时你可能想去学一门具体的技术,诸如Web开发,Android开发,iOS开发什么的,你可以去尝试做一些尽可能简单的东西,给自己一些正反馈,补充自己的推动力。但记住别深入,这些技术有无数的细节,将来会有时间去学习;同样的,这时候也别过于深入特定的框架和语言,现在是学习计算机科学通用基础知识的时候,不要试图去抄近路直接学你现在想学的东西,这是注定会失败的。

那么入门阶段具体该做些什么呢?这时候你需要做的是反思自己曾经写过的程序,去思考程序为什么(Why)要这样设计?,思考怎样(How)写出更好的程序?试图去探寻理解编程的本质:利用计算机解决问题。

设想:

X=用于思考解决方案的时间,即「解决问题」部分

Y=用于实现代码的时间,即「利用计算机」部分」

编程能力=F(X,Y)(X>Y)

要想提高编程能力,就得优化X,Y与函数F(X,Y),很少有书的内容能同时着重集中在这三点上,但有一本书做到了——StructureandInterpretationofComputerPrograms(SICP)《计算机程序的构造和解释》,它为你指明了这三个变量的方向。在阅读SICP之前,你也许能通过调用几个函数解决一个简单问题。但阅读完SICP之后,你会学会如何将问题抽象并且分解,从而处理更复杂更庞大的问题,这是编程能力巨大的飞跃,这会在本质上改变你思考问题以及用代码解决问题的方式。SICP的教学语言为Scheme,可以让你初步了解函数式编程。更重要的是,他的语法十分简单,你可以很快学会它,从而把更多的时间用于学习书中的编程思想以及复杂问题的解决之道上。

PeterNorvig曾经写过一篇非常精彩的SICP书评,其中有这样一段:

Touseananalogy,ifSICPwereaboutautomobiles,itwouldbeforthepersonwhowantstoknowhowcarswork,howtheyarebuilt,andhowonemightdesignfuel-efficient,safe,reliablevehiclesforthe21stcentury.ThepeoplewhohateSICParetheoneswhojustwanttoknowhowtodrivetheircaronthehighway,justlikeeveryoneelse.

如果你是文中的前者,阅读SICP将成为你衔接启蒙与入门阶段的关键点

虽然SICP是一本「入门书」,但对于初学者还是有一定的难度,以下是一些十分有用的辅助资源:

UdacityCS212DesignofComputerProgram):由上文提到的Google研究主管PeterNorvig主讲,教学语言为Python,内容有一定难度。

HowtoDesignPrograms,SecondEdition:HtDP的起点比SICP低,书中的内容循循善诱,对初学者很友好,如果觉得完成SICP过于困难,可以考虑先读一读HtDP。

UCBerkeleySICP授课视频以及SICP的两位作者给Hewlett-Packard公司员工培训时的录像(中文化项目)

ComposingPrograms:一个继承了SICP思想但使用Python作为教学语言的编程导论(其中包含了一些小项目)

SICP解题集:对于书后的习题,作为初学者应尽力并量力完成。

完成了这部分学习后,你会逐步建立起一个自己的程序设计模型,你的脑子里不再是一团乱麻,你会意识到记住库和语法并不会教你如何解决编程问题,接下来要学些什么,在你心里也会明朗了很多。这时候才是真正开始进行项目实践,补充推动力的好时机。

关于项目实践:对于入门阶段的初学者,参与开源项目还为时过早,这时候应该开始一些简单的项目,诸如搭建一个网站并维护它,或是编写一个小游戏再不断进行扩展,如果你自己的想法不明确,MegaProjectList中选取项目。务必在这时拿下你项目实践的第一滴血。

与此别忘了继续打好根基。为了将来的厚积薄发,在下面这几个方面你还要继续做足功课(注意:下面的内容没有绝对意义上的先后顺序):

计算机系统基础

有了之前程序设计的基础后,想更加深入地把握计算机科学的脉络,不妨看看这本书:《深入理解计算机系统》ComputerSystemsAProgrammer'sPerspective。这里点名批评这本书的中译名,其实根本谈不上什么深入啦,这本书只是CMU的「计算机系统导论」的教材而已。CMU的计算机科学专业相对较偏软件,该书就是从一个程序员的视角观察计算机系统,以「程序在计算机中如何执行」为主线,全面阐述计算机系统内部实现的诸多细节。

如果你看书觉得有些枯燥的话,可以跟一门Coursera上的MOOCTheHardware/SoftwareInterface,这门课的内容是CSAPP的一个子集,但是最经典的实验部分都移植过来了。可以看看TheCProgrammingLanguage,回顾一下C语言的知识。

完成这本书后,你会具备坚实的系统基础,也具有了学习操作系统,编译器,计算机网络等内容的先决条件。当学习更高级的系统内容时,翻阅一下此书的相应章节,同时编程实现其中的例子,一定会对书本上的理论具有更加感性的认识,真正做到经手的代码,从上层设计到底层实现都了然于胸,并能在脑中回放数据在网络->内存->缓存->CPU的流向。

也是时候去接触UNIX哲学了KISS-KeepitSimple,Stupid.在实践中,这意味着你要开始熟悉命令行界面,配置文件。并且在开发中逐渐脱离之前使用的IDE,学会使用Vim或Emacs(或者最好两者都去尝试)。

阅读《UNIX编程环境》

阅读《UNIX编程艺术》

折腾你的UN*X系统

数据结构与算法基础

很多人认为编程(特别是做web开发)的主要部分就是使用别人的代码,能够用清晰简明的方式表达自己的想法比掌握硬核的数学与算法技巧重要的多,数据结构排序函数二分搜索这不都内置了吗?工作中永远用不到,学算法有啥用啊?这种扛着实用主义大旗的「码农」思想当然不可取。没有扎实的理论背景,遭遇瓶颈是迟早的事。

数据结构和算法是配套的,入门阶段你应该掌握的主要内容应该是:这个问题用什么算法和数据结构能更快解决。这就要求你对常见的数据结构和算法了熟于心,你不一定要敲代码,用纸手写流程是更快的方式。对你不懂的数据结构和算法,你要去搜它主要拿来干嘛的,使用场景是什么。

供你参考的学习资源:

《算法导论》:有人说别把这本书当入门书,这本书本来就不是入门书嘛,虽说书名是IntroductiontoAlgorithms,这只不过是因为作者不想把这本书与其他书搞重名罢了。也不是没办法拿此书入门,读第一遍的时候跳过习题和证明就行了嘛,如果还觉得心虚先看看这本《数据结构与算法分析》

CourseraAlgorithmsDesignandAnalysis[Part1]&[Part2]:Stanford开的算法课,不限定语言,两个部分跟下来算法基础基本就有了;英语没过关的:麻省理工学院公开课:算法导论

入门阶段还要注意培养使用常规算法解决小规模问题的能力,结合前文的SICP部分可以读读这几本书:《编程珠玑》,《程序设计实践》

编程语言基础

Differentlanguagessolvethesameproblemsindifferentways.Bylearningseveraldifferentapproaches,youcanhelpbroadenyourthinkingandavoidgettingstuckinarut.Additionally,learningmanylanguagesisfareasiernow,thankstothewealthoffreelyavailablesoftwareontheInternet

-ThePragmaticProgrammer

此外还要知道,学习第n门编程语言的难度是第(n-1)门的一半,所以尽量去尝试不同的编程语言与编程范式,若你跟寻了前文的指引,你已经接触了:「干净」的脚本语言Python,传统的命令式语言C,以及浪漫的函数式语言Scheme/Racket三个好朋友。但仅仅是接触远远不够,你还需要不断继续加深与他们的友谊,并尝试结交新朋友,美而雅的Ruby小姑娘,Hindley-Milner语言家族的掌中宝Haskell都是不错的选择。但有这么一位你躲不开的,必须得认识的大伙伴—C++,你得做好与他深交的准备:

入门:C++Primer

[可选]进阶:

高效使用:EffectiveC++

深入了解:《深度探索C++对象模型》;C++Templates

研究反思:TheDesignandEvolutionofC++;对于C++这个NecessaryEvil,看这本书可以让你选择是成为守夜人还是守日人。

现实是残酷的,在软件工程领域仍旧充斥着一些狂热者,他们只掌握着一种编程语言,也只想掌握一种语言,他们认为自己掌握的这门语言是最好的,其他异端都是傻X。这种人也不是无药可救,有一种很简单的治疗方法:让他们写一个编译器。要想真正理解编程语言,你必须亲自实现一个。现在是入门阶段,不要求你去上一门编译器课程,但要求你能至少实现一个简单的解释器。

供你参考的学习资源:

《程序设计语言-实践之路》:CMU编程语言原理的教材,程序语言入门书,现在就可以看,会极大扩展你的眼界,拉开你与普通人的差距。

Coursera编程语言MOOC:课堂上你能接触到极端FP(函数式)的SML,中性偏FP的Racket,以及极端OOP(面向对象)的Ruby,并学会问题的FP分解vsOOP分解、ML的模式匹配、Lisp宏、不变性与可变性、解释器的实现原理等,让你在将来学习新语言时更加轻松并写出更好的程序。

UdacityCS262ProgrammingLanguage:热热身,教你写一个简单的浏览器——其实就是一个javascript和html的解释器,完成后的成品还是很有趣的;试着完成一个之前在SICP部分提到过的项目:用Python写一个SchemeInterpreter

其他

编程入门阶段比较容易忽视的几点:

学好英语:英语是你获取高质量学习资源的主要工具,但在入门阶段,所看的那些翻译书信息损耗也没那么严重,以你自己情况权衡吧。此外英语的重要性更体现在沟通交流上,LinusTorvalds一个芬兰人,一口流利的英语一直是他招募开发者为Linux干活的的法宝,这是你的榜样。

学会提问:学习中肯定会遇到问题,首先应该学会搜索引擎的「高级搜索」,当单靠检索无法解决问题时,去StackOverflow或知乎提问,提问前读读这篇文章:Whathaveyoutried?

不要做一匹独狼:尝试搭建一个像这样简单的个人网站,不要只是一个孤零零的About页面,去学习Markdown与LaTeX,试着在Blog上记录自己的想法,并订阅自己喜欢的编程类博客。推荐几个供你参考:JoelonSoftware,PeterNorvig,CodingHorror

小结

以上的内容你不应该感到惧怕,编程的入门不是几个星期就能完成的小项目。期间你还会遇到无数的困难,当你碰壁时试着尝试「费曼」技巧:将难点分而化之,切成小知识块,再逐个对付,之后通过向别人清楚地解说来检验自己是否真的理解。依旧会有你解决不了的问题,这时候不要强迫自己——很多时候当你之后回过头来再看这个问题时,一切豁然开朗。

此外不要局限与上文提到的那些材料,还有一些值得在入门阶段以及将来的提升阶段反复阅读的书籍。ThePragmaticProgrammer就是这样一本程序员入门书,终极书。有人称这本书为代码小全:从DRY到KISS,从做人到做程序员,这本书教给了你一切,你所需的只是遵循书上的指导。

后记

如果你能设法完成以上的所有任务,恭喜你,你已经真正实现了编程入门。这意味着你在之后更深入的学习中,不会畏惧那些学习新语言的任务,不会畏惧那些「复杂」的API,更不会畏惧学习具体的技术,甚至感觉很容易。为了掌握这些东西你依旧需要大量的练习,腰还是会疼,走路还是会费劲,一口气也上不了5楼。但我能保证你会在思想上有巨大的转变,获得极大的自信,看老师同学和csdn的眼光会变得非常微妙,虽然只是完成了编程入门,但已经成为了程序员精神世界的高富帅。不,我说错了,即使是高富帅也不会有强力精神力,他也会怀疑自己,觉得自己没钱就什么都不是了。但你遵循指南好好看书,那就会体验「会当凌绝顶」的感觉。

首先要想学编程,选一门合适的计算机语言就十分重要了,怎么去选择就显得尤为重要了,这要根据自己的兴趣爱好及每个语言的特性来选择,比如说PHP适合做web开发,易学习,易上手,非常流行的一门计算机语言了,我个人比较推荐php语言。

java可以做web开发,做安卓app开发也用的是java,在学习程度上上可能比php稍微难上手一点,不过也是没问题的,如果对java感兴趣可以尝试一下。

python是目前比较火的一门语言了,比较适合做人工智能领域,另外写网络爬虫类的程序,用python也是非常合适的了,看个人兴趣来选择了。

c,c++,c#这些语言就不推荐给了,特别是c#,已经是比较过时的一门语言了,即使学习也不太适合去找工作,c与c++并不是十分适合初学者来学习,因此也是没必要进行考虑了,还有一些更小众的语言,更是没有必要去考虑,因此关于语言的学习就从上面3种语言去选择一门自己所感兴趣的吧!

研发搭建环境

如果选择好计算机语言,那么接下来就是研发环境的搭建了,因为只有研发环境搭建才可以进行后续的编程工作,比如说PHP,那么就从百度上搜一下如何安装PHP环境,能搜出一些简单的教程,初学者按照教程一步一步来,顶多半天时间就可以把研发环境装如果是java,就需要先安装jdk,进行环境变量的配置等,网上也有相关的教程,也是十分容易的,相信大家只要按照教程来做,都可以很轻易的把研发环境搭建起来的

选好视频和书籍,辅助学习。既然是零基础学习,就需要进行系统的学习,而不是到处百度零基础的知识点进行学习。

代码练习

跟随教程一个一个章节的进行学习,需要注意的一点就是不能只是去看,那样不行,要对每一个章节的知识点要亲自用代码敲一遍,运行一下试试效果才行,这样才能提高自己的动手能力,才开始会觉得有一点生疏,慢慢的就会熟练起来,逐渐会增加编程的兴趣。这个过程就是需要反复的进行练习,大量的代码练习才行。这个过程是5步中最关键的阶段了,重在代码亲自练习,对编程中有的章节不明白的地方,千万不要放过去,可以在网上找一些相关的编程交流群,参加进去,在线上咨询一些过来人,也许就可以轻松帮你解决疑问了,对你的学习十分帮助,并且整个过程也都是免费的。

项目实战

如果说基础教程都按部就班的都实践过一遍了,那么你就有一定的编程的基本功了,那么自己就可以尝试着做一些小项目,把学到的知识给串起来,进入项目实战阶段,比如说自己设计一个学生管理系统,并把它完成,如果不了解怎么设计,可以去网上搜索。慢慢就有思路了。

我也在学习这方面,视频书籍看过不少,最推荐的还是北京尚学堂的学习资料,Java.300集,Python400集,都是很经典的入门基础教程,而且是结合项目学习的,很有意思,干货满满,还都是免费的,推荐你可以去看看,相信可以带你走进变成的世界。

从零开始学编程,第一关就是要选择你所要学习的编程语言。面对着琳琅满目的编程语言,初学者常常一筹莫展,拿不定主意,不知该选哪

关于本次从零开始学习机器人编程的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。