编程架构世界:青苗训练营第一天日报

今天的项目主要有3个:

1.极速60秒
2.海难逃生
3.电影《地球上的星星》

极速60秒

规则: 有30张图片,他们对应1到30的数字,在60秒内,按顺序把他们分别找出来交给教练。

总结: 理清需求之后,我对这个问题进行了抽象,这其实是一个集合(图片)到另一个集合的映射的过程(数字),输入是30个无序的图片,输出是按照对应数字的升序排好的30个图片。

我们开始讨论了两种算法(方案)。

  • 一种是 记的过程和猜的过程分开,在60秒内只记图片,回来后把每个人记住的图片取并集,之后再猜(寻找映射关系)。
  • 另一种是按顺序一个一个的记 + 猜,找到一个再进行下一个。

理论上两种方案都是可以完成需求的。 具体执行的时候发现第一种方案,记这个过程很难,因为没有一种标准的语言来描述图片内容,没法完成记的过程,自然这种方案就不可行了。

最终我们队采用的是第二种方案,别的队也是同样的方案。

我们的成绩是第二名,复盘的时候发现获胜的一队除了上述方案外还有两个优化策略,一个是每个人划分一个区域来指,另一个我忘记了。

在方案相同的情况下,一队的两个优化策略使得一队更快完成了挑战,剩下我们两个队比拼因为方案和优化策略都一样,更多的是人的比拼。

这里的优化策略带来的性能提升,让我想起了react vdom的diff 算法也是因为加了3条优化策略而使得算法复杂度从o(n^3)降到了o(n),实现了性能的质的提升。

当然除了这些抽象层次的区别之外,具体到这个问题,团队的分工协作沟通等都会涉及到。

海难逃生

规则: 4米高的甲板,通过协作让所有人都过去。

总结: 针对这个需求,设计的方案是0~2层人梯 + 上面人拉 的方式,结合蹬 + 拉的力量。确定好了方案之后,具体分工的时候,会把第一层和第二层人梯交给男生做,女生和重量大的优先上。当到了最后一个人的时候,没有人梯可蹬,只能靠拉的力量,这时候会通过一个人倒挂下来拉的方式,来把最后一个人拉上去。

整体逻辑用代码描述如下:

function escapeAll(people) {
  const  PEOPLE_TATAL_COUNT = people.length;
  function escape() {
      if (people.length === PEOPLE_TOTAL_COUNT) {
            通过人梯上去(people.pop());
            escape(people, ++num);
      } else if (num === 1) {
           通过倒挂拉上去(people.pop());
      } else {
           通过人梯和拉上去(people.pop());
      }
   }
   return escape();
}

const people = ['翟旭光', '沈东', '王四光'];// 共35人
escapeAll(people);

电影《地球上的星星》

规则: 看一部电影,看完之后画出逻辑主线。
总结: 分析之后的逻辑如下。

     const 尹夏 = {
           status: '不会读写',
           做考试题() {
                 this.status.......
            }
            画画() {
                 this.status.......
            }
     }
     尹夏.做考试题()
      尹夏.画画();
      尼可.影响学生(尹夏, '会读写')
      尹夏.做考试题()
      尹夏.画画();
     

受尼可老师影响,解决了自己的问题,充分发挥自己的天分,变化巨大。

复盘与提升

总结上面的经验和教训,主要由以下几条:

  1. 抽象:编程是对现实世界的抽象,现实世界的问题都能通过抽象和建模来映射到代码的世界,然后使用编程相关的理论来解释。抽象成编程问题或者数学问题之后,很多理论和优化方式都可以直接的套用。人的因素降到最小。

  2. 拆分与组合:完成一个功能需要组合很多的东西,需要划分每一部分的职责,就像公司部门和岗位的职责划分一样,需要每个人的配合才能运转,有的岗位职责更重要一些,就像人梯的那两层。但是无论职责的重要程度怎样都应该是可替换的,不能强耦合。不然一个人出了问题,整体都没法往下进行。

3.通信:为了整体结构的松散,会做很多的拆分,包括部门、岗位等,拆分之后就会涉及到通信,通信就有成本的问题,就像极速60秒里需要把所有的信息汇总到一个人那里来集中处理,就像海难逃生需要一个指挥来统筹全局,和公司架构同理,分层次的管理,沟通的方向更多的是上下级,这样信息流动会清晰高效很多。

  1. 追求全局最优:追求全局最优而不是局部最优,海难逃生的时候,确定了人梯 + 拉 的策略之后,安排逃生的顺序也很重要,不能简单的先让所有女生过去,也不能简单的让体重大的先过去,要结合人梯的人选以及上面拉的人选等,全局的综合考虑,类似一个动态规划求全局最优解的过程。正如有个老师分享的“通盘无妙手”,我们应该从整体上去做优化调整,去追求全局最优,而不是局部的最优。

5.状态:编程于我,就像画画之于尹夏,他改变了我的状态,已经深深潜入我的思想和潜意识,影响着我对世界的看法,紧紧耦合,不可分离。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,050评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,538评论 1 306
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,673评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,622评论 0 218
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,047评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,974评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,129评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,893评论 0 209
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,654评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,828评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,297评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,619评论 3 262
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,326评论 3 243
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,176评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,975评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,118评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,909评论 2 278

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,598评论 25 707
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,800评论 2 89
  • 第一次去宜家是听同事介绍去的,那会我正好要买做蛋糕的盆。买完打蛋用的盆又顺便买了点其它小东西。一路是拿着这些东西叮...
    北漂那些事阅读 411评论 0 0
  • 2009年八月份,博耘的百天相片,是不是很可爱*^o^* 2010年5月8日博耘一周岁的相片,看起来萌萌哒 201...
    博耘阅读 306评论 0 0
  • 当我再次从睡梦中醒来时,已经是下午两点了。我皱紧了眉头,用手指强劲的按了按太阳穴。睡觉睡过了头就会留下短暂的后遗症...
    醉春鹅黄阅读 98评论 0 0