程序员工作方向

 程序员工作方向

 

    过大学的人都知道,但凡专业与电子计算机相关的同学们都会在一开始学习一门 叫做C语言的课程,一开始老师所教授的C语言是以Windows下的DOS(也就是我们在VC中看到的win32控制台)为背景的,而以数学计算为载体,进行C语言的应用教学,其实这些并不是C语言真正的使命,只用黑屏下的文字输出作为我们解决数学问题的手段只是C语言功能的一小小的部分而已。

    C语言的历史大家可以自行百度,总之它是为了在短时间内写出一个操作系统而发明的,因此操作系统才是和C语言关系最为密切的,我们也有必要了解操作系统。我个人理解是,操作系统是一个中介,介于应用软件和底层硬件之间的中介,或者说是桥梁,我们用户直接接触的是应用软件,而真正能实现功能的是底层硬件在驱动程序下运行的结果,那么问题来了,应用程序--------操作系统----------底层硬件三者之间关系究竟怎样?这与本文标题有啥关系?

     我们采用从最上层到最底层的顺序说。

     应用程序就是映入我们用户眼睛里的各种软件,腾讯QQ,微信等等,它们都有着华丽的外表,这与DOS有着天壤之别,而它们外表之下是各种后台程序支撑着,但是自己不可能做出用户需要的全部功能,或者说有些功能别人做得非常好,自己不可能取代,比如很多具有公信力的软件,百度搜索,支付宝等等,但是这些软件有很多都愿意给你提供服务,比如百度地图,因此就产生了一些具有链接性的功能,称之为API(自行百度)。这是提供者给出的一种接口,只要你利用这个接口就可以使用它相关的功能,这是不开源的各种软件或者系统(比如苹果系统)为了让别人开发应用程序而又要对其本身保密的方式或者手段。

     对于操作系统(无论其是否开源)而言,对上层(即应用程序)就会提供接口,这个接口程序也有专门的人进行编写,一般使用Java语言,对下层(即底层硬件)就会提供驱动,而这个驱动程序也有人专门编写,驱动程序是操作系统对硬件操作必要程序,一般是C语言为主,但是最底层(即与硬件接触最近)的是用汇编语言编写,即使数量少但是效率很高。

底层硬件是只听从机器语言的指令的(即0和1),因此其他语言最终会在编译器中翻译成机器语言后才能被硬件识别,因此越低级的语言,效率越高,只是对于程序员来说就越繁琐,不简便。底层硬件是由各种电子电路设计而成,它的设计直接影响了硬件的性能,当然电路的集成度也是关键性因素,正因为有了纳米技术甚至是更精密的技术,我们才可能把CPU做那么小,然而内容反而成指数倍得增加。

总结来说,操作系统就相当于很多部门的中心,各种行动都要向他报备,由操作系统去安排和分配各种资源,说具体点,打个比方,我们点开音乐播放软件,音乐软件会向操作系统报告,操作系统随后立即将声卡召唤过来,让他准备工作,并且把相关信息(音乐编码)给声卡CPU,声卡解码后便将音乐播放。我们点开Word文档,同理操作,但是这两个任务会发生资源抢占问题(比如硬盘,显示器资源),这个时候就是操作发挥作用的时候了,它会按规则将资源合理分配给各个软件使用。这样就解决了多任务运行的问题。

从上述文章来看,我们能选择的工作有:

1、最上层的应用软件开发

2、API等接口程序编写

3、操作系统移植或创新或发明(这个几乎是很少量的牛人才能达到的境界比如Windows,Linux操作系统)

4、底层驱动程序编写

5、电子电路的设计及硬件资源搭配

以上就是个人以嵌入式为中心,以其相关技术展开所总结的程序员可以选择的几种工作分类。但是无论你选择什么,你必须是在对整个流程都比较熟悉之后再选择其中之一而专研才可以的。

郑重声明:原创观点,由于个人阅历和知识水平有限,若有纰漏之处,还望各位帮忙指出,不胜感激。谢谢!

         

你可能感兴趣的:(专业认知记录,嵌入式,程序员,工作)