可以在Unix下编写桌面软件吗

编程浪子:请问大家最想在Unix下编什么程序?
游客甲:我最想在Linux下编一个收音机软件。
游客乙:我最想编一个Linux下的看碟软件。
游客丙:我想编学习QT
游客丁:我想编一个三维游戏。
……
相信大家都有编写各式各样有趣程序的梦想,很多人甚至就是带着这种梦想而义无反顾的选择了计算机科学系,只是可惜大学校园一次又一次的让我们失望,“时间像白马一样流逝,而我却一个系统也未编成”,今天投身朱朱胡工作室,相信大家也是带着这样的梦想而来。
只是,你们又要失望了!我们不会教你编写收音机软件,不会教你编写DVD软件,甚至根本不会教你编写Unix/Linux下的任何图形界面编程,此处的学习将与KDEGNOME无缘。原因如下:

1.6.1 大部分程序不需要图形界面

目前Unix乃至Linux常常作为服务器而存在,因此大部分情况下只需要服务程序,这些服务程序或者提供网络后台应用,或者只面向专业专业人士,他们幕后默默的工作,不需要花俏的界面。就比如明星演唱会,明星是前台程序,而灯光师、化妆师、音响师等工作人员就是后台进程,大家想想,当你们看到明星在台上穿着漂亮、性感、暴露的时装搔首弄姿的时候,有谁注意其他默默服务的人员传什么。所以Unix下大部分实用程序运行在字符界面,我们只要知道字符界面上的程序设计就可以了。
不知名的游客:但是图形界面要比字符界面方便的多,而且现在很多软件都提供了图形方式的操作界面,怎么说不需要图形界面呢?
没错,人们都需要一目了然的操作,尤其是一些非程序员,他们还不能进入字符界面操作,所以必须提供图形程序。但是请大家注意,这些图形界面大多没有运行在服务器上,而是运行在某个远程Windows机器上,也就是说这些图形程序都是客户端而不是服务器,就如同网络游戏,漂亮的是用户PC端,而不是后台服务端。
不知名的游客:那为什么不能用Linux做桌面呢?比如Ubuntu的桌面就很漂亮,而且操作也很方便,很适合在非程序员中推广啊。
我在网上看到了Ubuntu要取代Windows的说法,还看到了Linux要在桌面应用市场与Windows一争高低,对于此类文章我一般是付之一笑,连点都懒得点击。原因无他,我一直认为Linux要在桌面上与windows分庭竞争就目前而已不过是一个笑话,就像好像萨达姆单方面宣布美国布什总统死刑一样,也许以后有Windows/Linux桌面应用并驾齐驱的一天,但是在这一天到来之前,建议大家老老实实只在服务器应用上设计程序,改变世界走向保护宇宙和平捍卫地球尊严的事情还是交给蜘蛛侠咸蛋超人葫芦娃虹猫蓝兔美少女战士去完成,我们随大流就行了。

1.6.2 大部分维护不需要图形界面

服务器一般放置在专业的机房,这个机房可能离你的办公地点只有几步之遥,可能托管在城市某处,也可能在天涯海角,总之,不在你触手可及的地方。
不过服务器的维护却是经常的事情,这个维护包括操作系统的维护、数据库的应用与维护、应用软件的维护等,有其是一些管理员,时不时登录服务器操作就是他的工作,如果大家不嫌麻烦的话,大可每次都亲自到服务器旁边去登录,比如机器托管在北京,公司开在长沙,那么每次用机器你就做T2/Z18赶到北京,update一下然后有T1/Z17回来,这边前脚刚下火车,突然想起还有个地方忘记改了,于是又要刚过去,一个月下来,不敢说维护工作怎么样,但是至少了响应国家号召,极大的扩大了内需,嗯消费就是爱国的表现,相信评个N大杰出青年之类的是没有问题。
很可惜,目前我们所处的网络时代却限制了那么多杰出青年的产生,我们可以通过远程管理的方式登录服务器,比如Windows下的远程桌面,Linux下的VNC,就是在图形方式下操作遥远的计算机,相当的方便。不过不当家不知道柴米贵,让我们算一笔帐:
假设桌面分辨率为1024×768,颜色为24位真彩色,那么存储一个桌面大概需要位数有:
1024×768×2418M
假设你的桌面每秒钟变化一次(这个速度已经相当的慢了,估计很多人都受不了),那么要求你的网速至少是18M/S,乖乖,如果你这个管理员登录服务器,那也就意味着服务器的死期到了。
不知名的游客(小声嗡嗡):可以降低分辨率啊。
下面降低分辨率和颜色,假设桌面分辨率降低为640×480,颜色为256色(8位),那么存储一个桌面大概需要位数有:
640×480×82.3M
每秒钟2.3M/S,哎,你还要不要服务器活了,干脆杀了服务器得了。
编程浪子:以上算法是未调优的图形远程桌面分析,事实上“好”的图形远程软件会才用很多补救措施,比如简单颜色度、压缩传输、局部传输(不会每次都传送全部桌面,他只会传送有变得的地方)等等方式避免网络消耗过大,不过这样势必加重服务器的负担,并且图像也不连续,而且这种做好治标不治本,徒于奔命而已。
因此可见,就目前的网速和服务器其它资源而言,采用图形远程终端还是比较贵族的做法,而且那样极度的浪费宝贵的网络资源也与创造集约型社会的号召不符,所以在Unix中不值得推广!大家还是老老实实使用字符界面这个有前途的职业吧。
编程浪子:Windows用户习惯了图形界面,而且很多程序也只能在图形环境下运行,所以不谈Windows
其实Unix下字符远程终端已经相当的成熟了,比如TelnetSSH,当然FTPSFTP)也是一个。

