Ⅰ 程序员难学吗
高中学历的知识储备在你做初级甚至某些中级开发是够用的,再往上就有难度,会涉及到很多高等数学之类的知识。但个人认为70%以上的程序员止步于初、中级开发者也过得算舒服
2、需要有一定的英语基础,不一定要多好,但是你知道程序开发都是使用的英文(用易语言的不叫程序员,不是看不起它,但是你总不能拿个美图秀秀叫做你会美工对吧,一个道理)。某些情况下直接查询英文社区可能会得到更快的解决方案。另外很多开发文档都是纯英文的。当然,如果你实在英文不行,这条也关系不大。
3、这条很重要,你一定要有强烈的兴趣和持续学习的心理准备和行动力。走向工作岗位之后你会发现很多东西需要你边做边学的。学校学的永远不够用。
4、这条更重要,如果你是因为怕吃苦或者成绩不好干脆没上大学,或者觉得学其他东西麻烦,觉得软件开发坐着吹空调写写代码就能赚钱,所以想学的话,建议你脚踏实地一些。
5、如果以上你觉得都能做到,那么个人觉得,由浅入深慢慢入门难度不会太高。
Ⅱ 学习电脑程序员,需要那些条件。比如什么文化水平,等。。。
电脑程序员,要有较强的逻辑思维,足够的耐心,能够仔细的编写程序,程序稍微错误一点就差之千里了,文化水平要求不高,你从头开始学起就好,只要你对电脑程序感兴趣,相信你能学好的。
预祝你成为一名优秀的程序员哦!!!
Ⅲ 程序员能自学吗
如果有一定的基础,对编程、代码有很强烈的兴趣,并且有较强的自学能力,这样是可以自学的。因为这个专业的实践性和逻辑性特别强,不付出一定的时间和精力是学不好的。如果真的很想当一名程序员,报班培训是一个不错的选择。
程序员职业要求:
一般的程序员都有四年的在专业领域的学习,需要一个在程序领域的学士学位获得者,不论是数学方面的还是工程方面的都是可以的。
大约有20%的人在这一领域的计算机科学和工程学拥有更高的学位。还有很小一部分程序员是自学的,尽管一些专业性的学校或者综合大学可以提供,但是也需要一些别的途径来提供相关的人才。尽管学历是比较重要的,但是公司经常把重点放在应聘者的工作经验上,很多刚从大学毕业的大学生虽然有引人注目的学位证书,但是他们找不到工作是因为他们缺乏经验。一个程序员虽然没有正规的学历,但是如果一个人拥有程序设计的深厚知识背景或者丰富的工作经验的话,那么他的机会要比有学历的应届毕业生大得多。所以要尽量抓住有用的工作和实习机会,这样的话在毕业后你就会发现,多实习让你有更多的经验,在找工作的时候就有更多的机会。
对于职业程序员,另外一个重要的方面就是,程序员需要不断提升自己的业务技术,他的技术必须一直保持在一个较高的水平,并且要不断发展,程序员也要寻找贸易的机会,要参加研讨会,在周刊上发表文章和接受职业教育,这些使程序员在自己的领域中分级或者不断并排前进。
程序员-网络
Ⅳ 做程序员编程需要什么数学知识,初中文化可以学吗
1.学习方法:本人认为这比什么都重要如果这个没掌握的话,可能直接影响你的成败。众所周知。。计算机知识 尤其是编程涉及到的知识可以说浩如烟海---那么面对这么多的知识该怎么去学呢?
---重点:1重实践,不要去想,把一个知识点完全彻底的掌握,那将是非常恐怖的,有编程经验的朋友都知道,编程里每个知识点深纠起来的话是非常困难的,更不要说是新手了。。那么知识点该掌握到什么程度呢? 个人认为:1-知道它是做什么 2-知道怎么使用。 这就足够了。。。。不要去管他的原理是什么,能把东西做出来才是王道。。。
---重点:2多写, 这个在编程界可以说是真理了,真正写程序的人都知道,一段程序你理解了并不代表你就会写了,那么怎么样才能提高“写”的能力呢? 本人认为要注意一下几点 1- 练习多做是必然的。 2- 做练习时不要因为觉得代码简单就只看不敲,哪怕多敲一遍HelloWorld 都是有好处的。 3- 相似的代码不要复制,我见过很多朋友,遇到两段程序类似,就懒的敲直接粘贴过去修改。。。请记住这是软件开发人员的做法,而你不是,目前你还只是一个学习者而已。所以 原则就是 能敲的就不要复制。
---重点:3把精力用在理解上而不要用在背上 写程序的朋友都知道,函数---关键字---常用类什么的,都非常的熟悉,为什么我们背过吗?没有 写的多了自然就记的牢了, 所以建议新手不要去死背什么概念,或语法 一定要理解它的作用。。。
---重点:4 笔记,我认为这点很重要,我自学时全是看书,和视频教程,然后总结对自己有用的东西。记在本上,而将来如果印象不深刻了由于是自己用自己理解的方式写的,简单翻一翻就能回忆起来,而如果,你忘了再去翻视频 或 翻书的话。。那么即使你曾经学过,也可能一时想不起来。。。
1.关于数学。。。这个问题,我觉得是目前争论最多的话题,我见过N多人说 学编程要学XX数学---什么微积分---什么离散---吓的新手连想都不敢想,我只想对这些人说一句,如果你懂,请你们帮助新手,如果你们不懂 请你们闭嘴 谢谢不要 误人子弟。。。那么下面我来 具体回答一下数学方面的问题。。。
1- 编程用数学吗? 用! 回答是肯定的,但要看你是做哪方面的程序。 懂编程的都知道,现在编程基本分B/C构架,即:客户端/浏览器端 与 C/S构架 即:客户端/服务器端 前者基本上就是JAVA PHP ASP.NET 等等。。。其中有多少地方用到了数学,如果还坚持没数学学不了编程的朋友请站出来回答下我的问题。。。
至于C/S 如果不是做系统级的程序员 或 大型3D图象处理 或者是音频处理的软件我请问又有多少地方用到了数学?如果你觉得x/y=z 这也算高等数学的话,我无话可说。。。。总结--除了3D等图象处理编程 或 音频处理编程 或系统级编程以外 其他编程对数学要求并不很高。。。。
2.关于英语, 我认为这个是个不可回避的话题,学编程一点英语不懂我觉得不太现实,毕竟有很多文档也是用英文写的,而且程序员都知道,编程时经常要用简单的英文,哪怕是定义个变量名,也要用英文起名, 没见过哪个程序员定义的变量叫什么aaa或bbb的。 那么新手该怎么面对英语呢, 我觉得很容易,按照书上或教程上去做就足够了,1 编写程序时 按规范要求去做,首先变量名,用见名知意思的英文单词, 写注释时 也用英文短句。。。 抛异常时 也用英文来标注等等。。。。慢慢积累,时间久了你就会发现其实计算机里的英语 就只有那么几句而已。。。
3.关于学校 这个我也想提一下,有很多想以程序员为工作的朋友可能都考虑过找个培训班---但我的建议是。不要去---起码一般的不要去,为什么?效果不好,就这么简单,我亲自到XXX着名编程培训学校试听过。。。结果很遗憾 一周才那么几天课,我3天阅读的知识点比他们1个兴趣 教的还多。。。而且上机和理论还是分开,新学的知识不能立刻上机实践等等。。我觉得都是很严重的弊病。。。跟严重的那些所谓的学校给学生们造成了一种假象。。。只要在学校里考试合格了,出去就能做程序员,甚至软件工程师了。。。最后他们将发现,原来他们在学校里学的 只是基础中的基础而已 - -
4. 自学的资料,我个人认为,自学第一重要的是 视频教程,懂的人都知道,编程学习时重点并不完全是知识点,而是如何运用那些知识点,这也是项目经验今天被人们这么看中的主要原因。。。所以视频教程绝对是不二的选择,现在网上的视频教程非常之多 各种各样的都有 具体怎么找相信不用我教了 google 电驴 迅雷--我就是靠他们活过来的 。。。而且视频教程还有一点是学校比不了的,那就是 你可以随时看 重复看,一个知识点没明白 你可以反复的听10遍 20遍都没问题, 学校恐怕就不行了吧。 另一个优点是可以在你状态好时看, 大家都有状态不好的时候,累了-困了 很正常,可在学校,谁管你? 老师讲完了 听不懂你自己的问题,而视频呢,好办 累了 先休息一会 有精神了 想怎么看就怎么看。。。我觉得 找到好的视频教程。。比任何老师都重要。。至于出现问题不懂怎么办? 相信能来到着找到我这篇文章的朋友 都有办法解决的。。
5.书 --- 我非常喜欢看视频教程,但我坚决反对只看视频不看书,为什么?很简单视频传授的是 写程序的经验 而书则是细腻的为你讲解其中的原理。。所以我的建议是 先把一个知识的视频看一遍,然后再把书翻一遍 然后自己再写2遍 量变必然引起质变 我相信这是放之四海 而皆准的道理(指编程行业)
6.时间+态度 我认为这也很重要,很多人经常这样问我,我1个月能学会编程么? 我半年能成为编程高手么? 我觉得有这样心理的人比适合学编程。。。 学编程最忌心浮,一个知识点还没弄明白 就想写个项目出来 这是不可能的,这样最后只能导致你自己丧失信心,编程要一步一步的来,相信我哪怕用一天时间才掌握了一个知识点,起码比你用一天的时间 看完整本书强。。因为前者起码你还是有点收获的(指新手,老手两天一本书很正常有经验了吗 - -) 这里我可以给大家一我的学习时间大家可做为参考。。。我是从0基础开始一直到现在掌握j2ee基本所有的基础开发技能 用时一年半,本人觉得不算慢 每天最少看书+练习5小时 每天不停这个是我的进度。
Ⅳ 程序员需要学些什么
程序员的岗位需求很多,例如大型网络公司、软件开发公司等等都需要程序员。
程序员需要学习:
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、《活着》
Ⅵ 没文化怎么学编程一月北京20000做程序员。要多高文化
学历至少专科哇。可以自学,也可以上培训班,这个挺费脑子的。我是本科生,专业就是软件开发,我现在都是半吊子。上班是高薪没错,可是很累,加班很频繁,经常加到凌晨几点。你说的一个月能挣上万的,那都是技术相当高了。刚毕业的学生进去工资3000-5000元。
Ⅶ 学编程要什么文化
给软件开发初学者
在论坛上呆久了,发现很大一部分有关开发的帖子都是有关心怀梦想,立志成为一个软件英雄或者响当当的黑客人物;或者是狂热的游戏玩家,突然想迈入游戏开发的殿堂,自己打造一个完美的游戏;或者被以前IT行业的“钱”途无量所吸引,为了经济因素希望成为一个程序员的,而寻求进入软件开发领域之门的求助帖子。
这些诸如“你好,我想做程序员,应该怎么做?”,“初学C++,请问看什么书好”,“请高手帮我看看这个程序”,“我想转行,请高手指点”……的帖子占了各大软件开发论坛帖子总量的很大一部分,而且内容是长年不变,重复来重复去 :P
自从做了epubcn的C++板块的版主,经常收到不相识网友的消息或Email,基本上还是问这些问题。看到这些帖子和Email,不禁想起自己刚刚迈入软件开发的领域,茫茫然不知何去何从,兴奋而又彷徨不安的过去,这样的经历一次又一次,在不同的地点、不同的时间仍然在不断的重复。今天终于坐下来,写下一点文字,希望能够对彷徨的朋友们有点帮助。
确认你真的要迈入软件开发领域
软件开发是一项纯智力活动(现在人们都意识到长时间超负荷的连续写程序并不会提高软件生产率,反而会对软件品质造成很大负面影响,所以尽管很多程序员仍然长时间加班,但这种现象正在逐步减少并最终会消失,所以体力要求并不会比其他行业高),如果你不是一个智力高于平均水平的人,说实话,软件开发并不适合你,你基本不可能在软件开发领域取得很高的成就和地位,而且不久就会因为年龄的增长而被淘汰。
如果你以那些开发出共享软件的软件英雄和着名黑客为榜样,立志也要成为他们的一员,像武侠小说中的大侠一样仗剑江湖。我要先给你泼上大大一盆冷水,把你从幻想拉到现实中来。首先,现在的软件其复杂度和规模都远远超过以前,想一个人独力完成一个规模稍大的软件,基本没有可能(虽然还是有些特例, but trust me,那些仅仅是特例,请不要把自己想象成独一无二的超人、幸运儿);其次,无论是软件英雄还是仗剑江湖的顶尖黑客,他们的软件开发功底和智力都远远超过软件行业从业者的平均水平,没有多年的积累和坚韧超常人的毅力,是不可能,换句话说,想成为他们的一员,可以,但请首先成为一个合格的软件开发人员。
如果你是因为传说中程序员的所谓“高薪”,对自己现在从事的工作不满意,而萌生转行的念头,我劝你还是再慎重考虑一下。程序员的待遇一般来说,是要比平均水平高一些,但远远谈不上高薪,而且以现在程序员的工作量来算,其实同样的付出,程序员所得到的能和平均水平看齐就不错了,程序员的竞争和淘汰也是异常残酷的。技术的更新速度更是其他行业所罕见,每个程序员都要不停的跑步跟上,不使自己落伍,所以在这个层面上来说,没有谁可以停下来休息,唯一能够积累下来的就是你的经验,但经验中能够为你的竞争力增添筹码的并不多。
说了这么多,并不是我故意贬低,而是希望告诉你我所知道的软件开发行业的真实情况,基于此请再慎重考虑你是不是真的要迈入软件开发领域。
检验一下你是否适合当个程序员
在我看来,要做一个合格的程序员,你需要具备下面几个条件:
1. 强烈的好奇心和求知欲
2. 追求完美的精神
3. 良好的逻辑分析能力
其他方面的条件几乎所有类似的帖子都有提
及:如果你不是准备单打独斗,那么团队合作能力必不可少;英语我就懒得说了,没有基本的阅读英文资料的能力,我劝你还是打消做个程序员的想法,没有为什么;数学能力也是必不可少的,如果不是做算法,高中水平的数学能力就足够了,但一定要成绩很好才行。
那么为什么我要强调上面列的三点呢?
具有强烈的好奇心和求知欲,能够让你跟上技术发展的步伐,仅仅靠危机感和责任感,你对技术的学习会有很强的功利性质,导致你的技术体系不能构成一个完整自包容的整体,而且很难对技术有高层次的认识和掌握。
我认识的一个资深系统设计师跟我说过:做软件,“做出来”和“做的好”完全是两个概念,所要求的投入和技术水平是天壤之别。现在国内很多程序员仅仅把软件开发当作养家糊口的谋生手段,国内计划经济时代凑合、马马虎虎干活的思想也渗透到了软件业,很多程序员仅仅是把功能做出来,根本不会去考虑提高重用性、可维护性,也不会去考虑提高稳定性、运行速度,甚至连代码也是乱七八糟,基本的编码规范都不遵守(在我看来,这样的人不配“程序员”这个称号),在我们大声谴责国内软件业环境不好,拉项目靠关系,没有质量保证体系,老板不重视程序员,疯狂剥削程序员的时候,我们是不是该问问自己,你是不是只把眼睛盯着别人?
现在各种软件开发包应有尽有,包罗万象,编程工具也异常强大方便,对于国内占主流的MIS系统来说,要完成一个功能实在不是很难的事情,但是如果把系统做为一个整体,则大多数都是运行缓慢、占用资源过大、兼容性差、可维护性差、不稳定的系统,你可曾尝试过开发一个优秀的系统,如果有,你就会发现开发优秀软件是多么困难,对技术的要求是多么高,而你在努力做到完美的过程中水平的提升是多么快。没有追求完美的精神,无论外部环境如何好,你也是不会开发出优秀软件的,等待你的是无休止的修改和维护~,你的技术水平也永远停留在简单的编码阶段,最终只有被迫转行。
好了,我真的适合当个程序员,那我该如何开始?
首先选择一门编程语言和操作系统平台。
操作系统平台国内比较流行的基本有Windows、Linux(Unix)、Mac OS。一般来说大家都选择的是Windows平台,因为此平台是国内处于垄断地位的操作系统,而且有很多优秀的开发工具可供选择,缺点就是Windows 平台的开放性不高,往底层探究比较困难(但我对于言必称底层的观点比较反感,不是所有搞开发的都要对底层非常了解,做出用户满意的系统才是我们追求的根本,玩些底层的trick只是一种自我满足罢了。当然我们需要有一些掌握底层技术的高手,但这个是个人选择的问题),而且用惯Windows的程序员在配置、脚本等方面比较弱。Linux是开源平台,当然从理论上你可以操纵Linux的一切,但是有几个人能够达到这一水平?刚刚开始学习开发的程序员,在 Linux上也仅仅能够开发一些应用软件罢了。Linux下的开发工具不够人性化,但这种情况正在逐步得到缓解,Eclipse就是非常出色的开发平台。在Linux下开发,你可以得到大量优秀的源代码,并且一切都是透明的(只要你想),但你必须学习很多命令行指令,掌握各种系统和参数配置以及脚本方面的知识。
编程语言的选择更是令人头痛,我涉猎不多,对于有些语言,我无法给出任何建议,只好等这方面的高手来给大家补充了。我仅仅对C++和Java进行一些说明,当然这个也仅仅是基于个人体会,绝对不是权威观点 :P
C++仍然是目前占主流的开发语言(详细的可以阅读TCPL中的相关论述),而且一种语言的发展或消亡都是一个渐进的过程,在可以预见的将来,C ++仍然是一门举足轻重的开发语言,但其所针对的领域和方向可能会有所调整,我认为最主要的变化是C++会逐步从商业MIS系统市场上退出。选择C++的理由是关于C++的优秀开发书籍和开发工具最多,相关的资源也异常丰富,待对于一般应用程序的开发掌握之后,无需过渡,就可以深入学习各种技术,因为现阶段讲述系统底层奥秘和高级技术的书籍,基本都是选用C\C++做为示例语言。加上微软精心打造的开发平台Visual Studio或Borland的C++ Builder系列,学习起来更是如虎添翼。但C++现在的缺点也是比较明显的,我最深的感触就是对于XP和Agile Development的支持不好。
Java简化了C++的语法,学习起来比较容易(但随着Java的日益普及和发展,是否能够继续保持这一优势,我不敢断言),Eclipse 是非常优秀的Java开发平台,支持XP的整个过程:设计、测试、编码、重构……现阶段敏捷软件开发的主要语言就是Java。而且Java的跨平台特性更是非常大的优势。
实际上,选择哪门语言都没有关系,根据你的发展规划和目前身边的环境选择就可以,没有必要跟风,其后的坚持才是难点。
好,假设你选择了C++做为开发语言,在Windows平台上开发,那么我给你如下的学习建议(其他的选择请各位积极补充……):
C++语言的学习当然是基础,这个阶段由于没有任何在特定平台上的开发经验,我们只能按照书中的例子一个一个输入运行,暂时告别熟悉的图形界面,回到古老的DOS了。参考书的选择是这个阶段很多朋友关心的,Stan Lippman的《Essential C++》和《C++ Primer》是我优先推荐的,而《Essential C++》因为篇幅较小,讲解内容适当,而且对C++ STL的运用有不少描述,显得相当实用,我认为最适合初学者使用。无论选择了那本书做为入门教材,都应该逐个例子逐个例子的消化,不要贪快,但同时要对重点内容有所侧重。我们学习任何东西都是为了解决实际问题,所以请把重点放在我们实际中最常用的部分,而不要过多的追究一些细节和艰深晦涩的不常用技术。
此刻我们会碰到很多过后看来非常简单幼稚的问题,比如为什么编译出错,为什么按照书中的例子输进去却无法通过编译,找不到头文件等等,大体上这是因为刚刚接触程序开发,对程序理解还很初级,以及对于所使用的开发环境不够了解,特定编译器对标准C++的支持程度不一导致。请多阅读关于所使用开发环境的各种文档,以及查阅帮助文档。以我最经常使用的Visual C++配合MSDN来说,当出现一个我不能理解的编译错误时,按F4键编辑器就会自动跳到当前错误地点,下面的输出窗口也会给出错误代码(比如C××× ×),把错误代码记下,打开MSDN,在索引一栏输入错误代码,就能够查到详细的关于此错误的说明,当然,是英文的(不要问你不会英文怎么办,这是基本要求)。现在的开发工具查错排错非常方便。当然,有时很多错误原因并不是编译器所提示的地方,而是往前或往后一些地方,长期的编程经验可以提高查错速度。此时也请多练习练习Debug技术。
此阶段只要能够掌握C++的基本语言要素,对结构化程序设计和基于对象的设计有一定理解,能够完成一些简单的小程序就可以结束了,毕竟DOS 程序现在很难勾起我们学习的欲望了 :P 在此之后可以视自己的情况决定是否学习数据结构,数据结构是程序员的必修课,不可或缺,地位非常重要,即使你现在希望马上进入图形界面程序开发的世界,这一课我也提醒你记着早点补上。
终于可以迈入图形世界,我们要从SDK编程开始,不要担心,这不会花费你太长时间,但却是对Windows程序运行机制进行深入了解的好时机,在此的努力都不会白费(trust me),此时的参考书没有什么好考虑的,基础的有Charles Petzold的《Windows程序设计》,进阶的有《Windows核心编程》。请从《Windows程序设计》开始,Charles Petzold的书通俗易懂,学习起来非常轻松,而且对你的语言要求不高,只要懂C就可以了。
此时容易碰到的问题大多与项目设置有关,如果使用Visual C++,请按Alt+F7调出项目设置对话框仔细检查,并阅读相关文档,熟悉各项配置的意义。
此阶段请重点掌握Windows SDK程序的编写方法,Windows程序的运行机制和Windows消息机制,和常用的Windows API。我们还可以更进一步:尝试用前一阶段学到的C++知识对过程化的SDK程序进行初步的改造,将我们敲入计算机的程序变得可重用,按照自己对基于对象思想和面向对象思想的理解来重新编写例子程序。
OK,现在你已经初步入门了,掌握了C++的基本用法,对面向对象有了一点模糊而自以为是的认识,也能够写出Windows程序了,虽然还有点简单,还有点丑陋,不过,总归是图形界面啊。开始有点感觉了,是吗? :P 别急着往前冲,停一停,将C++和Windows SDK的基础打牢,贪多嚼不烂吗。此时有很多经典书籍等待你去掌握,也有几乎无限的题材供你练习,请尽量多阅读接触下面的资源:
《C++ Primer》
《Windows核心编程》
《应用程序调试技术》
面向对象开发设计方面的书籍
MSDN的Platform SDK部分,Periodicals部分(包含了大量有价值C++、SDK方面的技术文章)
CodeProject里相关的源代码是很好的补充学习资料
现在继续往前走吧,利用SDK开发毕竟有时太过于费时费力,还是使用更高级的应用程序开发框架的好,主要的有MFC和VCL,关于这些框架谁好谁坏的争论我已经听烦了,一句话,能帮助我们完成任务就行,它们无非都是工具,你自己随便选择吧。不过选择好之后,你应该明白,对于你的工具,了解越深,越能发挥它的威力。如果你选择了MFC,我建议学习下面的书籍:
《深入浅出MFC》:关于此书毋庸多说,尽管有人不停的贬低,但它的地位是无可置疑的,而且也是对我最有帮助的书籍之一。
《MFC程序设计》
《Visual C++技术内幕》
然后就停止找书吧,网上开发站点的数不胜数的源代码就是最好的老师了……
学习过程中碰到问题我该怎么办?
我始终认为学习软件开发过程中遇到的问题只有自己尽最大的努力去解决,才能收到最大的成效,对于那些动不动就把问题发到网上指望高手帮你解决的做法我非常不赞同,因为这样你并不能从中学到多少。我建议的做法是,首先尝试自己独力解决问题,花几个小时解决一个问题,是很正常的,不要几分钟解决不了就放弃了;实在无法解决的时候,请尝试尽量减小涉及范围,将问题归结一下,初步形成自己的结论;然后利用搜索引擎或者开发论坛中的搜索功能来搜索是否有对于自己问题的解答;实在没有的时候,再发帖子求助。请了解一点:你遇到的问题都是别人遇到过的,网上肯定有现成的解决方法(因为你还没有到开发研究前所未有的问题的水平:P),只看你找不找得到了,请尽力去利用现有的资源而不是麻烦别人。
CSDN的论坛、MSDN在线文档都是非常好的资源,基本上我们遇到的问题在这里都能找到解答。
(写的有点乱,大家凑合看吧B))
注:上面的内容还不够全面,非常欢迎各位充实。有什么不对之处,也欢迎大家指出讨论。
参考资料:http://..com/question/2687391.html
Ⅷ 为什么中国的程序员总被称为码农
本人并不是一位程序员,但是从事互联网行业也少不了与程序员朋友打交道,他们经常自嘲为“码农”、“程序猿”、“代码工人”、“码字猴”等等,这些一定程度上是幽默的称谓,但是站在旁观者的角度,本人认为还有一些深层次的原因。
第一,中国的程序员是一个庞大的群体,只要是学过计算机,只要懂一门编程语言,都可以吃这碗饭。当你看到中午吃饭时那个浩浩荡荡的场面,你就会觉得程序员真的看起来和农民差不多。
第二,大部分程序员做的都是比较枯燥的工作,一点创新性都没有。很多新项目都是在很成熟的项目之上进行修改,都有现成的模板可以套用,基本上不用怎么动脑筋。这和农民种田是多么的类似。他们年复一年地做着同样的事情(播种、插秧、收割),也不知道这种日子什么时候是个头。IT行业本应该是一个创新性非常强的行业,但到了中国就成了比较死板的东西了,这是什么原因呢?
第三,大部分程序员的视野都比较的窄,对其他行业懂得很少,这也和农民是多么的相似啊!我们都说农民阶层是没有多少文化的,但这居然也适用于以高学历着称的程序员身上,是多么具有讽刺意味啊!你随便问一下身边的程序员,当今最流行的词语是什么,我想没有几个人回答得上来。他们成天盯着代码,想着那26个字母和10个数字,视野如何能变宽广?
第四,大部分程序员都是靠自己的努力挣钱,没有强的人际关系,基本上属于“弱势”群体。就像农民一样,他们没有关系,只能世世代代在自己的土地上耕耘,只求维持生计、终老一生。如果稍微有点关系,几乎没有人愿意当程序员。在行业发展较为顺利的时候,他们能够保住饭碗,能够养家糊口;当行业不景气的时候,他们随时都有被裁的危险,因为公司要不了那么多人。程序员的命运并没有真正地掌握在自己手上。
在一个大的IT公司,程序员都占了很高的比例,少则成百上千人,多则几万人,真的像农民一样,到处都是。我在和同事聚餐的时候,程序员都在抱怨自己的工作是如何的辛苦、如何的累,都说自己是“码农”。
Ⅸ 程序员节的节日起源
1、节日起源
创立“程序员节”最早是来自俄文《计算机世界》(《Компьютерра》)出版社的主编德米特里·门德列留科(Дмитрий Мендрелюк)在1996年7月15日的想法,当时计划将节日命名为“计算机用户节”,定在每年9月份的第一个星期五,称之为“纯净的星期五”(Чистая Пятница,按照当事人之一的说法,这样命名是为了刺激那些计算机病毒制造者)。
说到程序员节的来历,这要归功于一名在并行技术网页设计公司工作的职工——伦丁·巴尔特。2002年,他收集签名向俄罗斯联邦政府请愿,请求将这一天定为程序员节。2009年7月24日,俄罗斯联邦通信与大众传媒部提出了新的节日安排方案,设立程序员节。9月11日,俄罗斯总统梅德韦杰夫签署了这个法案,也就成为了俄罗斯的一个官方节日。这一行动在5天内得到了9800个投票支持。
程序员节也叫“溢出节”,即“选择第256天是取其一字节(8位)溢出的意思(从0开始,最大到255)”。(俄语:День программиста)是一个俄罗斯官方节日,日期是每年的第256天,也就是平年的9月13日和闰年的9月12日。
2、节日文化
选择256(=2^8)这个数字因为它能表示程序员所熟知的,一个字节是由8位二进制数构成的意义。256也是2的幂中最接近但不超过365的数。
十六进制中第256个数为0xFF,因此,在这个节日中,程序员穿24位RGB颜色代码为0xFFFFFF的白色服装进行庆祝。
3、节日活动
每年第256天(平年9月13日或闰年9月12日),是国际程序员节。每逢这一天,人们都要穿白色服装来庆祝。有网友称,毕业5年后,程序员从风度翩翩的美男子,变成了完全秃顶的“类人猿”。5年秃顶的程序猿们,命运悲催。以程序员为代表的IT男们的职业特征,再一次引发热议。
白色被选为程序员节的主题色。在红绿蓝24位深(RGB)颜色空间
程序员里,每种原色可以有256种级别(从0到255一共256个数值)的深浅变化,当三种原色都达到最大深浅值,即为十六进制的0xFFFFFF时,表示白色。所以全世界的程序员们会穿着白色来庆祝这一天。
每年第256天(平年9月13日或闰年9月12日),是国际程序员节。之所以选取256,是因为256是程序员熟知的8位元基本数字。程序员节是俄罗斯的官方节日,每逢这一天,人们都要穿白色服装来庆祝。有网友称,5年秃顶的程序猿,命运悲催。
就在程序员这一天,有网友称,程序员5年后就成为程序猿。据图片显示,一男子毕业时,青春焕发,充满生机,2年后,有些许沧桑。但5年后,程序员变成了完全秃顶,已经基本回归到原始类人猿,故而有程序猿之称。
Ⅹ 程序员节的节日文化
选择256(=2^8)这个数字因为它能表示程序员所熟知的,一个字节是由8位二进制数构成的意义。256也是2的幂中最接近但不超过365的数。
十六进制中第256个数为0xFF,因此,在这个节日中,程序员穿24位RGB颜色代码为0xFFFFFF的白色服装进行庆祝。