打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
linux新手编程必读

http://blog.chinaunix.net/uid-223060-id-2127128.html

2007

假如,你是一个linux编程方面的初学者,那么,在开始这段神奇经历之前,你一定会对这篇文章所讲的一些方面非常感兴趣。特别当你以前是一个 windows环境下的程序员的话,那就必须改变一些编程方面的想法和思维,这样当你遇到完全不同的理念和思维方式的时候,才能将这种所谓的“文化”差异带来的影响降到最低。
针对程序员,特别是一些有经验的Windows程序员在论坛上所问的关于linux编程方面的常见问题,我的建议如下:

1.评估每一种可能性

当你在Windows下编程时,通常都会使用系统提供的标准API,这让你只能选择唯一一种方式来完成一个特定的目标。而在linux下,实现相同目的的方式有很多种,例如,有各种不同的GUI编程工具包,包括编写GUI程序时最常见的QT和GTK。另外,你也不一定要选择c或者c++语言编程,因为在 linux下的编程方式有很多种,包括基本的shell编程,Perl,Python和PHP等。因此“需要学习硬件工作方式”这种固有的观念已经过时了,事实上,脚本编程语言的强大及优雅会让你大吃一惊的。
注意,不要让这些选择来主导你。只需要先了解他们,然后选择一种最让你适应的工具和技术即可。

2.使用IDE不见得更有效率

那些经常使用微软Visual Studio来进行开发的程序员,一开始肯定不会适应linux的编程方式。当然,在linux下也有一些相当不错的IDE,例如Kdevelop, anjuta和Eclipse等,但在长期的编程过程中,你会发现使用文本编辑器以及创建一个make文件其实是更好的方式。特别是当你在开发自由软件的时候,考虑到代码会被分享,其它的程序员可能参与到这个项目中,你肯定不会愿意将开发过程绑定在某个特定的平台或者IDE上面的。当然,IDE并不是完全没用的,但使用简单的文本编辑器配合makefile的方式显然更有利于一些较小项目的开发。

3.不要去关注那些与发行版相关的特性

让很多Windows开发人员感到惊讶的是,实际上,你可能无法知道最终用户电脑上所使用的linux系统配置,因为不同的发行版可能使用位于不同位置,设置选项也不同的配置文件,因此,除非你是在为某个特定的发行版本编写系统配置的工具,否则尽量避免在编程过程中假设与发行版相关的那些特性。同时,也不要让用户以root身份运行你的程序,除非该程序的唯一目的是系统特定设置。

4.不要去修改,也别试图去修改系统

避免“不良编程”的规则:
1 不要去假设某个系统文件存在于最终用户的电脑中。前面已经说过了,不同的发行版之间存在差异。
2 作为一个普通权限的用户,你是不能修改系统文件的,同时,不要试图让一个普通程序以“root”身份去运行。
在大多数情况下,你都会发现,去接触系统定制文件是完全没有必要的。

5.让程序看起来和谐而稳定

GUI 程序员,特别是那些GTK和QT的程序员,需要明白的是,这些GUI库是相当相当主题化(themeable),什么意思呢?就是说最终用户能够通过各种不同的方式来修改GUI的可视外观——包括字体,颜色以及widget等。因此,避免在你的GUI中使用特殊的字体和颜色。记住,你不需要这些东西。不要强制你的最终用户在他们的系统中安装任何特殊的字体,让你使用的GUI库来决定程序的可视外观。总的来说,除非你是在开发某个字处理程序,否则,基本上是不需要在应用程序代码中直接操作字体元素的。

6.随时做好研究的准备
在linux中,没有类似于MSDN这样的工具来为你提供那些讲解每一个简单的编程工具或者api的文档。这是不实际的,因为linux并不是由某一个单独的公司进行开发。当然,大多数情况下,如果你使用那些第三方的开发库,就可以在维护这些库的公司的官方网页上找到开发文档(可在线观看或下载)。但是需要注意的是,还是有相当一部分开发库提供的文档并不完整,甚至就没有。所以很多时候你都需要寻找示例代码,或者直接在头文件中去学习更多的关于某个库的知识。
当然,如果你幸运的话,在使用大多数流行的第三方库时都不会遇到这种情况,尽管这样,还是要做好自己深入研究的准备。

7.不要对依赖文件进行打包
当你创建一个可发行的安装包时,请不要在你的tar仓库文件中包括它的依赖组件。你只需要将源代码打包,并尽可能详细得提供如何编译的指示即可。至于其所需要的依赖,请在README或者INSTALL的文件中,以及你的网页上介绍。为什么呢?既然绝大多数的linux发行版都拥有它们自己的安装包管理系统(而且如果你的软件足够优秀的话,甚至可能被采纳到官方的软件安装包仓库中),你就应当把处理依赖关系的工作留给那些手工编译安装你程序的最终用户或者发行版本的软件包维护者,他们会将你的程序作为自己所维护的安装包的一部分的。既然每一种linux发行版本都有不同的管理依赖关系的机制,你就不要再去试图创建任何看起来比较智能的,能自动安装其它库的“安装步骤”了,这只会和系统管理机制产生冲突。
除了创建版本的问题以外,在程序中包含依赖关系是相当乏味而麻烦的。因此,请尽力让程序的依赖程度降到最低,特别是当你打算利用第三方开发库来编写程序的时候。甚至就是当你并不打算以自由软件的方式发行你的程序时,也请尽量最小化你的安装包,并向最终用户提供关于依赖关系的说明。

我真诚希望,这篇文章对你,一个linux编程方面的新手来说,能够有用。下面,就开始尽情享受你的编程吧!

原文作者:hari
翻译者:likunarmstrong.googlepages.com

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
完全用Linux工作——看清华学子痛批Windows
最通俗易懂的理解API和SDK
QT Creator 快速入门教程 读书笔记(一)
UI设计,仅是画张图吗?
win32编程(2):消息循环和窗口机制
学习嵌入式Linux的基础
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服