从小朋友的一道数学题聊聊职业程序员

热点专题 阅读(1068)

CocoaChina 4天前我想分享

在指导孩子们做数学作业之前,从这个问题开始,孩子们谈论了串行,并行,计算机的结构,以及业余程序员和专业程序员之间的巨大差异。

主题如下:

'阿姨在周末在家做家务,打扫房间10分钟,用扫地机器人扫地15分钟,擦桌子4分钟,用洗衣机洗25分钟,晾干衣服4分钟,请姨妈完成这些事情。最低分数是多少? '

这个问题的核心显然是在哪里尽可能地并行化以提高效率。人与计算机之间的最大区别在于,人们只有一个大脑,计算机可以认为多核CPU构成了多个大脑,从而使计算机可以同时执行更多操作,但是尽管计算机具有多个大脑,但它是共享的在许多其他地方,例如内存,磁盘,网卡等。当多个大脑必须同时操作共享的地方时,它将导致序列化,这对程序员编写高效的并行化代码构成了巨大的挑战。带着孩子,一个专业的程序员可以让一个有八个大脑的计算机同时执行几乎八件事。但是普通的程序员可能会使一台拥有八个大脑的计算机一次只做一件事。我认为数学也是程序员最重要的基础。数学高度训练一个人解决问题的思维能力(包括这是所有程序的基础,因此在招生时我会特别注意数学成绩。

从这个扩展的角度来看,专业程序员和业余程序员之间的差异,我认为成为一名业余程序员的门槛实际上很低。

业余程序员通常会遇到真正的问题或需求,形成问题的解决方案或实施需求,然后将其转化为代码。

但是,作为一名专业程序员,除了要执行此操作外,还需要考虑以下因素:

健壮

这是专业程序员和业余程序员之间的最大区别。如何使程序在各种情况下稳定运行?这实际上非常困难。编写游戏并不难。编写可以在生产级别上运行的东西非常困难。

例如,现在家里的许多空调都不是很聪明,尤其是在温度控制方面。现在,通过温度传感器和红外智能遥控设备,智能温度控制会更好,但是这样的程序通常并不难编写,如果仅编写这些设备的api并不复杂,但是如果您愿意该程序运行平稳(例如,如果运行该程序的机器挂起,温度传感器有问题。红外遥控命令确实有效,等等),那将是相当复杂的,毕竟,没人要这个程序无效,并在半夜醒来或醒来,)

在先前程序员成长道路的Remix文章中,可以写出反异常代码的程序员肯定是NB。

需要代码的Robust在设计和编写代码时将需要充分考虑异常,并且需要对代码(尤其是所使用的API)有深入的了解。经验也将在此时发挥作用。

高效

这主要类似于前面的示例。专业的程序员应尝试充分利用运行程序计算机的能力。这通常需要一种机制来运行代码。如何编写有效的并行化代码就足够了。精通

可维护性

您如何知道所编写代码的状态?当出现问题时,如何使用有效的异常信息来处理问题,以及代码的未来可伸缩性,这些都不容易做到。

因此,程序员的级别是最容易通过代码的级别,也许几行代码可以看到很大的差距。当然,专业的程序员在上述几点上也是互相对立的。差距会很大,成为一名业余程序员并不难。要实现以上三点,请成为真正的为生产级业务编写代码的专业程序员。要学习的东西不是数量级的。同时,它也需要大量的培训(10,000小时的理论非常适合程序员。如果拥有10,000小时,我认为这不是一个好的程序员)。有兴趣的人士可以根据自己的需要走极端。我选择了一些专栏进行研究,许多作者仍然非常出色。

收款报告投诉

在指导孩子们做数学作业之前,从这个问题开始,孩子们谈论了串行,并行,计算机的结构,以及业余程序员和专业程序员之间的巨大差异。

主题如下:

'阿姨在周末在家做家务,打扫房间10分钟,用扫地机器人扫地15分钟,擦桌子4分钟,用洗衣机洗25分钟,晾干衣服4分钟,请姨妈完成这些事情。最低分数是多少? '

这个问题的核心显然是在哪里尽可能地并行化以提高效率。人与计算机之间的最大区别在于,人们只有一个大脑,计算机可以认为多核CPU构成了多个大脑,从而使计算机可以同时执行更多操作,但是尽管计算机具有多个大脑,但它是共享的在许多其他地方,例如内存,磁盘,网卡等。当多个大脑必须同时操作共享的地方时,它将导致序列化,这对程序员编写高效的并行化代码构成了巨大的挑战。带着孩子,一个专业的程序员可以让一个有八个大脑的计算机同时执行几乎八件事。但是普通的程序员可能会使一台拥有八个大脑的计算机一次只做一件事。我认为数学也是程序员最重要的基础。数学高度训练一个人解决问题的思维能力(包括这是所有程序的基础,因此在招生时我会特别注意数学成绩。

从这个扩展的角度来看,专业程序员和业余程序员之间的差异,我认为成为一名业余程序员的门槛实际上很低。

业余程序员通常会遇到真正的问题或需求,形成问题的解决方案或实施需求,然后将其转化为代码。

但是,作为一名专业程序员,除了要执行此操作外,还需要考虑以下因素:

健壮

这是专业程序员和业余程序员之间的最大区别。如何使程序在各种情况下稳定运行?这实际上非常困难。编写游戏并不难。编写可以在生产级别上运行的东西非常困难。

例如,现在家里的许多空调都不是很聪明,尤其是在温度控制方面。现在,通过温度传感器和红外智能遥控设备,智能温度控制会更好,但是这样的程序通常并不难编写,如果仅编写这些设备的api并不复杂,但是如果您愿意该程序运行平稳(例如,如果运行该程序的机器挂起,温度传感器有问题。红外遥控命令确实有效,等等),那将是相当复杂的,毕竟,没人要这个程序无效,并在半夜醒来或醒来,)

在先前程序员成长道路的Remix文章中,可以写出反异常代码的程序员肯定是NB。

需要代码的Robust在设计和编写代码时将需要充分考虑异常,并且需要对代码(尤其是所使用的API)有深入的了解。经验也将在此时发挥作用。

高效

这主要类似于前面的示例。专业的程序员应尝试充分利用运行程序计算机的能力。这通常需要一种机制来运行代码。如何编写有效的并行化代码就足够了。精通

可维护性

您如何知道所编写代码的状态?当出现问题时,如何使用有效的异常信息来处理问题,以及代码的未来可伸缩性,这些都不容易做到。

因此,程序员的级别是最容易通过代码的级别,也许几行代码可以看到很大的差距。当然,专业的程序员在上述几点上也是互相对立的。差距会很大,成为一名业余程序员并不难。要实现以上三点,请成为真正的为生产级业务编写代码的专业程序员。要学习的东西不是数量级的。同时,它也需要大量的培训(10,000小时的理论非常适合程序员。如果拥有10,000小时,我认为这不是一个好的程序员)。有兴趣的人士可以根据自己的需要走极端。我选择了一些专栏进行研究,许多作者仍然非常出色。