不止代码——初读

本文探讨了软件架构在解决业务问题中的核心作用,强调程序员应理解业务价值,按价值梳理工作优先级。通过架构师视角,分析软件系统如何服务于业务,提出向前一步,全局思考,构建体系的学习与工作新思路。

软件架构不仅仅只是选用什么框架、选用什么技术组件这么简单。它贯穿了对人的组织、对技术的组织、对业务的组织,并将这三种组织以解决业务问题这一目
标有机的结合在了一起。

910321-20180725164736235-855002580.png

软件系统的价值是以解决业务问题的能力、支撑业务增长的能力为衡量标准

程序员想要工作出业绩,必须认清楚系统背后的业务价值,按价值去梳理工作优先级,而不是过度纠结细节,追求技术理想化。

程序员的迷茫因为长期埋没于软件世界的浩大的分工体系中,无法看清从业务到软件架构的价值链条,无法清楚定位自己在分工体系的位置,处理不好自身与技术、业务的关系所致,所以在这里我想谈谈分工。

> ###架构师为了使软件系统更好的服务业务,必然将软件系统生命周期进行拆分,比如分出开发生命周期、测试生命周期、用户访问生命周期、软件运维生命周期,并根据不同的生命周期划分出不同的职责与角色。

910321-20180725164713208-1432518337.png

从价值出发-找寻学习与工作的新思路

迷茫能引发思考,架构则塑造了视野,而价值则是我们之所以存活,之所以工作的逻辑起点。基于这样一种价值思维,对我们的学习和工作又可以有哪些改启示呢?

明确自身的业务相关主体:

找出你工作的协作关系网内的业务方和客户方,这样你就可以从客户方中找到离你最近的业务价值点,从你的业务方中挖掘更多的资源。甚至你可以按这个思路顺着网络向上或向下挖掘价值链条,整合更多的上下游资源以实现更大的价值。

向前一步,为更大的价值负责:

不要因为自己是开发人员就不去关注软件运维,不要因为只是测试就不关注软件开发,因为你关注的越多你越能看清全局的价值目标。如果只关注一亩三分地,那么注定这辈子只能困守在这一亩三分地里,成为一名流水线上焦虑至死的码农。试着转变思维,从架构师的角度思考价值问题,看看能否将技术贯穿到业务、到用户、到最终的价值去。之前我的朋友说过要把产品经理踢到运营位置去,把程序员踢到产品经理位置去,这样才是正确做事方式。这句话也是类似的意思,向前一步才能懂得怎么做的更好。

像架构师一样思考,用价值找寻重心:

人的迷茫是因为找不到重心,而价值的意义在于引导我们思考做哪些事情才能实现价值,先做哪些事情会比后做哪些事情更能创造收益。像架构师那样全局性思考,把遇到问题进行拆分,把学习到的事物串联起来,努力构成完整的价值链条。

学会连接,构建体系:

前几天看到一篇文章对今日头条的产品形态极尽批判之词,指责它的智能算法将人类封死在自己的喜好之中,将人类社会进一步碎片化。这似乎很有道理,有趣的是互联网将我们连接至广袤的世界,却也把我们封闭在独属于自己的小世界里。依旧是我的那位朋友,他说他的最大价值在于连接,将不同的人连接在一起,有趣的事情可能就会即将发生。

或许算法的天性就是顺从与迎合,但人最终想理解这个世界还是需要依靠自身的行动与不同人之间建立联系,这也是一种摆脱流水线限制的有效方式。另外,我们自身也是某种事物连接的产物,比如架构师,他是业务、技术、管理连接在一起的一种产物。所以我们应当树立自身的知识体系以吸收融合新知识,将孤立的概念连接起来,形成自身的价值链条。

910321-20180725164643690-1112924879.png


end

转载于:https://www.cnblogs.com/Solomon-xm/p/9366846.html

### 初代编译器的历史与实现 初代编译器的概念可以追溯到20世纪50年代,最早的编译器之一是由Grace Hopper于1952年开发的A-0系统。这一系统的目的是将高级语言转换为机器可读的形式。尽管现代意义上的编译器功能尚未完全形成,但它奠定了基础[^1]。 #### A-0 系统的特点 A-0系统并不是严格意义上的编译器,而是一个链接加载程序。它通过调用子程序库中的代码片段来构建最终的程序。然而,这种设计启发了后来真正的编译器的发展。例如,在Fortran(Formula Translation System)发布之后,编译技术得到了显著改进。Fortran被认为是第一个真正意义上支持复杂计算任务的编译型语言,并且其编译器实现了从源代码到目标代码的有效转换。 以下是基于早期编译原理的一个简化伪代码示例,用于展示如何手动模拟简单的词法分析和语法解析: ```python def simple_compiler(source_code): tokens = tokenize(source_code) # 将输入字符串分解为标记流 syntax_tree = parse(tokens) # 构建抽象语法树 (AST) machine_code = generate(syntax_tree) # 转换 AST 成为目标代码 return machine_code def tokenize(code): """简单分词函数""" import re token_specification = [ ('NUMBER', r'\d+(\.\d*)?'), # 整数或浮点数 ('PLUS', r'\+'), # 加号运算符 ('MINUS', r'-'), # 减号运算符 ('MUL', r'\*'), # 乘法运算符 ('DIV', r'/'), # 除法运算符 ('SKIP', r'[ \t]+') # 忽略空白字符 ] tok_regex = '|'.join('(?P<%s>%s)' % pair for pair in token_specification) get_token = re.compile(tok_regex).match pos, end_pos = 0, len(code) while pos < end_pos: match_obj = get_token(code, pos) if not match_obj: raise RuntimeError(f'Unexpected character at position {pos}') kind = match_obj.lastgroup value = match_obj.group(kind) if kind != 'SKIP': yield kind, value pos = match_obj.end() # 示例:仅演示基本逻辑,未完成实际编译流程 source_example = "3 + 4 * 2" compiled_output = simple_compiler(source_example) print(compiled_output) ``` 上述代码仅为示意用途,展示了编译过程中可能涉及的关键阶段——词法分析、语法解析以及中间表示生成。需要注意的是,真实的初代编译器远比这更复杂,尤其是针对特定硬件架构优化的部分。 #### 编程语言发展的里程碑 随着计算机科学的进步,更多高效的编译型语言被创造出来,比如C语言及其衍生品。这些语言不仅继承了前辈的优点,还进一步提升了性能并改善了开发者体验。例如,C语言的设计哲学强调简洁性和灵活性,使其成为当时最受欢迎的选择之一。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值