关于linux端程序开发,我以前一直不知道是做些什么,只是感觉听高端的。最近接触了一些,有了一些初步的认识。

  首先,linux是一个操作系统,跟windows一样:接通电源、按下电脑开机,电脑就会自动加载运行的系统软件。操作系统是电脑不可缺少的一部分。操作系统是你的电脑实体和实用方便的软件中间的媒介。linux也是这样,而我做的,就是编写一些能在linux上面编写、编译、生成一些可以在linux上面运行的软件。

  windows这么好用,为什么我们还要用linux系统呢?这两个操作系统是有区别的。同一台电脑,你可以选择安装windows或者安装linux,那么区别在哪呢?

  首先,同一台电脑,装上windows或者linux之后。这台电脑的硬件是不会有什么改变的。1000元的电脑配置还是1000元,5000元的还是5000元。我就拿1000元的来说,既然硬件资源是有限的,它没有5000元的速度快,但我想让它更快一些,那我可以在操作系统上动一些手脚。比如说我装个linux而不用windows。说不定速度就比装windows快一些。windows比较注重图形化界面,用户交互性好,所以家用和个人电脑大多数人都选择安装它(当然也有人用linux或者苹果的操作系统)。而windows就必须把大量电脑的硬件资源用于运行它的图形化界面,对运算可能就冷落了一些,毕竟1000元的电脑,硬件资源实在有限。而linux系统刚开发出来时并没有各种窗口,没有windows直观,但是它的优点就是“我不需要图形化界面也能运行”,而windows没有图形化就根本无法工作。每一个操作系统,在有限的硬件资源上,都有自己的侧重点。而用户可以随便选择。

  linux操作系统好在它是开源的。开源就是编写它时的源代码倍放在网上,可供大家免费观看。windows的源代码微软公司是不会放在网上的,因为他们公司是卖操作系统的嘛,几百块钱一个。在中国盗版比较严重,所以我们很多人并不知道操作系统也是需要花钱购买的,也许我们在购买电脑的时候,卖家就已经帮我们装好盗版系统了。而linux是开源的,自然就不用花钱购买了(除非你享受了别人的其他服务)。

  我们为什么有这么多人学习linux呢?我认为原因有两个,第一是它开源免费,大公司如果选择用windows的话肯定需要花很多钱去微软购买安装系统(在公司起步时谁也不会想花这么多钱),它还安全稳定,源代码在我手里,哪里不安全我可以自己改,哪里不稳定我可以自己改。第二是它的重心放在了数据处理和计算上,而不是与用户的交互,公司的服务器并不需要用户用起来好用,毕竟工作人员都是电脑高手,处理速度快就行。所以现在大多数企业选择用linux,而不用其他操作系统。这样一来他们便需要大量的程序员来维护这个系统。所以学的人就多了。

  公司里怎么用这个系统呢?比如说我们用的聊天软件QQ,我发一条消息给我朋友,其实我是把消息发给了腾讯公司的某台服务器了,那台服务器再帮我把那条消息发给我的朋友,并告诉他是我发的。在这个互联网时代,服务器就是做着这么重要的工作。以前大家玩单机游戏不需要服务器,在自己电脑上运行就行,或者用蓝牙、wifi可以和周围的小伙伴一起玩。而现在的互联网时代就不同了,我们喜欢分享自己的快乐,打游戏也喜欢与其他人一起玩。服务器就是一个信号的中转站。我们现在用的各种云存储,服务器就充当了一个远程的硬盘给我们存东西。还有云计算等多种多样的服务。我们甚至可以这样来想,我们把输入信息传递给服务器,服务器帮我们处理解决以后再把输出信息发给我们,而我们需要的就只是一个输入器、输出器和良好的网络。

  可见服务器的作用是多么强大。而服务器用的是linux系统。我们就很有必要去了解它,了解怎么在上面编写一个软件来处理用户发过来的消息。

  那我们应该怎么去系统的学习呢?已经有前人帮我们总结好了。学习这个方面的知识分为这几个模块:c\c++语言;linux操作系统;计算机网络;数据结构与算法;操作系统。

  首先我们要写程序,要把自己的思想写在计算机,就要能说一口流利的计算机语言,所以必须学会计算机语言。我学习的是c\c++,其实我感觉c和c++是分不开的,你不可能学会了c++而不会c,也不可能学会了c学不会c++。c\c++可谓一把锋利的巨剑,手持巨剑,就算不会武功也有一定的震慑力。更何况没有剑怎么打得过拿剑的人呢?这是基础,打牢基础必然不会有什么坏处。

  而c\c++写出来的程序需要在操作系统上运行,并且写程序时很多时候要和操作系统交流,给它借东西用。那就必须的学习一下操作系统是怎么运行的,它的内部原理和外部接口都学一遍,也就相当于了解一下你比武的场地,占地形优势了。这块场地并不比c\c++简单,linux也是用c写的(为什么不用c++呢?当时还没有c++)。当然,学习linux的同时能接触到很多计算机的精华,能加强自己的c\c++语言能力,能了解很多别人编写这系统时用到的思想和设计思路。

  计算机网络,网络能把客户端和服务器端链接起来。我们肯定需要了解数据是怎么传输的,并要熟练的写出发送数据和接收数据的代码。哈哈,虽然网络路线为我们铺好了,但它留给我们的接口我们还是要学会使用的。

  学完以上这3个部分,你就可以工作了。嗯,我觉得就是这样的。学校总是要我们打好基础再往上学,上课总是喜欢先上数据结构和操作系统,最后再来学linux这些具体的、真正能做事的。我就不喜欢这样学习,没人告诉我数据结构、数据库有什么用,直接就开始学了,我也不知道学了有什么用,也许学到一半我就对编程失去了兴趣了,往后的内容我可能再也不想学了。所以我个人认为应该先学前面那三块实用的。

  如果学完上面3部分内容,那你已经能作一些开发了,如若觉得思维不太清晰,那就好好研究研究数据结构;如若觉得对操作系统的运行原理不太理解,那就好好研究下操作系统;如果对数据的存储与读取感到苦恼,那就多看看数据库。学习就应该这么简单,喜欢什么学什么,什么不会学什么。

  在学习上,对自己保持一定的自信也是有必要的,要懂得坚持。因为学习编程并不是一个简短的过程,毕竟那么多人呕心沥血研究出来的东西,短时间想把它学透是不可能的。热爱编程的人,都是在这条路上走走停停、走走停停,对计算机科技的理解越来越深、越来越深。

