深入嵌入式java虚拟机开发学QT好,还是继续深入LINUX好

2012年5月 Linux/Unix社区大版内专家分月排行榜第三2010年10月 Linux/Unix社区大版内专家分月排行榜第三2010年2月 Linux/Unix社区大版内专家分月排行榜第三
2012年11月 Linux/Unix社区大版内专家分月排行榜第二2011年8月 Linux/Unix社区大版内专家分月排行榜第二2008年10月 C/C++大版内专家分月排行榜第二
2012年8月 Linux/Unix社区大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。一名嵌入式Linux开发工程师需要学习哪些知识
随着嵌入式行业的迅猛发展,嵌入式Linux凭借其系统发展的成熟度、市场应用的高份额也受到更多工程师朋友的青睐,越来越多的企业和研发机构都转向嵌入式Linux的开
成为一名嵌入式Linux开发工程师需要学习哪些知识?
随着嵌入式行业的迅猛发展,嵌入式Linux凭借其系统发展的成熟度、市场应用的高份额也受到更多工程师朋友的青睐,越来越多的企业和研发机构都转向嵌入式Linux的开发和研究,这使得嵌入式Linux在新兴的嵌入式操作系统领域内也获得了飞速发展和广泛应用。面对如此火热的行业,如何才能成为嵌入式Linux开发工程师?成为一名合格的嵌入式Linux开发工程师需要学习哪些知识?
嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。
二:Linux基础
Linux操作系统的概念、安装方法,详细了解Linux下的目录结构、基本、编辑器VI ,编译器GCC,调试器GDB和 Make 项目管理工具, Shell Makefile脚本编写等知识,嵌入式开发环境的搭建。
三:Linux系统编程
重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的理解和代码调试的能力。
四:Linux网络编程
计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。
五:数据结构与算法
数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。
六:C 、QT
C是Linux应用开发主要语言之一,本阶段重点掌握面向对象编程的基本思想以及C的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。由于QT具有跨平台、面向对象、丰富API、支持2D/3D渲染、支持XML、多国语等强大功能,在嵌入式领域的GUI开发中得到了广范的应用,在本阶段通过基于QT图形库的学习使学员可以熟练编写GUI程序,并移植QT应用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理及文件处理的应用。
七:Cortex A8 、Linux 平台开发
通过基于ARM Cortex-A8处理s5pv210了解芯片手册的基本阅读技巧,掌握s5pv210系统资源、时钟控制器、电源管理、异常中断控制器、nand flash控制器等模块,为底层平台搭建做好准备。Linux平台包括内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在s5pv210实验平台上运行自己制作的Linux系统,集成部署Linux系统整个流程。同时了解Android操作系统开发流程。Android系统是基于Linux平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA等消费类电子产品。
八:驱动开发
驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分。本阶段的学习要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARM Cortex-A8处理器s5pv210各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发。
以上就是列出的关于一名合格嵌入式Linux开发工程师所必学的理论知识,其实,作为一个嵌入式开发人员,专业知识和项目经验同样重要,所以在我们的理论学习中也要有一定的项目实践,锻炼自己的项目开发能力。
------分隔线----------------------------
海外媒体日前称 谷歌的一个团队悄悄披露了一个新的操作系统Fuchsia 从理论上讲 这个系...
rdiff-backup 是一个用于本地/远程增量备份的强大而易用的 Python 脚本,它适用于任何...
5月10日,红帽公司宣布,宝马集团已经部署了红帽OpenShift容器平台,以支持其交付业务...
红帽和思科公司今天宣布,他们将共同合作提供一个与红帽企业Linux软件和思科整合计算...
部署环境:操作系统:CentOS release 6.5 (Final)Python版本:Python 2.7.10 (default, ...您的位置: &&
嵌入式Linux应用开发班
嵌入式Linux应用开发班
课时:详询
班制:周末班&&&&
上课地点:上海市浦东新区松涛路489号B座302室&&&&
开课学校:
学校信誉:
课程热线:021-
课程评分:4.5分
海同信息科技,打造上海*正宗的IT培训
海同信息科技有限公司
1、唯一签订“100%就业”**的嵌入式培训机构学生入学即和“海同嵌入式培训”签订100%就业**的入学**,**中明确条款**就业,如未就业,退全额学费。
2、独家采用“订单培养”的培训模式校企联合培养:“海同嵌入式培训”研发课程和教学实施,由用人企业指派技术工程师进行企业项目实训和代码训练,合格后企业直接高薪录用。名企订单培养:“海同嵌入式培训”先接受知名企业的用人订单,根据订单的数量及技术要求来招收和培养学生,培训合格后,“海同嵌入式培训”100%**学生的高薪就业。
3、华东区*大的嵌入式培训机构“海同嵌入式培训”在上海浦东、浦西拥有数千平米教学场地,先进的教学体系及师资力量,及龙旗控股、希姆通等数百家知名企业的就业服务网络。
4、强大的技术专家顾问团“海同嵌入式培训”汇聚了来自诺基亚、marvel、中兴、龙旗等跨国机构的技术专家,历经数十次的修订,自主研发了一套以“企业级项目实训”为核心的嵌入式培训教材,并创建全新3 1的教学模式,以4个月时间培养出合格的嵌入式研发工程师。
5、以企业的人,按企业的工作方法,带出企业需要的人“海同嵌入式培训”的师资来自于各大嵌入式研发企业的一线项目经理或资深技术工程师,平均拥有5年以上的研发背景和项目经验,熟悉研发流程及要求,老师们在培训的过程中严格按照企业的实际工作要求进行监督和规范,方能**学生毕业后可以达到企业的实际用人要求。
6、华东区唯一的微软和ARM联合认证微软和ARM均授予“海同嵌入式培训”为全球授权培训中心。
7、政府及企业支持国家商务部指定的外包人才培训基地
我想学的是:用户名:educn114
访问量:721
注册日期:
阅读量:1297
阅读量:3317
阅读量:426757
阅读量:1114993
51CTO推荐博文
:IT软件开发眼前道路的选择一份工作在一个人的生活中占据重要地位,对于一个人的生活质量占据决定性作用,可以说工作决定一个人一生,对于选择工作当然是要选择新兴产业且有发展前途的行业,那么在IT技术领域,选择多年流行、目前市场基本饱和的JAVA还是目前市场上新兴、前沿、国家扶持重视的嵌入式好?下面我们就来了解一下IT技术领域中JAVA开发与嵌入式开发的特点、现状及未来。二:JAVA开发的应用及特点JAVA是Sun&Microsystems公司1995年推出的一种面向对象的,应用于个人、、控制台、、和方面的应用软件编程,JAVA方向开发需要计算机软件基础、数据库原理、SQLserver、C++程序设计、java核心编程、linux、websphere&开发工具、DB2数据库、ERWin数据库建模、UML、ratioanlrose建模、OM软件开发生命周期、J2EEOM企业级开发、基于MVC的struts框架技术、软件测试工具与方法等,主要是基于PC机、linux等操作系统之上的应用软件开发,对于硬件电路是完全不懂,主要就是做一些界面、QQ、游戏等上位机应用软件。JAVA在中国发展已10几年时间,虽然所学的内容较多,但入门较容易,初中、高中、中专基础的都能学习,但是有发展瓶颈,就是上升空间不大,且生命周期比较短(大概有7年左右的时间),感觉做几年之后没什么可做的了,做java(应用软件)开发的35岁以上的基本很少了,就是常说的“吃青春饭”,且软件更新快,工作比较忙。三:嵌入式的应用领域、现状及未来趋势随着科技进步,嵌入式的出现,以及人们对生活质量,产品的智能化,成本的要求等,以及国家对与物联网、电子、科技的扶持,大量的电子产品都促使嵌入式的快速发展。使用嵌入式的产品如我们常用的手机、平板电脑、电子字典、可视电话、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set&Top&Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、物联网、智能家居、医疗仪器、航天航空设备等都是典型的嵌入式的应用。嵌入式系统市场是巨大的,市场需求是嵌入式系统产业化发展的巨大推动力,据报告:10%~20%的计算机芯片是位台式或便携式电脑设计,80%~90%的计算机芯片是位嵌入式产品设计的,这意味着每年有10亿至20亿个CPU是为嵌入式产品制造的。2003年全球嵌入式产品产值达2000亿美元,估计全世界嵌入式产品的潜在市场将突破10000亿美元,市场决定了嵌入式行业是很有发展前途的行业。四:嵌入式工作分类:嵌入式产品开发是基于产品的功能,从功能需求、提出并选择方案、电路设计、PCB电路板设计、软件设计、样机生产、软硬件综合调试,软硬件结合的产品开发。所以嵌入式开发需要软硬件都懂的基础要求。但根据侧重点的不同嵌入式产品开发工作可以有以下分类:一:硬件方面:1电路设计:产品原理图的设计,需要对数电模电都比较精通,且熟悉单片机、arm架构及熟练外围电路的使用;基本上会电路设计的都会PCB设计,起薪5、6K,有几年电路开发经验的月薪拿到7、8K,上万不成问题。2PCB电路板的设计:需要熟悉数电、看懂常用模电,对单片机、arm外设了解,且具备安规电磁兼容的应用经验;起薪3、4K,如果安规电磁兼容设计有经验,产品稳定的月薪可拿7、8K以上。二:软件方面3驱动开发:基于电路图实现产品的驱动开发,需要看懂电路,精通C语言,熟悉arm架构及外设的使用,熟悉操作系统内核、驱动;4系统开发:基于硬件的uboot移植、内核移植裁剪、根文件系统制作等系统环境搭建及驱动移植开发、应用测试等,需要精通C语言,看懂电路,linux系统开发。5应用开发:基于操作系统之上的应用程序开发,无需电路方面知识,只需要软件编程,需掌握JAVA或C++,操作系统、数据库、数据库建模、SQLserver、oracle等,应用开发更新比较快,像电脑上的软件QQ、360、游戏等软件,所以工作也比较忙,入门门槛低,但上升空间不大。嵌入式系统开发及应用开发要求可能不会太高,相对入门比较简单,但系统开发所需掌握知识面还是比较广的,也比较有发展空间,应用开发更新快,发展有限。驱动开发需要有驱动开发经验,如果有开发经验的话,不会很忙,就是实现功能,如果一个产品功能实现了,就没有太多事了,剩余的就是应用开发了,驱动开发更新不会很快。嵌入式软件开发起薪一般4、5K,系统开发、驱动开发工资拿到上万都很正常。嵌入式产品开发中不同的工作有不同的一些特点,硬件开发靠经验,硬件开发5年之后可以达到7、8K上万,经验越丰富越吃香,可以说能做一辈子;软件开发靠思维、靠算法,如果编程思维清晰,算法优越,不需要太长时间就能做的相当不错,做个两三年就可达到7、8k,如果进步快甚至上万。如果软硬件都能做,独立开发产品的话,身价更胜一筹。但是对于入门级甚至初学者来说不可能面面俱到,都要去做,你也没这个能力,即使能做,一般公司也不会让你一个人从硬件到软件独立去开发嵌入式产品,因为公司做项目有时间要求,必须分工协作。五:嵌入式的学习规划&&&随着科技进步,嵌入式的出现,人们对生活质量,产品的智能化,成本的要求以及国家对这方面的扶持,造就了嵌入式的发展机遇及前途。&&&嵌入式产品开发是需要软硬件结合,做软件需要能看懂电路,根据电路、功能即实现原理来编写程序,如果电路不懂,是不能编程实现其功能的,硬件开发也需要对芯片架构,外设编程使用比较熟悉,否则你设计出来的硬件不便于软件开发人员编程实现功能,或者你设计出来的硬件繁琐,成本很高。&&&那么如何学习嵌入式呢,对于想学习嵌入式的朋友们来说有很多都有单片机的学习经历,感觉自学就行,但是从现实情况来看,嵌入式学习还是比较有难度的,很多朋友遇到问题解决不了,学了一部分就学不下去了,嵌入式学习需要有它的学习方法以及发展规划,下面就来谈谈嵌入式的学习规划:6软件开发不需要太多经验积累,只要你做过一些开发,编程思维、算法好,不需要太长时间就能做好,所以首先可以做软件开发,比如系统开发或应用开发。7对系统比较熟悉,做过一些项目之后,可以朝底层驱动方面发展,这个工作也不会太忙,待遇也相当不错,做过一些项目之后对于电路见的也多了,电路也比较熟悉了。8有比较多项目经验之后,电路也熟悉了之后,补充一些硬件电路知识可以朝硬件设计方面发展,整个产品的开发过程都比较熟悉了之后就可以成为项目研发部的主管或经理,也可以自己接外快接项目来做,有管理经验的甚至可以自己开公司做老板,毕竟这方面的产品开发不需要投资太多成本。对于初学者嵌入式的学习步骤:9先打好两个基础:1电路基础:熟悉数字电路,能看懂电路,能分析功能,能根据电路编程2C语言基础:要学的精通,学得不好,上了系统程序看都看不懂。1掌握arm架构及其外设的使用,编程控制,做相应项目。1学习系统编程及网络编程,在应用程序中使用。1linux系统学习:uboot移植,内核移植、裁剪,根文件系统制作,驱动编写与移植(花比较大精力学习,它是系统的核心,也结合硬件),应用编程,用户界面等1先做系统编程或应用编程,有一定经验之后可向底层驱动发展;1软件项目经验比较丰富之后可向硬件电路设计发展。综合来说纯应用开发(如JAVA)来说,现在市场上基本饱和,门槛较低,但更新太快,发展空间有限,生命周期太短;对于嵌入式来说是个新兴、前沿有发展空间的行业,选择嵌入式行业是比较有钱途的,对于嵌入式产品开发来说也不再是“吃青春饭了”。信盈达实训学院网址:咨询QQ&&&电话&&&李老师深圳信盈达嵌入式专业机构实力认证培训,技术才是王道,实力才能发展,高薪才能无忧&&
了这篇文章
类别:未分类┆阅读(0)┆评论(0)下次自动登录
现在的位置:
    安晓辉,2014年CSDN博文大赛编程语言组冠军(小组赛文章、决赛文章)、CSDN Qt论坛的版主(http://bbs.csdn.net→移动开发→Qt)。他于1998年保送入西安交大教改班,2002年毕业进入西安大唐电信从事售后技术支持工作,2005年3月离职,始习编程之术。在此期间,有个人文集收录于各大文学站点与论坛,部分散文、小说、书评见诸杂志与报纸。国内第一本BBS原创文集《指尖的飞翔》(兵马俑BBS原创文学精选)作者之一。网络文学选集《竹林听海》作者之一。2005年4月加盟西安信利软件科技有限公司,参野狐禅,走开发路。
    2008年见Qt而倾心,用之于GUI、网络服务器、嵌入式开发,带领团队成功开发出基于 Qt 的互联网电视机顶盒。2012年移植 Qt Embedded 4.5.2 到 Android平台并应用于智能机顶盒项目。著有《Qt on Android 核心编程》和《Qt Quick核心编程》。
CSDN:请和大家介绍下你和目前所从事的工作。
安晓辉:我始终觉得自己的身份是一个程序员,是手艺人,我觉得靠技术吃饭是纯洁、高尚、值得尊敬的,有诗为证:闲来就写青山卖,不使人间造业钱。
我从技术支持转做程序员,做到现在,已经有将近十年。一路走来,项目经理、部门经理、项目总监,很多角色都干过,现在入伙朋友的公司,算是最小的合伙人。公司在做的事情还不能说,没做出来呢,做出来了再说。不过我们正在招人,Android、iOS、Java,感兴趣的朋友可以联系我(邮箱:)。
CSDN:你是如何走上软件开发之路的?
安晓辉:其实当时我转行做开发,是形势所逼,觉得自己干不了别的。写小说出版不了养活不了自己吧,搞销售又没有脸皮和嘴皮,还能干什么……干技术活儿吧,于是就决定做开发了。当时还有一个考虑,觉得软件开发是有创造性的工作,应该和写小说有差不多的乐趣。现在看来,确实有很多东西是相通的。这一点已故的文坛外高手王小波已经证实:他本人既是一流的小说家,又是一流的程序员!
犹记得我毕业那会儿通信行业很火,大中华(大唐、中兴、华为)很流行,我随着滚滚人潮就进了大唐电信,去做技术支持。干了两年,觉得自己要废掉了,整天东奔西跑插拔程控交换机、换板卡、跳线、更新版本,没有挑战。另外老出差,也不是个事儿,就想转行,不打算再做技术支持了。回到西安后,没能在公司内部转研发,我就辞职了。
大学学过PASCAL,可是很少有软件公司用这个,读了几天Java,觉得不对胃口,就去学C语言,经典的《the C Programming Language》,很对胃口(关键书薄薄的一本,感觉比较好征服)。大学时宿舍有个哥们儿从教改班转到了计算机系,擅长C,指针指针指针的满嘴跑,很高深的样子,有点儿印象,这也是我选择C的一个原因。
花了一个星期,粗读了一遍书,我就开始颠颠地跑着找工作了,目标就是软件开发。当时也不会干别的,做技术支持时程控交换机里的软件是公司的牛人们做的,我觉得这也是个不错的行当,带着憧憬就奔它去了。
理想是美好的,现实是残酷的。对于我这种半道出家的野和尚,就看了几天书,居然敢于跑到要求熟悉这个精通那个的公司去应聘,也是逼不得已。我记得花了一个多月的时间还没找到工作,不断被鄙视吧。唯一的收获就是C的笔试题做了好多,到最后终于觉得可以顺利通过一部分公司的笔试关卡了。后来面试华为,过了三面,因为没有经验,推荐我去慧通,我嫌慧通不是嫡系,就没去。整整行囊,拍拍灰尘,继续找吧。
人品总是会爆发的,只要你多坚持那么两天。再后来比较幸运,遇到了信利的谢总胜落,愿意把我招入麾下,我就这么在西安信利软件科技有限公司开始了我的软件开发之旅。
时间如箭飞逝,已经快10年了。
CSDN:通过你的简介了解到,你就读于具有深厚理工科传统的老牌名校西安交大,却是国内第一本BBS原创文集《指尖的飞翔》(兵马俑BBS原创文学精选)作者之一,也是网络文学选集《竹林听海》作者之一,能简单介绍你涉猎文学写小说的情况?
安晓辉:上大学的时候,已经丧失了学习的兴趣和动力,整日无所事事。彼时网络又刚刚兴起,痞子蔡的《第一次的亲密接触》打开了网络文学的窗户,大家都觉得网络上写小说这种事儿,会码字就成,碰巧计算机扫盲扫过了,会码字,于是就在兵马俑BBS上混起来了,做了几个文学版的斑竹。当时榕树下、红袖添香、西陆文学、网易文学论坛、故乡、天涯舞文弄墨等都还挺有人气,也混了一阵子,还拿了一届西陆文学的十大明星写手,不过水平有限,到现在基本不写了,而当时曾经擦肩而过的一些写手,如今很多都是文学界的宠儿了。
CSDN:如今走上技术之路,平时写的都是技术博文,接下来还会再提起笔?或有其他一些规划吗?
安晓辉:其实我对写小说还是情有独钟。当年红袖添香文学大赛有个哥们儿写了一长篇武侠,献给自己的女儿,据说都是在把女儿哄睡之后写的。小说写得特别好,我印象深刻。我有女儿时我还想,也要为女儿写一部武侠小说,可惜到现在还没开始动笔……武侠小说技术性太强(主要是武斗场面金古梁温已基本写尽很难出新),我是干不来了。最近在考虑以程序员为背景的小说,也许过阵子会写,也许没几天又忘了。
CSDN:你对文学用情颇深,你对技术又有着怎样的情感?
安晓辉:人的生活应该有多个支点,技术和文学是我的两个支点。我个性内敛,闷头干活的事情我喜欢,靠自己就靠得住的事情我喜欢,技术恰巧就是这类事情。我一直不觉得自己对技术有多痴迷,可我媳妇说他就害怕我写程序,因为写起来什么都不顾,这让她觉得压力很大。所以前一阵子我辞掉一个公司的总监职位时,她就表示特别的担心,因为看起来是要再干开发的节奏嘛。现在看来,技术已经是我的立身之本了,我身上也已经被打上了深深的烙印,到驾校都有同学说我一看就是搞开发的……
CSDN:成功者总是在不断的学习,每个人都有自己的学习之法,你的一路以来是如何学习的?
安晓辉:软件开发会经常接触新东西,必须有足够的好奇心和兴趣,才能不断的学习进步。
至于如何学习,每个人都有自己的模式,我受现行教育体制荼毒比较深,学一门技术时,遵循的是看书、实践、再看书、总结这样一个模式。
在实际工作中,我有一个基本的理念,那就是:用到一分,你就往广里多学一分,往深里多学一分。这样时间长了,自然会不断丰富自己,脱胎换骨。
回忆过往,我高三以来一直没好好学习(对不起父母对不起毛主席啊),能进交大的教改班那是因为高一高二的底子好混了个保送名额。大学的时候基本上就徘徊在被淘汰的边缘(教改班实行末位淘汰),泡BBS(兵马俑),玩游戏(仙剑、轩辕剑、星际争霸、三国志、英雄无敌等等),踢球……就这么过了四年。所以谈到学习,真是非常惭愧。但我觉得大学生活也没白过是吧,我现在的看法是:你知道怎么学习,那什么时候学都不晚。不是说朝闻道夕死可矣吗。
因为大学没怎么学,什么操作系统、信号原理、模电数电、计算机组成原理、数据结构等等,都不知道考试怎么及格的,后来又干了两年技术支持,对于软件开发,实在是知之甚少啊。
八小时之内是现在,八小时之外是将来。什么意思呢,你懂得。
我其实还是一个比较爱钻研的人,毕竟初中、高中的各种奥数、奥物、奥化竞赛都拿过奖;另外我也是一个心里存不住疑问的人,所以我不但刚开始干软件开发的时候业余时间老是买各种技术书看,后来干熟练了,依然抽时间学习技术。这已然成了习惯。当你工作中用到一项技术,可能只是用其一点,那还有与这点关联的很多点,那这门技术必然还有很多相关的技术,用心的话,会想了解更多,于是,以点带面,就会持续不断地学下去。好好学习,天天向上么,这时候才发现这不是一句空话。
如果你发现了自己的学习模式,愿意学并且能坚持,我觉得没什么能阻挡你征服软件世界的脚步。每当我遇到一个问题,常常会茶饭不思,吃了也是味同爵蜡,我脑子就离不开这个问题了,直到有一个答案,很多时候我都是梦里还在思考某条路线到底能否走通某个BUG能否解决,也有不少次半夜醒来的时候。人家女孩子午夜梦回是看了《午夜凶铃》,我们干开发的,有时候半夜突然坐起来是因为不小心想到自己把雷埋在哪里了。
都说IT这行日新月异,那确实,还真没哪个行当可堪比拟。对开发者来讲,自然是需要不断学习的。但我觉得更重要的一点是:发现自己的学习模式。一旦你能够用模式来指导你的学习,有意识地践行、改进你的学习模式,那年龄我觉得也不是问题,到40岁,到50岁,依然可以跟得上技术的发展。
<font color="#08年,当时如日中天的诺基亚公司宣布以1.53亿美元收购奇趣科技(Trolltech),并更名为Qt Software。这次收购一度被业界视作诺基亚意在加快移动设备和桌面应用的跨平台软件战略部署,加速推出互联网服务业务。但世事无常,随着诺基亚宣布放弃Symbian系统,以及IOS/Android系统的快速崛起,2011年3月,Qt的商业授权和技术支持业务被Digia收购,2012年8月,Digia宣布完成对全部Qt技术平台和知识产权的收购。
CSDN:作为一款跨平台图形界面软件,Qt开发工具可实现在多操作系统以及移动设备之间一致的跨平台用户体验,你觉得被收购后的Qt至今发展如何?
安晓辉:发展得还不错,在嵌入式和很多行业都有更好的表现,目前又支持了Android 、 iOS等移动平台,作为跨平台的解决方案,始终是最强悍的。
具体情况,在我的《Qt on Android核心编程》一中也有提到,摘录如下:
Qt 被 70 多个行业中数以千计的主要企业所使用,内部使用 Qt 的数百万计的设备和应用,你每天都会使用。
Qt 强有力地支持着来自 70 多个行业中的主要企业开发了数以百万计的产品,也是财富 500 强企业里前10个企业中的5个所选择的开发技术。 Qt 的完整框架功能(包括直观的 C++ 库、工具和 Qt Quick UI技术)使它成为汽车、手机制造商、工业自动化、消费电子产品、石油和天然气、国防和各种各样的其他领域内顶级玩家的首选技术。
CSDN:每一个工具都有适合的使用场景,Qt也不例外,对于开发者来说,是否选用一种技术,要看这个技术和他的需求是否契合。Qt适合的应用场景有哪些?
安晓辉:Qt特别适合跨平台开发,比如你要支持Windows、Mac OS X、Linux、Android、iOS等等平台,那Qt绝对是值得考虑的技术方案。
比如办公软件,要跨平台,支持Windows、Mac OS X、Linux、Android、iOS等,就可以选用Qt。又比如用于企业办公的网络会议系统,也需要同时支持桌面和移动平台,Qt也是很棒的解决方案。又比如一些行业软件,医疗、工业自动化、自动控制等,都有很多使用Qt的。当然你也可以使用它做游戏,“吃药了”这款游戏就是用Qt做的,还有很多其它的游戏也选择了Qt。
CSDN:Qt支持的平台包括Windows、Mac、Linux等桌面操作系统,QNX、VxWorks、Embedded Linux等嵌入式平台,还包括Android、iOS、WP/Windows Runtime三大移动操作系统,和Java跨平台相比有什么区别?前者的优势是什么?
安晓辉:Java在做web端应用时很有优势,跨平台也威力强大。但是目前的移动端,客户端应用,如果说你在Android上用Java,没有问题,因为Android使用Java作为基础语言构建了针对Android的一套UI框架,但是你在iOS上使用Java来做应用,在Windows Phone上使用Java来做应用,还有其它的一些平台,都是非常吃力的,没有好的解决方案。
而Qt的跨平台,在桌面应用开发,在移动端应用开发,所有平台都是一致的体验,它针对各个平台编写平台相关的QPA插件,直接与各个平台融合在一起,最终既不损失性能又跨平台,对开发者来讲,一次编写,多次编译,到处运行,这实在是太迷人了!
CSDN:日前,你出了《Qt on Android 核心编程》一书,能否谈下写这本书的缘由?期间有什么难忘的事?
安晓辉:因为我有写小说的梦,也写过不少未发表的小说,对写作其实是有情结的。我想有一本自己的书,但其实没想到会是技术书。
2008年在西安信利软件使用Qt开发机顶盒产品接触 Qt,一见倾心,她优雅从容,非常好看。之前也用过MFC、WTL、Win32等等框架,但仅仅是用而已。我用Qt做嵌入式开发,工作之外我也想研究她,看看她到底是什么回事儿,从外到里,一层一层剥剥看,所以就去读了源码,慢慢就对Qt有了较为深入的了解,形成了有问题看帮助,帮助不行看源码的习惯。
我觉得一个人技术做到一定程度,会愿意与他人分享,不介意把自己辛苦得来的技能和经验讲给他人来听。这是一种自发的行为吧,也算是一种修炼。知识这玩意儿是为数不多的越分享越多、越碰撞越好的东西。
13年底时我恢复了在CSDN的博客更新,其实这个时候我工作已经很少用Qt了,但Qt刚好出了支持Android的版本,我就想研究它。Qt还出了Qt Quick这个迷人的小姑娘,我也想研究它。于是不断地在博客上记录我的学习历程,我知道的都讲出来给大家看,不作保留。
后来电子工业出版社博文视点的策划编辑高红霞老师联系我,问我愿不愿意出书,那当然愿意啊,我有出书的情结嘛。说干就干了,我们一个电话没打过,事情就敲定了,我开始挑灯夜战,天天晚上都写,不是一点就是两点。不写的时候也在琢磨怎么写。周末也搭上了。连女儿我也很少陪她玩儿了。总之我全身心地投入了这件事情当中,也没在意老婆说的“万一卖不好岂不白辛苦”这种问题,我喜欢,我愿意这么干,我就这么干了。老婆善解人意,支持我,女儿小小年纪也支持我,这是最令我开心的事儿。
《Qt on Android核心编程》这本书就这么出来了,我人也瘦了十来斤,不过我要说的是,做了,爱了,享受了这个过程,无怨无悔。
在写《Qt on Android核心编程》的时候,我发现Qt Quick这个框架无论如何不能包含在里面了,而这么好的东西如果我不把她展示出来,那就太暴殄天物了。于是我跟高老师讲我还要做一本书,Qt Quick的,而且目前国内没有同主题的书,于是我就做选题做大纲,于是又通过了,事儿就这么成了,于是我马不停蹄又投入了新的写作。于是几个月后《Qt Quick核心编程》出来了。
请容许我讲讲这两本书吧。
《Qt on Android核心编程》主要分两部分,一部分讲述Qt核心的概念,比如信号与槽、元对象系统、网络、Qt Widgets等等,非常适合Qt初学和进阶;另一部分讲解Qt在Android上的开发主题,比如触摸、手势、传感器、JNI扩展等等,适合对使用Qt开发Android应用的感兴趣的朋友。总之这本书既可以作为Qt入门参考,也可以作为Qt移动开发的入门参考。
《Qt Quick核心编程》是专门讲述Qt Quick技术的,从QML语言、Qt Quick基本元素、Model-View、动画、多媒体、网络、Android主题……该讲的都讲了,不该讲的也讲了,总之我觉得它是业内第一本系统讲述Qt Quick的书,是填补空白之作,对于初学 Qt Quick(QML)的开发人员和想进阶的开发者都有很好的参考、借鉴意义。
CSDN:当Qt跨界牵手Android,移动开发会有什么不同?
安晓辉:有这么几点,我觉得非常重要。
1. 跨平台,之前说过了,你为Android开发的应用,稍作改动,就可以支持iOS和其它平台,想想就兴奋嘛。你只要学了Qt,就拥有了全平台的神器。
2. 开发的便利性,比方说你开发Android应用,需要模拟器,而AVD又慢得要死要活的。Qt就不同了,你直接可以在桌面环境下调试你的应用逻辑、甚至是界面,非常方便。Android就不行,因为界面是必须依赖Android系统。
3. 丰富、成熟、强大的类库,比如网络处理的类库,以http为例,天生是异步的,很好用。而Android提供的Http类库,比较难用,想异步,就得配上线程,不友好么,这点从我写的一篇介绍AsyncHttpClient的博文的点击量就可以看出来,大家都在寻找更好用的Android网络类库。Qt还有很多其它的类库也很强大,看我的《Qt on Android核心编程》就知道了。
4. 经验的延续性,比如你用过Qt开发桌面软件,用它开发Android等移动软件,你的经验一脉相承,没有陡峭的学习曲线。而就算是Java开发人员,要开发Android应用,也要重新学习Android的UI类库。
CSDN:初学者如何借助Qt开发Android应用?
安晓辉:只要针对Android的环境搭建起来了,其它的事情和桌面开发差不多,很方便。
安晓辉老师也是半路出家学编程,经历了一个痛苦过程,如今十年过去,一路从程序员、小组长、项目经理、部门经理就这么走着……今年他完成了两本书的写作、换了工作了,新工作也告别写代码……作为一名老程序员,在面对开发群里经常有学生问面试、择业等问题时,有感而发特开辟了《漫谈程序员》专栏,以幽默的笔调深受网友们的喜爱,由于文章诙谐指数高入云霄,在这里我们也请安老师以一个比较正式的口吻来分享,让我们来一起关注程序员成长。
CSDN:作为十年的程序员,你是如何看待程序员这一角色的?
安晓辉:程序员,就是手艺人的角色,吃的是技术饭。他当然有很多的酸甜苦辣咸,与其他行业并无不同。关键是我们自己的心态,你喜欢,你就有乐趣,如果你纯粹是把它当作一个挣钱糊口的手段,那可能就会慢慢厌倦这种高强度高更新频率的工作,要么麻木要么转行。
其实程序员没有比其它人苦逼多少。你说夜班出租车司机苦逼不,天天熬夜……你说建筑工人苦逼不,累死个人还被小市民鄙视……你说明星苦逼不,结婚了都不敢说,酒店开房还要被抓……你说国家领导人苦逼不,该颐养天年的时候还得四处奔波,还说不定哪天就被揪斗了……关键是心态,所谓此心安处是吾乡,每一行都有它的苦乐忧愁,花开富贵一季红,竹生平凡千日青,放平心态,一切都会不同。
CSDN:你也是中途踏入软件开发之路,程序员的门槛几何?与此同时,你认为普通程序员和优秀程序员的不同之处在哪里?
安晓辉:程序员没什么门槛,但是从普通到优秀,从优秀到卓越,这里面各有很长的路要走,对很多人来说,穷其一生也不一定能走完这中间的旅程。
关于普通和优秀的差别,从做事结果上看,优秀程序员做出来的软件可能有更好的易用性、健壮性、安全性、灵活性;从行为上看,优秀程序员会更积极一些,自我成就欲望强一些,最终表现在解决问题的思路、手段、能力等更强一些。
CSDN:一个程序员该如何学习技术以及选择技术方向?
安晓辉:对多数人来讲,你所做的事情决定你要学习的技术以及你将来会走的技术方向。当然有相对的一面,有些人,是先选技术后选事情,根据技术选要做的事情。但不管哪种,到最后,我个人观点,具体的技术都不再重要。重要的是,解决问题的能力。因为程序员的职责其实不是编写程序,而是解决问题。
如果非要讲如何学习技术,那还是奉行“实践出真知”吧。
至于选择技术方向,虽然说技术无高低,但还是要选择有发展潜力的吧,有些没落的,走下坡路的,就不要选择了,比如MFC之类的。需要说明一点的是,很多技术都有其特定的应用场景,我们在选择某一个技术方向时,实际上也选择了你工作的方向。这点可能会给将来的就业带来很大的影响,所以决定要学一门技术时,还是要了解一下它能解决什么问题,在什么行业得到了什么样的应用。
CSDN:有一定的技术后的准程序员们怎么找工作?以及有哪些职业风险?
安晓辉:这个话题比较大,我在漫谈程序员系列中也有谈及,感兴趣的可以移步阅读。
其实干什么都是有风险的,对于开发人员来讲,最大的风险是什么呢?选错一门技术?干错一个项目?做错一个产品?跟错一个老板?……也许都不是,也许是没有在合适的年龄找到合适的妹纸……
对于开发人员来讲,最大的风险是:在职业规划上没有延续性地乱跳槽。
有人跳槽为了涨工资,不跳不涨么。一年都能换几次,也不管工作内容、技术路线什么的。这其实也无可厚非,是吧。龙生九子,个个不同。理解万岁。桥归桥,路归路。
我是比较迟钝的人,到了 30 多岁才第一次正式地来审视“怎样找工作、找什么工作”这个问题,可能是年龄大了吧,觉得不能再玩从零开始的游戏了。有人早慧,可能大学没毕业就明白了这个道理。真的,我有一同学,毕业时放着微软不去,坚定地找嵌入式的机会,真给他找着了,并且干得风生水起……还有个小盆友,小学时就说长大了要当校长,原因呢,是因为他的老师老打他手心,他当了校长就可以直接开掉这个老师……
当年我在参加一家公司的面试时对面试官说:要在两到三年内做到不可替代。结果被拒了……你懂的,单位都讨厌这个。可是作为开发人员,这是你时刻要牢记在心的:培养自己的稀缺性。
为什么这么说呢?物以希为贵么。如果你很牛X,干的活儿很重要,别人又替代不了,你自然受重视是吧。
CSDN:你做过五六年的项目经理,你对好产品的理解是什么?
安晓辉:说说我早前的经历吧,工作上回到老东家,是因为老板对我说要做产品,做一个视频相关的产品,具体是什么还不清楚。那时我虽然还有点儿糊里糊涂,听过很多道理,还没过好这一生。可毕竟已经不是懵懂少年,多少有了些自己的看法。觉得做产品比较靠谱,比外包靠谱,比外企有更大的可能性,没准一下子红了呢?风水轮流转,明年到我家,也许就可以鲜衣怒马走天涯……
这是我当年的一个认识吧:
“有产品做,就不要做外包;有独担一面的机会,就不要去做外企或者大公司的螺丝钉。”
当然很多人与我见解不同,理解并支持你们!王小波是罗素的信徒,罗素说,参差多态乃幸福之本源。本来么,求同存异,不能视见解与己不合的人为异端,那是法*西斯。工作中其实也是一样的。
吭哧吭哧干到了 2014 年,从 08 年到 2014 年,发生了很多变化,老婆孩子什么的都有了,人生有几个六年呢……有了白头发了……
如今,再来说一下我对好产品的理解,大概是这样的:
解决用户痛点
所处行业前景光明
产品有延续性,可持续性发展
好产品加上靠谱的公司,基本上就是比较靠谱的工作了,甚至可以做成事业。
总的来说,能解决用户痛点的产品就具备了好产品的基本条件。如果还能给企业带来效益,那就是真正的好产品了。这就是好产品的两面。
CSDN:怎么判断公司靠谱呢?
安晓辉:我有一些经验,用来鉴别不太靠谱的公司或工作:
只关注你过往能力和项目的匹配度
只想用你已有的技术能力解决公司遇到的问题
面试你的人对公司产品没有热情,自己都不了解公司的产品远景,也不了解公司的远景,说不出个一二三
没有新产品,招你就是维护性开发
如果新公司靠谱,有实力(有一帮牛人、有资本投入)把这个产品做好,那是最好的了。
对于如何了解一家公司呢。我认为互联网搜索、熟人打听、公司网站、招聘要求等都是途径。还有一个就是面试,一定要牢记,面试是双向的,不但是公司选择你考问你,也是你最好的了解这个公司的机会,有时机就问一些思考过的问题:为什么自己要离开现在的公司、自己想干什么、将来的路怎样规划等。
我在面试一些应聘者时,通常在最后会留机会让他们问问题,经常遇到有些求职者说我没什么问题……这么好的机会都放过了,一般这种情况,这个人我就不再考虑了……
CSDN:对于那些正在大学的准程序员和初级程序员,你最想对他们说什么?
安晓辉:假如一句话来概括的话:
不畏浮云遮望眼,风物长宜放眼量。
另外,作为开发人员,我们需要了解自己的能力边界,清楚自己能干什么不能干什么,多多发挥、打磨自己的长处。所谓自知者明自胜者强,有些短处倾其一生也是无法改变的,天生的,没必要在意。而有些长处经过打磨会越来越好,如果你不去发掘、培养它,那它也可能慢慢萎缩掉。
还有非常重要的一点,开发人员需要在软件开发之外建立另外的一个兴趣。人生需要多个支点,多样的生活会更加有趣。
来源:CSDN
【上篇】【下篇】
您可能还会对这些文章感兴趣!
百度站内搜索
同分类最新文章

我要回帖

更多关于 如何自学嵌入式开发 的文章

 

随机推荐