For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
送给所有学习编程的同学,希望你们通过达内的培训后,可以在这条康庄大道上越走越远。
算法的复杂程度至关重要
算法复杂性议题在高校的计算机科学课程当中已经得到了详尽的解读。然而,很多出身科班、凭借着聪明才智在周末自学掌握Ruby或者CoffeeScript的年轻人们根本没能深入领会其精神。复杂性分析可能看似一种极为深奥的理论性事务,但其会随着项目规模的变化而展现出完全不同的面貌。当n值较小时,一切都能够轻松实现。特别是在内存容量充裕时,代码将以令人满意的速度得以执行,这时即使糟糕的算法也能够在测试中得以通过。然而当用户倍增再倍增时,那些包含有0(n^2)甚至0(n^3)的算法会让使用者陷入无尽等待的噩梦。
库有可能糟糕透顶
那些编写库的技术人员并不总是关注我们这些普通使用者的利益与诉求。他们确实在努力帮忙,但其关注重点往往集中在为整个世界作出贡献身上——而非我们日常面临的小小难题。他们最终打造出的往往是一把能够解决多种不同版本问题的瑞士军刀,而非针对当前问题作出深度优化的解决方案。库项目的工程技术与编码水平毋庸置疑,但运行速度却可能不堪恭维。
如果大家不在这方面多加注意,那么库本身很可能把我们的代码成果拖进速度缓慢的泥潭,而各位对此甚至一无所觉。一位编程界的前辈曾告诉我,他曾经请一位年轻的程序员帮他调整代码成果,因为他写了十行代码来从字符串中提取字符。
“我可以用一条正则表达式与一行代码完成同样的任务,”年轻的程序员自信地表示。“从十行到一行,这就是看得见、摸得着的改进。”但他并没有意识到,他这一行代码在每一次进行正则表达式调用时,都需要经历解析与重新解析的过程。
库与API在适当运用的前提下能够发挥巨大的作用。但如果以内部循环的方式加以使用,那么他们完全可能对速度产生破坏性的影响——而当事人往往还完全摸不着头脑。