软件开发的基础知识是什么

软件开发的基础知识是什么,第1张

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

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

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等都有各自的追随着,我把这种现像称为信仰。就拿我自己来说,我信仰Linux,Linux内核的源代码对于我来说就是神话。

我觉得在Linux下工作是一件很娱悦的事情。如果你每每解决一些比较棘手的问题,都会

有一种成就感,这是在Windows平台下感受不到的。所以对于这一信仰,我觉得至少需要知道它的安装,启动,配置,安全,如引导程序GRUB,ftp,telnet,sshd,smbd,named等等服务器的配置,网络安全的配置等等。

如果你要在Linux下进行开发,你必须了解Linux的API,标准库,也就是libc。如果你

的程序是多线程的,你还得掌握libpthreadso里的函数使用方法。GCC,GDB,LD,AS,AR,以

及Makefile和make等等工具的使用。如果你能掌握find,awk,sed,grep,od,nm,objmp

等实用工具的话,将会大大提高你的工作效率。

这,就是我的信仰。

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

2,领域知识/行业知识

我记得我的第一份工作是银行的交易开发程序员,当时是一家外包公司把我外派到工商

银行,我对工商银行的业务一无所知。不过初出茅庐不怕虎,硬是一个人完成了一个我一无所知的项目,而仅凭我对自己技术实力的自信。

但事后我却有些后怕,因为我并不明白,为什么那个整数要乘以个0456存入到数据库,也不知道银行对数据的精确度是多大,等等细节上的问题我一无所知。那我只能求上天保佑,哪天不要多扣了人家的钱,天啊,这事我也做了?!当然不至于那么严重:)

后来我确实发现自己对于银行这套业务系统了解起来比较吃力,我宁愿花点时间写些小

的C程序也不愿花时间去肯那些苦涩的业务流程文档。所以在那家公司呆_一年后我辞职了。

我想,大部分程序员都想做一些相对技术含量高的开发工作,像那种整天与数据和数据

库打交道的开发工作,随便有点志向的程序员也不愿意去做,当然如果钱足够多的话我还是愿意的:)

但现在我发现我错了。因为这部分也是软件知识的一部分。就拿我目前的工作来说,技术上不会有太大的困难,但是蓝光规格以及其涉及到的规格相当的多,恐怕没有十年时间无法做到精通。这就是领域知识或说是行业知识。有些人一生只做一件事,还不一定能做好,而我现在只做了不到两年,虽觉时间不长但也不短,纵是一无所获。

所以,我觉得自己仍不是一名合格的开发者。软件开发的基础知识包括专业知识和行业

知识,如果基础知识不完整,那么这个程序员不会是一个合格且高效的程序员。

apache

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。

Apache源于NCSA>

本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个ApacheWeb站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3Consortium、FinancialTimes等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。

Apache的诞生极富有戏剧性。当NCSA>

Apacheweb服务器软件拥有以下特性:

支持最新的>

拥有简单而强有力的基于文件的配置过程

支持通用网关接口

支持基于IP和基于域名的虚拟主机

支持多种方式的>

集成Perl处理模块

集成代理服务器模块

支持实时监视服务器状态和定制服务器日志

支持服务器端包含指令(SSI)

支持安全Socket层(SSL)

提供用户会话过程的跟踪

支持FastCGI

通过第三方模块可以支持JavaServlets

如果你准备选择Web服务器,毫无疑问Apache是你的最佳选择。

Apache有名的几个项目介绍

>

这个在前面的段落介绍过了,Apache已经是他的代号了

ActiveMQ

免费开源由java编写符合JMS11标准的消息中间件。

另外,它也支持通过除java语言外的语言的使用

Ant

这个太出名了。标准的批处理工具。是一套基于java的程序打造工具

Commons

一些常用的工具类库,包括common-pool,dbcp,fileupload,Common-beans等。

Excalibur

它的主要产品是一个由java写成的,名字叫做Fortress(要塞)的轻量级的可嵌入式反向控制容器。

iBATIS

并入的一个项目,是ORM的一个很流行的工具

Geronimo

是Apache软件基金会为了创造一个兼容j2ee的容器,而整理出来的一个新成果

Jakarta

许多Java子项目的集成,tomcat,ant等就是从这里孵化出去的。

James

是一套用java开发的邮件、新闻组、消息服务器。它使用的avalon组件框架。目前支持SMTP,POP3和NNTP很快也会支持IMAP

Logging

基于java的可靠,快速,扩展性强的日志工具

Maven

是一套java开发的工程综合管理工具。它基于工程对象模型(POM)的理念

Portals

门户产品

Struts

一套通过servlets和jsp来搭建web应用的MVC框架

Tomcat

用量最大的免费的Java服务器


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10883377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存