初识linux端c++程序开发
关于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++程序开发的更多相关文章
- Linux及Arm-Linux程序开发笔记(零基础入门篇)
Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...
- 【Linux开发】Linux及Arm-Linux程序开发笔记(零基础入门篇)
Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer ...
- 搭建Linux下Android程序开发环境
从AndroidStudio中文社区下载SDK压缩包,http://dl.google.com/android/android-sdk_r24.2-linux.tgz. 解压到某个目录,比如我的~/p ...
- Linux/Windows 应用程序开发
一.基础知识 虽然写的都是代码,但是代码运行在哪个级别什么位置,还是需要做好定位,这样才心中有数. 1.1 Linux [转载]讲述了中断.系统调用.Linux APIs和Shell的基本知识. 1 ...
- 【Socket】linux网络扫描程序开发
1.mystery引入 1)系统入侵步骤:系统发现->漏洞探测->漏洞利用->痕迹清除 2)扫描器分类:主机与网络扫描器:端口服务扫描器:服务漏洞扫描器 3)T ...
- linux一句话问答(网络无关篇+网络相关篇+程序开发篇+经典图书)
一句话问答(网络无关篇+网络相关篇+程序开发篇+经典图书) --------------------------目录-网络无关篇-目录-------------------------- 0001 修 ...
- Linux网络编程:基于TCP的程序开发回顾篇《转》
面向连接的TCP程序设计 基于TCP的程序开发分为服务器端和客户端两部分,常见的核心步骤和流程: 其实按照上面这个流程调用系统API确实可以完全实现应用层程序的开发,一点问题没有.可随着时间的推移,你 ...
- Linux入门-程序开发
Linux程序开发 linux程序总体上来说是分两部分的: 1. 底层驱动程序开发: 2.应用层应用程序开发: 驱动程序 一般情况下驱动是跟内核与硬件有关系的,编程语言是C语言,需要懂一些硬件的知识, ...
- Linux下使用Eclipse开发Hadoop应用程序
在前面一篇文章中介绍了如果在完全分布式的环境下搭建Hadoop0.20.2,现在就再利用这个环境完成开发. 首先用hadoop这个用户登录linux系统(hadoop用户在前面一篇文章中创建的),然后 ...
随机推荐
- VM virtuaBox异常关机启动不了的解决方案
事件回放 我的物理机是win7,上面装了一个VM virtualBox,用来装Centos,有天物理机非正常关闭,导致VM virtuaBox异常关机启动不了,如下: 确实找不到这个vm_liang. ...
- http状态消息
1-5状态码了解 1XX 表示信息(消息) 2XX 表示成功 3XX 表示重定向 4XX 表示请求错误 *** 5XX 表示服务端错误 常见状态码 200 请求成功 一切正常 301 重定向,修改后的 ...
- Dapper学习笔记(2)-链接引用
在研究Dapper源码时发现Dapper NET45类库中的SqlMapper.cs文件前面有个蓝色的箭头图标,发现在Dapper NET45文件夹下根本不存在SqlMapper.cs文件,其文件属性 ...
- Python开发入门与实战22-简单消息回复
22. 简单消息回复 本章节我们来实现一个微信库存查询功能,使用我们前面的BIZ业务逻辑层示例如何利用微信入口来实现文本消息类的库存查询服务. 22.1. 在responseMsg函数里增加处理微信文 ...
- 在VBA中调用excel函数
以前不太会用VBA时,都是在excel中使用函数来计算一些数据.毕竟函数不如代码,效率比较低.所以,就学着怎么在VBA中引用Excel函数.平时我用得比较多的函数就是countif和sumif函数.1 ...
- BootStrap框架
简介: Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷,是一个CSS ...
- Eclipse 搭建 Maven Web项目
第一步:安装JDK: 第二步:安装Eclipse: 第三步:安装tomcat7: 第四步:安装maven插件: 4.1 下载maven:http://maven.apache.org/download ...
- window10的优缺点
windows10的体验随笔 为了体验科技前沿,前段时间升级了windows10 优点: 首先换了windows10就回不去了, 1.开始菜单的回归是众向所归,而且也加了迷你的一些菜单元素,值得称 ...
- Android 标题栏菜单设置与应用(popupWindow的应用)
效果图
- Ubuntu 使用Cisco VPN、AnyConnect、OpenConnect的方法。
自己建的廉价Shadowsocks服务器总是不稳定,众所周知,PPTP在中国大陆已经废了.为了连接外网,所以购买了BlueCloud的VPN.但是他们家的VPN是使用Cisco VPN,可以使用Any ...