编程综述

一、标准C语言开发

ANSI C美国国家标准协会(ANSI)对C语言发布的标准。ANSIC能够被所有的平台、所有C编译器支持。C99标准应用最广泛。

标准C应用场景:标准C开发一般只是以基本语法和库的形式出现,能够完成基本的功能和简单的交互,但是如果要支持高效、复杂且有可视化交互功能,需要借助操作体系提供的系统
编程,或者更高级的应用框架编程。

标准C库函数查询:http://ganquan.info/standard-c/

标准C头文件:

库:一般见于链接的libc.lib

数据结构:数据结构是对C语言基本语法的高度封装运用,以面向对象的思维去表述现实问题。编程就是数据结构+算法。参考:数据结构与算法分析:C语言描述(原书第2版).pdf

C++语言开发:C++语言是从语法级支持面向对象开发,具有封装、组继承、多态等面向对象特性,天然具备数据结构的封装优势。参考:C++Primer中文版(第4版).pdf

JAVA语言开发:JAVA语言跟C++类似,是面对对象开发语言,但是比C++要简单些。其和C++相比,是在底层操作系统的基础上,还需要依赖于JAVA虚拟机来解释执行,即由JAVA虚拟机来讲JAVA中间代码转换为机器理解的指令。而C和C++在编译即变成机器理解的指令。参考:Java编程思想(第4版).pdf

编程规范:良好的编程规范是高级软件开发工程师的基本素质。参考:华为技术有限公司c语言编程规范.pdf

1.    Windows C语言开发

经典开发平台:windows VC6.0

支持大部分C99标准。

选择Win32 ConsoleApplication

2.    LinuxGNU C语言开发

在兼容标准C语言的基础上,由GNU的GCC工具链增加一部分特性。

LinuxC开发工具:Linux下C语言编程环境的工具.txt

Linux C语言编程特性:LinuxC编程特性.doc

Linux内核GCC特性:Linux 内核中的GCC特性.doc

二、系统编程

顾名思义,系统编程跟操作系统相关,由操作系统向应用层提供丰富且高效的接口。其包括多进程多线程编程、进程间同步与互斥、网络编程、高级文件IO及映射、图形编程、设备编程(如串口)、系统状态与控制等等。

系统编程应用场景:一般系统编程用于非UI系统,常见于服务端技术,或者前端的核心框架。UI应用一般使用在有Framework框架基础上的可视化编程。

库:部分库存在于运行时库CRT.O,如多进程多线程,部分库存在于系统支持库里面,见windows和linux的系统lib目录。

1.    Windows系统编程

经典开发平台:windowsVC6.0

选择Win32 Application

Windows系统编程参考:WINDOWS.核心编程第五版.pdf

2.    Linux系统编程

参考Unix环境高级编程,使用Posix标准。

开发平台:跟我一起写Makefile.pdf、GCC中文手册.pdf

Linux系统编程参考:linux系统编程.pdf、UNIX环境高级编程.pdf

三、可视化编程(应用框架编程)

可视化编程即所见即所得,如拉一个时间空间和列表控件出来,只需要编写很少部分函数代码(一般是callback)即可以完成系统功能。其一般都是基于特定的平台应用框架来开发的。其有丰富的UI控件接口,是对系统编程接口的再次组合和封装。

可视化应用场景:一般用于客户端、前端UI、应用界面编程。

库:一般可视化编程都有一个集成开发平台,平台已经集成了框架支持库。、

1.    Windows可视化编程

应用编程框架:MFC

经典开发平台:windowsVC6.0

选择MFC AppWizard

Windows可视化编程参考:深入浅出.MFC.pdf

2. Linux可视化编程

应用编程框架:QT

开发平台:QtCreator

QT可视化编程参考:Qt编程及应用经典教程.pdf

3. Android可视化编程

Android其实也是基于Linux内核的,是在Linux操作系统的基础上开发了一个强大的而且是开放的Android应用框架。因此Android和QT是同等概念,都是基于Linux平台的应用框架。当然,Android的底层Linux区别于常规Linux内核,做了部分改动,如新增Binder驱动和Log日志驱动。

应用框架:Android应用框架

开发平台:Eclipse+JDK+ADT+Android

Android应用开发参考:Android应用开发详解.pdf

四、脚本编程

以上语言均需要通过编译之后才能执行,而脚本编程属于解释性语言,不需编译即可立即执行。脚本编程是基于系统抽象出可高度重复利用的库的基础上开发出来的一套语法和命令。主要用于系统配置、项目管理、自动化测试等方面。Makefile即是最经典的脚本编程范例。

