0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

河套IT TALK——TALK 10:编程的技术|艺术|术术 中篇:编程的思想、艺术和哲学

共熵服务中心 ? 来源:未知 ? 2022-12-12 21:25 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

5f919988-7a1f-11ed-8abf-dac502259ad0.png

往期回顾

TALK 6:编程的技术|艺术|术术(上篇)骨灰级程序员的心路历程

前期回顾

篇里,骨灰级程序员梁峻墅给大家介绍了他的心路历程,以及他对程序员文化和武林文化的理解。本篇将继续请大神和我们一起聊一聊编程的艺术和哲学。

5fa4170c-7a1f-11ed-8abf-dac502259ad0.png

编程的思想境界和层次

上篇的段子讲完了,现在进入正题:编程的终极奥义到底是什么?

我理解只有思想恒久远,代码才能永流传。因为编程就是把人类的语言给转换成计算机能执行的机器语言,本质就是一种翻译工作,但翻译的水平也是有高有低的。

像电影《Sucker Punch》是一部非常有创意的内涵思想片,还能融合梦幻、魔幻、科幻、暗黑、伦理、动作、微色情、小萝莉、暴力美学等多种元素做到雅俗共赏,不同层次的人都能从这部影片中获得不同的乐趣。

但这部电影在华语区的票房惨淡,就是由于译名问题,该片的价值被严重低估。台湾翻译为《杀客同萌》,基本做到了意音具备,就是神还差点。但看看大陆翻译为《美少女特攻队》是几个意思,让人以为是二次元动画片。再看看香港的翻译《专扁衰仔》,你就知道没文化有多可怕,扎克·施奈德估计直接哭晕在厕所里。翻译的思想高度不同,对作品的理解深度不同,翻译的质量是天壤之别。而对于像编程如此缜密的翻译工作,那更是需要蕴含深刻的思想才能做得更好。

既然谈到思想,就要谈到思想的境界。

603d5b24-7a1f-11ed-8abf-dac502259ad0.png

我理解编程的境界有四层,借用孙子兵法,分别是:下兵伐城中兵伐谋上兵伐心不战而屈人之兵为超然

第一层:下兵伐城

很多程序员,一接到编程需求,就立刻启动开发环境,开始编程敲代码了。这就是没什么想法,先干起来再说,编到哪儿算哪儿。面向交付编程,只为完成功能,头痛医头,脚痛医脚。一路攻城略地,好不威风,但这只能算初级水平。

第二层:中兵伐谋

拿到需求之后,不着急动手,先开始思考,开始谋划,应该走什么技术路线,结合哪些已经做过的代码,还应使用哪些技术手段来快速、轻松地完成这个需求。这个层面的程序员已经开始不靠纯技术硬扛需求,而是开始艺术性地解决问题。大家拼的不是能不能解决问题,而是看谁解决问题的成本最低。像中医那样,并不直接治病,而是阴阳调和,打通经脉,调动自身免疫系统,四两拨千斤,这已经开始有中国式智慧的味道了。这种人经常在计算机旁边呆坐半天,即使表面上在和你说话,但其实脑子里在伐谋呢,所以经常表达古怪,被认为是书呆子。

第三层:上兵伐心

这种人已经能看到文人的清风傲骨,在更高的战略层面思考解决问题的时空成本,包括但不限于时间成本、分析成本、设计成本、编码成本、调试成本、部署成本、维护成本、用户的使用成本、资源的调配成本、社会的综合人文成本等等,得到结果后会产生一个灵魂拷问:“为什么要解决这个问题?能不能不解决?”带有原罪的需求都挺不过这个终极审判。比如很多需求,只是貌似合理,但实际上是伪需求,顶尖的高手能够抽丝剥茧,发现需求的逻辑矛盾和漏洞,并能综合运用各种手段,甚至包括非技术手段来及时纠偏。比如做MIS系统的时候,客户方的办公自动化系统需求很简单,就是把现有的管理规章制度全部用计算机程序实现一遍。这个需求貌似天真无邪,但实际上它忽视了人机之间的差异和特点。比如对人工作业,为达到作业合规的要求,管理规章制度中就要有反作弊措施,各个相关部门还都要有作业数据备份,以便将来发现问题倒查时可以对口供。但对IT系统,用户都有登录ID,作业都有事务ID,交互都有会话ID,存储都是一体化的,根本不需要那些画蛇添足的步骤。顶级的程序员就会庖丁解牛般地优化管理流程,引导需求合理化,节省了大量的研发资源、应用资源和社会资源。可能只需要修改管理规章制度的几十个字,就能少写几万行代码,bug能少几百个,部署维护能少几个月,用户每天能少点击数千次鼠标。通过少编程,甚至不编程就能解决问题,才是最牛逼的境界。

