Unix环境特色应用

1.7.2 Unix环境特色应用

Unix系统中总有一些区别于其它操作系统的特色应用,尤其是一些系统调用,包括:
1. 多进程。
多进程是并发程序设计的基础,包括环境变量、创建销毁进程和进程同步等。
2. 多线程。
多线程常常使用在Linux环境下,在Unix中极少使用。
编程浪子:Unix一般应用于特殊机器,这类机器有一个共同的特点,就是资源利用比率极度丰富,夸张点讲就是随你挥霍(编程浪子:当然这是夸张的说法,你可别因此就乱遍一些太浪费资源的程序)所以这上面的并发程序一般以多进程为主。而Linux一般用于X86服务器,资源利用比率相对较小,或者在嵌入式机器中,资源绝对量缺乏,所以常才用多线程。
这里涉及到一个概念,就是资源利用比率,不是资源绝对数,而是资源总利用量与之的比值,比如同样的进程,在1G内存的机器运行1个,和在4G的机器运行100个的资源利用比率是不一样的。
编程浪子:买房子的人都知道,即使一个小区的环境绿化特别好,但如果住的人特别多,那分摊到每个业主头上就没有多少了。
3. 时钟和信号
包括系统时钟、精确时钟、信号种类和信号处理方法等。
4. 管道
这是一种古老的进程间通讯方式。
6. IPC对象
大名鼎鼎的三贱客:消息队列、信号量、共享内存。
7. 字符界面
就是curses或者ncurses库,在字符屏幕上画界面用的。
8. 套接字编程
传说中最最火爆的网络编程是也,包括TCPUDP和并发套接字设计,当然还有原始套接字,但一方面他难度大,另一方面他的应用面相当的小,除非你想做黑客或者做网络底层开发,否则碰上套接字你有多远就躲多远。
编程浪子:对于像原始套接字这样的东西,都有一个共同的名字“屠龙之技”,难度大而无用武之地。
9. 数据库编程
与网络编程同样火爆的存在,很多时候Unix编程就是数据库编程。现在数据库应用的那么广泛,有服务器的地方就有数据库,而有Unix的地方就有服务器,所以Unix编程大多离不开数据库编程。
WindowsODBCJava下有JDBC,无论什么数据库全部通杀,但是UnixC语言编程不行!必须为每一款数据库提供专门的
但是
Unix下的数据库编程与各大数据库息息相关,
JOJO巴:朱老师,这些内容都会讲吗?
编程浪子:非也,非也,因为本次培训叫作“《精通UnixC语言编程与项目实践》学习笔记”,所以只讲教材中有的,教材中没有涉及的,以后再考虑,所以:多线程、字符界面库和数据库编程本次培训不考虑。
 

1.9 是不是在Unix下用C语言编程要比其它编程都麻烦,有人说用Java需要3万行的代码,用C需要10万行才可以完成。

麻不麻烦的要具体问题具体分析,就代码量而已,C语言编程绝对是最多的,其次是C++,而Java无疑是最少的,原因码有这么几点:
1. Java的支持平台做了太多的事情,像什么对象分配与回收、内存管理等等相当多的事情不需要编程者考虑了。类似的.net的支持平台也做了相当多的工作。美妙的黄金时代。
2. Java提供了太多的基本类库和扩展内库供开发者使用,夸张一点讲,天上的星星有多少,Java的类库就有多少。神奇的白银时代。
3. C++有自己的模板库,诸如什么列表字符串之类的就不用麻烦程序员大驾了。可怜的青铜时代。
4. 可怜的C语言,只有可怜巴巴的几个函数库,连字符串类都没有,什么东西都要亲历亲为。痛苦的黑铁时代。
5. Windows下的IDE环境为传统编译语言提供了极大的库函数支持,比如VCMFCDelphiVCL,虽然数量和功能都有限,但好歹是一个进步。
6. UnixC语言除了系统调用还是系统调用,“一切皆文件”在一定程度上简化了对设备的操作,但也无力回天,改变黑铁的命运。
7. 有越来越多的开源软件为UnixC语言提供库函数支持,只可惜他们没有形成垄断,也就没有形成标准,也就只能在一定范围内传播,于大势事无补。
但是,以上理由决不能说明UnixC编程就麻烦,每种语言都有自己的特点,都有其优点和缺点,虽然UnixC语言编程在库函数支持和代码行长度上有所不足,但是她在执行效率等方面却有天生的优势,所以仍然活跃在众多领域当中。
编程浪子:在百晓生的兵器排名谱上,第一为Java剑、第二为C++刀,第三就是C语言枪,前三强的位置还没有变化过。
取长才能补短,正视缺点才能前行,所以针对Unix下库函数缺乏的特点,本教材专门设计了一套库函数供编程时使用,希望对各位有所帮助。

