【云享读书会 · 第七期《程序员修炼之道》】每日话题精选内容

举报
云集而动 发表于 2020/08/12 14:48:01 2020/08/12
【摘要】 根据第七期云享读书会《程序员修炼之道》群内同学每日话题内容整理而成。

本篇博文内容根据第七期云享读书会《程序员修炼之道》群内同学每日话题整理而成。同学的很多讨论内容都非常精彩,对于行业趋势、研发逻辑架构、经验分享等话题均有非常独到的见解。


内容由华为云7号助手(微信devcloud07)整理提供。更多云享读书会活动内容请添加7号小助手咨询。


未来在线编程是否会成为主流,本地IDE会被弱化?

A1:未来在线编程肯定会成为主流,尤其是涉及机器学习、AI等需要强算力的编码,本地IDE将越来越弱化,最后将只是文字编辑。

A2:短时间不会,未来会被弱化。在线IDE也会有定制化功能,随着5G落地,网络的高性能与稳定性的提升,在线编程会让开发者感受与本地几近一致。让轻量级用户端飞一会~

A3:

在线编程的好处:

1.无限的计算资源能力

2.减少准备工作

3.标准化,今儿减少协作成本

4.从任何地方访问

5.符合DevOps的发展

A4:我个人的意见是,在可遇见的3年之内,本地IDE还是主流,本地IDE有着定制化的优势,另外,在线的编程就如何打造顺手的编程环境是一个发展中考虑的一个很大因素,不是说在线编程不好,对于大多数开发人员来说,IDE 的转换可以瞬间转换,也会“死磕”到底。

A5:我觉得是可以在线编程化的。第一、网络 5G+wifi6+以太网300M以上的接入能力 不是问题 。第二、云端机器的性能也可以达到 。第三、云ide配合github等代码库再加上ai技术加持强大的代码自动完成能力 手写的部分可以大大缩减 。第四、浏览器wasm的能力充分利用加上浏览器本地存储能力的运用  可以弥补延迟和体验不佳的问题  慢慢会越来越强大。

A6:基于cloudIDE构建一种全新的便捷企业软件开发模式,降低企业软硬件成本,本地IDE自然会被替换

A7:在线编程需要考虑文件的存储,当我的数据体量大的时候,如何去保存?同时在调用已有的项目模块的时候,是不是可以准确的调用,这些是本地编程的优势


软件开发的本质是什么?程序设计有哪些通用的思想和方法?

A1:软件开发的本质是信用:解决信用问题,流程、数据复盘、校验都属于信用问题。   程序设计通用思想就是业务分解,产品设计到数据结构设计到逻辑设计到前端设计。

A2:传统的web应用采用MVC三层架构。复杂的系统可以采用DDD四层架构,DDD还可以结合DCI

A3:设计的方法跟思想就是程序的算法;

A4:程序设计通用的方法应该是设计模式吧

A5:本质是采用工程化的思想解决现实问题


编程语言越来越多,有没有必要开发一个自动转码的软件工具。如果有必要,需要如何实现;如果没有必要,请简述理由。

A1:有必要,这种转码软件还是需要的。目前网上虽有这类软件,但转码的程度比较低,不适合看和直接使用,所以仍然需要在这方面做进行优化和提高效率的

A2:一个应用得多端,适配成本是巨大的,如果可以用这样的技术顺利,一直到其他平台节省90%代码重写的时间,那么这个应用发展会更好。比方说WINDOWS版本的QQ一直在linux上,final cut pro这样的专业软件,也能移植到Windows平台。前段时间,苹果的发布会就推出了arm的芯片,也发布了对应的转换器,为的就是方便iOS到Mac程序的移植。这样就可以把电脑平板和手机三端打通。

A3:我觉得这个转码工具做出来,各种编程语言的灵活性就没了,代码已经没有灵魂。都得按照转码工具要求的规范来写,那就没有语言了。

A4:要不要是个问题,能不能是个问题吧,如果有万能编译器,序列化可以免了部分语言的性能优化也免了搞不好AI也可以免了...

