程序员进阶攻略
胡峰
京东成都研究院技术专家
立即订阅
7526 人已学习
课程目录
已完结 65 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 程序行知:走在同样的路上,遇见自己的风景
免费
征途:启程之初 (4讲)
01 | 初心:为什么成为一名程序员?
02 | 初惑:技术方向的选择
03 | 初程:带上一份技能地图
04 | 初感:别了校园,入了江湖
修炼:程序之术 (10讲)
05 | 架构与实现:它们的连接与分界?
06 | 模式与框架:它们的关系与误区?
07 | 多维与视图:系统设计的思考维度与展现视图
08 | 代码与分类:工业级编程的代码分类与特征
09 | 粗放与精益:编程的两种思路与方式
10 | 炫技与克制:代码的两种味道与态度
11 | 三阶段进化:调试,编写与运行代码
12 | Bug的空间属性:环境依赖与过敏反应
13 | Bug的时间属性:周期特点与非规律性
14 | Bug的反复出现:重蹈覆辙与吸取教训
修行:由术入道 (24讲)
15 | 根源:计划的愿景——仰望星空
16 | 方式:计划的方法——脚踏实地
17 | 检视:计划的可行——时间与承诺
18 | 评估:计划的收获——成本与收益
19 | 障碍:从计划到坚持,再到坚持不下去的时候
20 | 执行:从坚持到持续,再到形成自己的节奏
21 | 信息:过载与有效
22 | 领域:知识与体系
23 | 转化:能力与输出
24 | 并行:工作与学习
25 | 时间:塑造基石习惯(上)——感知与测量
26 | 时间:塑造基石习惯(下)——切割与构建
27 | 试试:一种“坏”习惯
28 | 提问:从技术到人生的习惯
29 | 偏好:个人习惯的局限与反思
30 | 写作:写字如编码
31 | 画图:一图胜千言
32 | 演讲:表达的技术
33 | 定义:阶梯与级别
34 | 晋升:评定与博弈
35 | 关系:学徒与导师
36 | 核心:安全与效率——工程技术的两个核心维度
37 | 过程:规模与协作——规模化的过程方法
38 | 思维:科学与系统——两类问题的两种思维解法
徘徊:道中彷徨 (15讲)
39 | 职业倦怠:如何面对?
40 | 局部最优:如何逃离?
41 | 沟通之痛:如何改变?
42 | 技术停滞:如何更新?
43 | 无法实现:困扰与反思
44 | 完成作品:理想与现实
45 | 代码评审:寄望与哀伤
46 | 人到中年:失业与恐惧
47 | 该不该去创业公司?
48 | 该不该接外包?
49 | 技术干货那么多,如何选?
50 | 技术分歧,如何决策?
51 | 技术债务,有意或无意的选择?
52 | 选择从众,还是唯一?
53 | 选择工作,还是生活?
寻路:路在何方 (7讲)
54 | 侠客行:一技压身,天下行走
55 | 江湖路:刀剑相接,战场升级
56 | 御剑流:一击必杀,万剑归心
57 | 三维度:专业、展现与连接
58 | 三人行:前辈、平辈与后辈
59 | 三角色:程序员、技术主管与架构师
60 | 三视角:定位、自省与多维
蜕变:破茧成蝶 (3讲)
61 | 工作之余,专业之外
62 | 跨越断层,突破边界
63 | 成长蓝图,进化跃迁
结束语 (1讲)
尾声 | 始于知,终于行
程序员进阶攻略
登录|注册

05 | 架构与实现:它们的连接与分界?

胡峰 2018-08-13
把一种想法、一个需求变成代码,这叫 “实现”,而在此之前,技术上有一个过程称为设计,设计中有个特别的阶段叫 “架构”。
程序员成长的很长一段路上,一直是在 “实现”,当有一天,需要承担起 “架构” 的责任时,可能会有一点搞不清两者的差异与界线。

是什么

