zoukankan      html  css  js  c++  java
  • 系统程序员成长计划背景知识

    转载时请注明出处和作者联系方式
    文章出处:http://www.limodev.cn/blog
    作者联系方式:李先静 <xianjimli at hotmail dot com>

    对于是否写这样一章,我犹豫了很久,最后考虑到这个系列是针对新手而写的,不应该对读者做过多假设,这些基础知识是必须掌握的,不能不介绍一下。如果你已经了解它们,可以放心的跳过本章。如果你是新手,请认真学习本章提到的内容。

    基础知识

    C语言。千万不要认为C语言过时了,它始终是开源社区,特别是系统软件和嵌入式系统中的王者,在可以预见的未来,C语言将持续焕 发出生命力。有些外行认为C语言不适合开发大型软件,这是大错特错了,操作系统内核,虚拟机,数据库管理系统,图形引擎和WEB服务器等大型软件几乎都是 用C语言开发的。相反C语言不适合开发小程序,这时候脚本语言更能显出威力。C语言能经久不衰,自有它的道理:

    C语言是最简单的语言之一,大部分编程语言在出现时都以其简单而获得好评,几乎全部都随着时间的推移变得越来越复杂,C语言经过数十年的发展,却始 终保持其简洁和优美。初学者认为C语言难学,其实主要是对计算机本身不理解,花点时间去学习一下计算机组成原理和操作系统原理,再来学习C语言就很简单 了。一旦掌握了它,你会发现C语言的每项特性都是必须,常用的,根本不需要记忆任何不必要的东西,它的特性真是减无可减了。

    C语言是运行时效率最高的编程语言之一。同样的算法,C语言通常比其它语言更高效,这也它作为系统软件主流编程语言的原因之一。有些动态语言号称比较C语言更快,那都是骗人的,拿一个特定算法作为例子不足为证。选择是高效的算法是根本,但C语言更能把高效发挥到极致。

    C语言是最直观的语言之一。C语言能够直观的表达程序员的想法,不像其它一些语言,一行简单的代码,你不清楚里面到底做了什么,不清楚它将花多少时 间执行。C语言的直观性很好的满足了程序员好奇心,使用C语言你更能感觉编程是一种艺术。一切尽在掌握之中,更能满足你的成就感。

    在系统程序员炼成计划中,前面部分都是使用C语言作为示例,读者应该找本C语言入门书籍看看,可以先通读一遍,不求甚解都可以,随着后面的课程而深入的学习。

    数据结构与算法。不管使用什么设计方法和开发过程,数据结构与算法都是软件开发的基石。打好基础在以后的工作中会事半功倍。后继 课程也都是这些基本数据结构和算法为中心,讲述如何用这些基本的材料构建大型系统。读者暂时无需精通数据结构和算法,先找本书看看,了解一下像双向链表、 动态数组、队列、堆、栈、hash表、排序和查找的基本原理就行了,后面我们会以这些数据结构题材反复的练习。

    开发环境

    本系列文章重点讲解软件开发的基础知识,这些知识不依赖于特定的平台和开发环境,读者可以根据自己喜好来选择,我们推荐读者使用下列开发环境:

    操作系统使Linux。Linux是最适合程序员使用的操作系统,它是开源的,有多种不同的发行版可以免费使用,这些发行版默认安装就带了开发工具。学习Linux本身就需要一本书,如果你从来没接触过Linux,也不用惊慌,花几个小时学会十来个常用的命令就够了,其它的以后慢慢再学。

    编辑器使用VIM。编辑器的功能是创建源文件,也就是把我们编写的代码输入到电脑中。vim和emacs是Linux下最流行的 代码编辑器,vim入门更简单,功能也很强大。它支持查找剪切替换等基本编辑功能,也支持符号跳转和代码补全等高级编辑特性。vimtutor是最好的入 门教材,初学者跟着这个tutor学习一遍就可以用它来编程了,等用得比较熟练之后,再去掌握那些高级功能。你掌握得越熟练,你就能更高效的工作,这个投 资是值得的。

    编译器使用gcc。编译器的功能是把源代码翻译成计算机可以“读懂”的机器语言。在Linux下可用的C编译器有好几个,gcc 是其中最流行的,大多数发行版都默认安装了gcc。gcc的参数很多,看起来很复杂,我们只掌握最简单的用法就好了,大概像这样的:gcc -g test.c -o test。

    调试器使用gdb。调试器的功能是帮助程序员定位错误,这是最后一招,也是最不期望的一招,使用调试器越多通常说明你的水平越 差,不过对初学者来说,掌握这个工具必不要可少的。gdb的功能强大,推荐读者使用命令行的gdb,它更灵活更方便。读者先掌握如何设置断点、显示变量和 继续执行等基本操作就行了。

    工程管理使用make。make是Linux下最流行的工程管理工具,Makefile是make的输入文件,它本身就相当于一 种编程语言,执行make相当于调用其中的函数。编写Makefile是一件繁琐无趣的工作,幸好我们不用学习它,后面我们会讲解make的改进版 automake,现在你能写出下面这种简单的Makefile就行了:

    all:
    	gcc -g test.c -o test
    clean:
    	rm -f test
    

    在这里,你可以把all看作一个函数名,gcc -g test.c -o test是函数体(前面加tab),它的功能是编译test.c成test,在命令行运行make all就相当于调用这个函数。clean是另外一个函数,它的功能是删除test。如果你有时间学习一下Makefile当然更好,如果没有时间,了解这 么多也够了。

    我在培训初学者时,如果他从来没用过Linux,没有用C语言写过程序,我会给两到四周时间学习上述内容。如果读者处于类似的水平,也不急着看后面的课程,好好学习一下这里提到的内容。

  • 相关阅读:
    web服务器-Apache
    nginx优化
    nginx下载限速
    nginx-URL重写
    HDU 5358 First One 求和(序列求和,优化)
    HDU 5360 Hiking 登山 (优先队列,排序)
    HDU 5353 Average 糖果分配(模拟,图)
    UVALive 4128 Steam Roller 蒸汽式压路机(最短路,变形) WA中。。。。。
    HDU 5348 MZL's endless loop 给边定向(欧拉回路,最大流)
    HDU 5344 MZL's xor (水题)
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167498.html
Copyright © 2011-2022 走看看