Windows脚本编程:有CMD命令窗口进行管理和解释执行。参考windows批处理命令详解及脚本实例.doc

Linux脚本编程:由Shell命令窗口进行管理和解释执行,熟悉脚本编程是Linux开发人员的一项技能。参考Linux+命令行和shell脚本编程宝典.pdf

五、Web编程

Web编程是应用编程的一种特例,主要针对网页、网络编程。网页由HTML超文本标记语言和脚本组成,所以Web编程语言包括静态语言(即HTML格式语言)和动态语言(即脚本开发语言)。网页脚本开发语言包括:ASP、PHP、JAVASCRIPT、JSP等等,其由浏览器Browse负责展示、由服务端解释引擎负责解释响应。

Web编程一般是脚本开发,是解释执行的。

Web编程领域同样有很出名的应用框架,即由框架提供很多可重复利用的可视化控件,封装了底层的展示和控制逻辑。比较出名的有:微软提供的.NET框架、基于JAVA平台有很多出色的开源框架(Struts等)。

Web编程会涉及数据库编程,不同的框架提供访问数据库的能力是评价该框架优劣的重要因素。

Web编程使用HTTP应用层协议,而系统编程的网络编程(Socket编程)使用的网络层和传输层协议。

由于Web编程离嵌入式Linux课程体系太远,这里只做简单介绍,不提供参考书籍。

六、服务器端编程

Web编程一般称为前端编程,而服务器端编程一般称为后端编程。Web应用都是由前端交互程序和后端服务程序组成。服务器编程一般涉及到应用控制、业务逻辑、数据处理、数据库访问控制等内容。服务器编程一般属于第二的系统编程的其中一个大类。

服务端编程涉及到多个前端的同时并发访问,因此并发、高性能编程是服务器编程的关键技术。

七、嵌入式编程

以上编程都是基于一定操作系统平台的编程,属于带系统编程。而在嵌入式Linux操作系统平台上进行应用编程与Ubuntu Linux平台上的应用编程基本一致。

一般意义上,嵌入式编程主要是指如何移植和开发嵌入式操作系统以及其驱动,并给应用程序提供运行时库支持。另外,嵌入式编程也包含嵌入式控制器编程,控制器编程资源有限,一般会使用简单的操作系统或者没有操作系统。嵌入式编程更多指的是硬件体系编程,即基于特定的硬件处理器SOC进行驱动编程。

1.    资源有限型系统编程

一般指的是CPU主频较低,100M以下,内存在K字节级别,主要是单片机控制编程。单片机控制同样可以移植和构建多任务操作系统,如基于UCOS内核的操作系统。其包括封闭系统的应用开发和封闭系统的移植和定制,前者是带系统开发,后者是裸机开发。

2.    资源丰富型系统编程

一般指的是CPU主频在512M以上,内存在128M以上,主要是高级处理器编程。这里处理器一般会部署多任务实时操作系统,如嵌入式Linux或者Android系统(内核也是Linux,其要求内存在512M以上)。当今的手机和平板都是属于这一类。资源丰富型系统编程包括系统编程(如服务端应用)和应用框架编程(如android
APP),另外其还包括下面介绍的内核和驱动开发编程。

3.    嵌入式内核和驱动开发编程

这里是移植和定制嵌入式Linux操作系统,包括内核移植和驱动开发。

4.    嵌入式交叉工具链、调试、自动化测试

应用编程很少去关心工具链,但是嵌入式软件开发一定要深入地去理解交叉工具链和调试技巧,这是资深嵌入式开发工程师的重要技能。只有懂得这个,才能高效地定制和开发嵌入式产品。甚至,开发人员需要自己去定制开发一些嵌入式工具。

嵌入式自动化测试也是嵌入式开发的一项重要内容。

总体来说,嵌入式编程包括硬件体系编程、UBOOT启动、嵌入式Linux系统移植、根文件系统构建、Linux驱动开发等内容;而系统编程、网络编程、脚本编程都是在嵌入式Linux平台上的带系统编程。

时间: 2024-10-24 23:09:56

编程综述的相关文章

物联网网络编程、Web编程综述

本文是基于嵌入式物联网研发工程师的视觉对网络编程和web编程进行阐述.对于专注J2EE后端服务开发的童鞋们来说,这篇文章可能稍显简单.但是网络编程和web编程对于绝大部分嵌入式物联网工程师来说是一块真空领域. 的确,物联网研发应该以团队协作分工的方式进行,所以有嵌入式设备端.网关.web前端.APP.后端开发等专属岗位.作为系统架构师,自然需要掌握各种岗位的关键技术.作为嵌入式工程师,掌握网络编程.web编程,能够极大地拓展自己的视野和架构思维,能够主动地对系统的各种协议和应用场景提出优化的见解