第四层:不战而屈人之兵

终于来到最最牛逼的境界——不战而屈人之兵。前面三层境界,也就是在满足需求、预测需求、引领需求上做文章,毕竟都是咱们这个世界可以理解的事。而最高境界已经跳出三界之外,不在五行之中,已经无法理解了。

看个场景先:小白最近代码输出太少,说机器频繁死机,耽误了工作。大牛对着机器,上去就是一脚,从此再不死机了…天理何在?小白不服啊,碰上死机的机器也来一脚,结果当天就去财务领工资了…天理难容!虽然都是人,但差别就这么大,找谁说理去。

再看段对话:

  • 小白:“哥,我做的那个模块总是有bug,调试两三天了,一直找不到原因,您有空帮我看看呗。”

  • 大牛:“走”

  • 来到现场。

  • 小白:“您看这…”

  • 大牛:“别急,从头开始把错误给我演示一遍”

  • 小白:“好嘞”

  • 一个小时过去了…

  • 小白:“我call,怎么不出来了呢?大哥,我发誓我找你之前还复现过一次错误”

  • 大牛:“没事,我已经习惯了,等再出错,保留现场,call我”

然后就没有然后了,因为再没出过错!

大牛只要头皮更出众,那就bug去无踪,所有的大牛都有这样的体验。我理解大牛都是有超自然的气场,常年抓bug,戾气太重,bug都吓跑了!不管你们信不信,我反正是信了。这就是最高境界,什么都不用干,坐在那儿喘气就能解决问题……

编程的技术

说完前面那些思想和层次,现在咱们来谈点真正有用的编程技术。

编程有着悠久的历史,大约在137亿年前,奇点大爆炸,咱们人类不幸处在这个由时间和空间组成的万恶世界,空间可以理解为除时间之外的一切,时空之间不断相互转换,对称规则让整个世界动态守恒。闲的蛋疼的意识们企图把这个混沌的世界按自己的想法有序化,世界则按规则自动产生了无序与之平衡。

说这么累的意思就是,程序员编程的一生都要与bug为伍,不要害怕它,也不要想着完全消灭它,而是想办法与它和谐共处,人bug合一。

第一就是尽量减少bug产生的机率。毕竟人少了才好相处,人太多了则很难伺候。谈过女朋友的,应该都有体会。你每敲一次键盘,都有可能产生bug。所以,每次敲代码时,应该多想想自己的祖国、各族人民的福祉,董存瑞、刘胡兰等民族英雄的期许,还有自己父母的厚望,这次键击是不是真的对的起他们!都说头上三尺有神灵,但咱们程序员头上三座大山全是虎视眈眈的bug,你稍不留神,它们就会顺着键盘潜入到你的代码里,且按且珍惜。

第二,让bug举步维艰,无处遁形。败兵先战而后求胜,胜兵先胜而后求战。经常打败仗的人总是先打再说,然后企图侥幸取胜;而常胜将军都是先不断创造胜利的条件,已经胜券在握了才开战!编程的基本技术就是要编写低bug代码,一切为了debug,所有的代码都要为调试做好准备。说这些战术级技巧的理论只会隔靴搔痒,后面会结合具体的代码讲解,大家才会更有感觉,点到为止先。

编程的艺术

其实任何一门技术,上升到一定层次后,都会变成一门艺术。编程也是如此。

我们在这个时空世界里,都有自己的当前态和目标态,但无论哪种态都有自己的时空坐标,代码就是企图让这两个态的坐标重叠,而实现重叠的路径是无穷无尽的,但一定至少有一个最佳实现路径。代码的艺术,就是实现这个路径的策略,在空间与时间之间做权衡,要么时间换空间,要么空间换时间,变换到下一个态,不断重复这个过程,直到到达目标态。换成人话就是:所有的代码客观上只有特点,主观上的优点和缺点其实都是程序员意淫出来的,优点都是用缺点换来的,缺点都是优点导致的,优点和缺点实际上是一回事,只是意淫角度不同而已。

比如,总有人说UNIX/Linux比Windows更安全,而这根本不是技术的问题,而是艺术的问题。UNIX/Linux是个悲观型操作系统,假设用户都是坏人,系统默认什么都不能干,除非明确指出这个用户能干什么;而Windows是个乐观型操作系统,假设用户都是好人,系统默认什么都能干,除非明确指出这个用户不能干什么。所以在默认情况下,UNIX/Linux适合做机机交互,典型应用于服务器,而Windows适合做人机交互,典型应用于个人计算机。但这些特性都可以通过配置安全选项,把Windows操作系统变的比Linux/Unix操作系统还安全,也可以把Linux/Unix操作系统变的比Windows操作系统还不安全。这都是艺术的事,与技术无关,但比技术还重要。

