关于软件开发

发表时间:2015-10-29  投稿人:万硕   部门:        编辑:    点击量:3073  

软件开发的基础知识


软件因计算机而存在,而计算机的实质是数学,所以计算机的知识本质上就是数学知识, 也可以这么说数学知识也是计算机的基础知识,计算机的基础知识也是软件的基础知识。在 软件发展的过程中,软件的知识也在慢慢地积累,很多软件知识与数学并无直接的联系,而在这里我们所要说的就是纯软件的基础知识。

我们可以把软件的知识分为两个部分,专业技能知识和领域知识或说行业知识。

1,专业技能知识

一门编程语言及库

你可以在书店里找到各色各样的关于编程方面的书籍,但是我建议你只需要深入地掌握 一门便可,而且任何程序员都需要熟悉C语言。你所深入掌握的语言可有多种选择。如果你从事 的是驱动程序开发,我想必须要掌握汇编语言,C语言也是个不错的选择,而如果是做UI的话 C++也许更好,Java语言比较适合网络程序的开发,当然JavaScript在google肯定很受推崇。

对于程序员来说,编程语言就相当于游侠手中的武器,可以是长剑,也可是以是短剑,可以是 大刀,也可以是匕首。这些武器各有所长,而要发挥这些武器的长处必须基于一套路数上,那么 对于程序员来说就是基于某一种编程语言的代码库。如GNUC的库就是libc或ulibc。如果你是 用C语言,而且你是在类UNIX平台下开发,那么你就必须正确理解libc的工作原理,你代码里 所调用的每一个函数的输入与输出,可能的错误,可能的歧义,对系统可能产生的影响。比如某 一个函数是否是可再入的,还是不可再入的,如果出现了多线程同时调用的情况会发生什么错误 等等细节上的问题。

一种编程思想

全世界都惊叹于毛泽东的领导和军事才能,而在他的才能表象之后是什么,是他的革命 精神,是他的睿智的思想。编程也一样,如果没有了编程思想就没有了指导前进的动力,就没 有了创造的灵感的土壤。软件知识发展到现在比较常用的编程思想就是结构化(模块化)和面向 对象化(设计模式)。

有些语言是在模块化大行其道的历史背景下被发明出来的,如C语言,而有些语言则是为了 满足面向对象的编程思想而构造出来的,如C++。有一部分程序员会认为C语言是结构化的编程 语言无法实现面向对象的编程思想。其实不然,C语言同样可以很好地实现面向对象的编程思想, 只不过有些面向对象的工作由程序员来做而已。同样,面向对象的编程语言也可以用于写模块化 的程序。

一种信仰

就我所接触过的系统里,Windows我只会安装,使用,VC/VB也只能做一些简单的开发, 而MACOS体验过一次安装,不过最终还是失败了,iPhone的系统还没有机会体验过。曾经在 AIX下做过开发,目前正在Fedora9下做开发,目标板的CPU是SH4,将来也可能是MIPS。

不管是MACOS,Windows,UNIX,Linux等都有各自的追随着,我把这种现像称为信仰。
如果你每每解决一些比较棘手的问题,都会 有一种成就感,这是在Windows平台下感受不到的。 它的安装,启动,配置,安全,如引导程序GRUB,ftp,telnet,sshd,smbd,named等等服务 器的配置,网络安全的配置等等。

如果你要在Linux下进行开发,你必须了解Linux的API,标准库,也就是libc。如果你 的程序是多线程的,你还得掌握libpthread.so里的函数使用方法。GCC,GDB,LD,AS,AR,以 及Makefile和make等等工具的使用。如果你能掌握find,awk,sed,grep,od,nm,objdump 等实用工具的话,将会大大提高你的工作效率。

总之一句话,一种编程语言及库,一种编程思想和一种信仰。一切OK!