学习啦>学习方法>通用学习方法>学习态度>

怎么才能有效学好编程和代码

欣怡分享

  无论对于何种计算机编程语言,其核心编程思想都是一样的。一起来看看怎么才能有效学好编程和代码吧!以下是学习啦小编分享给大家的学好编程和代码的方法,希望可以帮到你!

  学好编程和代码的方法

  一、多总结

  多总结才能加深理解、增强记忆。举例,Go 中有 slice、map、channal 类型,它们都可以用 make 生成实例,但 slice 和 map 还可以用以下形式初始化,也是编程规范中建议的初始化方式:

  colors := map[string]string{}

  slice := []int{}

  但注意了,channal 则没有这样的语法:msg := chan string{}

  上面两句是生成实例,表示空集合,但下面两句则表示实例不存在,值为 nil

  var colors map[string]string

  var slice []int

  另外,结构体指针 slice 还可以象下面这样初始化,结构体实例不用明确地指定类型(使用了类型推导)、不用明确地取地址运算(&)。

  type Product struct {name stringprice float64}

  products := []*Product{{"Spanner", 3.99}, {"Wrench", 2.49}, {"Screwdriver", 1.99}}

  看到没有,如果不经常总结,这一圈学下来会把你整的稀里糊涂的。

  二、多比较

  学一门新语言一定要与你之前已经熟悉的语言经常作比较,找出它们的相同与不同,这样才能加深记忆和理解,否则学完之后脑子里会一片混乱,搞不清谁是谁非了。

  就拿数组来说吧,在 Java、Scala、Go 中定义、实例化、赋值是不一样的。

  //Java

  int[] arr;//定义数组,不可以指定数组长度

  arr = new int[5];//创建数组对象(实例化),指定数组长度

  arr[1] = 8;//赋值

  //Scala

  val arr = new Array[Int](5) //数组在Scala里用的是泛型类,构造函数参数指定数组大小

  arr(1) = 8 //赋值,注意用的是括弧

  //Go

  arr := [5]int{} //创建数组,初始化5个元素都为0,注意如果不指定数组长度,则是另外一种类型Slice

  arr[1] = 8 //赋值

  再比如 Map 在 Scala 与 Go 语言里定义、初始化、访问也是不同的,作了以下比较后印象会非常深刻,把它们记下来,这样以后使用就不会搞混了。

  //Scala

  val capital = Map("France" -> "Paris", "Japan" -> "Tokyo")

  println(capital.get("France"))

  //Go

  capital := map[string]string{"France": "Paris", "Japan": "Tokyo"}

  fmt.Println(capital["France"])

  Go 同时给多个变量赋值在 Scala 里可以用模式匹配做到,如下:

  //Scala(使用样本类的模式匹配)

  case class Tao(name: String, age: Int);

  val Tao(myName, myAge) = Tao("taozs", 18);

  println(myName)

  println(myAge)

  //Go

  myName, myAge := "taozs", 18

  fmt.Println(myName)

  fmt.Println(myAge)

  //Scala(使用元组的模式匹配)

  val (myNumber, myString) = (123, "abe")println(myNumber)println(myString)//GomyNumber, myString := 123, "abe"fmt.Println(myNumber)fmt.Println(myString)

  除了在 Scala 和 Go 里都可以类型推导外,在 Scala 里还可以这样定义函数:

  //Scala

  val increase = (_: Int) + 1

  为方便自己将来随时查阅,可以建立下面这样的对比表格,描述不一定要求规范,自己能看懂就行。

  三、转变思维方式,

  学会用这门语言去思考

  学会用语言去思考是关键。如果你以前是学 C 的,转学 Java,你一定要改变以前面向过程的思维,学会用面向对象的思维去分析问题;以前学 Java 的,转学 Scala 则要学会用函数式的编程思维解决问题。

  举一个函数式编程的例子,以下是 Java 语言常用的 for 循环,循环变量从 1 到 10 执行 10 次循环体:

  // 命令式编程for (int i = 1; i < 10; i++) {// 此处是循环体做10次}

  这被称为命令式编程 (Imperative Programming),但学了 Scala 的函数式编程 (Functional Programming) 后,解决同样的问题,我们可以换一种思维:构建 1 到 10 的列表序列,针对列表中的每个元素分别执行函数,如下:

  //函数式编程

  val autoList = (1 to 10).map(i => /*此处是函数体,针对1到10的每一个分别调用 1次*/)

  已经习惯了 Java 编程的,对 Scala 的函数式编程、样本类、模式匹配、不可变对象、隐式转换等需要一个逐步适应的过程,要渐渐学会用它们思考和解决问题。

  再举个 Scala 与 Go 思维方式不同的例子,要实现对一个字符串里的每个字符加 1 的操作,Scala 里可以这样:

  "abc".map(cc => cc + 1)

  "abc"是一个字符串对象,调用它的方法 map,这是纯面向对象的思维,但在 Go 里就要转变为面向过程的思维:

  name := "abc"second := strings.Map(func(x rune) rune {return x + 1}, name)

  注意,这里的 strings 是包 (package),调用它的公共函数 Map,被操作的对象 name 字符串作为函数参数传入。Go 提供的函数 len、cap、append、delete 等其实都是面向过程的,虽然 Go 也提供有面向对象的支持,已经习惯了面向对象编程的,刚开始学 Go 语言需要特别留意这一点。

  四、多看开源代码

  学一门语言就是学一种思维方式,如今 GitHub 上可下载的开源代码海量级,通过看别人的代码,学习别人是如何解决问题的,养成用该语言思考的习惯,另外还能学习到一些非常有用的技巧。

  这个意思是指刚进入程序时执行 Start( ) 函数,程序退出前调用 Stop( ) 函数,非常好的技巧啊!可以用于需要在程序执行前和程序完成后分别执行一段逻辑的场景。再看 Start( ) 函数是怎么实现的:

  func Start(options ...func(*Profile)) interface {Stop()} {...return &prof}

  该函数返回了一个实现了含有 Stop( ) 函数接口的对象,如此才能在调用 Start 调用后连调 Stop。

  五、优先学会使用代码分析工具

  代码分析的工具包括静态检查、测试、测试覆盖率分析、性能分析(内存、CPU)、调试工具等,工具的价值在于它可以有效帮我们发现代码问题,这在我们刚开始学一门编程语言时意义尤其重大。

  例如,以下这句 Java 赋值语句估计没有哪本教科书会告诉你有性能问题:

  String sb = new String(“Hello World”);

  以下这段 Java 代码你也不一定能意识到有多线程问题:

  synchronized public void send(authuserPacket pkt, Thread t, String flowNo) throws IOException

  连接不可用,直接抛出异常,等待接收线程连接服务器成功

  如果我们及时用 FindBugs 工具检查就会发现上面这些问题,进而你会去分析研究为什么,如此,你对这门语言的了解也会越来越多。

  另外,Go 语言自带的 vet/test/cover/pprof/trace 都是非常有用的工具,一边学一边使用这些工具分析代码,能加深对语言的理解。

  六、多练习、多实践

  就象学自然语言一样,如果只知道语法不去练是没有任何效果的,只有反复地练习,慢慢才能变成自己的一项技能。书本上的例子代码最好能从头到尾亲自敲一遍,多运行、多尝试,另外再找一些题目来练习,如能有机会参与项目开发则更好啦,勤动手、勤实践是最好的学习方法。

  其它的方法还有:

  做好笔记,把学习中遇到的关键点和自己的思考记下来,便于后面复习和对比;

  复习,学习一定要重复、重复、再重复;

  学习贵在坚持,每天学一点(比如坚持每天学 1 小时),日积月累。

  学好编程和代码的技巧

  一、前期阶段

  前期的学习兴趣引导至关重要,选择自己感兴趣的类型逐渐深入学习。

  从尝试多种不同的学习课程入手,找到最适合自己的学习方式和最让自己感兴趣的项目类型。刚开始你要思维开阔,不要理会那些告诉你应该学什么的建议……在这个阶段学什么都是一样的。

  选择一个编程项目,感觉它适合自己就要坚持学下去。完整学习整个入门教程,你会从中学到写基础脚本和应用需要的所有基础知识。接着,就要准备好开始创建工程。

  二、中期阶段

  每个人都要经历这个阶段,因为成为一名开发者的唯一途径就是不断去开发。

  如何过渡到独立地创建工程,下面有三个建议:

  1、和他人一起工作,哪怕同样是菜鸟。

  你会惊讶地发现,两双眼睛更容易调试出一个不可能的错误。

  2、阅读他人的代码,熟悉好的模式。

  尽量理解为什么作者这么做。同样的道理,不读书是不会想成为一名小说家的,对吧?现在,请仔细注意其他人对任何小问题或工程提出的解决方案。

  3、从小事做起,不断尝试。

  对于将来,你应该想过做一些有趣的大工程,但你也必须适应调试的过程,搜索一些带有小型挑战的学习资源。经验是无可替代的。

  一旦适应了调试过程,你还需要做好三点:

  拥有一个强烈的目标想去实现,否则,什么有趣但没用的东西都学的话,最终不过瞎忙活一场。如果你在学习之外还有充裕的时间,请忽略这一条……

  找到一条有效的路径能直达你设定的目标,并且要验证其可行性。你必须深入思考“这个方法到底能不能帮我实现目标?”

  专注,避免分心。因为你如果是个对学习编程很有兴趣的人,那你肯定也会对所有美妙的事情感兴趣。当编程遇到了困难,你需要进一步解决这个问题,而不是另起炉灶。

  如果能确定一条路并坚持走下去,你最终一定会进入到下一个阶段,而不是花费了数月或数年,最终只是徒劳。

  三、后期阶段

  成功的关键所在,注意自身技能的完善和提升。

  这个阶段是最棘手的过渡阶段之一。尽管你能开发出应用程序,但你实际上想成为一名web开发人员。通过这个阶段并找到工作,你需要做三件事情:

  1、为编程寻找最佳实践,并效仿。

  你需要理解一个普通方案和最佳方案之间的差别。自己一味闷头钻研,远远比不上别人在真实工作环境下写出的产品级代码,而最佳实践样例很好地体现了这其中的差距。

  2、检验你的假设。

  因为你可能回避了一些自己知识体系中的漏洞,甚至你自己都不知道有这些漏洞的存在。你需要检查并修复这些漏洞。

  3、正确对待那些并不吸引人的技能。

  尽管它们很少被强调,但是你要过渡到一个专业环境,它们还是相当重要的。这些技能包括测试、数据建模、架构和部署,我们很容易忽略它们,但它们都是优秀开发的基础。

  要做到上面这些并通过最后阶段,关键是要不断获得他人的反馈。你需要和那些会怀疑你假设的人们一起学习工作,他们会提出尖锐的后续问题,并迫使你对自己的知识体系进行查缺补漏。

  学好编程和代码的建议

  01、读>写代码>读>写代码(日复一日)

  关于如何高效学习编程我要给出的第一条建议是在阅读代码和编写代码之间循环往复。阅读代码(书籍,博客文章,开源代码)将帮助你查看解决方案,了解最佳做法,并大致了解语言或系统。但是在你这样做之后,你需要自己实际去写代码。可以是任何东西。可以是书本编码练习或业余项目,但确保你能将之付诸于实践,并学会总结,归纳你学到的东西。

  02、对答案的渴求

  人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。

  03、不要怕陷入僵局,多请求帮忙

  推荐三件事情:第一是试着总是阅读更多关于你使用的技术,并总体掌握正在发生什么。通常,当你陷入困境时,意味着你对需要澄清的事情做出了不正确的假设。第二是咨询互联网。这一点很显然,但依然值得一提。在网上查找并询问有过这个问题的人是一个非常重要的技能。我的第三个建议是向你认识的人请求帮助。通常,你或许已经理解了技术,而且有了问题,但是你可能需要更高层次的上下文才能真正解开谜团。不要胆怯,大着胆子上前去问吧。

  04、以项目促进学习

  在我的经验中,没有什么比做自己的小项目更有学习兴趣了,更高效率了。有了一个点子并试图实现这个点子是非常具有挑战性的。它需要很强的自律心。但是,通过尝试实际做一件事情,你可以学到如何分解问题并应用技术。你面对的各种问题,以及你如何解决它们才真正是所谓的编程。此外,想要完成项目的动力是继续学习的动力。从项目获得的满足感远远超过你在抽象中学习东西的满足感。

  05、与其他程序员交谈

  学习编程的一个很好的方法就是和其他的程序员交谈。不必谈论任何特定的内容。可以是你正在学习的东西,可以是你认为很酷的东西,可以是你正在工作的东西,皆可。你会发现很多程序员并不喜欢只是聊编程。这样做可能会让你学到很多关于库,服务,编程语言和模式方面的知识。但是,最重要的是,你将了解到其他人是如何看待编程的。你会发现,你认为理所当然或从来没有考虑的事情在人与人之间是非常不同的。

猜你喜欢:

1.学习编程需要的时间以及方法

2.编程语言用什么方法学习

3.学习编程的时间以及方法

4.学习编程的方法

5.如何掌握编程的学习方法和技巧

    3798545