代码的艺术性范围很广,包括但不限于默认值、参数、接口等具体设计,这些都可以在后面的代码讲解中让大家好好爽一把。

编程的术术

艺术是技术的抽象,术术则是艺术的再抽象,这部分内容我将尽量说人话。

我理解程序员在编程的时候,要意识到这些代码是面向开发者的,面向你的同行,是给他们看的。代码在举手投足之间,要透露出一种优雅的美,人见人爱,花见花开,车见车爆胎的那种。

举个例子:在做一个功能时,发现微软提供的系统API在某些特定条件下,返回值错误。怎么办?

基层小鬼:匹夫之勇,自己重新实现一遍该API的功能,结果是除了测试路径能覆盖的条件外,其他条件下全是bug。

中层干部:骚人墨客,给微软报告这个bug,等待官方临时解决方案,合规但官僚。

高级货:清风仙骨,给微软报告这个bug,但顺手写下解决方案。前置侦测代码,检测此API是否已修复这个问题,如果已修复则正常执行,否则执行纠偏代码。这样无论是现在还是以后,这段代码都可以稳定正确地运行!万花丛中过,片叶不沾身,这就是优雅。

终极杀手:不讲武德。还记得前面说的那个靠喘气就能解决问题的主吗?他会怎么解决?他就不解决!对,你没看错。他选的技术路线都是用5到10年前的API,坑都已经被小白鼠们填平了,他压根儿就碰不上这种破事。最优雅的美就是你看不出他哪儿美,但他就在那儿闲看庭前花开花落,漫看天外云卷云舒。

未完待续……

614ba02a-7a1f-11ed-8abf-dac502259ad0.gif

61606e06-7a1f-11ed-8abf-dac502259ad0.png

61835100-7a1f-11ed-8abf-dac502259ad0.png

6195855a-7a1f-11ed-8abf-dac502259ad0.png61aabd3a-7a1f-11ed-8abf-dac502259ad0.png

61c1a806-7a1f-11ed-8abf-dac502259ad0.png

629ebbc4-7a1f-11ed-8abf-dac502259ad0.png

62e407ec-7a1f-11ed-8abf-dac502259ad0.png

62fa4eee-7a1f-11ed-8abf-dac502259ad0.png

639319e4-7a1f-11ed-8abf-dac502259ad0.png


原文标题:河套IT TALK——TALK 10:编程的技术|艺术|术术 中篇:编程的思想、艺术和哲学

文章出处:【微信公众号:开源技术服务中心】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源技术
    +关注

    关注

    0

    文章

    389

    浏览量

    8218
  • OpenHarmony
    +关注

    关注

    30

    文章

    3866

    浏览量

    18982

原文标题:河套IT TALK——TALK 10:编程的技术|艺术|术术 中篇:编程的思想、艺术和哲学

