⑴ 如何成为一个程序员
1、 程序员意味着要编程序。(如果你仅仅想得到一份高薪水的工作,喝喝咖啡就等老板发薪水,我奉劝你还是另找一份更合适的工作,譬如练摊,真的,兄弟,这份工作不适合你)
2、你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和严谨。(说坦白点就是,在你没有找到乐趣以前,它很枯燥)
3、你有对新技术追求的热情吗?你有刨根问底的探索精神吗?(热情绝对是最重要的!你仔细思考一下自己的性格适合当程序员吗?)
4、当程序员决不是什么好差事,时刻需要学习,需要思考。(直到你成为那个可以引导别人去学习和思考的人,你才可以偷偷的嘿嘿笑,又一群傻蛋)
5、程序员的未来很迷茫。(但我认为关键看你自己!我希望你是一个有追求的人,不仅仅是混碗饭吃。因为真正的乐趣在于创造;如果你能改变软件业的历史,那才是英雄;不想成为Bill Gates,不想成为Dennis Ritchie和 Bjarne Stroustrup,我会说你没有追求。有个关于程序员未来的笑话,也许你还没听过,你该听一听,摘抄如下:
一个程序员对自己的未来很迷茫,于是去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝说“我的孩子,你去问Lippman,他现在领导的程序员的队伍可能是地球上最大的”
于是他去问Lippman。
Lippman说“程序员的未来就是驾驭程序员”
这个程序员对这个未来不满意,于是他又去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝说“我的孩子,你去问Gates,他现在所拥有的财产可能是地球上最多的”
于是他去问Gates。
Gates说“程序员的未来就是榨取程序员”
这个程序员对这个未来不满意,于是他又去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝说“我的孩子,你去问侯捷,他写的计算机书的读者可能是地球上最多的”
于是他去问侯捷。
侯捷说“程序员的未来就是诱惑程序员”
这个程序员对这个未来不满意,于是他又去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝摇摇头“唉,我的孩子,你还是别当程序员了”)
6、当程序员还是很有乐趣的。(当你学到新知识时,当你有新的思想见解时,当你有新的产品问世时,和知己探讨你的成果时…我问你,觉得这些是乐趣吗?)
7、当程序员不易也不难。(世间事有难易乎?为之…;不为…。你有决心和信心吗?)
8、你真的要当程序员?是你自己的想法?
9、你舍得花钱买书吗?(读好书绝对是学习编程的最佳捷径。你一定会说,现在电脑书籍真他XX的贵,没法子,谁让知识和技术在人家的脑袋,在人家的书里呢;等你写书时可以把价格定低一点,记着还有好多没钱但想买书的兄弟很困难呀。要舍得买书,买好书,不好的的书不如不读,其害大于其益,关于买什么书,你可以问高手或看候捷的书评;准备一个小本子记录你想买的书的名字,逛书店时看看,如果好就买下,记住要读,别光买不看。) 10、我告诉你,程序就是:任何有目的的、预想好的动作序列,它是一种软件。
11、编程序就是编写程序。
12、你想好了吗?(如果你想好了还是决定要当程序员,可以继续往下读;否则,你可以继续寻找别的出路了。)
(三) 一个程序员应该具备的基础知识和概念
1、计算机是有什么组成的,CPU是什么东西,其工作原理是什么。(对于这些以及下面将要提到的概念我不会告诉你什么答案,你可以看相应的教材,关于教材我会在下一部分详述,记住理解最重要!)
2、机器语言和微指令集的概念。
3、程序的概念。
4、汇编语言是低级语言但不是机器语言。
5、高级语言主要有那些?(C,C++,Basic,Pascal,Fortran,C#,Java等等;如果你是中国软件业的英雄,你也写一门语言,最好不用英语) 6、编译程序和解释程序的概念和其原理。(编译器是高手和专家编写的)
7、HTML、XML等是标识性语言。
8、Prolog是人工智能语言。
9、操作系统OS的概念和原理。(Windows98,Windows2000,Windows NT,UNIX,Linux,等等都是OS,还有一些实时OS,嵌入OS,编这些的绝对是高手)
10、Windows编程说白了就是Windows API的调用。(中国的程序员很多只是会编windows程序,用的是VB,我的建议是这些程序员顶多只是低级编码员,我称其是coder)
11、VC++、VB、BC、BCB、Delphi、VF等都只是编程的工具和环境,不是编程语言。
12、面向结构的设计概念。
13、面向对象的概念。(好好理解,兄弟,这个东西还是很重要的)
14、软件工程的概念和原理。(如果你想当老总就需要好好研究了,系统分析员比编码员要高一个等级,薪水也高哟)
15、数据库的概念。(要熟悉一些着名的数据库系统和语言的名字,如Orcle,SQL,DB2,DyBase等)
16、了解网络概念。
17、了解多媒体概念。
18、熟悉和掌握数据结构和基本算法。
19、是不是要求太高了,别着急慢慢来,进步在不知不觉之中。(一旦开始学习,一个月以后你就会有一个基本的概念;两个月以后你就会感觉自己有了全面的基础知识;当你知道编程序是怎么回事时,说明你已经入门了。也有很多人编了很多年程序还没有入门呢,你不会希望自己步其后尘吧。要有信心和耐心。沉不住气怎么能成大事?!)
(四) 教材推荐
――-推荐的教材主要还是针对概念来的,最好选用名校的教学用书。
1、《计算机组成原理》(熟悉)
2、《数据结构》(掌握)
3、《操作系统》(了解->熟悉)
4、《The C language》(掌握)
5、《编译原理》(了解原理)
6、《汇编语言》(了解)
7、《计算机网络》(了解)
8、《软件工程》(了解)
9、《关系数据库》(熟悉)
10、《The C++Languege 》(掌握)
11、《面向对象设计》(掌握;结合C++学习)
(五)一些经验和体会
1、真正的程序员用C++;(一位专家说的)
2、动手去编程序;
3、动脑去思考;
4、要有良好的编程风格;
5、读书,读好书,尽量读原版书!(我反复强调这一点,读书要有选择,坚持读好书,名家出的经典书,不要浪费实践在一些粗制滥造的书上面;坚持博览群书)
6、有自己的学习计划;
7、总结自己的经验教训;(准备一个笔记本,记录错误和心得)
8、不要怕学新东西;
9、要有软件工程的思想;
10、善于发现问题,然后去寻找答案;
11、向高手请教;(要虚心直到你成为高手)
12、和同行交流;(不善于交流肯定不行)
13、懂得软件的实质,不要被千变万化的表象所迷惑;
14、真正要学习用的是编程语言和方法,不是什么库,什么类,什么工具;(学用那些什么库都比较简单,但光会这些库,我觉得还远远不够)
15、学习wiodows编程主要是学习windows OS和win32 API;
16、有空了解一下嵌入式开发;
17、有空了解一下PDA软件开发;
18、了解一下.NET框架和C#语言,也许它是你新的衣食父母;
19、要有耐心,不要作浮躁的人; 20、对程序加注释,并保留你的老程序;
21、学到的东西越多,了解的越多,你就越接近专家;
22、有空去逛逛CSDN,那里有你很多知己;
23、要有信心成为一个优秀的程序;
(六)一些好书的推荐
1、《The C Programming language》 (Keinighan & Dennis Ritchie 1988)
2、《The C++ Programming Languague》(Bjarne Stroustrup 1997)
3、《Inside The C++ Object Model》 (lippmans)
4、《Effective C++》 (同上)
5、《More Effective C++》 (同上)
6、《Exceptional c++》
7、《C++面向对象高效编程》
8、《设计模式》
9、《Thinking In C++》
10、《The Standard C++ Bible》(一般推荐)
11、《The Art of Computer Programming 》
12、《Programming Windows》 (Charles Petzold)
13、《VC++5.0技术内幕》
14、《MFC 深入浅出》
15、《软件需求》
16、《Advanced Windows》
17、《C++ primer》
18、《win32程序员参考手册》
19、《用TCP/IP进行网际互连》
20、《COM 本质论》
(七)学习计划
――-这个学习计划是我个人定的,也共享给大家参考一下,共同进步吧。 1、《计算机组成原理》
2、《操作系统》
3、《数据结构》
4、《汇编语言》
5、《 C 》
6、《 C++ 》
7、《VC 技术内幕》
8、《Programming Windows》
9、《深入浅出MFC》
10、《Advanced Windows》
11、《Inside The C++ Object Model》
12、《Thinking in C++》
13、《Effective C++》
14、数据库
15、网络
16、嵌入式OS和编程
17、硬件单片机
18、.NET和C#
19、软件工程
20、UNIX和Linux
⑵ 作为一个好的程序员,都需要具备哪些基本的素质和能力
我上班第一天我的老板让我做的第一件事
看两篇文章:
程序员随想
雷军
我不是天生的程序员,也并非天生就喜欢电脑,上高中时也没有想过将来会当程序员,接触电脑纯属偶然--小时候的一个好朋友上大学时选择了电脑专业,为了和这个朋友有更多的“共同语言”我便选择了计算机系。在大学,我略窥电脑世界,开始为之“发烧”;毕业后,开始了一个程序员的职业生涯。
从开始写程序到现在快十年了,写过的程序不少。从这些年的风风雨雨中走过来,不能不有些体会。说到体会,最大的体会就是这条路太漫长。
一、一辈子有你 苦一点也愿意
我没有奢望大家把写程序和文学创作相提并论,但其中的苦楚却不是一个普通用户能够体味的。为了写好一个程序,我们度过太多不眠之夜。有个朋友如此评价道,“写程序简直是在自杀,巨费精力巨费脑子巨累”。但还是有许多人不畏其苦,前仆后继。
我刚接触到电脑就发现电脑的妙处:电脑远没有人那么复杂,如果你的程序写得好,你就可以和电脑有着非常融洽的关系,就可以指挥电脑干你想干的事,这个时候,你是十足的主宰。每每坐在电脑面前,你就如同在一个王国里巡行。
电脑里的世界很大,程序员是活在自己想象的王国里。你可以细微到电脑里的每一个字节、每一个比特的东西。
这样的日子简直就是天堂般的日子,很多人都爱上了这样的日子。
不少人认为程序员最多干到三十五岁就可以收山,脑子也差不多该歇歇了,并认为写程序是年轻人的事情,到了一定年龄,估计没什么人再当程序员。
我刚毕业时,意气风发,也想先吃点苦,到了三十岁就不干了。年长一点后就发现了自己的无知。一个人大学毕业就二十一二岁,技术成熟一点后可能二十五,接着就是票子、妻子和房子等等诸多忙不完的事情。一切搞掂的时候,也许就是三十五岁。如果三十五岁就放弃的话,我们就不用选择程序员的道路。
电脑进入我国时间不短,但真正大规模开始用,还是八五年PC登陆我国时候的事。因此国内真正写电脑程序的人最长也就写了十几年(不知道是否还有这样的人)。由于电脑应用在国内时间比较短,国内程序开发的主力以三十五岁以下的年轻人为主,但这并不表示程序员如同红粉佳人般的容易衰老。美国和台湾地区的开发者以三四十岁的人为主。开始写程序的时候,我们觉得没有什么不能做的(现在还能听到这样的豪言壮语),而且更要命的是,好象我们特别聪明,特别适合开发软件,比老外强得多。当我们真正接触那些杰出的国外开发人员的时候,发现他们太厉害了,都有十多年的开发经验,绝对多数的产品出自这些有丰富开发经验的程序员之手。
毕业后,编程不仅仅是爱好,而且成了一辈子的工作,可以肯定会干一辈子,虽然我没有打算一生只干这一件事。用一生来编程是一件既容易又困难的事。如果碌碌无为,为交差写点程序,这样写两辈子的人都有。但如果想全身心地写程序,写十年都不是一件容易的事。现在我的不少朋友都洗手了,有时我也有这种想法,但一旦面对电脑,立刻顿悟:电脑还是自己最擅长干的事,也是最顺手的事。
二、我的未来不是梦
有的人刻苦学习编程技术,努力提高编程水平,并把高级程序员作为追求的目标,甚至是终身的奋斗目标。后来参与了真正的商品化软件开发后,感到非常困惑和茫然。
当我上大学的时候,高级程序员也曾是我的目标。当时,我通过等级考试获得了高级程序员证书,并在自己的名片上印上“高级程序员”的字样。后来,我的水平提高了,似乎也成了大家认可的好程序员了。这个时候我却开始茫然。我希望我的技术能得到别人的承认,当得到别人的承认后,我又能如何呢?后来我发现,无论成为多么高级的程序员都没用,关键是是否能够出想法、出产品,你的劳动是否能被社会承认,是否能为社会创造财富。
我的未来是明确的,开发出高质量的适用社会的产品,为社会创造财富。
三、每一个程序都是艺术品
有人认为程序员没有什么了不起,不过是一种熟练工种而已;也有人把编程说成是艺术创作,捧上天。这两种意见争论比较激烈,甚至可以说针锋相对。
我们换个工种来看,石匠应该是熟练工种,跟艺术似乎沾不上边。;但正是这些石匠,给我们留下了数不胜数的文物古迹,如乐山大佛、莫高窟等等。应该说这此石匠给我们留下了无穷的文化财富。我认为编程的工作和石匠比较相似,是技术,也是艺术。
现代软件工业已具相当规模,很多软件的完成需要的是大兵团作战。一名精通程序员接受编写某一块的任务后,往往只是写代码,发挥的余地很小。在大项目中,很多程序员只能了解到和自己所编模块相关的很局部的细节,另外还受到开发环境的限制,真的很难体会到自己在从事“艺术”创造,更多的时候是感到自己在从事重体力劳动。有的时候还担心自己苦苦参与的这个项目究竟有没有意义,是不是在同类产品中有竞争力,会不会开发出来以后就因为硬件的发展、操作系统的换代而过时......
编程是技术活,才有可能大规模进行,才会有软件工程的理论。也正是编程具备艺术创作的特点,我们的生活才会有如此多的好软件产品。写一个程序需要付出脑力和体力,当我—我们—某个群体完成一个程序之后,在我们的眼里,每一个程序就都是艺术品。
程序员应具备的素质
前言
程序员是一种技术工作,在IT的发展中有相当重要的地位,从底层硬件通讯协议的建立, 到数据传输层的处理,到操作系统的建设,到数据库平台的建设,一直到应用层上各种数 据营销平台的搭建,程序员在里面都扮演着举足轻重的角色并为IT事业的发展做出了巨大 的贡献。
中国有很多精于编码的人,但是中国软件行业,尤其是网络应用开发方面误区很大,很难形成有规模的软件开发力量和产品能力,不但比美国差距甚远,和印度相比也是颇有不 如。这些问题不是在于中国程序员的智商和工作努力状况,也不是在于国家和民间对开发 的投入程度,而是很大程度上,有一些对技术,对程序开发,对项目设计方面的思想误 区,这些误区,导致了软件行业的产品化能力不足,缺乏规模化和大型复用系统研发能 力,可以说,改变认识误区,是解决软件行业小作坊模式和个体英雄模式所带来的局限性 的重要工作。
中国有很多小朋友,他们18,9岁或21,2岁,通过自学也写了不少代码,他们有的代码写的很漂亮,一些技术细节相当出众,也很有钻研精神,但是他们被一些错误的认识和观点左右,缺乏对系统,对程序的整体理解能力,这些人,一个网上的朋友说得很好,他们实际 上只是一些Coding fans,压根没有资格称为程序员,但是据我所知,不少小网络公司的 CTO就是这样的coding fans,拿着吓人的工资,做着吓人的项目,项目的结局通常也很吓人。
一、程序员基本素质
作一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具有的素质。
1:团队精神和协作能力
把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最 重要的安身立命之本。把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有 限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球 的为linux写核心的高手们,没有协作精神是不可想象的。独行侠可以作一些赚钱的小软 件发点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务,缺 乏这种素质的人就完全不合格了。
2:文档习惯
说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中 非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级 程序员和系统分析员,这个比例还要高很多。
缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇 到极大的麻烦。
3:规范化,标准化的代码编写习惯
作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩 进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和 纠错,也有助于不同技术人员之间的协作。
有些coding fans叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自 己压根不配自称程序员。代码具有良好的可读性,是程序员基本的素质需求。
再看看整个linux的搭建,没有规范化和标准化的代码习惯,全球的研发协作是绝对不可 想象的。
4:需求理解能力
程序员需要理解一个模块的需求,很多小朋友写程序往往只关注一个功能需求,他们把性 能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考虑,有人曾 经放言说写一个广告交换程序很简单,这种人从来不知道在百万甚至千万数量级的访问情 况下的性能指标是如何实现的,对于这样的程序员,你给他深蓝那套系统,他也做不出太 极链的并访能力。性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程 序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险 和恶意攻击的可能性。就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经 验才有可能有心得。
5:复用性,模块化思维能力
经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都是重复写 一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方,一些重复性工作变成 了熟练程序员的主要工作,而这些,其实是完全可以避免的。
复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一 些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在, 是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避 免重复性的开发工作,如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到 这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投 入到创新的代码工作中去。
一些好的程序模块代码,即便是70年代写成的,拿到现在放到一些系统里面作为功能模块 都能适合的很好,而现在我看到的是,很多小公司软件一升级或改进就动辄全部代码重 写,大部分重复性工作无谓的浪费了时间和精力。
6:测试习惯
作为一些商业化正规化的开发而言,专职的测试工程师是不可少的,但是并不是说有了专 职的测试工程师程序员就可以不进行自测;软件研发作为一项工程而言,一个很重要的特 点就是问题发现的越早,解决的代价就越低,程序员在每段代码,每个子模块完成后进行 认真的测试,就可以尽量将一些潜在的问题最早的发现和解决,这样对整体系统建设的效 率和可靠性就有了最大的保证。
测试工作实际上需要考虑两方面,一方面是正常调用的测试,也就是看程序是否能在正常 调用下完成基本功能,这是最基本的测试职责,可惜在很多公司这成了唯一的测试任务, 实际上还差的远那;第二方面就是异常调用的测试,比如高压力负荷下的稳定性测试,用 户潜在的异常输入情况下的测试,整体系统局部故障情况下该模块受影响状况的测试,频 发的异常请求阻塞资源时的模块稳定测试等等。当然并不是程序员要对自己的每段代码都 需要进行这种完整测试,但是程序员必须清醒认识自己的代码任务在整体项目中的地位和 各种性能需求,有针对性的进行相关测试并尽早发现和解决问题,当然这需要上面提到的 需求理解能力。
7:学习和总结的能力
程序员是人才很容易被淘汰,很容易落伍的职业,因为一种技术可能仅仅在三两年内具有 领先性,程序员如果想安身立命,就必须不断跟进新的技术,学习新的技能。
善于学习,对于任何职业而言,都是前进所必需的动力,对于程序员,这种要求就更加高 了。
但是学习也要找对目标,一些小coding fans们,他们也津津乐道于他们的学习能力,一 会学会了asp,一会儿学会了php,一会儿学会了jsp,他们把这个作为炫耀的资本,盲目 的追逐一些肤浅的,表面的东西和名词,做网络程序不懂通讯传输协议,做应用程序不懂 中断向量处理,这样的技术人员,不管掌握了多少所谓的新语言,永远不会有质的提 高。
善于总结,也是学习能力的一种体现,每次完成一个研发任务,完成一段代码,都应当有 目的的跟踪该程序的应用状况和用户反馈,随时总结,找到自己的不足,这样逐步提高, 一个程序员才可能成长起来。
一个不具备成长性的程序员,即便眼前看是个高手,建议也不要选用,因为他落伍的时候 马上就到了。
具备以上全部素质的人,应当说是够格的程序员了,请注意以上的各种素质都不是由IQ决 定的,也不是大学某些课本里可以学习到的,需要的仅仅是程序员对自己工作的认识,是一种意识上的问题。
二、高级程序员/项目设计者还需具备的素质
那么作为高级程序员,以至于系统分析员,也就是对于一个程序项目的设计者而言,除了应该具备上述全部素质之外,还需要具备以下素质:
第一,需求分析能力
对于程序员而言,理解需求就可以完成合格的代码,但是对于研发项目的组织和管理者, 他们不但要理解客户需求,更多时候还要自行制定一些需求,为什么这么说呢?
一般而言,进行研发任务,也许是客户提出需求,也许是市场和营销部门提出的需求,这 时候对于研发部门,他们看到的不是一个完整的需求,通常而言,该需求仅仅是一些功能 上的要求,或者更正规些,可能获得一个完整的用户视图;但是这都不够,因为客户由于 非技术因素多一些,他们可能很难提出完整和清晰,或者说专业性的性能需求,但是对于 项目组织者和规划者,他必须能够清醒认识到这些需求的存在并在完成需求分析报告的时 候适当的提出,同时要完整和清晰的体现在设计说明书里面,以便于程序员编码时不会失 去这些准则。
程序设计者必须正确理解用户需求所处的环境,并针对性做出需求的分析,举例而言,同 样一个软件通过ASP租用方式发布和通过License方式发布,性能需求可能就是有区别的, 前者强调的是更好的支撑能力和稳定性,而后者则可能更强调在各种平台下的普适性和安 装使用的简捷性。
第二,项目设计方法和流程处理能力
程序设计者必须能够掌握不少于两到三种的项目设计方法(比如自顶至下的设计方法,比如快速原型法等等),并能够根据项目需求和资源搭配来选择合适的设计方法进行项目的 整体设计。
设计方法上选择不当,就会耽误研发周期,浪费研发资源,甚至影响研发效果。
一个程序设计者还需要把很多功夫用在流程图的设计和处理上,他需要做数据流图以确立 数据词典;他需要加工逻辑流图以形成整体的系统处理流程。
一个流程有问题的系统,就算代码多漂亮,每个模块多精致,也不会成为一个好的系统。 当然,做好流程分析并选择好项目设计方法,都需要在需求分析能力上具有足够的把 握。
第三,复用设计和模块化分解能力
这个似乎又是老调重谈,前面基本素质上不是已经说明了这个问题吗?
作为一个从事模块任务的程序员,他需要对他所面对的特定功能模块的复用性进行考虑, 而作为一个系统分析人员,他要面对的问题复杂的多,需要对整体系统按照一种模块化的 分析能力分解为很多可复用的功能模块和函数,并针对每一模块形成一个独立的设计需 求。举个例子,好比是汽车生产,最早每辆汽车都是独立安装的,每个部件都是量身定做 的,但是后来不一样了,机器化大生产了,一个汽车厂开始通过流水线来生产汽车,独立 部件开始具有一定的复用性,在后来标准化成为大趋势,不同型号,品牌甚至不同厂商的 汽车部件也可以进行方便的换装和升级,这时候,汽车生产的效率达到最大化。软件工程 也是同样的道理,一个成熟的软件行业,在一些相关项目和系统中,不同的部件是可以随 意换装的,比如微软的许多桌面软件,在很多操作模块(如打开文件,保存文件等等)都 是复用的同一套功能模块,而这些接口又通过一些类库提供给了桌面应用程序开发者方便 挂接,这就是复用化的模块设计明显的一个佐证。
将一个大型的,错综复杂的应用系统分解成一些相对独立的,具有高度复用性的,并能仅 仅依靠几个参数完成数据联系的模块组合,是作为高级程序员和系统分析员一项最重要的 工作,合适的项目设计方法,清晰的流程图,是实现这一目标的重要保证。
第四,整体项目评估能力
作为系统设计人员,必须能够从全局出发,对项目又整体的清醒认识,比如公司的资源配 置是否合理和到位,比如工程进度安排是否能最大化体现效率又不至于无法按期完成。评 估项目整体和各个模块的工作量,评估项目所需的资源,评估项目可能遇到的困难,都需 要大量的经验积累,换言之,这是一种不断总结的累计才能达到的境界。在西方一些软件 系统设计的带头人都是很年长的,比如4,50岁,甚至更老,他们在编码方面已经远远不 如年轻人那样活络,但是就项目评估而言,他们几十年的经验积累就是最重要和宝贵的财 富。中国缺这么一代程序员,主要还不是缺那种年纪的程序员,而是那种年纪的程序员基 本上都是研究单位作出来的,都不是从专业的产品化软件研发作出来的,他们没有能积累 那种产品化研发的经验,这也是没有办法的事情。
第五,团队组织管理能力
完成一个项目工程,需要团队的齐心协力,作为项目设计者或研发的主管人,就应当有能 力最大化发挥团队的整体力量,技术管理由于其专业性质,不大同于一般的人事管理,因为这里面设计了一些技术性的指标和因素。
首先是工作的量化,没有量化就很难做到合适的绩效考核,而程序量化又不是简单的代码 行数可以计算的,因此要求技术管理人员需要能真正评估一个模块的复杂性和工作量。
其次是对团队协作模式的调整,一般而言,程序开发的协作通常分为小组进行,小组有主 程序员方式的,也有民主方式的,根据程序员之间的能力水平差距,以及根据项目研发的 需求,选择合适的组队方式,并能将责权和成员的工作任务紧密结合,这样才能最大发挥 组队的效率。
一个代码水平高的人,未必能成为一个合格的项目研发主管,这方面的能力欠缺往往是容 易被忽视的。
综上可以看到,作为一个主管研发的负责人,一个项目设计者,所需要具备的素质和能力 并不是程序代码编写的能力,当然一般情况下,一个程序员通过不断的总结提高达到了这种素质的时候,他所具有的代码编写能力也已经相当不简单了,但是请注意这里面的因果 关系,一个高水平的项目设计者通常已经是代码编写相当优秀的人了,但是并不是一个代 码相当优秀的程序员就可以胜任项目设计的工作,这里面存在的也不是智商和课本的问 题,还是在于一个程序员在积累经验,逐步提升的时候没有意识到应当思考哪方面的东 西,没有有意识的就项目的组织和复用设计进行揣摩,没有经常性的文档习惯和总结习 惯,不改变这些,我们的合格的项目设计者还是非常欠缺。
另外,为防止有无聊的人和我较真,补充一点,本文针对目标是作商业化的软件项目和工程,那些科研机构的编程高手,比如算法高手,比如图象处理高手,他们的工作是研究课题而非直接完成商业软件(当然最终间接成为商业产品,比如微软研究院在作的研究课 题),因此他们强调的素质可能是另外的东西,这些人(专家),并不能说是程序员,不能用程序员的标准去衡量。
三、软件项目研发的设计流程
最后补充一点东西,一个软件项目研发的设计流程是怎样的呢?以通常标准的设计方法为例,(不过笔者喜欢快速原型法)。
第一个步骤是市场调研
技术和市场要结合才能体现最大价值。
第二个步骤是需求分析
这个阶段需要出三样东西,用户视图,数据词典和用户操作手册。
用户视图是该软件用户(包括终端用户和管理用户)所能看到的页面样式,这里面包含了 很多操作方面的流程和条件。
数据词典是指明数据逻辑关系并加以整理的东东,完成了数据词典,数据库的设计就完成 了一半多。
用户操作手册是指明了操作流程的说明书。
请注意,用户操作流程和用户视图是由需求决定的,因此应该在软件设计之前完成,完成 这些,就为程序研发提供了约束和准绳,很遗憾太多公司都不是这样做的,因果颠倒,顺 序不分,开发工作和实际需求往往因此产生隔阂脱节的现象。
需求分析,除了以上工作,笔者以为作为项目设计者应当完整的做出项目的性能需求说明 书,因为往往性能需求只有懂技术的人才可能理解,这就需要技术专家和需求方(客户或 公司市场部门)能够有真正的沟通和了解。
第三个步骤是概要设计
将系统功能模块初步划分,并给出合理的研发流程和资源要求。 作为快速原型设计方法,完成概要设计就可以进入编码阶段了,通常采用这种方法是因为 涉及的研发任务属于新领域,技术主管人员一上来无法给出明确的详细设计说明书,但是 并不是说详细设计说明书不重要,事实上快速原型法在完成原型代码后,根据评测结果和 经验教训的总结,还要重新进行详细设计的步骤。
第四个步骤是详细设计
这是考验技术专家设计思维的重要关卡,详细设计说明书应当把 具体的模块以最’干净’的方式(黑箱结构)提供给编码者,使得系统整体模块化达到最 大;一份好的详细设计说明书,可以使编码的复杂性减低到最低,实际上,严格的讲详细 设计说明书应当把每个函数的每个参数的定义都精精细细的提供出来,从需求分析到概要 设计到完成详细设计说明书,一个软件项目就应当说完成了一半了。换言之,一个大型软 件系统在完成了一半的时候,其实还没有开始一行代码工作。
那些把作软件的程序员简单理解为写代码的,就从根子上犯了错误了。
第五个步骤是编码
在规范化的研发流程中,编码工作在整个项目流程里最多不会超过1/ 2,通常在1/3的时间,所谓磨刀不误砍柴功,设计过程完成的好,编码效率就会极大提 高,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可 能影响了整体进度,让很多程序员因此被迫停下工作等待,这种问题在很多研发过程中都 出现过。编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言,bug永 远存在,你必须永远面对这个问题,大名鼎鼎的微软,可曾有连续三个月不发补丁的时候 吗?从来没有!
第六个步骤是测试
测试有很多种:
按照测试执行方,可以分为内部测试和外部测试
按照测试范围,可以分为模块测试和整体联调
按照测试条件,可以分为正常操作情况测试和异常情况测试
按照测试的输入范围,可以分为全覆盖测试和抽样测试
以上都很好理解,不再解释。
总之,测试同样是项目研发中一个相当重要的步骤,对于一个大型软件,3个月到1年的外 部测试都是正常的,因为永远都会又不可预料的问题存在。
完成测试后,完成验收并完成最后的一些帮助文档,整体项目才算告一段落,当然日后少 不了升级,修补等等工作,只要不是想通过一锤子买卖骗钱,就要不停的跟踪软件的运营 状况并持续修补升级,知道这个软件被彻底淘汰为止。
写这些步骤算不上卖弄什么,因为实话讲我手边是一本《软件工程》,在大学里这是计算 机专业的必修课程,但是我知道很多程序员似乎从来都只是热衷于什么《30天精通VC》之 类的,他们有些和我一样游击队出身,没有正规学过这个专业,还有一些则早就在混够学 分后就把这些真正有用的东西还给了老师。
网上现在也很浮躁,一些coding fans乱嚷嚷,混淆视听,实际上真正的技术专家很少在 网上乱发帖子的,如笔者这样不知天高地厚的,其实实在是算不上什么高手,只不过看不 惯这种对技术,对程序员的误解和胡说,只好挺身而出,做拨乱反正之言,也希望那些还 沉迷于一些错误人士的coding fans们能认真想想,走到正途上,毕竟那些聪明的头脑还 远远没有发挥应有的价值。
⑶ 写代码的时候,为什么对一个Boolean 型的变量都要写函数
什么是API/怎样在VB中声明和使用API函数
(简单来说,API就是应用程序接口)
一、在VB中声明API函数有两种方法:如果我们只在某个窗体中使用API函数,我们可以在窗体代码的General部分声明它:
声明的语法是:
Private Declare Function ...
Private Declare Sub.....
这里必须采用Private声明,因为这个API函数只能被一个窗体内的程序所调用。
如果我们的程序有多个窗体构成,而且我们需要在多个窗体中使用同一个API函数,就需要在模块中声明了。
先添加一个模块(如图示),
然后采用如下语法声明:
Public Declare Function....
Public Declare Sub....
Public声明的含义是把API函数作为一个公共函数或过程,在一个工程中的任何位置(包括所有的窗体和模块)都能直接调用它。 声明完毕我们就能在程序中使用此API函数了。
二、可采用以下几种方式使用API函数,以SetWindowPos函数为例:
(1)忽略函数返回值的调用:
SetWindowPos Form1.hWnd, -2 ,0 ,0 ,0, 0, 3
注意此时函数的参数是不加括号的。
(2)Call方法调用:
Call SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 3)
注意这里需要加上括号,但我们不取回函数的返回值。
(3)取得函数返回值的调用:
MyLng = SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 3)
此时需要加上括号,而且我们必须事先定义一个变量(变量的类型与函数返回值类型相同)来存储API函数的返回值。
三、几个问题的说明:
(1)声明中的Lib 和 Alias 是怎么回事
一般情况下WIN32API函数总是包含在WINDOWS系统自带的或是其它公司提供的动态连接库DLL中,而Declare语句中的Lib关键字就用来指定DLL(动态连接库)文件的路径,这样VB才能找到这个DLL文件,然后才能使用其中的API函数。如果我们只是列出DLL文件名而不指出其完整的路径的话,VB会自动到.EXE文件所在目录、当前工作目录、WINDOWS\SYSTEM目录、WINDOWS目录下搜寻这个DLL文件。所以如果所要使用DLL文件不在上述几个目录下的话,我们应该指明其完整路径。
Alias用于指定API函数的别名,如果我们调用的API函数要使用字符串(参数中包含String型)的话,Alias关键字是必须的。这是因为在ANSI和Unicode字符集中同一API函数的名称可能是不一样的,为了保证不出现声明错误,我们使用Alias关键字指出API函数的别名,一般来说在WIN9X平台下我们把API函数名后加一个大写A作为别名即可。
(2)常见的API参数类型的说明
API函数的参数中最常见的是长整Long型数据类型,例如API中的句柄、一些特定的常量、函数的返回值都是此类型 的值;另外几种常见的参数类型有:整型Integer、Byte型、String型等。
(3)声明中的ByVal是作什么用的
这跟VB的参数传递方式有关,在默认情况下VB是通过地址传递方式传递函数的参数、而有些API函数要求必须采用传值方式来传递函数参数(这两种参数传递方式是不同的,前者传递的是一个指针,而后者要求是参数真实的值)。这样就会发生错误,解决的办法是在API函数参数声明的前面加上ByVal关键字,这样VB就采用传值方式传递参数了。
(4)怎样得到完整的API函数声明
VB自带了API文本查看器API TEXT VIEWER,我们可以在其中找到API函数的完整声明,然后把它粘贴到程序中即可。
⑷ 在程序员节给各位发送程序员兄弟姐妹的祝福语句子 (12句)
1.深度的思考,让灵感突发;细致的观察,让智慧闪光;跳动的字符,让程序鲜活;有序的排列,让效率提高;不断的改善,让价值突显;不断的编撰,让生命精彩。【程序员节的温馨祝福语短信】文章程序员节的温馨祝福语短信出自,。程序员节,愿你编出幸福程序,永远开心。
2.有个小伙子在办公楼里吸烟,值班人员对他说:“你没有注意到墙上的那个警告(waRninG)吗?”小伙子说:“没事儿,我是程序员。”值班人员纳闷:“那又怎样?”小伙子说:“我们从来不关心waRninG,只关心ERRoR。”
3.你有魔幻手指,化符号为神奇;你有抽象思维,让数字更精准;你有深邃智慧,把未来染光辉。程序员节,键盘敲得生活精彩绝美,鼠标点得日子花开富贵。
4.医院里的医生可以为人类减少病疾,电器维修人员可以让失灵的机器继续运行,程序员可以用命令将危害网络的病毒清除,你就是程序医生,程序员日到了,请不要为了程序无毒,忽视了自己身体的健康,愿你生活的每一天都多姿多彩。
6.一条网线连接四面八方,敲打键盘帅气的模样,“蜗居”生活胸怀天下,编一套快乐的程序,让世界欢畅,程序员日愿程序员朋友好好休息,身体健康,“不着病毒”,祝福你们明天再次创造辉煌。
7.深度的思考,让灵感突发;细致的观察,让智慧闪光;跳动的字符,让程序鲜活;有序的排列,让效率提高;不断的改善,让价值突显;不断的编撰,让生命精彩。程序员节,愿你编出幸福程序,永远开心!
8.编一个烦恼删除程序,愿你每天快乐展笑容;写一个好运在手指令,愿你万事顺利圆美梦;敲一段健康平安代码,愿你保重身体攀高峰。程序员节,送一句祝福密码,愿你无忧无虑向前冲!
9.你们的工作枯燥,却将最绚丽的美景创造;你们默默无闻,却让世界变的美好;你们手里的鼠标,把多少先进的程序制造;你们面前的电脑,让科技的力量在世界上狂飙。程序员节,感谢你们让我们的生活美好,祝你们身体健康、心想事成、青春常在、容颜不老!
10.点击开快乐的界面,编写下幸福的程序,好运就在你运算的脑海里,成功就在你敲击的双手中。程序员节,我把祝福编辑,愿你把吉祥安康永远保存!
11.每天冒着微软的炮火,在0和1之间不停穿梭;打键盘击鼠标真是忘我,不知不觉错过约会;你的作息时间像在美国,可你从来没去过纽约;在那没有里程碑的路上,你苦苦地颠簸,只为早日点燃中国iT的熊熊烈火;巨人肩膀上面你苦苦地探索,一切都是为了中国的iT产业。伟大的朋友,愿你程序员节快乐,我为你骄傲!
12.冷静的思维,点亮智慧的殿堂;抽象的理念,交汇灵感的火花;平凡的字符,串起别样的精彩;细腻的语言,盘活冰冷的.程序;非凡的才华,开启幸福的天地。程序员节,愿你开怀,收获精彩!
1.0和1为你伴舞,键盘翻译你的命令,网线将你与世界相连,虽然你的工作只是面对屏幕敲打键盘,但你向世界输出的是快乐的音符,程序员节到了,给你的双手放个假,蓝天白云等待你的仰望,清新的空气将把你包围,愿你有一个健康的身体、永远开心快乐!
2.写字楼里写字间,写字间中程序员;程序人员写程序,又将程序换酒钱;酒醒只在屏前坐,酒醉还来屏下眠;酒醉酒醒日复日,屏前屏下年复年;奔驰宝马贵者趣,公交自行程序员;但见满街漂亮妹,哪个归得程序员!程序员节又来临,你还作战程序界,愿你事业有成心情好,休息一下把节过!
3.在中国虽无官方规定的日子,但是我们要为自己过节,寻找属于我们自己的那份快乐。你还记得别人人如何称呼我们吗?程序员、开发者、程序猿/媛、软件攻城狮以及码农,你更喜欢哪一个?
4.深度的思考,让灵感突发;细致的观察,让智慧闪光;跳动的字符,让程序鲜活;有序的排列,让效率提高;不断的改善,让价值突显;不断的编撰,让生命精彩。程序员节,愿你编出幸福程序,永远开心!
5.设立程序员节要归功于一名在并行技术网页设计公司工作的职工——Valentin Balt。2002年,他收集签名向俄罗斯联邦政府请愿,请求将这一天定为程序员节。2009年7月24日,俄罗斯联邦通信与大众传媒部提出了新的节日安排方案,设立程序员节。9月11日,俄罗斯总统梅德韦杰夫签署了这个法案,也就成为了俄罗斯的一个官方节日!
6.为你编辑快乐的程序,给你安装如意的系统,帮你解开幸福的密码,与你下载好运的软件,程序员节到了,一切准备就绪,愿你程序员节心情无限好,笑口合不拢。
7.翩翩起伏的手指,在键盘上空舞个不停。有节奏感的哒哒声,弹奏出一曲曲美妙的音乐篇章。一款又一款高科技智能软件问世了,一幅幅前景美画展现眼前。‘程序员节’祝程序员设计大师,辛劳奋献。为现代科技、军事、航天、工农业等行业,做出的巨大贡献致贺。
8.你有魔幻手指,化符号为神奇;你有抽象思维,让数字更精准;你有深邃智慧,把未来染光辉。程序员节,键盘敲得生活精彩绝美,鼠标点得日子花开富贵。
9.在你的数据库里添些快乐的元素,给你的符号栏里加些如意字符,为你的人生下载好运软件,在你的心间上传幸福无限,程序员节,愿你笑口常开,日子甜甜。
10.滚滚红尘,物欲横流。灯红酒绿,纸醉金迷。不过世界在你的眼里,不是0就是1。你的世界,没有灰色地带,如阳春白雪霞映澄塘,似月射寒江秋菊披霜,纯净的惹人爱怜!我的朋友,程序员节快乐!
11.程序员节,编写一段快乐程序送给你,愿你思绪飞舞,想象丰富,编写出美轮美奂的日子;酝酿美好,展现精彩,点击出幸福美满的生活;编织浪漫,营造温馨,酝酿出甜美如花的爱情!
12.敏锐的观察发现程序的漏洞,跳动的思维迸出灵感的火花,冷静的头脑编写完美的代码,缜密的思考锻造安全的程序,精准的判断展现惊人的才华,不懈的坚持取得巨大的成功。程序员节,用智慧编写美好人生!
1.程序员节至,快乐如期而至,幸福无所不至,好运关怀备至,财富蜂拥而至,如意纷沓而至,事业名归实至。所有美好程序顺利完美,祝福你的生活幸福快乐、至善至美!
2.你头脑的聪明,破译快乐的密码轻轻松松;你手指的灵动,编辑幸福的程序从从容容;你心思的细腻,输入如意的语言冷冷静静,网络你最精通,你伟大的工程,有着其他工作不一样的光荣,程序员节,祝愿程序员朋友,节日快乐,心想事成!
3.你把抽象符号变成快乐笑容,你把简单代码变出复杂意义,你演绎枯燥变情趣的游戏,你把辛苦留下捧出生活的神奇。程序员节日里,祝福程序员被幸福刷屏,被快乐链接。
4.请用真情研制一个爱心程序,让世界温暖长存;请用智慧设计一个和平程序,让人间充满安宁;请用勤劳开发一个医学程序,让人们无病缠身;程序员日,愿所有程序员们工作顺心,快乐开心!
5.人类因为有思想,所以是万物之灵。电脑因为有程序,所以能改变万物。你是电脑的灵魂,你是人类的精英,你不索求着什么,你只想改变着什么,你一桶泡面一杯水,偶尔抽烟喝咖啡。你吃的是面,挤出来的是程序。你喝的是水,改变的却是全人类。程序员节,只想祝你快乐!
6.你的软件是智商,你的硬件是健康。程序员节到了,辛苦的程序员朋友,愿你高智商,体格棒,工作一定要适量,按时休息不能忘,保持身心要舒爽,坚决不要亚健康。最后,祝你事业铸辉煌,前途光明亮。
7.敏锐的观察发现程序的漏洞,跳动的思维迸出灵感的火花,冷静的头脑编写完美的代码,缜密的思考锻造安全的程序,精准的判断展现惊人的才华,不懈的坚持取得巨大的成功。程序员节,用智慧编写美好人生!
8.医院里的医生可以为人类减少病疾,电器维修人员可以让失灵的机器继续运行,程序员可以用命令将危害网络的病毒清除,你就是程序医生,程序员日到了,请不要为了程序无毒,忽视了自己身体的健康,愿你生活的每一天都多姿多彩。
9.你从来不以量取胜,创意是你的生命。你一杯咖啡一包烟,你简洁的只有电脑。一根网线,成就一个世界。你纵横八荒,编程于破屋之中,诛杀于千里之外。你归隐闹市,穿梭于路人之中,徜徉于芸芸众生。世界因创新而美好,你就是创意的天使。我的天使,程序员节快乐!
10.程序员朋友在奔忙,“蜗居”胸怀全天下,崭新生活你创造,“地球村”连接你我他。程序要运行,系统要健康,网线要畅通,没电全白搭,程序员节祝福你身体健康笑口常开,多研发几个新程序。
11.写字楼里写字间,写字间中程序员;程序人员写程序,又将程序换酒钱;酒醒只在屏前坐,酒醉还来屏下眠;酒醉酒醒日复日,屏前屏下年复年;奔驰宝马贵者趣,公交自行程序员;但见满街漂亮妹,哪个归得程序员!程序员节又来临,你还作战程序界,愿你事业有成心情好,休息一下把节过!
12.编写一段程序,让“蛟龙”探海;编写一段程序,让“神九”上天;编写一段程序,让世界有爱;编写一段程序,让世人平安。你们用知识编写未来,你们用科技造福人类,你们让社会不断进步!程序员节,愿你们再接再厉,用灵巧的双手编写美好的生活!
1.为你编辑快乐的程序,给你安装如意的系统,帮你解开幸福的密码,与你下载好运的软件,程序员节到了,一切准备就绪,愿你程序员节心情无限好,笑口合不拢。
2.滚滚红尘,物欲横流。灯红酒绿,纸醉金迷。不过世界在你的眼里,不是0就是1。你的世界,没有灰色地带,如阳春白雪霞映澄塘,似月射寒江秋菊披霜,纯净的惹人爱怜!我的朋友,程序员节快乐!
3.你是信息时代的氧气,高速需要的呼吸!你是信息时代的底气,飞速需要的地基!程序员日,这是急速送出的好运气,愿你天天开心,美丽清新!
4.你的软件是智商,你的硬件是健康。程序员节到了,辛苦的程序员朋友,愿你高智商,体格棒,工作一定要适量,按时休息不能忘,保持身心要舒爽,坚决不要亚健康。最后,祝你事业铸辉煌,前途光明亮。
5.一台电脑,一个键盘,尽情挥洒智慧的人生;几行数字,几个字母,认真编写生活的美好;一个灵感,一段程序,推动科技进步,促进社会发展。程序员节,用心编写程序,用智慧照亮人生!
6.幸福程序你会编写,快乐描绘在生活里;烦恼程序你会删除,心情保持时刻美丽;忧伤程序你会卸载,生活保持顺顺利利;幸福程序员就是你,在这属于你的节日里,愿你好运一直运行下去,生活事业都如意!
7.望远镜放大镜显微镜延伸了视野,计算机互联网程序员拓展了大脑,顺手淘汰了算盘,兼并了计算器,吸收了cd机,很快会取代手机,与人类共命运同呼吸,这方方面面都离不开你,只有你才可以日新月异呼风唤雨。程序员节,祝你健康快乐!
8.你用智慧敲打创意的键盘,你用激情编辑巧妙的方案,你用坚持创造神奇的页面,你用勇气开发网络的资源,你就是多才可爱的程序员。哈哈,程序员节到了,祝程序员朋友天天快乐!幸福生活!
9.用智慧点亮生活的画面,用键盘敲出靓丽的人生;用字符谱出幸福的程序,用灵感创造网络的精彩;用热情投入冰冷的电脑,用语言激活网络的世界。程序员节,愿你活出自我风采,编写出属于自己的幸福快乐人生!
10.人类因为有思想,所以是万物之灵。电脑因为有程序,所以能改变万物。你是电脑的灵魂,你是人类的精英,你不索求着什么,你只想改变着什么,你一桶泡面一杯水,偶尔抽烟喝咖啡。你吃的是面,挤出来的是程序。你喝的是水,改变的却是全人类。程序员节,只想祝你快乐!
11.早知道今天这个节日,特地跑到网上搜索了一些开心,下载了许多幸福,存储了一世如意,赶在今天送给你,程序员你辛苦了,愿你程序员节快乐,笑口常开。
12.一条网线连接四面八方,敲打键盘帅气的模样,“蜗居”生活胸怀天下,编一套快乐的程序,让世界欢畅,程序员日愿程序员朋友好好休息,身体健康,“不着病毒”,祝福你们明天再次创造辉煌。
⑸ 程序员需要学些什么
程序员的岗位需求很多,例如大型网络公司、软件开发公司等等都需要程序员。
程序员需要学习:
1、掌握数据及其转换、数据的机内表示、算术和逻辑运算,以及相关的应用数学基础知识;
2、理解计算机的组成以及各主要部件的性能指标;
3、掌握操作系统、程序设计语言的基础知识;
4、熟练掌握计算机常用办公软件的基本操作方法;
5、熟练掌握基本数据结构和常用算法;
6、熟练掌握C程序设计语言,以及C++、Java、Visual Basic中的一种程序设计语言;
7、熟悉数据库、网络和多媒体的基础知识;
8、掌握软件工程的基础知识,了解软件过程基本知识、软件开发项目管理的常识;
9、了解常用信息技术标准、安全性,以及有关法律、法规的基本知识;
10、了解信息化、计算机应用的基础知识;
11、正确阅读和理解计算机领域的简单英文资料。
程序员必备技能:
1、熟练开发工具
做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。
而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVAOne很可能会成为未来的主流开发工具之一。
其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,CBuilder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。
另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
2、熟知数据库
作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。
虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL,Postgres等。
3、了解操作系统
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。
要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。
Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。懂得网络协议TCP/IP。
在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式。
从最早的客户/服务器结构,到今天的WEBServices,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,深入掌握TCP/IP协议是非常必要的。
至少,需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
4、明白DCOM/CORBA/XML/WEBServices存在的意义
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。
XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布式计算的基石之一。
5、不要将软件工程与CMM分开
大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员。
一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能。
如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。
6、需求理解能力
程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求。
要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
7、模块化思维能力
作为一个优秀的程序员,他的思想不能局限在当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。
这样做可以使代码能重复利用,减少重复的劳动,也能使系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
就业方向:
1、网络开发
现在网络已经成为世界通讯的一座桥梁,好像Javascript、PHP、Ruby这几类开发语言大部分是用作网络开发方面。
2、企业软件开发
JAVA、C#、VB这几类开发语言都实现了面向对象开发的目标,更多时候用于企业系统的开发。
3、系统软件
C语言、C++、Object-C这些软件更多是用在系统软件开发,嵌入式开发的方面。
当然,这分类不是绝对,像JAVA、C#、VB很多时候也用于动态网站的开发。在很开发项目都会使用集成开发的方式,同一个项目里面使用多种开发语言,各展所长,同步开发。
但所以在刚入门的时候,建议先为自己选择一种合适的开发工具,“专注地投入学习,全力一击”。
会编程、会计算机语言就能加入互联网发展大潮中,享受数字经济发展的红利,一时间社会上的程序员培训机构都变得格外火爆。
但是现在,专家的数据分析结果告诉你:若想跟上数字经济发展的步伐,光会编程可不行,这个行业现在紧缺高端的、综合型人才。
11月22日下午,清华大学经管学院互联网发展与治理研究中心与领英联合发布《中国经济的数字化转型:人才与就业》,揭示我国数字人才现状与趋势。
报告显示我国数字经济发展面临人才短缺的挑战,但这种短缺主要体现在拥有中高级专业技能数字人才的比例不高,拥有人工智能、智能制造等前沿技术的人才更是少之又少。
与美国、英国、加拿大等国家相比,中国的数字人才储备尚有很大差距。
此外,报告根据对人才需求的数据分析,结果显示我国数字人才的技能需求不再强调单一编程技能,更加看重技术、管理和领导力等综合技能。
2015年,我国从事信息传输、软件和信息技术服务相关工作的人数约350万,但其中中高端人才,特别是前沿技术的数字人才并不多。根据领英中国智库的研究,在人工智能领域,美国的从业者数量在85万人以上,印度15万,英国14万,中国只有5万多人。
报告负责人、清华大学经济管理学院副院长陈煜波教授表示,我国目前在大数据与人工智能领域人才缺口明显。
他解释说,目前中国85%以上的数字人才分布在产品研发类,而深度分析、先进制造、数字营销等职能的人才加起来只有不到5%,存在较大缺口,新兴技术人才和创新型人才培养方面存在滞后和不足。
这份研究报告的基础数据来自领英在中国的3600万个人用户,这些用户毕业于1.5万多所国内外院校,分布在36.4万家企业,拥有超过2.3万项技能。
陈煜波研究团队从中筛选了72万数字人才,多维度提取用户画像并跟踪其职业轨迹,以此预测不同地区的人才流向、雇佣率、受雇主欢迎的技能等人才趋势层面的信息。
陈煜波说,根据数据分析结果,整体来看,虽然编程技能和数据分析技能需求占据主导,然而随着数字产业走向成熟,企业除了强调编程技能,也逐步更加看重人才的技术、管理和领导力等综合技能。
近年间,项目管理、产品运营等“技术+管理”类技能的需求呈现出明显的上升趋势,懂技术、懂管理的人才被认为是“一将难求”。
领英中国代理总裁曾志恒也提醒,如果你有兴趣向数字职能转型,不能仅仅专注于自己的技术能力,沟通和领导力等软性技能将成为你脱颖而出的关键。
陈煜波希望这些研究结果能为教育行业和政府部门提供借鉴。他说,教育行业可根据职位的供需趋势更好地规划人才培养的方向,政府也可更好地了解人才流动方向、技术缺口等,以此制定有针对性的引才策略。
程序员岗位职责:
1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。
3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。
4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
7、负责相关技术文档的拟订。
8、负责对业务领域内的技术发展动态进行分析研究。
相关书籍:
很多程序员响应,他们在推荐时也写下自己的评语。 以前就有国内网友介绍这个程序员书单,不过都是推荐数 Top 9的书。
其实除了前9本之外,推荐数前30左右的书籍都算经典,笔者整理编译这个问答贴,同时摘译部分推荐人的评语。
下面就按照各本书的推荐数排列。
1、《代码大全》 史蒂夫·迈克康奈尔
2、《程序员修炼之道》
3、《计算机程序的构造和解释》
4、《算法导论》
5、《重构:改善既有代码的设计》
6、《设计模式》
7、《人月神话》
8、《计算机程序设计艺术》
9、《编译原理》(龙书)
10、《活着》
⑹ 中国的程序员,真的“短命”吗
我感觉不是吧!
来我们来聊一聊程序员的职业生涯规划
前言
随着移动互联网的普及,催生了大量各种互联网相关的职业,也有大批的青年才俊涌入了这个市场,虽然是蓝海,红利满满,但是如何能在这一波浪潮下激荡向前,而不是像浪花一样昙花一现?可以从这波互联网行业的职业价值,深入研究,发现其中的供求关系,为企业提供的真实价值,了解真正的核心竞争力才能像自行车这样不断向前,处于真正的稳定。
程序员的真实价值
老板之所以雇用我们,是想要我们给企业带来价值,说白了,就是直接或者间接的帮公司挣钱。我们的薪资,一般是作为公司的人力成本。虽然控制成本很重要,但其实真正的重点却在你为公司带来的价值和你的薪资之间的差额。
所以当老板觉得你的薪资高了,其实是在说你为公司带来的价值不够。 当我们来到一家新公司工作,由于没有实际工作的数据可以衡量,你认为自己的价值、公司认为的你的价值和最终你给公司带来的实际价值之间会存在一定误差。而简历和面试,就是为了让你认为的你的价值和公司认为的你的价值离得更近。简历其实就是一个价值主张,它说的是:我到这家公司来,能完成这些和那些工作,为公司带来这样和那样的价值,而我只要这么一点点的薪水,所以赶紧雇用我吧。
总之,一定要改变我上班别人给我钱的思维方式,转换到我能为这家公司创造什么价值的方向上来。 这种换位思考能帮助你想明白很多事情,比如说:
拥有一系列技能的同一个人,在不同的公司创造的价值往往是不同的,于是他能拿到的薪资也就不同。
公司雇佣一个人,并不是看他有多牛,而是看他能给公司带来哪些价值。 虽然大部分情况下,个人能力和能给公司带来的价值是正相关的,但如果你能提出并证明一个更好的价值主张,你很可能就会比这个牛人更适合这家公司。 一个极端的例子是:一个顶级架构师在一家使用无服务器端架构的创业公司很可能没有用武之地,而一个客户端高手在这家公司里可能能搞定一切。
程序员市场的供求关系
当一个岗位供大于求时,招聘方就有了更多的砝码来压低薪资,从而获取更多的剩余价值;而当一个岗位供小于求时,候选人就有了更多的选择,也就更值钱。 一个岗位的供求从长远来讲,是受行业和技术发展影响的,比如随着网络的大规模发展,同样是从事软件开发工作,传统软件的开发岗位就没有互联网和移动开发岗位的需求量大;而从短期来讲,每一波浪潮带来的新兴市场和高利润的行业交叉细分市场职位就会更值钱一些,而只要专注于新兴市场和细分市场则会让你始终处于浪潮的前沿,享受这波浪潮带给你的红利。例如ios刚出来的时候,你的竞争力可以在短时间内赶上或者超过开发J2ME开发功能机的资深工程师。
程序员的本质
自动化 其他行业的工作,都需要由人来完成;今天做的事情,明天可能还要同样的做一遍。但这是人类工作的方式,不是机器工作的方式。
软件,仔细想想,它不就是一系列可以重复执行的命令么?
为了让机器去做重复的工作,我们才需要编码,通过各种编程语言告诉机器如何去完成一项特定的工作,而在这之后,这项工作就由机器完成了,再也不需要人类来参与。程序员的注意力会转移到下一个还没有被自动化的工作上。
为什么一个好的程序员可以代替很多普通的程序员?
深入理解了程序员们和重复的不共戴天以后,你就会明白为什么一个好的程序员可以代替成百上千个普通的程序员,因为机器放大了这个差距。如果一个普通程序员在重复劳动,那么一个好的程序员花一天写段代码就能干掉他一年的活。
所以你看,程序员就是不断的干掉自己的后路,逼着自己去做创造性的工作,不断指数级的提升生产率的职业。
工程化是关于如何 低成本、高效率、按时按量完成既定任务的。
所以判断一个工程师是否优秀,并不是他多有创意多有名气,而是看他有多稳,看他能多 Getting Things Done,中文就是靠谱。
有时候一个好的解决方案,未必采用了最新的技术和框架,而是看上去朴实无华,功力都包涵在背后的细节里。就像顶尖高手打的斯洛克台球,每一杆都平淡无奇,只是因为上一杆的回球太到位。
同样的,一个好的工程师,会选择最适合需求和团队的方案,考虑开发效率和系统效率的均衡,从而已达到最优效果;而不是整天和别人去争论什么语言最好、哪些框架过时了。
工程化和自动化可能是程序员职业中最重要的两个信念,如何在保证工程品质的前提下,创造性的通过自动化来避免重复劳动,是值得我们花上经年累月的时间,在工作中时刻思考和实践的问题。对这个问题的思考,将帮助你获得前所未有的竞争力,比如说,如果你拥有了一系列的半自动化工具,在人工智能日益成熟的时代,它们就可能变成全自动工具,这背后的职业价值和商业价值不言而喻。
程序员的焦虑
互联网是一个新兴但高速发展的行业。新兴意味着没有那么多的行业大咖给新人指点江山,也没有一套公认的可靠的可复制的职业发展秘籍。高速发展意味着变革与竞争,大量新人因为大势所趋而涌入,如果不想被后浪拍死在沙滩上,则必须不断学习,不断提升自我,以保持在淘汰线以上的水准。
中国互联网行业工作强度很大,而一线的初创公司更忙,然而大部分刚刚进入行业的从业者60%都将进入初创公司。秉承着小步快跑,快速迭代的原则,开发出人员更是战场中的冲锋陷阵的骑兵,长时间的透支身体,在高速公路上高负荷前行,就是顶级跑车,也会力不从心,产生焦虑。
程序员职业复利性
就好比理财利息的计算方法一样,在资金一样的情况下,复利的回报要远远超出单利,而年限越长,复利的效应就越明显。而我们从事的职业一样有这样的效应,选择一个优秀的职业,在职业生涯后期会展现出越来越高的复利回报,就好比指数的微笑曲线,律师,医生是复利性高的职业选择,选择大于努力,一个优秀的选择则可实现弯道超车。
软件开发人员的职业复利性较差主要表现在以下两个方面:
不同方向的开发人员都有着自己所熟悉的开发语言,专业性较强,虽有语法有一定的通用性,但是技术深度则需要时间来积累,可转移的只有编程设计思想,编码规范等通用信息。
如果没有明确的规划,或者是面向工资编程,即使抓住了趋势,吃到了头部红利。但你的日常工作积累的不是通用知识和综合能力,可能仅仅是对某项技术的熟练度与经验,如果没有自我驱动的自律与动力,仅仅是完成公司的业务,那就是业务驱动,工作经验反而成了你的累赘,把你拖下泥潭。
程序员职业的壁垒
大部分奋斗在一线的开发人员把自己的职业与某项技能紧密相连,作为一个开发人员肯定会了解一个高度耦合的代码一定就是纠缠不清,牵一发而动全身,只有高度抽象的函数式编程才能在一次次迭代重构中稳如泰山。互联网行业变化太快,都说天上一天,地下一年,互联网从业者又何尝不是在飘在天上。回首看下诺基亚的发展,桌面级应用的开发,整个行业如大浪淘沙,随着各种云平台的崛起,各种API服务的开放,开发人员的工作效率会大大提升,就好比农业社会转向工业社会,并不是农业人口劳动力过剩,而是技术的创新解放了更多的劳动力,从而涌入新的行业。互联网亦是如此,生产效率的提高,在有限的土地上会淘汰掉更多的低产从业者。如果此时到了你的职业生涯中期,仅仅依靠熟练度和辈分在公司中作为你的核心竞争力,那么你将会被解放(解雇)......
而互联网行业其实也早已洗牌与无形之中,例如基础运维工程师,DBA,基础算法工程师,安全工程师,图像算法工程师,数据工程师等等都在此列。 转眼间2018已经过去四分之三,互联网的红利不知道还有多久的延续,站在风口,顺势而为,但是回首一下过往,风口是那样的短命。
从最早的微博微信社交大战火了三年,然后020和P2P普惠金融火了两年,直播和共享单车火了1年,无人货架布局的硝烟也已经不在弥漫,仅仅就在2018,直播答题,到知识微商,到区块链,短视频平台等等诸多风口,也是乱花渐欲迷人眼。机会从来就没有变少,只要你keep study,keep hungry. 你的可转移能力不断提升,你终将在一轮轮大浪淘沙中脱颖而出。
程序员职业能撬动的价值有限
职业能影响的人越多,制造的价值越高,职业的上限价值也越高。
互联网行业的供求关系和价值体系造成了一个现象,前几年的大众创业,万众创新的创业潮中,造成了程序员供不应求的现象,随处可见的都是我有一个可以撬动地球改变世界的idea,现在还差一个程序员就可以3个月推出mvp,5个月拿到天使轮,纳斯达克也不是没有那么遥不可及。随着这一现象催生除了大量培训机构,互联网市场也变得鱼龙混杂,技术参差不齐。以及风口上的猪不断的迭代,o2o泡沫的消逝,市场变得不再那么供不应求,终将会回到良币驱除劣币的时代。你要知道加州淘金热中赚的盆满钵满的不是那些远渡重洋,不为万千险阻的淘金客,而是那些卖铲子提供基础设施的卖家。靠技术在it界立足的也只有那些不知道熬过多少个日夜,付出大量精力来提高生产效率的技术专家,没有任何捷径可走,即使你天赋异禀,也有万千个刻意练习更加努力的人与你竞争。对于普通的开发者,对技术并没有那么深的热爱,往往工作五年后工资也趋于稳定,对于大多数公司来说,你的熟练度和经验达到了一定的阈值,其对公司效益的提高是有限的,在5年这个瓶颈期,长期享受了高增长之后的从业人员将引起增长缓慢的瓶颈期焦虑。
如何应对
所谓稳定就是最大的谎言,之前有一篇朋友圈的热文,曾经挤破头想进入的高速公路收费员等铁饭碗也被慢慢淘汰,也有诸多BB机维修工程师等热门梗,这充分说明了人就像一辆自行车,只有动起来,既往不恋,纵情向前才是最稳定的。重新定位自己的职业生涯,不以熟练度作为自己的核心竞争力,不把自己的职业生涯押注在某项单一标的上,而是keep study ,keep hungry ,持续不断的提高自己的可转移能力,视野,格局等,在现有的公司里不断加强自己的不可替代性。
⑺ 谷歌地球的制作原理是什么
谷歌地球的制作原理是卫星影像,并非单一数据来源,而是卫星影像与航拍的数据整合。
其卫星影像部分来自于美国DigitalGlobe公司的QuickBird商业卫星,影像来源于陆地卫星,航拍部分的来源有BlueSky公司(英国公司,以航拍、GIS/GPS相关业务为主)、Sanborn公司(美国公司,以GIS、地理数据、空中勘测等业务为主)、美国IKONOS及法国SPOT5。
在卫星图像方面,美国五角大楼每年都会给予其三大主要合作伙伴DigitalGlobe、IKONOS和ORBIMAGoogle Earth数十亿美元的资助,作为回报自然是这些公司的卫星数据将在第一时间交给五角大楼作为军事应用,而且针对某些敏感区域在规定的时限内不允许商业化。
(7)程序员如何写个地球扩展阅读:
使用技巧
Google卫星地图的横空出世,催生了不少包括在内的“地图玩家”,这些卫星地图发烧友们乐此不疲地收集和张贴那些有趣的地标以及自己的新发现,他们使得这个非常酷的软件迅速普及到了大众,使得普通人也可以体会到使用Google Earth浏览自己家房顶的快感。
卫星地图的应用
Google Earth的确很酷,但是Google Earth并不只是用来玩的,我们可以在上面开发出自己的应用,将自己网站的实用功能和Google提供的卫星地图整合起来。
要想使用Google的卫星地图资源,必需面对如何调用的问题,这涉及到很复杂的程序编写。好在Google体会到了程序员的辛苦,很早就自己推出Google Maps API,全世界对Google卫星地图有兴趣的程序员都能够通过简单的API调用来开发自己的Google地图服务。
要进行Google Maps API的开发,需要先去申请一个所谓的API Key,有了这个Key,才能使用Google Maps服务。当然,如果大网站调用Google Maps API的数据非常大的时候,需要事先联系Google的相关人员。
⑻ 如何锻炼自己成为一个有想法的程序猿
对程序员来说,抽象的思维的能力越强,编程能力就越强。永远不要为了解决一个具体问题而编程,而要针对从具体问题抽象出的数学模型去编程。
优秀的程序员永远不会写“摧毁地球”这种程序,而是会写一个“摧毁星球”,然后把“地球”当做参数传进去。这个过程就是对参数的抽象。如果你能把“摧毁”这个过程也抽象掉,那么你的编程水平就又上了一个层次。
所以写程序之前,总是先想想:我能否在一个更抽象的层次上解决问题?
⑼ 谷歌地球上有什么好玩的功能请说出怎么玩法。
1、根据经纬度定位地标的方法
在Search面板的Fly To输入框中,输入一个经纬度,按回车,就可以直接“飞”到那个位置。其间采用的那种动画效果,让我们产生一种遨游地球的奇妙感觉。
2、如何在软件中截图
这里介绍一个简单的截图方法,找到一个画面后,按下“Ctrl+Shift+E”,会出现一个通过电子邮件发送截图的界面,如下图所示,双击附件里那个图片,另存到硬盘上即可。这个图片就是当前的截图。
3、如何导出地标文件
在需要引出的地标文件夹上,用鼠标右键点一下,在菜单中选择“Save As”然后输入引出文件名就行了,目前可以导出KMZ和KML两种地标文件格式。
4、KML和KMZ地标文件有什么不同
Google Earth有两种类型的地标文件,一种是KML文件,一种是KMZ文件。
KML是原先的Keyhole客户端进行读写的文件格式,是一种XML描述语言,并且是文本格式,这种格式的文件对于Google Earth程序设计来说有极大的好处,程序员可以通过简单的几行代码读取出地标文件的内部信息,并且还可以通过程序自动生成KML文件,因此,使用KML格式的地标文件非常利于Google Earth应用程序的开发。
KMZ是Google Earth默认的输出文件格式,是一个经过ZIP格式压缩过的KML文件,当我们从网站上下载KMZ文件的时候,Windows会把KMZ文件认成ZIP文件,所以另存的时候文件后缀会被改成.ZIP,因此需要手动将文件后缀改成.KMZ。
KMZ文件用ZIP工具软件打开,然后解压缩即可得到原始KML文件。当然,KMZ文件也有自己的好处,就是KMZ文件的自身可以包含图片,这样就可以不依赖引用网络上的图片。
一般情况下,双击KMZ/KML文件即可从Google Earth中打开地标文件,但是需要注意的是,KMZ/KML地标文件名不能包含中文字符,文件存放的路径也不能有中文字符,否则将无法在Google Earth中打开。
5、如何快速得到一个地标的KML格式
快速得到地标的KML文件内容的方法是,在Google Earth中右键点击一个地标,然后点右键,点Copy,然后打开记事本按Ctrl-V即可将该地标的KML内容粘贴到其中。
6、如何测量地图上两点的距离
点击菜单“Tools”-“Ruler”,弹出如下对话框。
此时,点击地球上任意两点,均可计算出两点间的距离(默认单位为英里,其它还有千米、米、厘米、英尺、码等),选择Path还可以测量曲线和折线的距离。
7、如何制作自己的地标
看多了别人制作的地标,自己是不是也觉得手痒呢?你有没有想过把自己的住宅、工作单位、自己发现的“有趣的地方”,也做成地标呢?
制作一个地标其实非常简单,看到一个好玩的地方,在Google Earth菜单中点“Add”,再选择“Placemark”,即可出现下图的界面。
其中地标的经纬度会自动填写,我们只需要填写Name(地标名称)和Description(地标说明注释说明)即可,这里可以填写中文,不过如果你想要在Google Earth官方社区上发布的话,建议还是使用英文。
信息填写完成后点OK即可生成一个地标,如果想修改一个地标,在地标上点右键-Properties,即可修改地标的说明以及位置。
地标说明是支持HTML语法的,因此我们可以应用HTML来插入图片、修改字体等,建立一个好看的地标说明。
8、如何共享发布自己的地标
Google Earth社区可以让任何人在Google Earth上分享自己的地标,我们分享自己的地标也很简单,不过需要一定的英文基础。
首先登录Google Earth社区网站 http://bbs.keyhole.com/ ,点“New user”建立一个论坛社区用户,然后在自己的地标上点右键,再点Share/Post,如下图,即可进入Google Earth社区的地标发布页面。这里需要注意的是,Google Earth对中文支持一点也不好,如果地标的介绍和名称使用中文字符的话,在Google Earth将显示为乱码,因此请务必使用英文字符来标明地标的名称和介绍。
地标发布后一般不会立刻显示在Google Earth的图层中,通常需要几个月的时间,你标注的地标才会出现在Google Earth的图层之中。
9、图层的应用
Google Earth在卫星地图的基础上,提供了很多数据图层,图层打开会在相应的位置呈现各种数据。具体操作是,在Google Earth左侧,找到一个叫图层(Layers)的设置,点中不同的图层,可以在Google Earth显示更多的信息,这里介绍主要的几个:
Google Earth Community图层:显示在Google Earth社区上,网友自己标记的地标。我们上面提到的分享地标就是用的这个图层。
Borders图层:显示国家、省等之间的边界信息。
National Geographic Maga图层:有大量国家地理杂志在非洲的航拍高清晰地图地标。
Transportation图层:可以显示世界各地的机场,火车站信息。
DG Coverage图层:显示不同年份卫星地图的数据,不同的年份,将显示不同的颜色,这让我们可以知道一个地方的卫星地图到底是什么时候拍摄的。
10、卫星地图的应用
Google Earth的确很酷,但是Google Earth并不只是用来玩的,我们可以在上面开发出自己的应用,将自己网站的实用功能和Google提供的卫星地图整合起来。
要想使用Google的卫星地图资源,必需面对如何调用的问题,这涉及到很复杂的程序编写。好在Google体会到了程序员的辛苦,很早就自己推出Google Maps API,全世界对Google卫星地图有兴趣的程序员都能够通过简单的API调用来开发自己的Google地图服务。
要进行Google Maps API的开发,需要先去 http://www.google.com/apis/maps/ 申请一个所谓的API Key,有了这个Key,才能使用Google Maps服务。当然,如果大网站调用Google Maps API的数据非常大的时候,需要事先联系Google的相关人员。
API的英文帮助参见这个地址: http://www.google.com/apis/maps/documentation/ 。掌握最基本的API之后,我们就可以使用编程的方法来实现各式各样的基于Google Maps的令人目眩的服务啦。
编程时候要调用地标资源,一般都是使用KML的文件格式,KMZ的格式无法直接编程使用,需要使用UNZIP之类的接口先将文件解压缩得到KML文件,然后再调用解开的KML文件。
好了,以上就是我介绍的Google Earth的常用技巧,做为一个狂热的Google Earth的爱好者,我先前曾写了大量的关于Google Earth和Google Maps的文章,并且专门建立了一个独立的Google Earth资源收集网站,而实际过程中,我发现好的资源需要大家共同的努力才能分享,所以,如果大家英文还不错的话,就建议多登录一下Google Earth官方的论坛社区,多发布一些优秀的地标资源,让Google Earth上显示出更多中国地区的地标。
11.在谷歌地球上还有一个好玩的模式,那就是“模拟飞行”,在这个模式里,你可以驾驶F16或SR22这两种飞机来飞行,你可以在跑道上起飞,也可以在自己的家门口出发。
操作:↑键:机头向下(向下俯冲),↓键:机头向上(向上飞行),←键:副翼左转,→键:副翼右转,方向键+Alt 慢速转弯,方向键+Ctrl 快速转弯,PageUp键:引擎加速,PageDown键:引擎减速,G键:打开/关闭起落架,方向舵向左: Insert,Shift+ 左方向键,方向舵向右:小键盘上的 Enter , Shift+ 右方向键,升降舵配平机鼻向下 Home , Shift+ 下方向键, 升降舵配平机鼻向上 End , Shift+ 上方向键,减少襟翼设定:左方括号、Shift+F,增加襟翼设定:右方括号、F ,
置中副翼和方向舵:5、C, 左刹车:逗号,右刹车:句号,暂停:空格,显示/隐藏仪表盘H
⑽ Java程序员如何写简历
学过啥就写啥呗,虽然不能吹的天花乱坠,但是适当的捧一下自己也是有必要的。
虽然JAVA人才的薪水很高,但是对该类人才需求旺盛的IT企业却很难招聘到合格的JAVA人员。其中,最根本的原因就是许多计算机专业的毕业生在读期间没有掌握实用的技能与经验,距离企业的实际用人需求有较大的差距。
因此,计算机专业的大学生欲成为Java程序员,最便捷的一条路就是参加以实战项目为主要教学方法的JAVA职业技能培训,从而有效地缩短同企业具体用人需求之间的差距。
全球有25亿Java器件运行着Java,450多万Java开发者活跃在地球的每个角落,数以千万计的Web用户每次上网都亲历Java的威力。今天,Java运行在7.08亿手机、10亿智能卡和7亿PC机上,并为28款可兼容的应用服务器提供了功能强大的平台。
这么多应用,彻底改变了用户的生活。越来越多的企业,因为使用了Java而提高了生产效率。在中国,越来越多的用户,因为Java而降低了成本,享受了生活。