1.10 Windows编程和Unix编程,C语言编程和C++Java编程,到底哪个好

无所谓好与不好,每人都有自己的领域,我设计程序时考虑的是“适用”而不是“硬要用”C或者用Java。比如一些“XX管理系统”,一般考虑WebJava,而一些实时性要求很强的,则选择C。如果涉及复杂界面的我用C++Builder(可惜没落了),如果涉及游戏界面时我会选择VCSDKDirectX等等。当然,如果选择几种语言都差不多的时候,我也会义无反顾的选择平时最熟练的一种。
每个初学者都有这样的疑问,到底学哪个好呢?好学者甚至会在论坛上提问,于是引起大片口水战。其实根本就不用问,想学哪个就学哪个,想用哪个就用哪个,觉得不顺手就换一个。
编程浪子:无论是倚天剑还是屠龙刀,无论是打狗棍法还是降龙掌法,都是为人服务的,人们应该掌握它们,而不是被它们掌握。
义愤填膺的游客:你说的轻巧,你不知道掌握一门语言或者一个开发工具(比如VC)是很麻烦的事情,需要半年乃至几年的学习。
学习计算机基础,学习第一门语言,也许需要这么久,但是掌握一门新的语言或者新的开发工具就决不能再用这么久了,要知道当前计算机知识大爆炸,新知识新技巧新应用层出不穷,甚至很多东西只是昙花一现,如果每个技巧都需要几年的时间去掌握的话,那就只有被淘汰了。
要避免淘汰,可以从几个方面入手:
1. 打牢基础。就目前的情况而言,所谓的“新知识”其实都是在基础知识之上的某些专业的精炼,并没有改朝换代的内容出现,所以一旦打下了坚实的基础,学习任何一个“新”技术都易如反掌。
2. 快速学习。这就要求各位具有快速学习能力,包括记忆力、理解力和学习方法等多方面的内容,具体将起来不是三言两语说的清的,本基本就不再阐述了。
3. 选择一门比较稳定的内容。这叫以不变应万变。
编程浪子:告诉大家一个好消息,UnixC语言编程知识的更新速度相对稳定多了,大家学会了这个,至少在相对长的一段时间内不用考虑被

1.11 Unix下用什么开发工具,在哪下载

从大家进入大学开始,开发工具的思想就已经深入人心了,从TC2.0BC3.1VB6.0VC6.0CB6.0JB6.0再到Delphi2009VC2008Eclipse3.4,集成开发环境的概念已经深入人心,对某些人来说,集成开发环境就是语言,比如:
地球人甲:你用什么语言编程程序啊?
地球人乙:我用VC遍程序,你什么语言编程?
地球人甲:我用Eclipse
但是,在Unix下,就目前而言,暂时还没有引起全球轰动效应的集成开发环境,即使说有,那也只能说是办自动化的makefile了。
所以,UnixC语言编程,不使用集成开发环境,就手工打“cc”或“make”!
当然,整天面对一个黑洞洞的字符界面,是个人也会发疯的,所以我们可以充分利用Windows桌面机的优势,将UnixWindows合作编程,比如:
1. 编辑软件。可选择Windows下的UltraEdit或其它优秀编辑软件,也可以选择UnixviLinuxvim
2. 传输软件。如果在Windows下编辑程序,那么就需要将程序上传到Unix服务器上,可选择的软件有:Windows自带FTPWindowsUltraEdit等自带FTP功能的编辑软件、WindowsFTP客户端软件,比如FlashFXP等、LinuxSamba服务器。
3. 远程登录软件。一般情况下我们会在Windows桌面机上远程登录Unix服务器,目前的登录软件有:Windows自带telnet网络终端SecureCRTSecureNetTermNetTerm等。
所以的编程套接准备,我们都将在后面的准备篇中一一描述,请大家拭目以待。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值