态度决定一切——读《Writing solid code》有感

 

       回想读过的这本书,内心的感受只有一句话:态度决定一切!

       在网上经常可以看到有人问“如何才能学好编程?”或者“为什么国内程序员不如国外程序之类的问题?”其实看看《Writing solid code》这本书就知道了,对于assert的编写和使用,作者用了整个第二章来描述,而看似只是简单的一个断言宏,实际工作中随时有可能使用到,而且使用的方式也很有技巧可探讨,试问国内又有多少人能做到刨根问底的研究这个小小的宏?这就是态度问题了。很多人热衷于跟风各种各样层出不穷的新技术,而对于计算机的本质:体系结构、编译原理……等真正的计算机科学技术不屑一顾,在别人架构的华丽平台上孜孜不倦的堆着代码,还认为自己非常牛B,只在网上抱怨怀才不遇或者讨论那种语言更有“钱途”这类的废话。

       作者还举过一个memcpy()函数实现的例子,我印象中很多公司招人的时候喜欢要求应聘者写一个memcpy()函数,来考察其对语言的理解程度,很多人都写成如下方式:

void memcpy(void* pvTo, void* pvFrom, size_t size)

{

    void* pbTo = (byte*)pvTo;

    void* pbFrom = (byte*)pvFrom;

    if(pvTo == NULL | | pvFrom == NULL)

    {

        fprintf(stderr, “Bad args in memcpy/n”);

        abort();

    }

    while(size-->0)

        *pbTo++ == *pbFrom++;

    return(pvTo);

}

       几年前我第一次读《Writing solid code》前试着写的时候更加“惨烈”,甚至连指针是否为NULL都没有处理都就直接移动了,更加没有考虑维护如下的debug版本:

void memcpy(void* pvTo, void* pvFrom, size_t size)

{

    void* pbTo = (byte*)pvTo;

    void* pbFrom = (byte*)pvFrom;

    #ifdef DEBUG

    if(pvTo == NULL | | pvFrom == NULL)

    {

        fprintf(stderr, “Bad args in memcpy/n”);

        abort();

    }

    #endif

    while(size-->0)

        *pbTo++ == *pbFrom++;

    return(pvTo);

}

       在读过《Writing solid code》后只剩下羞愧:

void memcpy(void* pvTo, void* pvFrom, size_t size)

{

    void* pbTo = (byte*)pvTo;

    void* pbFrom = (byte*)pvFrom;

    assert(pvTo != NULL && pvFrom != NULL);

    while(size-->0)

        *pbTo++ == *pbFrom++;

    return(pvTo);

}

之前根本没有过考虑过太多代码的健壮性与简洁性,只以为自己功能实现就完事ok,从此才知道自己的代码离优质的商业代码的差距有多远。这就是态度的问题:为什么开始的时候不能考虑那么多?因为没有用心去面对这段代码!记得以前老师说过做计算机开发很重要的一点就是用心,设计代码的时候要把自己的思维计算机化。如果这段代码代表我的身体,肯定我不会容忍缺胳膊少腿的情况出现,我没有用负责的态度面对代码,所以才造成残缺不全的代码出现。

在大学的时候大家都比较毛躁,估计冲动是现在大学生的通病了吧,以我所见,计算机系能静下心来写代码的学生都不多,接触过过大型系统开发的更加少,大家都指望着热门专业(考大学时候计算机是热门)毕业后就能坐在宽敞的空调办公室里体面轻松的拿着高薪享受小资生活,而没有以严谨的态度面对计算机开发工作,偶尔一点热情坐下来写几行代码的时候却烦心于debug过程,计算机永远都只认识01,它不会欺骗人,对就是TRUE,错了就是FALSE,不可能推个云手来体现一下中庸之道,做计算机开发只能以负责的态度面对,不然趁早改行去做行政单位,若干年后领导就可以对手下人指手画脚了!

记得大学的时候有同学以“反正听不懂”为由逃课出去玩,教导员屡禁不止,正可谓:道高一尺,魔高一丈!最后只能无奈的说:“听不听得懂是能力问题,去不去是态度问题,就算你听不懂,至少你也给老师一个好点的印象,考试才能手下留点情面……”其实编程是一样的道理:不会可以学,世上无难事,只怕有心人。但是如果没有心,即使是小水沟也跨不过去。当然人总是有惰性的,很多时候我也想偷懒,不想坚持下去,但是能不断提示自己分清楚主次,锻炼自己严谨的态度是最重要的!

10多年前最初接触286,只是把它当作单显游戏机而已,写几十行的简单BASIC程序只能依靠兴趣来维持。到今天,专门从事网络方面研发的工作也已经超过3年了,以后即使我不再从事计算机开发工作甚至离开计算机行业,但是无论做什么事情,我都坚信一点:态度决定一切!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 写一个用强化学习在MATLAB中实现磁悬浮列车速度跟踪控制的代码。 要写一个用强化学习控制磁悬浮列车速度的代码,您需要了解以下内容: 1. 强化学习的原理:它是一种机器学习方法,通过不断的试错来学习如何解决问题。 2. 磁悬浮列车的运动学:您需要了解磁悬浮列车的动力学模型,以便更好地控制它的速度。 3. MATLAB:您需要熟悉MATLAB编程语言,以便写出代码。 在编写代码之前,您需要先对强化学习算法和磁悬浮列车运动学进行研究,以确保您有足够的知识和技能来完成此任务。推荐使用Q-learning或SARSA算法。 如果您有任何具体问题,请提出,我将尽力帮助您。 ### 回答2: 使用强化学习编写MATLAB中的代码来实现磁悬浮列车速度跟踪控制。 首先,我们需要定义一个磁悬浮列车的速度跟踪控制问题。速度跟踪控制的目标是使磁悬浮列车的实际速度尽可能接近给定的目标速度。我们可以使用强化学习中的一种算法,如深度强化学习(Deep Q-Learning),来解决这个问题。 在MATLAB中,我们需要定义一个环境(Environment)来模拟磁悬浮列车的行为。这个环境包括磁悬浮列车的初始状态,比如初始速度和位置,以及列车的物理特性,如最大加速度和制动力等。我们还需要定义一个动作空间,包含磁悬浮列车可以采取的控制动作,比如加速度值或制动力值。 接下来,我们可以使用强化学习中的Q-Learning算法来训练一个智能体(Agent)。智能体通过与环境的交互来学习如何根据当前状态选择最优的控制动作。训练过程中,智能体会根据环境的反馈,比如奖励或惩罚,来调整自己的决策策略。一次完整的训练过程可以包括多个迭代轮次(Episodes),每个轮次中智能体在环境中执行一系列动作并不断更新自己的Q-函数。 训练完成后,我们可以使用学习到的Q-函数来进行磁悬浮列车的速度控制。智能体将根据当前的状态选择最优的控制动作来调整磁悬浮列车的速度,并与环境进行交互。通过不断的迭代,智能体可以逐渐优化控制策略,使得磁悬浮列车的速度更加接近目标速度。 最后,通过对代码进行调试和优化,我们可以在MATLAB中实现一个高效的磁悬浮列车速度跟踪控制系统,帮助磁悬浮列车实现精准的速度控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值