科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件你是专业程序设计师吗(上)

你是专业程序设计师吗(上)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

你是「专业」的程序设计师吗?什么是专业?我自己的定义是「使用自己所擅长的程序语言,快速且正确地解决问题的程序设计师。」这句话里有两个重要的关键词:「快速」与「正确」。

作者:朱仲杰 2007年6月7日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

要在时限内正确的解决问题并不容易,尤其是在做项目时。有句玩笑话说,项目的Deadline就是订出来让人delay用的。如果时限已到,问题还没有办法100%解决呢?那你就要用你专业的判断,配合当下的环境,把能得到最好结果的答案给交出去。程序比赛时间是无法延长的,项目的话就有许多谈判的空间,如果你交出去的答案够水平,在客户面前谈判的筹码自然就多一些。

Google Code Jam其中一个题目的满分是250分。要拿到满分很难,但按照给分的条件,就算你的解法没有100%的正确,还是会有一定分数。所以别浪费时间在仔细的检查为什么程序没有办法100%通过测试,只要有80%以上,就赶快交卷(submit),马上去解另外一题来拿分数。

我犯的第三个错就是浪费时间在程序检查上,5个test case我只过了四个,我花了很多时间来找这个bug,结果不但没有时间解第二题,连第一题也忘了submit(没sumbit就是0分了)。我在莫名奇妙中结束了这届的Google Code Jam,千金难买早知道啊。

想法才是效能的关键

在google code jam中,解题的速度很重要,程序执行的效能也不可缺。效能固然和花掉的CPU时间有关,但这个时间会依硬件效能的提升有些改变,我认为,程序设计人员在设计你的解法/算法(algorithm)时的想法和态度,才是决定程序执行效能的关键。

举个简单的例子,请你设计一个程序,可以计算a加到b的总合(例如1加到100),你会怎么写?很直觉的,这种重复性的工作,可以交给循环来解决。是的,用循环是可以正确的解决这个问题,但我认为这是最不专业的解法。

我们就算数学不好,也听过高斯小时候的故事;话说高斯从小就非常的聪明且顽皮,有一天上课时,老师为了让他不捣蛋,出了一个难题给他,要他计算1加到100的总合。

老师以为可以让高斯安静一下子,没想到高斯没几分钟就把答案算出来了。后来推导出所谓等差数列的公式,也就是首项加末项乘以项数再除以二,以这个例子来说就是(a+b)*(b-a+1)/2 。

短短一行程序代码就解决的问题,为什么要用循环写成好几行呢?当数字大时,使用数学功式的程序执行的速度绝对比用循环还快上很多!

写程序的态度应该是,把你所学会的所有知识中,找出最好的解决方法,而不是程序正确会跑就好。如果还有更好的方法是你还不会的,那就赶紧把它学会,日后好运用在你的程序里。

你也许会不以为然的说,解决这种小问题,干嘛要计较这么多。我不想在这讨论程序该不该做最佳化的问题,网络上已经有太多类似的争辩,不知大家有没有听过「格局决定结局,态度决定高度」这句话?

设计程序的思维和逻辑也不是一朝一夕就能养成或是改变的,你想要成为顶尖专业的程序设计师,就要养成良好的思维习惯。(待续)

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章