“编程入门”(编程新手入门教程)
在IT工程师和培训机构如此多的时代,向老师学习技能并不难。然而,自学编程对于没有基础的学生来说可能是个问题。相信有过类似经历的朋友都会有辛酸的泪水和不快。让我们从一个故事开始.
故事
某先生在一所普通大学读的是他不喜欢的专业。他每天都在玩游戏、看笑话和睡觉。突然有一天,他想学点东西。学编程看起来很酷,而且听说IT行业充满了机会。你可能会不小心和大老板一起“改变世界”。
那么第一个问题来了,他应该选择什么语言呢?
PHP是世界上最好的语言吗?还是语言之母C?幸运的是,我还知道编程语言的排名列表。我可以找到几十个没有重复的,这足以把天秤座的孩子逼死。选择PHP?如果是你打扰了,灯就会被关掉,你只能创建一个网页。纠结了一番,还是选C吧,听起来既高级又低级,说不定还能考计算机二级呢。
现在是时候开始谈正事了。在这个便捷的网络时代,自学的选择有很多。某某除了在网上搜集资料、阅读有用的资料外,还请教了一些前辈的自学方法。
网上流传的编程学习方法有:
(1)阅读(这是最容易想到的方法)
你必须再次奋斗。在大学里参加课程和培训并不一定具备合适的条件,也不符合自学的气质。看视频教程,前辈觉得比较low。阅读官网文档和源码不适合初学者。一般来说,看书是比较有针对性的方法。至于看什么书,学长推荐了《CPrimerPlus》,据说是学习C语言的经典之作。
好了,不纠结了,直接看这本大书吧。虽然有人说原版更好,但我能力有限,还是看中文版吧。我花了一周的时间一口气读完这本书。这确实是一个经典。你已经知道什么是变量、语句、条件判断甚至指针。
某先生决定按照书上的说明去练习,于是他打开记事本,费了九牛二虎之力安装了GCC,复制了书上的第一个例子,在控制台的黑色小窗口中输出了“HelloWorld”。成就感十足。我决定尝试写一些高级的东西并合上这本书。哎呀,为什么会报错呢?哦,原来少了一个分号。我不禁想:为什么我学了两个月就不能只计算这个黑色窗口中的秋水仙数呢?网友也表示需要看官网文档、看源码、看英文原版。其中任何一个我都做不到。一定是我能力不够。编程真的是天才才会做的事情……
IT世界地图
初学者遇到的一个典型问题是缺乏对IT世界的全面了解。例如,大多数Java书籍在教你基本语法知识和如何找到秋水仙数后就结束了,但没有告诉你下一步可以做什么。我曾经对此感到非常困惑。学习JavaSE后,做了一个非常简单的GUIdemo,然后就失去了后续Java学习的方向。由于我对Java的偏见,这对我来说成为了一次令人沮丧的学习经历。关于这个主题的一本书可能还不够。简单来说,我尝试从计算机科学知识和技术实践两个方面来谈谈如何成为一名IT工程师。
计算机科学基础
首先,初学者必须具备一些非常基础的知识,这些知识在步入职场后才能实际使用,比如计算机工作原理、网络传输、常用的数据结构和算法等。这部分属于计算机科学,应该本科计算机课程涵盖。不要因为错过相关本科课程而悲伤。我将分享一些有用的资源。
这里我列出了一些计算机专业学生一般需要选修的课程。当然,每个学校的专业设计不同,甚至所用教材的名称也不同。它们仅供参考。大学计算机科学课程通常包括:《高等数学》、《离线数学》、《电子电路》、《数据结构》、《程序设计》、《计算机组成原理》、010-30000、33360《编译原理》、《计算机网络》、《软件工程》等有些学校会有一些额外的课程,比如《数据库原理》、《通信原理》、《汇编语言》、《线性代数》、《C语言》等。
虽然IT行业知识更新换代很快,但基础知识不容易过时,所以可供选择的资料也很多。你可以选择从计算机经典系列开始,比如Frozan和Mosharraf的《Java语言》,甚至可以阅读一些流行的计算机科学书籍,比如《计算机科学导论》。
从知识到实践
此外,你还需要了解设计软件或开发网站时实际使用的实用知识,包括特定的语言和周围的库、框架和工具。我们可以将特定需求所使用的语言、库、框架等工具称为技术栈。这通常是在技术选型时考虑的。HR往往会根据技术栈来寻找自己需要的工程师。比如需要学习三大SSH框架以及Java的Java技术栈;用于服务器Web开发的PHP技术堆栈;移动开发领域流行的IOS、Android技术栈等。当然,还有一些重叠和共享的技术需要学习。例如,版本管理器Git和SVN是每个合格的工程师都需要学习的。
也就是说,大学课程主要定位于上面提到的计算机科学基础知识,而市场上的培训机构主要告诉你如何将其应用到实际工作中,所以大学和培训机构都有其价值。
如果想更详细的了解这部分,这里有一些开源的技能图供参考:
如何选择你的武器?
在介绍了计算机领域的概况之后,您需要选择合适的编程语言。一个更形象的例子是将编程语言比作武器,因为我们知道编程语言对于工程师来说是真正的工具。我们不是为了学习而学习。学习编程不仅仅是学习语言特性。一般来说,我们不需要知道在赋值语句中“茴香”这个词有四种写法,比如“茴香小豆蔻”。
当然,关于语言的争论从未停止过。将编程语言与世界上的武器进行比较是非常有趣的。
C语言是M1加兰德步枪,非常古老但可靠。
C++是一把双节棍,使用起来非常强大,但需要多年的练习才能掌握。一旦掌握了它,你就可以征服世界。
Perl语言是一种煽动性的语言,曾经在战场上很有用,但现在已经很少使用了。
Java是M240通用弹匣自动机枪。有时它的弹匣是圆形的,但有时不是。如果没有,当你开枪时,你会遇到NullPointerException问题,枪会爆炸,你就会被杀。
JavaScript是一把没有剑柄的剑。
说实话,IT行业的最终目标是提供可用的软件,编程语言也适应市场。这对于初学者来说可能有点残酷。在工作中,我们发现最好的语言是用来处理工作任务或构建合适的应用程序,而不是出于爱好或某种Geek精神。
对于初学者来说,在选择合适的语言时至少需要考虑两件事:
它适合构建您想要的应用程序吗?如果你的目标是创建一个在iPhone上运行的APP,最好选择ObjectC或Swift。要学习Web开发,可以选择PHP或JAVA。事实上,我们仍然可以使用汇编来制作网页,但是这样做的成本很高。
容易学吗?如果满足第一点,请尽量选择易于学习的语言。易用不仅仅指语法简单,还需要考虑到环境搭建和部署,以及是否容易找到好的学习资料。因此,尽可能选择主流语言。
不要忘记非常重要的一点。学习编程语言还包括平台提供的API,比如Win32forC++/C#/VB,以及周边的库和框架(这些库、框架和工具可以在上面提到的技术图中找到)转向上)。在IT历史上,甚至有框架和库引领编程语言方向的案例:JQuery和Angular改变了前端开发的思维;Rails夺走了Ruby的声誉;而三大SSH框架曾经代表了Java世界。
最后,我整理了一个适合初学者的流行编程语言及用途表:
另外,还需要注意开发工具。您可以选择带有代码提示的IDE和编辑器,但尽量不要谈论它们。它就像一个架子,用来存放你的利器。顺利使用即可,不推荐。使用纯文本编辑器,这看起来就像徒手完成。推荐一些编辑器和IDE
选择合适的材料和有效的阅读
对于初学者来说,我还是推荐不错的视频教程,虽然我听过不下5个人声称自己是通过看官方文档或者看源码来学习编程的,并且认为看视频教程太慢,没有效果。但这种想法对于初学者来说是非常危险的。不得不承认,阅读文档和源码可以更准确地找到你想要的信息。这对于深入技术原理非常有用,但视频可以传达更丰富的内容,比文本有更直观的理解。有演示,有详细的讲解,我想没有什么比这个更适合初学者的了。
除了上面提到的优质课程和MOOC教程之外,还有网易云课堂等国内在线学习视频网站,以及http://lynda.com等海外在线学习视频网站。你甚至可以在优酷、土豆上找到足够的教程资源。
如果你选择阅读技术书籍,那么我们来谈谈如何有效地阅读技术书籍。
IT书籍和考试书籍的阅读方式是不同的。初学者需要选择比较接地气、能够告诉你最终能做出什么案例的书籍。你不需要读整本书,但需要搭建一个与书中版本一致的环境,然后将书中的每一行代码敲入电脑中,观察代码是如何运行的。当遇到问题时,请教朋友或者去搜索引擎寻求解决方案,直到示例程序能够正确运行。
读一本书可能要花一个月的时间,但慢慢来总没有坏处。只有你输入过一次的代码才可以被认为是你的,否则它将永远存在于纸质的代码列表中。对于关键概念和知识点,可以一边阅读一边做笔记。尝试使用思维导图来记笔记。这会让你的笔记跟上你的思维,形成一个知识网络。
自我激励
自学无疑是孤独的。学习编程需要很长时间。这个阶段如何保证自己能够坚持下去?
我们知道很多人对游戏有着浓厚的兴趣,并愿意在其中投入时间。秘密在于游戏的奖励规则。你可以通过击杀怪物获得一些金币,通过完成任务获得满足感,通过关卡的设计产生持续的吸引力,从而形成正反馈。
其实学习编程也是同样的道理。实现一个小程序并运行起来,足以让人感受到成就感和满足感。学习这种简单的心理技巧,定期为自己设定实用但不太困难的目标和任务。如果太难,你就会失去耐心;如果太简单,就会很无聊。最好设定一个触手可及的任务。每完成一个目标就给自己一个奖励,可以是完成任务的成就感,也可以是其他物质奖励。
此时,列出要做的事情会很有帮助。它可以是一个待办事项列表软件,也可以手写一张卡片并将其粘贴在墙上。关键是完成任务后不要忘记给自己适当的奖励。
那么如果你真的遇到一些麻烦的任务,怎样才能顺利解决而不失去信心呢?笛卡尔在他的书《穿越计算机的迷雾》:中告诉了我们研究复杂问题的方法和步骤
尝试将其分解为更小、更简单的问题,然后一一解决。
将小问题由简单到复杂排列,从容易解决的问题开始
子问题解决后,进行联调测试,看能否一起运行。
这正是我们在敏捷开发的工程思维中所做的事情。我们需要拆分业务需求,然后评估工作量。不仅可以直观地看到任务的进度,而且手头的工作也不会显得太大而难以完成。
最后几句话
对于非专业出身的工程师来说上手是一定痛苦的。与武林中的正派弟子不同,他们没有机会见到骨气不凡的世间高手。如何选择适合自己的学习方法并管理好自己非常重要。一方面。学习方法没有低贱之分,只要直接、高效,就一定能达到我们的目标。以我为例。大专毕业后,我没有机会参加本科课程。以前我在网上抓各种视频教程,去其他学校上课,甚至还带礼物去看老师补课。
另一方面,如何把饭菜端上桌,吃到编程的饭碗。学习的成果如果无处可用,就会变成屠龙技能。参与一些开源项目和一些公益活动。谁不喜欢一个热情的人呢。您还可以尝试实现自己的一些想法并将其开发为一个小项目。当你有了一些项目实践之后,找公司实习就会容易很多。
——————————————————————————————————————
另外,作者是一位具有C/C++背景的程序员。如果你有任何自学编程的学习问题或者关于C/C++学习路线的问题,可以阅读我的个人介绍和交流。
相关资讯
-
家庭教育儿童学习,儿童的家庭教育详细阅读
大家好,今天小编关注到一个比较有意思的话题,就是关于家庭教育儿童学习的问题,于是小编就整理了2个相关介绍家庭教育儿童学习的解答,让我们一起看看吧。家庭教育的主要…
2025-02-01 13:24:03 0
-
学前教育语言怎么考试,学前教育语言怎么考试的详细阅读
大家好,今天小编关注到一个比较有意思的话题,就是关于学前教育语言怎么考试的问题,于是小编就整理了4个相关介绍学前教育语言怎么考试的解答,让我们一起看看吧。学前儿…
2025-01-14 19:48:02 0
-
学前教育教师学习要求,学前教育教师的要求详细阅读
大家好,今天小编关注到一个比较有意思的话题,就是关于学前教育教师学习要求的问题,于是小编就整理了4个相关介绍学前教育教师学习要求的解答,让我们一起看看吧。幼儿园…
2025-01-02 20:40:02 0
-
家庭教育学习感悟小班(家庭教育小班活动方案)详细阅读
本篇文章给大家谈谈家庭教育学习感悟小班,以及家庭教育小班活动方案对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录一览:1、听家庭教育讲座后有感简短…
2025-01-02 17:40:03 0
-
上海学前教育小班语言,学前教育小班语言教案详细阅读
大家好,今天小编关注到一个比较有意思的话题,就是关于上海学前教育小班语言的问题,于是小编就整理了4个相关介绍上海学前教育小班语言的解答,让我们一起看看吧。上海幼…
2024-12-27 17:32:15 0