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

    浏览量

    7907
  • OpenHarmony
    +关注

    关注

    25

    文章

    3649

    浏览量

    16098

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

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

收藏 人收藏

    评论

    相关推荐

    凯茉锐电子 野摄像机与FCB-EV7520模组:点燃高清影像捕捉新火花

    在高清影像捕捉技术的不断探索与追求中,野摄像机与索尼FCB-EV7520模组的结合,无疑为这一领域注入了新的活力与可能。
    的头像 发表于 11-04 17:44 114次阅读

    工业机器人的四种编程(示教编程、离线编程、自增强现实编程编程)剖析!

    和工作量,提高编程效率,实现编程的自适应性,从而提高生产效率,是机器人编程技术发展的终极追求。本文将就机器人编程技术的发展作一介绍,希望能给读者带来一些启发。对工业
    的头像 发表于 08-30 12:14 1581次阅读
    工业机器人的四种<b class='flag-5'>编程</b>(示教<b class='flag-5'>编程</b>、离线<b class='flag-5'>编程</b>、自增强现实<b class='flag-5'>编程</b>主<b class='flag-5'>编程</b>)剖析!

    京东方顶尖显示技术产品闪耀法国装饰艺术博物馆

    ,BOE(京东方)作为该展项的显示技术合作伙伴,通过画屏、万境屏、大尺寸8K超高清显示屏等一系列顶尖显示技术产品为中外观众带来一场极具沉浸感、互动性的传统文化影像艺术级视觉盛宴,在2024夏季顶级体育盛会举办前期,向全世界呈现中
    的头像 发表于 07-19 09:31 519次阅读

    TCL推出第三代艺术电视A300系列

    7月17日,TCL隆重推出了其第三代艺术电视A300系列,该系列以融合前沿科技与艺术创作为核心亮点,特别引入了Ai绘画大模型技术,用户仅需简单设定三个关键词,系统便能在短短3秒内自动生成一幅个性化的
    的头像 发表于 07-18 16:36 542次阅读

    厦门市开源芯片产业促进会R-Talk10期成功举办

    2024年6月27日,由中国开放指令生态(RISC-V)联盟福建区域中心和厦门市开源芯片产业促进会(“开芯会”)联合主办,厦门市必易微电子科技有限公司协办的R-Talk10期活动在必易微公司成功
    的头像 发表于 06-29 08:37 357次阅读
    厦门市开源芯片产业促进会R-<b class='flag-5'>Talk</b>第<b class='flag-5'>10</b>期成功举办

    PLC的编程方式及编程语言

    在工业自动化领域,PLC(Programmable Logic Controller,可编程逻辑控制器)因其强大的控制功能和灵活的编程方式而得到了广泛应用。PLC的编程方式和编程语言是
    的头像 发表于 06-27 14:08 577次阅读

    燧原科技助力天津美术学院共探人工智能艺术设计未来

    原科技)的算力基础设施为技术依托,天美设计艺术学院与北京创视幻想科技有限公司(简称:创视幻想)的深度合作正式拉开帷幕。天美设计艺术学院党委副书记王璐、天美设计艺术学院副院长蒋松儒、视觉
    的头像 发表于 06-24 16:58 846次阅读

    AIGC是什么?对艺术设计学、视觉传达设计、数字媒体艺术等专业的影响

    的方方面面。AIGC通过利用先进的算法和模型,能够自动生成各种形式的内容,如图像、文本、音频和视频等,极大地丰富了内容的创作和呈现方式。对于艺术设计学、视觉传达设计、数字媒体艺术等专业而言,AIGC的崛起无疑带来了深远的影响。 AIGC是什么 AIGC是人工智能
    的头像 发表于 06-24 13:40 718次阅读

    编程电源如何编程

    编程电源如何编程  可编程电源是一种可以调节输出电压和电流的电源设备,广泛应用于电子设备测试、研发和生产等领域。通过编程,用户可以根据需要设置电源的输出参数,实现自动化测试和控制。本
    的头像 发表于 06-10 15:24 1187次阅读

    流式细胞: OEM 激光引擎带来诸多优势

      基于微型元件的永久对准激光引擎降低了成本,简化了组装,可以为新一代流式细胞仪提供更好的变异系数。要想在任何地方使用激光,流式细胞,特别是多参数流式细胞是具挑战性的仪器应用之一。 这是因为多个
    的头像 发表于 06-03 06:26 1134次阅读

    奇异摩尔携手SEMiBAY Talk 邀您畅谈互联与计算

    2024年5月25日(本周六)19:30,由深圳市半导体与集成电路产业联盟(SICA)主办的 SEMiBAY Talk“Chiplet 与先进封装技术和市场趋势”将在线上举行。奇异摩尔产品及解决方案
    的头像 发表于 05-20 18:31 930次阅读
    奇异摩尔携手SEMiBAY <b class='flag-5'>Talk</b> 邀您畅谈互联与计算

    洲明智慧光显方案,助力第60届威尼斯国际艺术双年展

    2024年4月20日起,第60届威尼斯国际艺术双年展在意大利水城威尼斯正式向公众开放。
    的头像 发表于 04-26 10:06 287次阅读

    传智教育联合科大讯飞举办“AI开发者TALK”活动

    3月23日,由传智教育与科大讯飞联合组织的大模型实战应用之“AI开发者 TALK·北京站”在海淀举办。本次活动围绕“大模型应用”展开探讨,旨在为广大AI开发者提供一个交流、学习和展示的平台。 活动
    的头像 发表于 03-26 16:12 409次阅读
    传智教育联合科大讯飞举办“AI开发者<b class='flag-5'>TALK</b>”活动

    用于流式细胞的新型紫外激光器

    现在,相干公司的 OBIS XT “智能”紧凑型紫外激光器系列,具有高达 150 mW 功率,全新 320 nm 波长。 在多参数流式细胞中,仪器和荧光调色板目前都进一步推向紫外波段,以增加参数
    的头像 发表于 03-26 06:41 276次阅读

    简于形精于器智于芯 王力机器人安全门的“减法艺术

    宋代的美学和艺术成就是公认的中国古代高峰,其标志性的特点就是简洁美。摄影、木雕等艺术,无不把“做减法”作为艺术创新的高级技法和标准。乔布斯更是划时代的让我们看到了工业产品“做减法”的美和创新力。追求
    的头像 发表于 11-17 16:26 438次阅读
    简于形精于器智于芯 王力机器人安全门的“减法<b class='flag-5'>艺术</b>”