如何学习C语言
很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言? 我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。
经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,你想写出优秀高效的程序,这简直就是天方夜谭。
为什么C语言如此重要呢? 第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。
第二:C语言能够让你深入系统底层,你知道的操作系统,哪一个不是C语言写的?所有的windows,Unix,Linux,Mac,os/2,没有一个里外的,如果你不懂C语言,怎么可能深入到这些操作系统当中去呢?更不要说你去写它们的内核程序了。
第三:很多新型的语言都是衍生自C语言,C++,Java,C#,J#,perl...哪个不是呢?掌握了C语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了,这个再一次验证了C语言是程序设计的重要基础。
还有啊,多说一点:即使现在招聘程序员,考试都是考C语言,你想加入it行业,那么就一定要掌握好C语言。
那么究竟怎样学习C语言呢? 1:工欲善其事,必先利其器这里介绍几个学习C语言必备的东东:一个开发环境,例如turbo C 2.0,这个曾经占据了DOS时代开发程序的大半个江山。
但是现在windows时代,用turbo C有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。
建议使用Visual C++,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。
一本学习教程,现在C语言教材多如牛毛,但推荐大家使用《C语言程序设计》谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。
除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。
我向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows下的trubo C,初学者甚至不用装其它的编译器,就可以练习编程了,非常适合初学者。
还有一个“C语言学习系统”软件,不过感觉只是一个题库系统,如果你觉得题做的不够,不妨也可以试试。
2:葵花宝典学习计算机语言最好的方法是什么?答曰:读程序。
没错,读程序是学习C语言入门最快,也是最好的方法。
如同我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。
当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。
3:登峰造极写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。
是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后写值读值,仅此而已。
这不过是熟悉一些io函数罢了。
那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前有10个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这10个人问:“谁叫张三”。
第2种方法:你挨个去问“你是不是张三?”,直到问到的这个人就是张三。
第三方法:你去挨个问一个人“你认不认识张三,指给我看”。
不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。
刚才这个问题类似于数据结构和算法中的:Map数据结构,穷举查找和折半查找。
所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。
最后给大家推荐严尉敏的《数据结构》清华大学出版社,希望每一个想成为程序设计高 手的人研读此书。
[编辑:赵晋军] 二,语言学习方法 谈谈偶的学习方法,抛砖引玉! 学习不论讲不讲方法,最终都能学会。
但是别人1个月学会了,而你却100年才学会,这不就晚了么?:)所以说,学习还是要讲究方法的。
学习方法正确,事半功倍;学习方法不正确,事倍而功半。
什么才是学习C语言的捷径?我的答案是看书。
书中所写,是前人数十年经验所写,看十本书,就相当于汲取了前人数十...
免费/开源软件是什么意思?要注册吗?要付费吗还是真的免费?好多说...
1997春天,自由软件社团的一些领导者聚集到加利福尼亚州。
这个社团包括EricRaymond,TimO'Rerlly,VA Research的总裁Larry Augustin等人,他们所关心的是一种寻找方式,来向以前躲避自由软件思想的人们推广这种思想。
他们担心,自由软件基金会的反商业信条会让人们对自由软件敬而远之。
在Eric Raymond的坚持下,这群人同意他们所缺乏的是市场营销活动,这个活动的目的是赢得思想,而不仅仅是市场份额。
最后讨论的结果产生了一个新的术语来描述他们所推进的软件:Open Source(开烦扰软件)。
他们制定了一系列的指导原则,用来描述哪些软件可以有资格被称为开源软件。
Bruce Perens 为制定开源软件的定义做了很多基础性的工作。
GNU工程的正式目标之一就是创造一个自由可用的操作系统,以作为平台来运行GNU软件。
从软件引导(softwera boottstrapping)的传统观点来看,Linux已经成为那个平台,L inux是在GNU工具的帮助下创造出来的。
Perens曾经是Debian工程的领导者,它所管理的Linux发行版本,只包括那些符合GNU精神的软件。
Perens已经在“Debian社会契约”(Debian Social Contract)中明确地阐明了这一立场。
开源软件的定义是“Debian社会契约”的直接产物,因此开源软件是与GNU的精神一脉相承的。
与GPL相比,开源软件的定义允许更大授权自由。
特别是当软件中混合了专有软件和开源软件时,开源软件的定义允许在它们的基础上生成更大的混合。
结果是,开源软件许可证能令人信服地允许使用和再分开开源软件,而不必考虑补偿或者信用问题。
举例来讲,你可以得到伟大的Netscape浏览器的源代码,并且把它作为连同另一个软件(可能是专有软件)一起发布出去,而用不着去通知网景(Netscape)公司。
网景为什么会希望如此呢?原因很多,最引人注目的是,这样做可以为他们的客户端代码赢得更大的市场份额。
这些代码与他们的商业软件一起工作得的非常好。
从这个角度来说,奉送源代码是建立平台的一个很好的方式。
这也是网景的人不使用GPL的原因之一。
加个免费,不用解释了,就是不要钱的
开源软件和免费软件有什么区别?免费使用的软件算是免费软件吗?...
什么是开源软件 开源软件,英文表示是open source software,简称为OSS,直接的字面意思是公开源代码的软件。
软件既然连源代码都公开,因此开源软件具备可以免费使用和公布源代码的主要特征。
1997春天,自由软件社团的一些领导者聚集到加利福尼亚州。
这个社团包括EricRaymond,TimO'Rerlly,VA Research的总裁Larry Augustin等人,他们所关心的是一种寻找方式,来向以前躲避自由软件思想的人们推广这种思想。
他们担心,自由软件基金会的反商业信条会让人们对自由软件敬而远之。
在Eric Raymond的坚持下,这群人同意他们所缺乏的是市场营销活动,这个活动的目的是赢得思想,而不仅仅是市场份额。
最后讨论的结果产生了一个新的术语来描述他们所推进的软件:Open Source(开烦扰软件)。
他们制定了一系列的指导原则,用来描述哪些软件可以有资格被称为开源软件。
Bruce Perens 为制定开源软件的定义做了很多基础性的工作。
GNU工程的正式目标之一就是创造一个自由可用的操作系统,以作为平台来运行GNU软件。
从软件引导(softwera boottstrapping)的传统观点来看,Linux已经成为那个平台,L inux是在GNU工具的帮助下创造出来的。
Perens曾经是Debian工程的领导者,它所管理的Linux发行版本,只包括那些符合GNU精神的软件。
Perens已经在“Debian社会契约”(Debian Social Contract)中明确地阐明了这一立场。
开源软件的定义是“Debian社会契约”的直接产物,因此开源软件是与GNU的精神一脉相承的。
与GPL相比,开源软件的定义允许更大授权自由。
特别是当软件中混合了专有软件和开源软件时,开源软件的定义允许在它们的基础上生成更大的混合。
结果是,开源软件许可证能令人信服地允许使用和再分开开源软件,而不必考虑补偿或者信用问题。
举例来讲,你可以得到伟大的Netscape浏览器的源代码,并且把它作为连同另一个软件(可能是专有软件)一起发布出去,而用不着去通知网景(Netscape)公司。
网景为什么会希望如此呢?原因很多,最引人注目的是,这样做可以为他们的客户端代码赢得更大的市场份额。
这些代码与他们的商业软件一起工作得的非常好。
从这个角度来说,奉送源代码是建立平台的一个很好的方式。
这也是网景的人不使用GPL的原因之一。
这在社团中可不是小事一桩。
1998年下半年,曾经有一场重要的争论对Linux威胁极大,几乎Linux社团破裂。
裂痕是因出现了两个软件系统GNOME和KDE而引发的,它们两者都试图建立一个面向对象的桌面界面。
一方面,KDE利用了Troll Technology公司的Qt库,其中的一部分属于专有代码,但是很稳定、很成熟。
另一方面,GNOME决定使用GTK+库,尽管它不如Qt成熟,但是它是完全自由的库。
过去,Troll Technology不得不在使用GPL和维持他们的专有软件立场之间进行选择。
GNOME和KDE的裂痕本来会持续下去。
然而,在开源软件出现后,虽然Troll仍然控制他们想要的技术,但是Troll可以为希望Qt符合开源软件定义的人改变他们的许可证。
Linux社团两个重要部分的裂痕看来要弥合了。
[可怜]请问那位同学会装初级会计电算化的软件,最好能够提供装软件...
开放源代码与自由软件许多人将开放源代码与自由软件(freeSoftware)视为相同,但若以定义条件而言,自由软件仅是开放源代码的一种,也就是自由软件的定义较开放源代码更为严格,并非开放源代码的软件就可称为自由软件,要视该软件的授权条件是否合乎自由软件基金会对自由软件所下的定义。
开源软件定义Version 1.9 开源不仅仅表示开放程序源代码。
从发行角度定义的开源软件必须符合如下条件:1、自由再发行许可证不能限制任何团体销售或赠送软件,软件可以是几个不同来源的程序集成后的软件发行版中的其中一个原件。
许可证不能要求对这样的销售收取许可证费或其他费用。
2、程序源代码程序必须包含源代码。
必须允许发行版在包含编译形式的同时也包含程序源代码。
当产品以某种形式发行时没有包含源代码,必须非常醒目的告知用户,如何通过 Internet免费的下载源代码。
源代码必须是以当程序员修改程序时优先选用的形式提供。
故意地扰乱源代码是不允许的。
以预处理程序或翻译器这样的中间 形式作为源代码也是不允许的。
3、派生程序许可证必须允许更改或派生程序。
必须允许这些程序按与初始软件相同的许可证发行。
4、作者源代码的完整性只有当许可证允许在程序开发阶段,为了调整程序的目的将“修补文件”的发行版与源代码一起发行时,许可证才能限制源代码以更改后的形式发行。
许可证必须明确地允许按更改后的源代码所建立的程序发行。
许可证可以要求派生的程序使用与初始软件不同的名称或版本号。
5、无个人或团体歧视许可证不能都有针对任何个人或团体制在专门奋斗领域内的任何人使用该程序。
例如不能限制程序应用于商业领域,或者应用于遗传研究。
7、许可证发行伴随程序所具有权力必须适用于所有的程序分销商,而不需要这些团体之间再附加许可证签字盖章。
8、许可证不能特制某个产品如果程序是某个特殊的软件发行版中的一部分,伴随该程序所具有的权力不能只以来于这一发行版。
如果程序是从那一发行版中摘录出来的,使用或发行时用的都是那个程序的许可证,分销程序的所有团体都应拥有与初始软件版所允许的所有权力。
9、许可证不能排斥其他软件许可证不能限制随该许可证软件一起发行的其他软件。
例如,许可证不能要求所有与之一起发行的其他软件都是开源软件。
10、许可证实例GNU GPL、BSD、X Consortiun和Artistic许可证都是我们认为符合开源软件定义的许可证。
MPL也是一样。
开源软件、开源代码的开源是什么意思?
开放源码软件通常是有版权 (copyright ) 的,它的许可证可能包含这样一些限制:着意地保护它的开放源码状态,著者身份的公告,或者开发的控制。
实际上,开源软件同时涉及源码本身和开发过程,涵盖了三个方面的意义:免费分发的源代码、模块化的体系和集市式的开发--在这种开发方式中,任何地方的任何人都可以参与最终产品的制造,三个方面互相之间有密切的联系,集市式的开发过程给开源软件以强大的改错能力,因为它将程序中的错误公开给了数量巨大的观众,他们都是潜在的改错者。
另一方面,任何人都可以复用和发行开源软件的代码这一事实又支持了公众利益,因为创新的观念被整个集市所共享。
另外,"open source"这一术语还被延伸到其他智力团体中,指那些可通过公开手段获得的智力资源,比如报纸、教学课件等。
美国一些进步的评论家指出,在象网络这样的虚拟环境中,驱动系统的底层代码,尤其是广为人知的那些应用程序之间的通信协议,它们在某种意义上很象现实社会中的法规。
换句话说,这些代码对网上的行为给出了一些规范,它鼓励某些行为,而限制其他行为,就像现实社会的法律一样。
因此,开放源码带来了一个更民主的开发方式,在这种方式下,好的主意将被集体分享,而不是作为智力资本被个人秘藏着。
在这种意义上,开放源码实质上成为一种政治哲学。
开放源码的精神在于使用者可以使用、复制、散布、研究、改进软件。
最早可以 回朔到1960年代。
当时,售卖大型计算机的厂商如IBM,把一些软件及原始码一并送给客户,让客户能够因不同需求而自行更改软件。
在 1991-1992 年期间,住在芬兰的 Linus Torvald制造了第一版的 Linux 操作系统。
在一群热心的程序人员努力下,把 Linux 操作系统以及外围的应用程序逐一打造。
出名的作品除了趋于成熟的Linux 操作系统外,还有 Apache网页服务器、Perl 程序语言、MySQL 数据库、Mozilla 浏览器、OpenOffice等等。
龍族至尊