1、版本控制系统(VCS)
VCS也许是计算机课程最大的疏漏。这些课程光记得教如何写代码,但却往往忘记教学生如何去管理代码。每一个程序员都应该懂得利用Git或Subversion有效地创建repository(仓库),编辑与提交代码,进行分支与合并,了解项目工作流。
2、学会写作
身为程序员要写的不只有代码。你还要写项目的发布说明,给版本控制写提交消息,在系统里面写漏洞报告。这些和许多地方都需要清晰有效的文字交流—但这个技能计算机科学却很少强调。
3、正则表达式
正则表达式本身就是一门语言,每一个现代程序员都要擅长。每一门现代语言都支持正则表达式或者有相关标准库。如果代码需要校验某字符串是否含有5个字符、1个破折号和1个数字,你应该马上就能写出/^[A-Z]{5}-\d$/。
4、库的使用
现在已经是2014年,所以没人需要用正则表达式从URL析取主机名了。因为每一门现代编程语言都有执行常用功能的标准库。
程序员需要明白,那些经过开发、测试和调试的代码通常要比自己重新写的代码更好。更重要的是,无需编写的代码实现起来要快得多。
5、SQL
很多人的SQL都是在工作中学会的。数据库怎么会是选修课呢?有不用数据库的吗?
把数据存进平面文件的时代已经结束了。一切东西都要进出数据库,而SQL则是存取数据的语言。这是一门说明性语言,不是程序语言,所以用它来解决问题时需要新的思考方式。每一个程序员都应该了解数据库标准化基础,能够执行SELECT(及INNER、OUTER JOIN)、INSERT、UPDATE和DELETE。
6、会用IDE、编辑器及CLI工具
只懂用锯子的木匠永远也无法出师,所以计算机专业毕业的人只懂Notepad或pico令人惊诧。编程工具帮助操纵代码及其他数据,令程序员生活变得容易。所以每一个程序员都应该知道命令行、shell脚本、find、grep及sed的使用。
7、调试
每一个程序员都应该知道利用交互式调试器或在代码中点缀一些输出语句来调试程序。通过逐步求精来跟踪问题的能力实在是太重要了。
8、防错性编程
错误总是难免的,哪怕是明星程序员也不例外。失控是世界的常态,出错毫不奇怪。防错性编程正是理解了这个事实。如果东西不会不出错,我们就不会检查文件打开成功与否,不会检查客户ID是否合法数字,不用测试代码是否允许正确。
程序员需要知道,编译器告警是有用的工具,可让我们生活得更舒适,而不是要避而远之的麻烦事。每一个程序员都应该知道为什么每一个PHP程序都要这样开头:
set_error_reporting(E_ALL)
每一个Perl程序都要写上这些语句:
use strict; use warnings;
9、团队协作
很少编程工作会让你自己一个人完成,如果你经常这么做,智力会受损,表现会变弱。你的代码必须与别人的交互或者混合。再有才的程序员,如果无法与别人协作,都会给项目造成负面影响,并迅速成为组织的负担。
10、利用现有代码
在学校的时候,每一次作业都是一个新项目。但现实世界不是这样的。对于刚工作的人来说,所接到的第一项任务往往是修改代码漏洞。然后,再在现有代码库的基础上为现有系统增加一个小功能。设计新代码那是几个月后的事情,如果幸运的话。
新手程序员必须知道的10个秘密是什么
时间: 2024-10-25 06:51:22
新手程序员必须知道的10个秘密是什么的相关文章
程序员必须知道的10大基础实用算法及其讲解
程序员必须知道的10大基础实用算法及其讲解 原文出处: cricode 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比 较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构 上很有效率地被实现出来. 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子
堆排序算法---《程序员必须知道的10大基础实用算法及其讲解》
> 原帖地址:http://www.oschina.net/question/1397765_159365 快速排序算法的基本特性: 时间复杂度:O(N * logN) 堆排序为不稳定排序,不适合记录较少的排序. var arr = [], count = 100, i = 0, parentIndex, exeCount = 0, startTime = + new Date(), stackSort = function(a){ if(a.length === 1) return a; va
《转》程序员必须知道的10大基础实用算法及其讲解
来源: Cricode 发布时间: 2014-06-19 08:27 阅读: 2018 次 推荐: 8 原文链接 [收藏] 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序n个项目要Ο(nlogn)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divideandconque
程序员必须知道的10大基础实用算法
详细介绍:广度优先搜索 算法八:Dijkstra算法 戴克斯特拉算法(Dijkstra’s algorithm)是由荷兰计算机科学家艾兹赫尔·戴克斯特拉提出.迪科斯彻算法使用了广度优先搜索解决非负权有向图的单源最短路径问题,算法最终得到一个最短路径树.该算法常用于路由算法或者作为其他图算法的一个子模块. 该算法的输入包含了一个有权重的有向图 G,以及G中的一个来源顶点 S.我们以 V 表示 G 中所有顶点的集合.每一个图中的边,都是两个顶点所形成的有序元素对.(u, v) 表示从顶点 u 到 v
[转载]程序员必须知道的10大基础实用算法及其讲解
算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤: 1 从数列中挑出一个元素,称为
有动态示意图!程序员必须知道的10大基础算法讲解
目录: 算法一:快速排序算法 算法二:堆排序算法 算法三:归并排序 算法四:二分查找算法 算法五:BFPRT(线性查找算法) 算法六:DFS(深度优先搜索) 算法七:BFS(广度优先搜索) 算法八:Dijkstra算法 算法九:动态规划算法 算法十:朴素贝叶斯分类算法 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n
程序员必须知道的10个算法和数据结构有哪些?
算法 图搜索 (广度优先.深度优先)深度优先特别重要 排序 动态规划 匹配算法和网络流算法 正则表达式和字符串匹配 数据结构 图 (树尤其重要) Map 堆 栈/队列 Tries | 字典树 额外推荐 贪婪算法 概率方法 近似算法 算法: 三路划分-快速排序 合并排序(更具扩展性,复杂度类似快速排序) DF/BF 搜索 (要知道使用场景) Prim / Kruskal (最小生成树) Dijkstra (最短路径算法) 选择算法 数据结构 HashMap (真的要知道所有哈希结构) 图和树(红
程序员必须知道的10大基础实用算法及其讲解(转)
算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序n个项目要Ο(nlogn)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divideandconquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤: 1从数列中挑出一个元素,称为“基准”(pivot),
程序员必须知道的7大基础实用算法及其讲解
今天给猿猿们推荐一篇文章,关于算法的~ 1.快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性. 步骤: 从数列中挑出一个元素,称为 "基准"