导航:首页 > 编程语言 > 精通一门编程语言学习

精通一门编程语言学习

发布时间:2023-04-12 07:00:57

① 如何才能学会编程并且精通,编写自己的软件

程序员学习编程的步骤 在中国,大多数程序员都是自学成材的,这其中的艰辛自不必多言,如果能够有一个正确的学习步骤,循序渐进,便能省却不少力气了. 1:如果你能够熟练的使用Windows的话,你就可以开始你的程序生涯了! 2:首先从C语言开始。有的朋友可能认为C语言太难了,应该从VB开始。虽然,对于一个初学者来说,用一些控件堆砌成一个小软件,是有一些成就感,但是,基础才是最重要的!C语言对于数据类型的描叙,远比VB里面说的更为全面,清楚,明白,而这些却是编程中的根本! 3:学C语言,从数据类型,基本表达式,再到条件语句,循环语句,然后学习函数,再加上一些简单的数组知识,就可以了!一句话,到现在为止,你只要理解结构化程序设计的思想也就够了! 4:有了以上的基础,就要开始学汇编了。汇编开始的时候是很难,那些各种各样的寄存器,分段的内存地址,是很难理解,可是这些知识理解了以后,后面的内容就简单了,学习8086的那些指令,再加上一些伪操作,还有DOS和BIOS中断的调用,就可以看懂书上的汇编程序了。(着重是理解算法,对于后面的那些汇编的应用有兴趣的可以看一下!)到此,你应该会对计算机的理解更深一层! 5:有了汇编的基础,再来学习C语言中的精华部分----指针,可谓如鱼得水了。现在你要对C语言全全面面的学一遍了,谭版的教材要从头到尾认认真真的看两遍以上。 6:学完以上的内容,有必要研究一下数据结构了,线性表,堆栈,队列,树,图,二叉树,等等,都要滚瓜烂熟!(最好是清华严蔚敏老师的那本教材) 7:请时刻记住:浮躁是学习编程的大忌! 8:现在,你应该学习一些数据库的知识,还有一些常用的算法了! 9:如果以上的知识你都学精通的话,就可以开始C++的课程了,找本C++上手的书,用一个星期的时间大概了解一下C++,然后找一本VC上手的书,再花一个星期的时间学习VC的界面和用法,就可以做一些简单的应用了! 10:要想学好VC,没有扎实的C++知识是不行的,以下书籍是VC程序员必须翻的烂熟的:C++Primer,Effective C++,Thinking in C++,More Effective C++ 深入浅出MFC。 11:深刻理解C++面向对象的思想! 12:编程的时候,出错是难免的,所以,MSDN一定要熟练使用;好的代码风格会使调试的时候,更加简单的查错,所以,一定要养成良好的编程风格! 13:如果你严格的走好了以上的每一步,你才踏上了编程的门槛,可以混口饭吃了! 至于在以后,编译原理,操作系统,还有软件工程等等基础知识,是必不可少的!

② 如何学好一门编程语言

学好一门编程语言是十分不容易的,但是如果学会了,它的实用性是很强的,下面我为大家整理了学好一门编程语言的办法,大家可以参考借鉴。


如何学好一门编程语言?

一、多总结

多总结才能加深理解、增强记忆。举例,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 Proct struct {

name string

price float64

}

procts := []*Proct{{"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)

//Go

myNumber, myString := 123, "abe"

fmt.Println(myNumber)

fmt.Println(myString)

以下是 Scala 和 Go 定义和实现函数的区别:

//Scala

val increase: Int => Int = (x: Int) => x + 1

println(increase(8))

//Go

var increase func(int) int = func(x int) int { return x + 1 }

fmt.Println(increase(8))

除了在 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、 等其实都是面向过程的,虽然 Go 也提供有面向对象的支持,已经习惯了面向对象编程的,刚开始学 Go 语言需要特别留意这一点。

四、多看开源代码

学一门语言就是学一种思维方式,如今 GitHub 上可下载的开源代码海量级,通过看别人的代码,学习别人是如何解决问题的,养成用该语言思考的习惯,另外还能学习到一些非常有用的技巧,比如我在看一个 Go 语言性能测试框架代码时看到有以下写法:

func main() {

defer profile.Start().Stop()

...

}

这个意思是指刚进入程序时执行 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

{

logger.info("start");

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

if (!this.avaliable)

{

try

{

//如果连接不可用,则等待2S,然后重新检测

Thread.sleep(2000);

}

... ...

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

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

六、多练习、多实践

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

其它的方法还有:

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

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

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

③ Python多长时间可以学会精通

很多初学者都有这样的疑问,Python需要多长时间可以学会,达到精通呢?
学会Python需要多长时间?
如果是自学,从零基础开始学习Python的话,依照每个人理解能力的不同,大致上需要半年到一年半左右的时间,
当然,如果有其它编程语言的经验,入门还是非常快的,大概需要2~3个月可以对上手Python语言编写一些简单的应用。
无论是新手还是有一定基础的朋友,有一个有经验的人带着自己学习,或者参加我们的玩蛇网Python培训课程,都会1个月左右入门,3个月左右对Python有一个全面系统的了解,达到自己动手编程解决问题的能力。
精通Python需要多长时间?
任何知识都是基础入门比较快,达到精通的程序是需要时日的,这是一个逐渐激烈的过程。
精通任何一门编程语言,都需要通过大量的实践来积累经验,解决遇到的各种疑难问题,看别人的源码,分享自己的分码的这个过程,才能够精通Python的方方面面。从编程的一开始,就应该不断的动手去编写代码,不停的去实践,不停的去修改,不停的总结经验,最终才能熟能生巧,达到精通。
一个对Python程序能算的上精通的程序员,对同样一个问题,他知道很多种解决问题的方法,并能从中选择最有效率的方法!

④ 如何更加有效的学习一门编程语言

学习编程语言是一项技能,在学习过程中,那种获取新知识后的快感也是我们所想要的;反之,就会陷入负面情绪,不愿写代码的境况。那么,我们应该如何做到有效且高效地学习一门编程语言呢?

阅读全文

与精通一门编程语言学习相关的资料

热点内容
被子收纳袋压缩真空 浏览:28
h1z1选什么服务器 浏览:484
苹果版三国杀怎么在安卓上下载 浏览:728
安润国际app在哪里下载 浏览:438
iospdf教程下载 浏览:332
加密货币换手率300表示什么 浏览:727
手机wps新建文件夹存照片 浏览:399
单片机rgbled 浏览:963
怎么通过文件加密后发给微信好友 浏览:90
用虚拟机编程 浏览:821
公司代理服务器有什么要求 浏览:244
服务器和数据库怎么联系 浏览:633
hbase配置压缩 浏览:918
java000 浏览:479
华为手机文件夹的字体颜色 浏览:636
安卓怎么换相机 浏览:935
华为相片文件夹怎么删除重复照片 浏览:316
plc编程视频教程大全 浏览:940
直播用哪个app播放背景音乐 浏览:852
点歌机系统app在哪里下载 浏览:613