初识linux端c++程序开发的更多相关文章

  1. Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇)  作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...

  2. 【Linux开发】Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer ...

  3. 搭建Linux下Android程序开发环境

    从AndroidStudio中文社区下载SDK压缩包,http://dl.google.com/android/android-sdk_r24.2-linux.tgz. 解压到某个目录,比如我的~/p ...

  4. Linux/Windows 应用程序开发

    一.基础知识 虽然写的都是代码,但是代码运行在哪个级别什么位置,还是需要做好定位,这样才心中有数. 1.1 Linux [转载]讲述了中断.系统调用.Linux APIs和Shell的基本知识. 1 ...

  5. 【Socket】linux网络扫描程序开发

      1.mystery引入    1)系统入侵步骤:系统发现->漏洞探测->漏洞利用->痕迹清除    2)扫描器分类:主机与网络扫描器:端口服务扫描器:服务漏洞扫描器    3)T ...

  6. linux一句话问答(网络无关篇+网络相关篇+程序开发篇+经典图书)

    一句话问答(网络无关篇+网络相关篇+程序开发篇+经典图书) --------------------------目录-网络无关篇-目录-------------------------- 0001 修 ...

  7. Linux网络编程:基于TCP的程序开发回顾篇《转》

    面向连接的TCP程序设计 基于TCP的程序开发分为服务器端和客户端两部分,常见的核心步骤和流程: 其实按照上面这个流程调用系统API确实可以完全实现应用层程序的开发,一点问题没有.可随着时间的推移,你 ...

  8. Linux入门-程序开发

    Linux程序开发 linux程序总体上来说是分两部分的: 1. 底层驱动程序开发: 2.应用层应用程序开发: 驱动程序 一般情况下驱动是跟内核与硬件有关系的,编程语言是C语言,需要懂一些硬件的知识, ...

  9. Linux下使用Eclipse开发Hadoop应用程序

    在前面一篇文章中介绍了如果在完全分布式的环境下搭建Hadoop0.20.2,现在就再利用这个环境完成开发. 首先用hadoop这个用户登录linux系统(hadoop用户在前面一篇文章中创建的),然后 ...

随机推荐

  1. Visual Studio 2015 Update 3 ISO

    http://download.microsoft.com/download/c/2/6/c26892d8-6a5d-4871-9d46-629f4d430146/vs2015.3.vsu.iso

  2. Hadoop示例程序WordCount详解及实例(转)

    1.图解MapReduce 2.简历过程: Input: Hello World Bye World Hello Hadoop Bye Hadoop Bye Hadoop Hello Hadoop M ...

  3. freeCAD定制界面

    由于freecad接口是基于现代Qt工具包,它非常先进.窗口,菜单,工具栏和其他工具都可以修改,移动工作台,共享,键盘快捷键都可以设置.修改,以及宏,它可以录制和播放.定制界面是访问Tools -&g ...

  4. JAVA vo pojo javabean dto区别

    JavaBean 是一种JAVA语言写成的可重用组件.为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性 ...

  5. Android异步消息处理机制

    安卓子线程无法直接更改UI,所以需要异步消息处理机制来解决 <?xml version="1.0" encoding="utf-8"?><Li ...

  6. RCurl网络数据抓取

    观察基础信息(服务器信息和提交给服务器的信息) d=debugGatherer()xpath="http://123.sogou.com/"url=getURL(xpath,deb ...

  7. centos 下git服务器搭建

    准备 CentOS Linux release 7.0.1406 (Core) ssh 22端口 http 80端口 本文主要是ssh协议支持,http协议配置后还有问题. 摘抄的一段说明 SSH 协 ...

  8. OPENCV配置 C1083: 无法打开包括文件:“opencv2/opencv.hpp”

    本人没实操过C/C++,理论看过不少. 目前出于提升技术的考虑想做OPENCV 配置了2天,总算是配置好了..遇到不少问题. 计算机配置WIN10,用户环境变量配置也郁闷过... JDK等配置方式,配 ...

  9. [转]程序员自己写的神器 MonoDevelop 4 (Xamarin Studio) Debugging for Unity

    原文地址 http://www.cliffordroche.ca/monodevelop-4-xamarin-studio-debugging-in-unity/ MonoDevelop 4 (Xam ...

  10. navicat在ubuntu下中文乱码的真正解决方法ZT

    乱码解决方法(自己解决我自己这种情况之后打猜测): 打开start_navicat文件,会看到 export LANG="en_US.UTF-8" 将这句话改为 export LA ...