1.6.3 难度过大,舍本逐末

这里的难度过大不是指图形程序本身的难度,就KDEGNOME和基本X-Windows程序设计本身而言没有太多的知识和技巧,关键是能够提起同学们兴趣软件难度太多了,比如编一个三维游戏,这个已经不能划入图形编程的领域,而是三维程序的地盘了。再比如说看碟软件,他的设计重点不是如何显示图像,而是如何解码,这个解码算法的数学知识就不是三言两语可以说清楚了,恐怕即使真的说清楚了,同学们好不容易聚集起来的一点学习兴趣,也会荡然无存,那朱朱胡工作室就没有粉丝了,自毁长城的事情咱可不做!
编程浪子:我很理解大家想编游戏程序或者漂亮程序的心理,不过本次Unix学习是不会教的,下次开C或者C++班时讲述专门以益智类游戏作为实例讲解,希望到时各位继续捧场。

1.7 UnixC编程需要学习哪些内容

总的来讲,包括以下几个方面的内容:

1.7.1 C语言基础应用编程

就是平时大家学习的普通C语言,比如标准文件编程库、内存库、字符串库、指针等,千万不要以为这些东西出现在谭浩强教授的书中就鄙视他们,大家要知道:
他们是编程的基础,编码时无处不在。
万丈高楼平地起,虽然打基脚很无聊,但也不容错过,对这部分内容理解越深,你才能在后面的程序员之旅中越走越远,反之虽然你暂时取得了短暂的进步,但终归限制了更远迈步的可能。
比如指针,在Unix的很多系统函数调用中都使用了函数指针或者结构指针做参数,不懂指针将在UnixC语言编程中寸步难行!又比如说字符串函数,由于她们与指针联系相当的紧密,而很多人有未给予充分的重视,所以在字符串报文处理、文本文件处理、通讯数据处理中无法有更高的建树。
编程浪子:大家应该可以猜测到我名字的由来,对,边城浪子。固然我是一个喜欢编程的人,一个喜欢随心所欲编程的人,同时也说明了我喜欢边城浪子中的人物。古龙小说中,我喜欢傅红雪和阿飞,原因无他,与我类似尔。首先,练剑(刀)十数载而不弃,我们都很执着,其次,拔剑(刀)数百万次而不烦,我们都耐寂寞。因为我们心中所持的是与生俱来的爱好和本能,正因为如此,我们都练就了一身扎实的基础,也正是因为这样扎实的基础,才造就了一招制敌的能力。学习编程序也一样,只有多练习拔剑,也就是多编程序,才可以牢固掌握基础,才可以在以后的编程江湖之行中收放自如。不过注意啊,这里的编程序是指实打实由你自己编的,哪些自动代码生成器产生的是不算积分的。
游客甲:我曾经用Delphi做个视频播放软件,不过是用第三方软件完成的,是不是就不算练习编程了?
游客乙:我曾经用CMS建站工具创建了多个网站,赚了一点小钱,是不是也不算编程呢?
编程浪子:算,当然算!所有的打怪都是有积分的!只不过大部分事情是别人完成的,所以你们的积分特别少。
游客甲:那老师的意思是不是以后编程序是不是都不能用一些工具。
编程浪子:我可没有这样说,工具是必须的,不然大家都去编机器语言去。只不过计算机初学者,尤其是在校大学生,强烈不建议一开始就局限于各种高明的代码生成器工具,自动生成是别人的,看得懂是不够的,自己打出来才是自己的!所以本季课程,所有的作业都必须要你们一字一字的输入,别想投机取巧。要记住,代码编的越多,你才越有可能正在掌握编程。
游客乙:那我们在校大学生要编多少行才可以说打牢了基础呢?
编程浪子:这个与每个人的领悟有关,与你编程的内容也有关,但是总的来说是越多越好。不过学无止境,千万不要有已经编尽天下无敌手的感觉,即使是打基础,也永远没有终点。
正是那:
君问终期未有期,奔流到海不停息。
何日编码百万行,再话小成重迈时。
你说你一直在编写代码,希望能够把基础打牢固,你问我基础练习什么时候可以结束,我说就像江河流向大海一样永远也不会结束,当你编程的代码达到一定量的时候,你会发现虽然你基础已经小成,但是仍然要多加练习,才能保持不退步。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值