ios网络编程(HTTP socket)

http编程综述:亦可称为soap编程.通常情况下,http编程要比socket编程相对要简单易用得多.所以用的最广广泛. 一.http编程其实就是http请求.http请求最长用的方法是 get 和 post 方法. ==>get方法和post方法相比理解起来比较简单,get方法可以直接请求一个url,也可以url后面拼接上参数作为一个新的url地址进行请求.get方法后面的value要经过unicode编码.form的enctype属性默认为application/x-www-form-ur

3D 视角看 Go 并发编程

主题:3D 视角看 Go 并发编程 Overview 并发编程综述 Goroutine Channel & Select & waitGroup 消息传递模式 可视化工具 GoTrace 主讲师:PP 先后在百度.第四范式.蚂蚁金服工作,百度 Go Good Coder, 对分布式计算.离线/实时大数据处理有丰富的实战经验.乐于分享自己的技术和学习心得. 一.并发编程综述 串行执行 并发与并行 多核时代的并发编程 左图:p1, p2, p3 这 3 个线程运行在单核上,分时复用 CPU,是

day9---多线程,线程锁,队列

进程.线程http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html 使用threading模块实现多线程编程[综述]Python这门解释性语言也有专门的线程模型,Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,但暂时无法利用多处理器的优势. 在Python中我们主要是通过thread和 threading这两个模块来实现的,其中Python的threa

老男孩新书Shell编程实战预定开始了-包邮包答疑

老男孩新书Shell编程实战预定开始了(扫图中二维码购买包邮定期包答疑),亲爱的伙伴们,让你们久等了.电脑用户猛戳 电脑购买链接 注意:包邮包3个月(2017春节后起算)Q群书籍内容答疑,等于白送书,还倒搭答疑服务. 如果觉得给力,请帮忙朋友圈.QQ群.空间转载! 活动优惠仅限本次活动,从其他渠道购买不享受此次的服务承诺. 定价 89元 基本信息 作者: 老男孩 丛书名: Linux/Unix技术丛书 出版社: 机械工业出版社 ISBN:9787111556077 上架时间:2017-1-6 出

Node.js综述

前言 本综述文章旨在帮助读者深入理解下Node.js的本质,不去关注应用的细节,我认为真正的技术问题只有在动手写代码的时候才会遇到,那个阶段解决问题才是真正有意义的. 发展史 Node.js是Ryan Dahl 2009年对外发布的开源醒目,后来该项目被Joyent公司注意到并于2010年成为Joyent公司的一个子项目.2016年微软与Joyent公司合作,Node.js在windows上得到支持. 目前Node.js的版本为V6.11,周围已经形成了一个庞大的生态系统. 特性分析 Node.

python核心编程-第三章-个人笔记

1.语句和语法 (1)反斜杠"\"表示语句继续.python良好的编程习惯是一行最后不超过80个字符,一行字符过多时便须用到反斜杠换行继续该语句. PS:在使用小括号.中括号.大括号时可以跨行书写,无须反斜杠:三引号的字符串也可以跨行书写 (2)分号";"可以在同一行写多个语句.虽然python支持这么做,但为了代码可读性,一般不建议这么做 2.变量赋值 (1) python中,对象是引用传递的,而不是直接将值赋给对象  如: >>> a = 12

[转]分布式计算框架综述

本来是发表到科技论在线的,谁知道被退稿了,那就发到这里来吧. 0      引言 随着互联网的发展,web2.0时期[1]的到来,人类正式进入了信息爆炸时期的.海量的信息在很多应用都会出现,比如一些社交网络应用中记录用户行为日志通常都是以GB甚至是TB为单位的.常规的单机计算模式已经不能支撑如此巨大的数据量.所以,计算必须以分布式的把巨大的计算任务分成小的单机可以承受的计算任务,在这种情况下分布式计算框架与云计算[2]出现. 1      分布式计算框架背景介绍 我们的互联网从Web 1.0迈入

苹果新的编程语言 Swift 语言进阶(一)--综述

Swift 是苹果开发和提供的供开发IOS 和OS X应用的一门新的语言.Swift语言基于C 和Objective-C语言,除了提供C 和Objective-C语言具有的所有语法功能外,为了编程方便和高效,Swift在语法上作了大量的优化和改进. Swift采用安全编程模式,具有许多先进的强大的功能 ,如动态运行时.编译动态进行类型检查.Closures.下标功能.自动引用计数.选项类型.通用类型和类型编译时推断.类型的扩展和嵌套.协议类型.功能和类型的通用化.操作符的定制和添加. Swift