写给想要学编程的孩纸

2016-07-13  本文已影响126人  Mushroom94

0 序

我有几个朋友,本不是计算机专业,但是打算学习编程。我虽然推荐了书和博客,但最后还是想写写自己的心得什么的。其实我想写博客很久了,但我很不擅长写文章,每次写了一段之后,都会为了各种理由反复修改,总觉得哪里是多余的,哪里说得不准确,结果在写完之前就累趴了,这次到底能不能坚持下来呢……

不过我想,写文章和编程应该很像,虽然天赋和灵感很重要,但是在那之前更需要积累和磨练,请让我与读到这篇文章的你共勉,我们一起努力吧~

1 编程到底在做什么

编程,coding。code以前也许是表达程序的数码,但在如今的意义下指的就是程序文本,例如:

print 'hello world.'

这就是一段程序文本,也就是代码。

编辑程序文本。随便用什么文本编辑器都做得到,比如windows的记事本。不过为编程而特殊设计的编辑器提供了代码高亮、提示、纠错等功能,可以极大地提高编程效率,所以选一个合适自己的编辑器就像是挑趁手的武器一般,让人有种莫名的(中二的)满足感。

编译成可执行文件。这是编译器的工作,它是编程语言到机器语言的翻译器,对于windows来说,最终生成了我们熟悉的exe文件。根据编译器的配置不同,我们可以优化程序的性能,例如优化运行速度、或者优化内存占用等。

编译的时候可能发现有错,或者执行之后得到错误的结果,这都叫bug。程序必须被修正,这一修正的过程称为debug。这个过程是编辑和编译的不断重复,一直到结果正确为止。

这常常是一个痛苦和漫长的过程,因为阅读代码需要消耗脑力,反复地检查就是一个持续的消耗过程。更可怕的是,写代码的时候犯的错误,往往来自自己的思维盲区,debug就是一种自省的过程。

当你终于发现了所有的问题,程序欢快地工作起来的时候——
“我的天空星星都亮了
嗯,就是这种感觉。编程不容易,没有毅力的人是做不好的,但是正因为这样,编程才如此有趣。听了这一描述还不感觉很害怕的小鬼,我看好你!踏上你的旅途,成为神奇宝贝训练师编程的大师吧!

2 从什么编程语言开始

编程如同写作文。如果你想用英语写作文,毫无疑问你需要先学会英语。但学会英语不意味着就能写好作文,思路和文笔才是决定一篇文章的关键。对应到编程中,英语就是编程语言,思路和文笔就是程序的逻辑结构。

所以学校里教编程基本功时,总会开两类课,XX语言程序设计,以及数据结构。数据结构所教的逻辑,你可以任意的语言来实现。

那么应该从什么语言开始?先从语言的概述开始吧。

从编译的角度来说,编程语言分需要编译的和不需要编译的,后者又称脚本语言(script)。需要编译的语言包括c,c++,java等等,程序文本会被转化为可执行文件;脚本语言包括python,perl,ruby等等,它们不需要编译,由一个解释器逐行地读取和执行。编译的程序需要经历编译过程,但是执行起来很快,脚本语言程序不需要编译,所以很方便修改,但是执行起来慢很多。因此这两者适合于不同的需求。

如果只是为了处理小规模的临时任务,脚本语言占有很大的优势。但是在追求效率、或是执行某些特殊的任务时,我们不得不使用编译的语言。

从类型的角度来说,有强类型和弱类型的语言。例如c里面,整数是int,小数是float和double,字符串是char*,它们都需要明确地指定类型,这是强类型。但是python里面不需要明确地指定类型,由解释器来处理类型之间的转换,所以它是弱类型语言。

强类型和弱类型影响的是代码的编写方式,弱类型带来了极大的自由,但是当然要牺牲速度和内存空间的占用。

总而言之,需要根据需求来选择语言。从大的方向来说,因为计算资源的丰富化,脚本语言和弱类型语言的弱点将不再重要,而优势被放大,从而更具有潜力。

话虽如此,入门我还是推荐C语言,以及C++。关于它们之间的区别,C++可以看做是C语言的扩展,增加了一些更强大的功能,为编写大型程序提供了便利,所以应当在学完C的主要内容后再学C++。

之所以这么推荐,是因为学完C之后再学脚本语言,会感受到一种豁然开朗的自由感。反过来,就会感受到一种落差……以往是自由的状态,现在却不得不接受很多规则。

但是我不是说学习C语言会很难受,没有这个意思。C语言很严谨,所以严谨的人也会很享受这种踏实的感觉。另外,C语言让你能够直接操作内存,这意味着它的功能可以深入到底层,也就是接近于硬件的层面,这对于理解计算机的工作方式是很有帮助的。当然,如果掌控得不好,这带来了程序崩溃的危险性,所以有的人主张新手不应该学C语言。但是,限制自己的能力自然也就限制了自己的思想,对于真正希望提升自己心智的孩纸来说,C语言绝不是一个坏选择。

3 那么如何开始学习

关于C的教材,C Language Programming是很好的。
编程的学习,就是在实践中学习。仅仅掌握语言的规则是远远不够的,不利用编程来解决问题,就学不会编程时应该有的思维方法。
关于这一点,其实没有太多要谈的内容,因为这是不能传递的信息,只有自己亲手去做过,才能体会到个中滋味。

在之后的几篇里面,我就写一写C语言的学习心得吧~

上一篇 下一篇

猜你喜欢

热点阅读