程序员需要学些什么
发布时间:2025-05-23 18:33:37 发布人:远客网络
一、程序员需要学些什么
程序员的岗位需求很多,例如大型网络公司、软件开发公司等等都需要程序员。
1、掌握数据及其转换、数据的机内表示、算术和逻辑运算,以及相关的应用数学基础知识;
2、理解计算机的组成以及各主要部件的性能指标;
3、掌握操作系统、程序设计语言的基础知识;
4、熟练掌握计算机常用办公软件的基本操作方法;
5、熟练掌握基本数据结构和常用算法;
6、熟练掌握C程序设计语言,以及C、Java、VisualBasic中的一种程序设计语言;
7、熟悉数据库、网络和多媒体的基础知识;
8、掌握软件工程的基础知识,了解软件过程基本知识、软件开发项目管理的常识;
9、了解常用信息技术标准、安全性,以及有关法律、法规的基本知识;
10、了解信息化、计算机应用的基础知识;
11、正确阅读和理解计算机领域的简单英文资料。
做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C和JAVA是重点推荐的开发工具,C/C以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C编写。
而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVAOne很可能会成为未来的主流开发工具之一。
其次,能掌握一种简便的可视化开发工具,如VB,Delphi,CBuilder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。
另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。
虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL,Postgres等。
当前主流的操作系统是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以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布式计算的基石之一。
大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员。
一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能。
如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。
程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求。
要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
作为一个优秀的程序员,他的思想不能局限在当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。
这样做可以使代码能重复利用,减少重复的劳动,也能使系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
现在网络已经成为世界通讯的一座桥梁,好像Javascript、PHP、Ruby这几类开发语言大部分是用作网络开发方面。
JAVA、C#、VB这几类开发语言都实现了面向对象开发的目标,更多时候用于企业系统的开发。
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、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
8、负责对业务领域内的技术发展动态进行分析研究。
很多程序员响应,他们在推荐时也写下自己的评语。以前就有国内网友介绍这个程序员书单,不过都是推荐数Top9的书。
其实除了前9本之外,推荐数前30左右的书籍都算经典,笔者整理编译这个问答贴,同时摘译部分推荐人的评语。
下面就按照各本书的推荐数排列。
1、《代码大全》史蒂夫·迈克康奈尔
5、《重构:改善既有代码的设计》
二、程序员必读的14本书籍
程序员必读书籍有哪些呢?下面是我精心为您整理的程序员必读的14本书籍,希望您喜欢!
1、《代码大全》史蒂夫·迈克康奈尔
“优秀的编程实践的百科全书,《代码大全》注重个人技术,其中所有东西加起来,就是我们本能所说的“编写整洁的代码”。这本书有50页在谈论代码布局。”—— Joel Spolsky
Steve McConnell的原作《代码大全》(第1版)是公认的关于编程的最佳实践指南之一,在过去的十多年间,本书一直在帮助开发人员编写更好的软件。
无论您的经验水平如何,也不管您在怎样的开发环境中工作,也无论项目是大是小,本书都将激发您的思维并帮助您构建高品质的代码。
2、《计算机程序的构造和解释》
《代码大全》、《重构》和《设计模式》这些经典书会教给你高效的工作习惯和交易细节。其他像《人件集》、《计算机编程心理学》和《人月神话》这些书会深入软件开发的心理层面。其他书籍则处理算法。这些书都有自己所属的位置。
然而《计算机程序的构造和解释》与这些不同。这是一本会启发你的书,它会燃起你编写出色程序的热情;它还将教会你认识并欣赏美;它会让你有种敬畏,让你难以抑制地渴望学习更多的东西。
其他书或许会让你成为一位更出色的程序员,但此书将一定会让你成为一名程序员。
《C程序设计语言》(第2版新版)原著即为C语言的设计者之一Dennis M.Ritchie和著名的计算机科学家Brian W.Kernighan合著的一本介绍C语言的权威经典著作。我们现在见到的大量论述C语言程序设计的教材和专著均以此书为蓝本。
原著第1版中介绍的C语言成为后来广泛使用的C语言版本——标准C的基础。
人们熟知的“hello,world”程序就是由本书首次引入的,现在,这一程序已经成为所有程序设计语言入门的第一课。
生命中没有什么是一成不变的,人们需要改变自己的习惯和方法。不论你是程序员、软件公司管理者、技术奇人还是思想家,或者你只是想让自己的大脑更聪明一点儿,所有尝试改变自己的人,请把本书当作改变的开始……
关注人文,掌握思维法则,揭开科学与技术的神秘面纱
“它给我的震撼是第一次我能从全局的角度去看待各个学科,科学也不再是冷冰冰的割裂了的教条,不再是难以理解的一堆符号。”
6、优秀的叛逆者:引领组织变革的力量
Lois Kelly和Carmen Medina用她们的实战经验,向我们展示了如何在工作中赢得信赖、提出想法、处理人际关系、管理冲突和保持理智。”
——亚当•格兰特,沃顿商学院教授,《纽约时报》畅销书Give and Take的作者
7、《重构:改善既有代码的设计》
《重构:改善既有代码的设计》适合软件开发人员、项目管理人员等阅读,也可作为高等院校计算机及相关专业师生的参考读物。
8、《Site Reliability Engineering》
《SRE:Google运维解密》可以让读者学习到Google工程师在提高系统部署规模、改进可靠性和资源利用效率方面的指导思想与具体实践——这些都是可以立即直接应用的宝贵经验。任何一个想要创建、扩展大规模集成系统的人都应该阅读,该书针对如何构建一个可长期维护的系统提供了非常宝贵的实践经验。
那时候当我读这本《重构:改善既有代码的设计》时,由于它在关于代码异味的单独章节所花的篇幅,使得这本书非常值这个价。该书非常成功,因为它使重构和代码异味的观念成为主流。
Steve Yegge曾对这本书不吝赞誉之词:
2003年10月,我第一次阅读这本书,有一种不寒而粟的感觉。如果你意识到,当你想离职时,你已经工作5年。转天我就随意问周围:“嗯,你已经读过重构方面的书,对吧?我只是随便问问,因为我很久以前读过,当然不是现在。”在我所调查的20个人中,只有一个人
在大学时我读到这本《人件》,该书似乎很令人信服,甚至所有的研究结果都支持该书的观点:不设置截止日期就比设置截止日期要好;办公室比隔间要好,等等。所有开发人员跟我讨论的时候,基本都赞同这些观点。
尽管我不得不羞愧地承认,书中一半的东西我都没有理解,但我真的推荐《编程珠玑》,书中有些令人惊奇的东西。– Matt Warren
12、《修改代码的艺术》by Michael Feathers
我认为没有任何一本书能向这本书一样影响了我的编程观点。它明确地告诉你如何处理其他人的代码,含蓄地教会你避免哪些(以及为什么要避免)。
同意。很多开发人员讨论用干净的石板来编写软件。但我想几乎所有开发人员的某些时候是在吃其他开发人员的狗食。– Bernard Dy
13、《编码:隐匿在计算机软硬件背后的语言》
我推荐CharlesPetzold的《编码》。在这个充满工具和IDE的年代,很多复杂度已经从程序员那“抽取”走了,这本书一本开眼之作。–hemil
三、最适合程序员的背单词方法[1]
碎碎念记忆法的初衷源于一个朴素的想法:既然都有专门适合太监修炼的武功(葵花宝典),为什么就没有专门适合程序员的背单词方法呢?开个玩笑。
一杯咖啡,一盏孤灯,一本影印版砖头书,遇到生词就查查字典--程序员的英语学习是阅读驱动的学习。
不幸的是,老天爷可不管你是程序员还是城管员,也不管你是汽油驱动的还是柴油驱动的,只要是学英语,谁也逃不掉背单词这一关。
你是一个骄傲、懒惰、没耐心的程序员么?你是否在背单词时倍感痛苦?在一个又一个互相之间毫无关联又似乎无穷无尽的生词面前,我们引以为傲的逻辑思维能力和创造力毫无用处。每读一段都会遇到3、5个生词,它们不停地嘲笑你"还是个菜鸟呦".不过最让人受不了的还是,这3、5个生词里面往往会有1、2个明明就是不久前刚刚背过的!
忘了背,背了忘,背了又再忘……难道我们的大脑还不如一块200块钱的硬盘好用?
我们的记忆力有时好得很,例如那个在上班途中坐在你对面的美女,即使只见过一面,也很可能终生不忘。我们的记忆力有时差的很,上个礼拜三你午饭吃的什么菜?试试看,八成已经完全想不起来了。
比较不幸的是,在大脑看来,生词怎么看都不像美女,而更像是上个礼拜三的午饭。这也不能怪它,毕竟,语言和文字才只出现了几千年。
大脑的工作方式完全不像计算机,所以如果我们希望通过默写几遍的方法,就能把单词"输入"大脑存盘,那么一定会事倍功半了。(关于思考和记忆的话题后文还会继续讨论)
我很希望这方法能让你过目不忘,可是……
碎碎念记忆法并不保证过目不忘,因为没有人能把单词变成火辣香艳的美女。碎碎念记忆法只是想办法让生词不那么像上礼拜三的午饭而已。
好消息是,碎碎念法简单易学且容易操作,对每个单词都同样有效,不会要求你把药涂在耗子的尾巴尖上。
让我们用一个简单的例子体验一下碎碎念法的所有步骤,然后再详细讨论它的原则和技巧。请注意体会碎碎念法的核心思想:集中、简短(以便集中)、联系感、可视化、干扰效应。
碎碎念法共分6个步骤:阅读、记录生词和构建情境、情境碎碎念、休息、抽象碎碎念、阅读理解。(别担心,每个步骤都很简单)。
一本阴影版砖头书,最好有一定深度,生词再多也不怕。
一个16开白纸本,用作生词本。小学生用的大演算就挺好。
以段为单位,阅读一段英文,遇到生词也不要立即停下来查词典,尽量理解文意。当然,如果生词较多,并且其中有几个关键词,想完全理解是不可能的,没关系,接下来……
翻开生词本,在纸上画两条竖线,把白纸平均分成三条,为方便讨论,我们把这三条分别称为一区、二区和三区。再从头开始阅读,遇到生词时将其记录在一区,然后查词典,选取最符合文意的那个词义,记录在三区。然后再想出一个可视化的实例。例如,我们遇到的第一个生词是"hail",词义是"冰雹",然后在脑袋里想像冰雹的'样子。第二个词是"sparse",词义是"稀疏的",由于形容词大多比较抽象,所以要先构建一个词组,例如"sparse hair--稀疏的头发",将其分别记录在二区和三区,然后就能实例化了:例如日渐苍老的牛群同志的头发就算得上是"稀疏的头发"了,再在脑袋里回想牛群那地方支援中央的形象。第三个生词是"reverse",词义是"倒退",实例是"reverse car--倒车".如下图所示。
提示:如果注意到 hail这个词很容易与 hair这个词搞混,构建一个"突然下起了冰雹,一个长发少女拼命往屋檐下跑,几块冰雹穿过了她飘舞着的长发"这样的情境效果会更好。
用另一个本(我比较喜欢直接用胳膊)盖住三区,看着一区和二区,开始在心中默念:"hail就是冰雹(在念到'就是'时要想像着冰雹的形象)、sparse hair就是稀疏的头发(在念到'就是'时要想像着牛群那地方支援中央的头发的形象)、reverse car就是倒车(在念到'就是'时要想像着你最为熟悉的那个倒车的景象)",再把这个过程重复2遍(一共是三遍).然后盖住一区和二区,看着三区,在心中默念::"冰雹就是 hail(在念到'就是'时要想像着冰雹的形象)、稀疏的头发就是 sparse hair(在念到'就是'时要想像着牛群那地方支援中央的头发的形象)、倒车就是 reverse car(在念到'就是'时要想像着你最为熟悉的那个倒车的景象)",再把这个过程重复2遍(一共是三遍).接着……
休息1至2分钟,休息的方法是:把生词本向前随机翻几页,盖住二区和三区,回忆单词的词义,如果超过10秒还是没有想起某个单词的词义,可以偷偷瞧一眼二区的词组,如果还是想不起来,那就看一下三区的中文吧。接着……
回到刚刚背过的那页,盖住二区和三区,看着一区,在心中默念:"hail就是冰雹、sparse就是稀疏的、reverse就是倒退",这次念到"就是"时不必故意去想实例和形象,再把这个过程重复2遍(一共是三遍).然后盖住一区和二区,在心中默念:"冰雹就是 hail、稀疏的就是 sparse、倒退就是 reverse",这次念到"就是"时不必故意去想实例和形象,再把这个过程重复2遍(一共是三遍).然后……