A5:我觉得与其说出现大一统,不如预测会出现针对各个开发语言的AI 工具。不可能有语言适应所有场景,如果有那就是完美,完美本身就是一个缺点。

A6:个人觉得工具集成化 到最后同一化 肯定是趋势!  即使做不了统一 前期过渡 也应该会诞生转码工具


怎样快速提升团队代码规范能力?

1、多参考下行业和大厂的规范 比如某巴巴的《某巴巴java开发手册》就很有名;

2、项目或产品团队一开始就需要约定好规范 从命名规则 编码格式到习惯用法等等 最好还有一些范例 让团队起步时就遵守;

3、可以使用人工走查或者devcloud的代码扫描工具或其他代码扫描工具对代码进行扫描 ;

4、应要求代码有注释率的要求。多采用javadoc或其他技术生成文档。

5、多借鉴开源软件的代码规范。


怎样才能提高运算效率,优化代码结构,在数据量大的情况下,采取怎样的办法用最小的成本去优化代码 从而提高效率?

A1:其实优化算法本身一样存在成本,有时候简单粗暴的scale up和scale out也能提高性能。对于遗留系统而言,有时候做架构优化的成本甚至相当于彻底重构,有利有弊。根据情况可以做不同的选择。

A2:优化算法,转为分块计算,边读边算,将大量数据问题转为少量数据问题。这个成本最低。

A3:如果是针对运算效率的话,只有从算法上去解决了。在硬件环境一致的情况下,可以认为是单个语句的运行时间一致,那么要提高运算效率,就只能去减少需要运行的语句。

A4:

1.DB优化

之前我们碰到一个问题,用户表100多万条数据,订单表几万条数据,但是关联查询的时候分页将近10多秒才出来,做了各种优化(代码、SQL等),最终还是不见明显改善;

后来偶尔在看数据库表结构的时候,发现用户表的字符集是utf8,而订单表的字符集是utf8mb4,两个表关联的时候因为字符集不统一导致索引失效!!!

当然DB优化的一个核心就是SQL代码的优化以及索引的优化,也可以尝试包括分区表等处理逻辑。

2.架构优化

可以考虑引入MQ,将一些处理逻辑放到消息队列中,让主要逻辑及时反馈给用户,提升效率

或者引入微服务架构,按照模块式进行编程设计,尽可能提高代码复用度

3.代码逻辑优化

1)代码整体框架的优化,明确每个模块、类、接口的处理职责

2)功能逻辑的优化,尽可能把复杂逻辑简单化,内聚逻辑独立成函数,实现可复用

3)性能优化,这个主要是学会使用一些工具(比如JProfile、LoadRunner等),另外就是引入一些缓存、连接池、线程池等优化

A5:成本可以认为是时间和效益。代码的优化,算法的提升,到一定位置后,就会出现是提升算法好还是直接增加硬件好。优化算法,需要更高端的人才,需要更高的研发费用和社会成本;硬件是一次性成本,尤其现在是云的时代。

A6:还是需要看规模,硬件提升在规模化的情况下增加的成本还是很可观的。。。也许用其中一部分就可以找到一个高端的人才来从代码和算法上优化提升性能,那样还能节约不少。前提条件是你当前最大的成本瓶颈是时间,不然不能单以快来评估。个人比较喜欢把“最小的成本”定义为:解决当前最主要瓶颈所带来的成本。


编码/产品/模块组建化是不是未来编程的趋势

A1:封装越来越深,以后写代码要求的功力更深了,不过就crud而言反而是更便捷了

A2:把做软件的分成来两类人 一个是开发低代码平台的 开发低代码平台的人本身要写很多代码 一个是使用低代码平台进行开发的 这些人不需要写啥代码。不过我觉得有第三类,你们可能忘记了 而这个可能是能让人吓出一身冷汗的:会写代码的机器人,而它们又分成了以上两类。最终的世界是这样的:写代码的生命体可能会不存在了 但是写代码的机器人将永生!

A3:模块化是一个趋势,根据需求状况,对于模块的启用或者禁用系统可以进行相应的收缩,减少开发压力,但是还需要考虑数据的耦合性

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200