架构是什么?众说纷纭。
架构(Architecture)一词最早源自建筑学术语,后来才被计算机科学领域借用。以下是其在维基百科(Wikipedia)中的定义:
架构是规划、设计和构建建筑及其物理结构的过程与产物。在计算机工程中,架构是描述功能、组织和计算机系统实现的一组规则与方法。  
Architecture is both the process and the product of planning,   designing, and constructing bui
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《程序员进阶攻略》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(18)

  • Starbug
    补一下当时的学习笔记,请批评指正~
    1.用城市建筑设计类比软件架构
    建筑架构的边界、区域划分:对应程序的功能模块划分
    道路规划:软件接口与交互
    2.软件开发
    软件设计:需求分析、架构设计等,架构主要用在这一步
    软件实现:变成代码并交付
    3.架构的关注点:熵
    熵表示软件系统的混乱程度,越大则表示越混乱,难以开发测试和维护
    需求的堆积与变更:熵增
    重构,架构升级:减少一部分熵
    软件的生命周期内,就是在不断平衡熵,直到最后软件生命结束
    4.实现的关注点:简(减)
    简化软件代码,减少代码量,减少开发时间,减少测试时间,减少潜在bug数,减少未来的维护、理解与沟通成本
    5.软件架构的断裂带:执行过程
    多人协作,沟通协调
    作为架构负责人:把控其他人产出是否没有超出架构边界,把自己的主要精力投入到战略性的问题上
    6.架构实现能力的等效性
    不同的架构表示的不同的结构与流程设计思想
    同一个需求,可以用不同的架构实现,只是实现过程中的成本不同,因此架构实现能力是具有等效性的
    根据实现成本、后期可扩展性等因素,选择合适的架构

    作者回复: 恩,浓缩了本文的关键点

    2018-09-23
    6
  • third
    睡不着,刚好发现更新了
    心得如下:
    1.高效能人士有一条叫做以终为始
    基于内心的第一次创造,有点像架构
    基于现实的第二次创造

    2.我个人的理解是,架构就是程序的大局观。

    3.架构是构建一个系统,重要的是稳定,实现稳定的方法是,简。

    2018-08-13
    6
  • JohnT3e
    架构在于取舍之间,包括开始的设计和实现的落地情况。哪些是应该“取”的,哪些是应该“舍”的。需要在实践中不断体会。另外,语音中发现两个错误:一个是:重(chong)构不是重(zhong)构:另一个是单体应用不是单位应用。

    作者回复: 恩。😂Bug

    2018-08-13
    5
  • godtrue
    最近也订阅了《从0开始学习架构》,两个专栏比对着学习更好玩。
    架构一词确实难以理解,换成架构设计好理解一些,我的理解就是软件的顶层设计,规划开发软件使用什么技术,不使用什么技术,以及为什么,然后就是软件最后实现成什么样子,加上对边界、交互、成本、周期的把控。
    实现-好理解,将蓝图从纸上或脑中搬到现实之中。
    艺术源于生活高于生活,软件设计也是一样滴!

    作者回复: 👍

    2018-08-14
    4
  • JimmyZ
    低维度的我默默流泪。格局又大了些,学到了东西,不错。自己工作中也是感觉公司技术团体有很多问题,感觉是1+1<2,还有个问题,很多同事帮别人改一个bug,自己做了一个事,总是要搞得大家都知道,这是什么心理?如何改善?

    作者回复: 适当的表现自己还好,但不能帮忙的每件事都求回报,这就变味了

    2018-08-13
    4
  • Jaime
    快照是指什么哈?

    作者回复: 是一个比喻,就是定期去检视系统的状态

    2018-10-28
    3
  • 登高
    动态的复杂系统为了适应变化熵必然上升,熵减依靠编程人员投入精力实现。如何在功能实现的基础上,减少熵的产生是系统能否更好适应变化的刻度。
    从熵和变化的角度来看待好坏,真是个有趣而有用的角度👍
    2018-08-13
    3
  • 程小凯
    大佬有没有优秀的架构方面的学习资料推荐呢

    作者回复: 隔壁专栏了解下?不过我觉得架构不是一种具体的技术,多写代码,多解决问题,负责更多更大的系统,能力经验到了,就通透了

    2018-09-14
    2
  • greatcl
    在实践中,我的做法是定期对系统的状态做快照
    ------------------------------
    做快照是怎么做法,不是太懂

    作者回复: 这是一个比喻法,不是一种技术方法。就是去定期同步了解系统的当前状态

    2018-08-23
    2
  • feifei
    又从一个新的角度审视架构师,很有收获,谢谢

    作者回复: 😄

    2018-08-15
    2
  • 云学
    很独特的分享,很喜欢这种文章

    作者回复: 谢谢🙏😊

    2018-08-14
    2
  • Jiantao
    架构师成长路线有吗?

    作者回复: 应该没有秘籍,看完就成了架构师,架构师不过是程序员成长路上的一个角色

    2018-08-13
    2
  • James
    新认识。那个思维还不错👌
    2018-08-20
    1
  • 艾尔欧唯伊
    所以架构的思维。。。是不是就是靠一次一次的试错和总结堆出来的呢。。正好我是我缺乏的。
    2018-08-15
    1
  • like_jun
    附上例子就更好啦。比如一个系统如何选型。应该从哪些方面考虑。
    2018-08-13
    1
  • 楼上的风景
    本人小程序员一枚,爱好一点哲学,谈谈对架构的一点点小感受。

    架构如同某种哲学,也就是世界观和方法论。世界观,也就是如何去看待问题;方法论,就是在这个世界观下,运用具体的方法来解决问题。这也就是说,不同哲学观,即架构,如功利主义,自由主义,唯心主义,唯物主义,当然还有混合这些的,都是对同一个问题的不同解释。哪个解释越接近客观世界,那么这个哲学就越能解决问题。反之,越唯心,就越难以解释问题,也就越无法解决问题。比如,神学是人类早期对于自然界的认识形成的世界观,能解释一些问题。但随着人类社会发展,神学越来越不能解释和解决问题,于是人对现实问题,使用各种科学技术手段,以便更加深入地认识客观现实世界,使人的主观意识更接近客观事实。

    好像面向对象编程,面向过程编程,面向函数编程,都如同教给人一种如何去看待系统的。好像在面对不同问题的时候,选择合适的编程范式。面向对象也能解决面向过程和函数的问题,但是有时候并不合适,所以实现起来会比较别扭或者复杂。
    2019-09-27
  • 虢国技匠
    打卡👊
    2019-01-03
  • wanums
    我认为架构是设计理念,不同的角色关注的内容不通,有的关注整体及划分,有关注划分后的内部结构,跟项目规模有很大关系。实现是在架构范围内对需求的功能进行落地
    2018-08-15
收起评论
18
返回
顶部