程序员需要掌握的算法什么?

好的程序员必须掌握的几门编程语言 - 推酷
好的程序员必须掌握的几门编程语言
& & 很久了一直思考程序员应该先学哪门编程语言,必须掌握哪些编程语言,如何一个学习顺序。正好看到金老师也在研究第一门编程语言选谁(
),在此也表达一下个人看法。
& &金老师说到的第一门编程语言必须“有趣、简单、有用”的观点,我是基本同意的。
& & 首先,如果一开始没趣,不能激发学习者的兴趣很难让学生能够继续学习去,没有第一步的入门更难说以后坚持学好编程语言了。但实际上,“有趣”的不一定是编程语言本身,而在于用编程语言干什么,比如做一个简单的游戏,一个简单的应用,让初学者有一个学习的欲望,并且能够通过自己的努力完成一个完事的应用开发,使其具有成就感。假设是C语言,其实也不妨把编程语言与硬件结合,去控制一些LED,做个简单的时钟,也会让初学者很有兴趣;通过VB做一些简单的俄罗斯方块、计算器之类的应用也很有趣,等等。总之,趣不一定在语言本身。
& & 其次,”有用“就不是一个简单的问题,当然如果像Matlab之类的语言学会之后可以做很多计算,对于一个工科学生、以后的科研工作者、其它研究性工作来说可能非常有用,但对于一个程序员来讲也不见得非常有用,这要看以后的职业生涯,不同的职业道路学的东西应该是不一样的。
& &特别地,对于金老师所说第一门语言”必须能充分地体现现代软件开发的基本思想和技术成果”不是很赞同,因为第一门语言的学习过程中承载的东西过多会使初学者消化不良,反而会打击其积极性,心生畏惧,知难而退。
& & 话说回来,其实在研究第一门编程语言应该是什么的时候,我们应该先确定一下学习第一门编程语言的目的。个人认为每一门编程语言学习目的不是学会如何开发可用的工程软件,也不是为了真正掌握这门编程语言,而应该是帮助初学者转换思维,理解人与机器的沟通方式。前些天帮助北京某一高校设计手机软件开发课程,一个学期的课程,零计算机基础,没学过操作系统、微机原理、数字电路等,更甚的是根本没有学过一门编程语言,让我着实头痛,96课时要学一门编程语言还要学习手机软件开发的相关技术。人的思维方式的转变是非常慢的,所以出现的问题就是一边学习编程语言本身,一边学习手机软件的开发,由于对语言本身难以理解,导致整个课程的进行非常困难。这使我想起自己开始学习第一门编程语言----C语言的时候,虽然考试成绩很好,但自己当时的感觉还不是很透彻,心里总有些东西并不是很理解,比如函数、递归等,也是后来才慢慢地理解透的。对于学生来说,一个学期的课程只要能理解编程语言是怎么回事儿,理解编程语言的一些基本概念已经足够了。
& & 再从实际工程应用上来说第一门编程语言。在程序员当中,学习路线主要分为两类,一类是开始学习C语言,继而学习C++,后转向Java/C#或其它语言;另一类是开始就学习Java/C#的,后来由于工作需要也学C语言或C++。前者,由于学习C语言和C++的过程中把编程的基础知识学得很扎实,在理解Java与C#的时候就比较快而且深,因为从计算机硬件到Java整个知识链是完整的;但对于后者,由于在学习Java的时候,很多底层的知识都没有学习,对底层不太理解,再转而学习C/C++会感觉难度要比Java大很多,而且由于人本身的惰性导致C/C++也学不好。从兵法上来讲,前者属于“破釜沉舟”一类,由于后方没的退路,因为C/C++职位不多且对计算机综合技术要求较高,要想有工作或者提升层次必须转型学Java/C#;而对于后者则不同,因会Java/C#,工作机会也很多,如果学习C/C++学不好,照样可以有很多职位供选择,不能够发挥最大的潜力。所以,结果就是前者很更可能成为更高级的软件技术人才,而后者更难。而且,一旦精通了C++,再去学习Java/C#已经不是问题,只是熟悉一下编码规则而已,所以,前者也是比较自然的一种学习路线,但其入门门槛较高,开始需要一定的毅力才能通过那个阶段。
& &如果想成为一个好的程序员,甚至架构师、技术总监等,显然只精通一种编程语言是不够的,还应该在常见领域学会一到两门编程语言:
& &1) C & & & & & & & & &几乎适用于各个领域
& &2) C++ & & & & & & 几乎适用于各个领域,各种操作系统平台,也是个人认为最难的一种编程语言,但一旦精通之后再稍加学习其它语言很容易,基本无敌
& &3) Java/C# & & &二者都是更高一级的编程语言,一般不直接编译成机器码,需要通过虚拟机或类似虚拟机的运行时来运行,可以实现跨平台(C#跨得不多)
& &4) Javascript,ActionScript / VB script &WEB开发前端
& &5) shell/Python/Perl/Ruby & & & & & & & & & & & & 脚本语言,但于进行一些简单的应用或WEB开发
& &6) lua / Matlab & & & & & & & & & & & & & & & & & & & & & & 特定领域的脚本语言
& &7) XML / HTML & & & & & & & & & & & & & & & & & & & & & &标记语言
& &8) Verilog / VHDL & & & & & & & & & & & & & & & & & & &硬件描述语言,用于集成电路设计,另一种思路
& &9) PHP / ASP & & & & & & & & & & & & & & & & & & & & & & WEB开发
& &10) LISP /&
Haskell & & & & & & & & & & & & &函数式编程
& &编程语言多得数不胜数,艺多不压身嘛,但人的精力毕竟是有限的,每种编程语言学会一两门理解其编程思路即可。可能列出来的并不完整,希望朋友们补充。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致程序员需要学什么软件--百度百家
程序员需要学什么软件
分享到微信朋友圈
程序员这一行业是很多闷骚男选择的行业,虽然平时工作看似比较枯燥,但可以通过自己的努力进行创造,开发出不一样的天地,让程序更易用、更加人性化。那么程序员在刚入行的时候需要学什么软件?
程序员这一行业是很多闷骚男选择的行业,虽然平时工作看似比较枯燥,但可以通过自己的努力进行创造,开发出不一样的天地。很多程序员在代码编写中加入自己的想法,让程序更易用、更加人性化。那么,程序员在刚入行的时候需要学什么软件?
软件一:Navicat数据库管理工具
Navicat是针对数据库而研发管理工具,每个数据库类型都有,如Navicat for MySQL、Navicat for Oracle等。Navicat擅长于对数据库的管理,可以帮助程序员更好的管理数据库,视觉化创建 SQL 语句,自动生动生成报表等,Navicat具备所有数据库类型的绝大部分功能,包括存储过程、事件、触发器、函数、视图等。
Navicat 各数据库下载地址:
软件二:Beyond Compare文件对比工具
Beyond Compare 是专业级别的文件对比工具,因为其智能化而受到程序员的喜爱。Beyond Compare支持随时随地访问数据,支持多种文件格式对比。程序员主要用它对比代码,找出两版代码的差异,合并文件信息,并生成文件报告。如果你想比较两个版本的软件源代码有什么区别,以及在哪些地方有修改的地方,用Beyond Compare就对了。
Beyond Compare下载地址:
软件三:MarkdownPad编辑器
MarkdownPad是windows系统上最好用的Markdown编辑器,能好用到什么程度呢?你可以像写word文档一样写html页面!当然MarkdownPad在mac系统上也有相对应的编辑器。最明显的特点就是左边编辑右边预览,简直就是程序员的福利,是不是你想要的风格,瞬间就知道。
软件四:Sublime 文本编辑器
文本编辑器有很多,Sublime 只是其中的一种。Sublime 具有漂亮的用户界面和强大的功能,可自定义键绑定菜单和工具栏。Sublime的主要功能包括拼写检查、书签、完整的 Python API,Goto 功能、即时项目切换、多选择、多窗口等。
程序员在入门时需要学习的很多,不仅是在软件上,还需要在态度上更加勤勉。以上软件只是众多程序员入门软件中的几种,但这几种却是必不可少的几种。只有坚持不懈的努力,才能迎来属于程序员的春天。
分享到微信朋友圈
在手机阅读、分享本文
还可以输入250个字
推荐文章RECOMMEND
热门文章HOT NEWS
红包发腻了,2017年春节BAT集体土豪变技术男
陶志波 柯尔特
百度新闻客户端
百度新闻客户端
百度新闻客户端
扫描二维码下载
订阅 "百家" 频道
观看更多百家精彩新闻程序员(英文Programmer)是从事程序开发、维护的专业人员。
程序员岗位职责
1、负责协助技术总监进行技术评测,bug处理,代码开发; 2、负责网站数据库、栏目、程序模块的设计与开发; 3、负责根据公司要求进行erp、oa、crm系统等项目开发; 4、按时按质完成公司下达程度开发、系统评测等工作任务; 5、定期维护网站程序,处理反馈回来的系统bug; 6、网站程序开发文档的编写。
程序员岗位要求
1、良好的代码习惯,要求结构清晰、命名规范、逻辑性强、代码冗余率低; 2、熟悉Mysql,有较为熟练地掌握mysql语言及编写存储过程、触发器等数据库开发的能力; 3、精通PHP语言,精通CGI标准和HTTP等互联网协议; 4、熟练掌握javascript、div+css等web前端布局及多浏览器兼容相关技术; 5、英文水平过硬,能基本不借助字典快速阅读英文文档; 6、熟练使用Linux或UNIX系统,熟悉在Linux、UNIX下配置php+mysql的运行环境; 7、有良好的沟通、协调能力和学习能力,具备良好的团队合作精神,对工作积极严谨踏实,能承受较大的工作压力。
程序员关键技能
专业能力Web服务端开发客户端应用软性技能Web页面开发个人能力团队精神和协作能力需求理解能力学习和总结的能力
程序员升职空间
首先,程序员 → 系统分析员 → 架构师 → 技术经理 → CTO; 其次,程序员 → 项目组长 → 项目经理 → 项目总监 → CTO;最后,程序员 → 产品设计师 → 产品经理 → CTO。
程序员薪情概况
应届毕业生¥3300.001年经验¥3400.002年经验¥4000.003年经验¥5000.00
程序员工作内容
1、确认通过审查方案的目标,输入数据,分析师,监事,和客户的输出要求的项目要求; 2、编码工作流程的信息转换成计算机语言的项目要求; 3、通过输入编码信息的计算机程序; 4、确认程序操作进行测试,修改程序序列和/或代码; 5、准备写操作指令供用户参考; 6、保持历史记录,通过记录方案的制定和修订。
相关热门岗位

参考资料

 

随机推荐