当前位置: 技术问答>linux和unix
请给我个让我使用Linux编程的理由
来源: 互联网 发布时间:2016-10-30
本文导语: 学习C语言的时候一直在用VC++6.0,开始接触了Linux,看了很多网上关于Linux的信息,有的说在Linux下编程可以学到很多编程技巧,可是我不知道到底学习Linux的什么,学习Linux下开源软件的源代码还是学习什么?尝试在Vim...
学习C语言的时候一直在用VC++6.0,开始接触了Linux,看了很多网上关于Linux的信息,有的说在Linux下编程可以学到很多编程技巧,可是我不知道到底学习Linux的什么,学习Linux下开源软件的源代码还是学习什么?尝试在Vim下写程序,毕竟一个完整的程序的诞生不只是一些源代码,还要有图形等文件,难道在Vim下写好程序还需要在开发环境中建个项目,把源代码在copy过去进行编译?不知道在Linux下写的C++程序能不能移植性很好,毕竟现在个人计算机普遍安装的windows,在短时间内让Linux深入到个人计算机还不是那么容易,windows下提供的VC++6.0集成开发环境对于编写C++程序很是方便,但是作为一个计算机专业的学生,一直在使用微软的傻瓜式图形界面,很丢人,微软把什么东西都做好了,感觉这样对编程能力得不到提高,所以最近很纠结,我到底是继续使用windows编程,还是应该转向Linux,在Linux下学习到底学习Linux的什么?主要是想专注于一个开发环境,对专一的开发环境学精学透彻,对以后工作后能很快上手有好处,不至于什么都学,什么都用,但是到头来什么都不精通,只知其一不知其二,所以请高手有经验的人士谈一谈我到底该继续使用windows开发程序还是转向Linux,要是学习Linux应该学习什么?从哪开始学习?它的(软件)源代码吗?要说明的是我现在还是学生想提高自己的编程水平,请结合您自身的经验谈谈,不要从网上copy,谢谢
|
亲自编写makefile,让你理解程序被编译的每一个步骤,而不是永远只会用微软提供的编译按钮
使用相对微软更加符合c/c++标准的gcc,而不是微软提供的对标准无限蹂躏的c/c++
vc6 的c++根本不符合STL标准,也允许不符合标准c/c++ 的代码通过编译。比如main函数申明为void
只有在Linux上,才能认识到c语言也能干大事。写个http服务器、p2p服务器。
更重要的是,使用Linux,你将获得更宽广的眼界,将会意识到世界上有很多种的OS,很多种的CPU,还有很多的牛人
使用相对微软更加符合c/c++标准的gcc,而不是微软提供的对标准无限蹂躏的c/c++
vc6 的c++根本不符合STL标准,也允许不符合标准c/c++ 的代码通过编译。比如main函数申明为void
只有在Linux上,才能认识到c语言也能干大事。写个http服务器、p2p服务器。
更重要的是,使用Linux,你将获得更宽广的眼界,将会意识到世界上有很多种的OS,很多种的CPU,还有很多的牛人
|
既然是计算机专业的。那么就不要纠缠在编辑器、编程语言甚至操作系统上。
好好把《数据结构》、《编译原理》、《微机原理》、《体系结构》、《数据库原理》、《计算机网络》等等方面的知识学扎实(不是背,最好是在实际的机器上实践)。
把这些基础知识学扎实了,就算在Windows下,你也可以自己实现一个MFC或者.net这样的框架。也可以实现一个自己定义的语言。
好好把《数据结构》、《编译原理》、《微机原理》、《体系结构》、《数据库原理》、《计算机网络》等等方面的知识学扎实(不是背,最好是在实际的机器上实践)。
把这些基础知识学扎实了,就算在Windows下,你也可以自己实现一个MFC或者.net这样的框架。也可以实现一个自己定义的语言。
|
Linux除了图形用户界面的应用程序如游戏、多媒体播放、网络浏览器之外还可以:
1、服务器程序,如web应用服务器、database服务器、游戏服务器等等等等等。它们都专注于业务逻辑的处理,使用命令行和配置文件与用户交互。即Linux具有简单性。编程者和用户只专注于业务逻辑的实现,不需要关心“文档-视图”不需要关心“消息队列”。
2、上述这些领域使用Linux/Unix的另外一个好处就是系统高度可定制,可以将对业务应用没有帮助的组件、模块卸载或不编译进内核。如图形驱动、无用的文件系统驱动、一些用户空间的服务程序等等等等,编译出的内核可能只有3~5MB大小,但功能完备的操作系统。即Linux具有可裁减性,可以被轻易地烧进一片价格只有几十块钱,Flash容量只有几MB的单片机上。
3、基于第二点,Linux特别适合嵌入式、片上系统、专用机(PC机即为通用机)等领域。当下流行的计算机并不是Intel X86体系结构通用计算机一家垄断的,在一些应用领域还存在ARM、Power、MIPS等体系结构的计算机。显然Windows是不支持后几种体系结构的,这就是传说中的“Wintel”。Linux对这些体系结构都有很好的支持。即Linux具有可移植性,几乎所有的主流体系结构都被Linux支持,得到支持也只是时间问题。
4、如果要在Linux上编写图形界面,有很多很成熟的解决方案可供选用,如GTK、MiniGUI、QT等等等等等。但图形用户界面(GUI)在桌面Linux上不是主流,但在基于Linux内核的移动终端平台如Android上会有很好的发展,如果LZ想做出非常炫的应用,去学习Android或IPhone编程吧,Windows桌面开发的份额只会越来越小。
以上是我做Linux嵌入式开发的总结,给LZ一个参考
1、服务器程序,如web应用服务器、database服务器、游戏服务器等等等等等。它们都专注于业务逻辑的处理,使用命令行和配置文件与用户交互。即Linux具有简单性。编程者和用户只专注于业务逻辑的实现,不需要关心“文档-视图”不需要关心“消息队列”。
2、上述这些领域使用Linux/Unix的另外一个好处就是系统高度可定制,可以将对业务应用没有帮助的组件、模块卸载或不编译进内核。如图形驱动、无用的文件系统驱动、一些用户空间的服务程序等等等等,编译出的内核可能只有3~5MB大小,但功能完备的操作系统。即Linux具有可裁减性,可以被轻易地烧进一片价格只有几十块钱,Flash容量只有几MB的单片机上。
3、基于第二点,Linux特别适合嵌入式、片上系统、专用机(PC机即为通用机)等领域。当下流行的计算机并不是Intel X86体系结构通用计算机一家垄断的,在一些应用领域还存在ARM、Power、MIPS等体系结构的计算机。显然Windows是不支持后几种体系结构的,这就是传说中的“Wintel”。Linux对这些体系结构都有很好的支持。即Linux具有可移植性,几乎所有的主流体系结构都被Linux支持,得到支持也只是时间问题。
4、如果要在Linux上编写图形界面,有很多很成熟的解决方案可供选用,如GTK、MiniGUI、QT等等等等等。但图形用户界面(GUI)在桌面Linux上不是主流,但在基于Linux内核的移动终端平台如Android上会有很好的发展,如果LZ想做出非常炫的应用,去学习Android或IPhone编程吧,Windows桌面开发的份额只会越来越小。
以上是我做Linux嵌入式开发的总结,给LZ一个参考