软件开发的基础知识

最基础的。根本的。
本人是熟悉电脑操作,
准备攻读软件开发,
18岁高中生,基本上很多知识不懂.
跪求高手教导下我。
因为我很喜欢软件开发,望有高人指点.
从最根本说起,要看什么书、
需要什么知识。
- -。哎

软件因计算机而存在,而计算机的实质是数学,所以计算机的知识本质上就是数学知识,
也可以这么说数学知识也是计算机的基础知识,计算机的基础知识也是软件的基础知识。在。软件发展的过程中,软件的知识也在慢慢地积累,很多软件知识与数学并无直接的联系,而。在这里我们所要说的就是纯软件的基础知识。
我们可以把软件的知识分为两个部分,专业技能知识和领域知识或说行业知识。
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。如果你
的程序是多线程的,你还得掌握libpthread.so里的函数使用方法。GCC,GDB,LD,AS,AR,以
及Makefile和make等等工具的使用。如果你能掌握find,awk,sed,grep,od,nm,objdump
等实用工具的话,将会大大提高你的工作效率。
这,就是我的信仰。
总之一句话,一种编程语言及库,一种编程思想和一种信仰。一切OK!
2,领域知识/行业知识
我记得我的第一份工作是银行的交易开发程序员,当时是一家外包公司把我外派到工商
银行,我对工商银行的业务一无所知。不过初出茅庐不怕虎,硬是一个人完成了一个我一无所知的项目,而仅凭我对自己技术实力的自信。
但事后我却有些后怕,因为我并不明白,为什么那个整数要乘以个0.456存入到数据库,
也不知道银行对数据的精确度是多大,等等细节上的问题我一无所知。那我只能求上天保佑,哪天不要多扣了人家的钱,天啊,这事我也做了?!当然不至于那么严重:)
后来我确实发现自己对于银行这套业务系统了解起来比较吃力,我宁愿花点时间写些小
的C程序也不愿花时间去肯那些苦涩的业务流程文档。所以在那家公司呆満一年后我辞职了。
我想,大部分程序员都想做一些相对技术含量高的开发工作,像那种整天与数据和数据
库打交道的开发工作,随便有点志向的程序员也不愿意去做,当然如果钱足够多的话我还是愿意的:)
但现在我发现我错了。因为这部分也是软件知识的一部分。就拿我目前的工作来说,技术上不会有太大的困难,但是蓝光规格以及其涉及到的规格相当的多,恐怕没有十年时间无法做到精通。这就是领域知识或说是行业知识。有些人一生只做一件事,还不一定能做好,而我现在只做了不到两年,虽觉时间不长但也不短,纵是一无所获。
所以,我觉得自己仍不是一名合格的开发者。软件开发的基础知识包括专业知识和行业
知识,如果基础知识不完整,那么这个程序员不会是一个合格且高效的程序员。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-25
天,我们就从最基础的一棵树说起---构造器。构造器对于我们每一个人来说都是司空见惯,甚至经常被忽略或视而不见。不过又有多少同仁,对它的调用过程了然于胸呢?知其然又知其所以然,才是通向更高境界的必经之路。废话不多说了,现在就让我们开始呼吸森林深处的古老而又年轻的气息吧。

首先,让我们聊一聊,继承体系中构造函数调用的过程。

构造函数的调用是由上至下的顺序调用的。就是说先调用父类的构造函数再调用子类的。如果继承体系为多层,那么当某一类实例化时,编译器会从继承体系最顶端的根类进行构造函数的调用,直至向下达到要实例化的类为止;在这个过程中,每个构造函数都会初始化它自己类中的字段。

看到这里,有人肯定会问那么调用过程中编译器如何决定该调用哪个构造函数呢?毕竟有些类不止一个构造函数。下面就谈一下这个问题:

构造函数调用方式分为两种显式调用和隐式调用。因此,构造函数的调用过程依赖于代码中是显示调用父类的构造函数还是隐式调用。咱们先来说一下隐式调用,何谓隐式调用呢?大家都在经常用,就是写子类构造函数的时候没有具体指定父类的构造函数,如public Test(){};编译器编译时会如此写:public Test():base(),那么调用父类的构造函数为编译器默认的构造函数(如果父类没有定义构造函数的话)或参数列表为空的构造函数。下面来说一下显式调用,如public Test():base()或public Test(String name):base(name),那么就会调用指定的父类的构造函数,这里面需要注意的是name字段可以为父类的私有字段。

还有一些需要补充的:

public Test(String name,String passwd):base(name)

{....}

public Test(String name):this(name,"123")

{....}

这两个构造函数如何调用,就留给各位自己去研究吧。

关于构造函数的内容还有很多,剩下的其他日志中再谈吧,希望对各位有所帮助
第2个回答  推荐于2017-11-23
一是看书,不打游戏。
二是练习,不听MP3。
三是上技术论坛,不看电影。
四是学好数学英语,不交女朋友。
五是持之以恒,不去打篮球。

总之,玩软件的差不多就是人不食人间烟火的机器人。还要有满腔的热情,刻苦的钻研。不容易啊。

基础书有很多,看下这个好不好:

软件技术基础教程 By 周肆清, 曹岳辉, 李利明
http://books.google.ca/books?id=245EGR2qxNkC&pg=PR5&dq=%E8%BD%AF%E4%BB%B6%E5%9F%BA%E7%A1%80&hl=en&ei=qCpLTMaRPJK4sQPusu1I&sa=X&oi=book_result&ct=result&resnum=4&ved=0CDQQ6AEwAw#v=onepage&q&f=false本回答被提问者采纳
第3个回答  2010-07-25
至少你要精通一至二门语言哇!不要求多,要求要精!现在外面写软件用到最多的就是
JAVA,C/C++ 等。还要会写人机交互界面啊,这个嘛,当然还要一定的审美水平,不然写的界面不好看谁用你的软件啊,是吧?
第4个回答  2012-11-18
华夏博大3G学院,是教材经过清华大学出版社出版的IT培训机构。
java,.net,安卓开发,iOS开发等等课程都有的
教学质量也相当的不错,学后还不限次数推荐就业,建议可以去了解下I