文章出处:【微信号:开源技术服务中心,微信公众号:共熵服务中心】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    扫描白光干涉在高精度表面测量中的应用

    扫描白光干涉(SWLI)是目前最精确的表面形貌测量技术之一,被广泛应用于工业与科研领域。从发明至今的三十余年间,在精密光学、半导体、汽车及航天等先进制造领域的需求牵引下,该技术不断取得新的进展
    的头像 发表于 08-05 17:54 ?97次阅读
    扫描白光干涉<b class='flag-5'>术</b>在高精度表面测量中的应用

    探索扫描白光干涉:校准、误差补偿与高精度测量技术

    扫描白光干涉的快速发展,在制造业与科研领域的广泛应用中得到了验证,某种程度上成为了高精度表面形貌测量技术的标杆,尤其在半导体、精密光学、消费电子等产业的牵引下,其测量功能和性能得到持续提升。本期美
    的头像 发表于 08-05 17:53 ?109次阅读
    探索扫描白光干涉<b class='flag-5'>术</b>:校准、误差补偿与高精度测量<b class='flag-5'>技术</b>

    NVIDIA AI如何助力艺术创意落地

    本次 GTC 将在欧洲著名艺术之都巴黎举办,特别策划的艺术画廊将展示 AI 如何助力创意落地,实现技术与灵感碰撞的愿景。
    的头像 发表于 06-12 15:26 ?507次阅读

    Ethercat转Profinet网关如何用“协议翻译”打通自动化产线任督二脉

    Ethercat转Profinet网关如何用“协议翻译”打通自动化产线任督二脉
    的头像 发表于 05-10 14:42 ?257次阅读
    Ethercat转Profinet网关如何用“协议翻译<b class='flag-5'>术</b>”打通自动化产线任督二脉

    完整版—单片机编程思想(推荐下载!)

    单片机的编程思想,希望能帮助大家写出简明的代码 内容简介 以单片机裸环境为基础,为编程者定义了一个微操作系统(MOS)的编程环境,并面向应用中不断提高的需求对
    发表于 04-16 15:06

    相位偏折/PDM/偏折测量(Deflectometry)技术简介

    偏折测量技术(PDM)又称为相位偏折或条纹反射法,是一种非接触式、低成本、高鲁棒性且高精度的面形测量技术,绝对检测精度可达10-20nmRMS,可以用于平面、球面、非球面、离轴抛物面
    的头像 发表于 04-09 11:09 ?613次阅读
    相位偏折<b class='flag-5'>术</b>/PDM/偏折测量(Deflectometry)<b class='flag-5'>技术</b>简介

    京东方打造东北首个沉浸式数字艺术体验空间

    2025年伊始,继在苏州、宜宾、北京(王府井)先后落地运营艺云数字艺术中心后,BOE(京东方)打造的第四家艺云数字艺术中心,也是东北首个全场景沉浸式数字艺术体验空间——京东方醉?辽宁艺云数字
    的头像 发表于 04-07 11:51 ?656次阅读

    树莓派+艺术品,有没有搞头?

    由树莓派(RaspberryPi)驱动的这一令人着迷的艺术品在国际上大受欢迎SisyphusIndustries公司的旗舰产品——具有家具和互动艺术品双重功能的沙盘。这个产品需要结构紧凑、价格低廉的控制硬件。RaspberryPi通过高度可靠的硬件和宝贵的庞大社区提供了“
    的头像 发表于 03-25 09:45 ?279次阅读
    树莓派+<b class='flag-5'>艺术</b>品,有没有搞头?

    ADIS16488A10自由度惯性传感器规格书

    电子发烧友网站提供《ADIS16488A10自由度惯性传感器规格书.pdf》资料免费下载
    发表于 03-04 16:39 ?0次下载

    爱普生工程投影机助力打造沉浸式光影艺术

    在数字技术深度赋能文化产业的今天,艺术展览的形态正经历颠覆性变革。从静态陈列到动态交互,从物理空间到虚实共生,爱普生工程投影机凭借其创新技术与卓越性能,成为推动这一变革的核心引擎。近期,艺云数字
    的头像 发表于 02-13 14:32 ?690次阅读

    揭秘深层的华美:用于艺术品与考古检测的高光谱技术

    历经岁月的文物与艺术品的避免不了失真的遗憾,而高光谱技术恰巧能够揭示表象下的深层信息。友思特新品 MUSES 9系列光谱相机,其高空间分辨率与超宽光谱范围的优势特征,帮助解密古文物与艺术品隐藏的历史真相。
    的头像 发表于 02-06 14:22 ?512次阅读
    揭秘深层的华美:用于<b class='flag-5'>艺术</b>品与考古检测的高光谱<b class='flag-5'>技术</b>

    高清野摄像机助力手术过程的准确性和可视化

    野摄像机在手术室中的应用是非常重要和必要的。它通过实时传输手术过程的图像,为医生提供了清晰、准确的视野,帮助他们进行手术操作。
    的头像 发表于 01-21 16:01 ?528次阅读

    理想汽车申请“理想AI Talk”商标

    近日,北京理想汽车有限公司正式向国家知识产权局提交了一枚名为“理想AI Talk”的商标注册申请。该商标被归类于教育娱乐领域,目前正处于等待实质审查的阶段。 据了解,北京理想汽车有限公司成立
    的头像 发表于 01-20 10:30 ?968次阅读

    松下投影机在墨尔本RISING艺术节引领沉浸之旅

    若您欲探寻墨尔本国际艺术节或白夜艺术节的最新动态,答案尽在RISING——墨尔本新兴的顶尖当代艺术与音乐节。RISING不仅继承了白夜艺术节中那些壮观的投影
    的头像 发表于 01-18 09:32 ?822次阅读

    光学全息的原理及应用领域

    本文介绍了光学全息的原理及应用领域。 当我们第一次见到全息影像时,仿佛亲身踏入了科幻电影的奇幻世界,三维图像悬浮在空气中,无需任何特殊设备,我们就能从各个角度尽情欣赏。这种仿佛魔法般的成像技术
    的头像 发表于 11-21 10:18 ?2811次阅读
    光学全息<b class='flag-5'>术</b>的原理及应用领域