关于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. JSTL标签库的使用

    首先是四大标签库 核心 标签库 <%@ taglib uri="http://java.sun.com/jsp/jstl/core"%> 格式标签库 <%@ ta ...

  2. Lucky 2048 - The secret of being lucky

    Lucky 2048 uses a normal distribution to create "lucky" start. Generally speaking, it prov ...

  3. 注意linux下面的命令行,要将PATH声明出来

    export PATH=/apps/svr/maven/bin:/apps/svr/jdk7/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/s ...

  4. AC中保存数据与查询数据

    //保存数据 hui.ajax(function (ret, err) { }, url, {values: {t:"test",m:"Search",c:&q ...

  5. lumia520刷机注意事项

    1.下载后的固件名称中设备名前的随机字符都要去掉 2.安装完nokia care suit后最好在driver目录下重新双击安装usb driver

  6. Bzoj索引

    1001 : http://ideone.com/4omPYJ1002 : http://ideone.com/BZr9KF1003 : http://ideone.com/48NJNh1004 : ...

  7. VIm 一些常用的设置

    一些常用的vim设置   以下内容皆来源于网络,感谢原作者.如果引用出处错误,请告知以便修改. 1. vim的几种模式和按键映射 转载自:[1] Map是Vim强大的一个重要原因,可以自定义各种快捷键 ...

  8. iOS内置音频

    Predefined soundsThere are some predefined system sounds, for the system sound ID in the range 1000 ...

  9. ae学习

    Ae           提供者CoSA 1993年1月 版本1.0 代号Egg 主要加入法人功能layered compositing with mask, effect, transforms, ...

  10. ASP.NET MVC3 实现用户登录验证

    自定义一个授权筛选器类,继承于AuthorizeAttribute: using System; using System.Web; using System.Web.Mvc; namespace M ...