编程杂感两篇

(一)

Null是个巨大的错误吗?

为null正名。

null可以表示未初始化的引用。为什么不强迫初始化,因为初始化时可能抛异常。变量声明放进try块,又可能有跨作用域的需求。一种常见的做法是大改语法引入maybe关键字支持代数类型,并且函数做模式匹配,否则难以完美处理这个问题。另外,每个处理meybe类型变量的函数,无非强制写两个分支分别处理nothing和just,本质就是强迫程序员分别处理null变量和已初始化变量,虽然好处是从文法上保证程序的正确性。但是实践中识别null变量也可以留给程序检查或者IDE插件来实现,而大部分IDE也已经做到了。
null也可以用来表示空的返回值。同样,调用者要处理null或non-null返回值。如果文档明确提醒使用者有可能会返回null值,实践中是可行的,这也是惯例。返回一个maybe类型未尝不可,但是在面向对象编程实践中,这又增加了抽象的层次(比如协变的概念,假如要利用返回对象的虚函数),增加了开发者的脑力负担。

所以说,null还是有好处的。尤其在IDE的帮助下,降低了开发的难度。

(二)

Java与C++编程效率。

Java借力软件工程,C++重视与计算机底层的结合。

面向对象的软件设计方法,第一件事是建模,把现实抽象为若干个类,定义若干接口。C++软件的设计,从现实抽象建模的同时,手动管理对象生命周期,容器、工厂类设计好,谁创建对象,谁负责对象的销毁,谁只是持有指针,对象析构同时释放资源,这些都要考虑。同时也要考虑计算机底层的内存分配,甚至要考虑CPU cache、分支预测、IO效率等。所以C++要设计好,需要考虑更多底层实现。

但是,Java的虚拟机,帮你解决了大部分底层问题,比如GC。你只需关注在抽象层,设计好容器、工厂、事件,对象生命周期问题JVM帮你解决。同时,Java有反射和注解,更方便对象的管理,软件工程上带来IOC、AOP思想,造就了各种框架。于是更有利于解耦,把应用开发变成了模板填空。降低了每个人的心智负担,便于分工协作,自然提高效率,降低开发难度。应用开发的最省力方式就是,拖控件,填模板。

以上所说只是单纯对比开发相同大小的两个小程序,而不牵涉后台的数据库、并发、缓存这些架构问题。而这些更是Java的强项,强大的开源生态,跨平台的开箱即用,也大大提高了开发效率。

原为某问答网站上两个回答,现收藏入blog,note之。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这是一个非常专业的问题,涉及到电力电子领域的一些技术和发展方向。以下是我的回答: 1. SiC GaN等高速功率半导体器件应用中短路保护问题、振荡抑制技术、主动门极驱动技术 随着电力电子设备的发展,高速功率半导体器件如SiC和GaN的应用越来越广泛。在应用中,需要考虑短路保护问题,以保护器件不被损坏。同时,由于高速功率半导体器件容易产生振荡,需要采用振荡抑制技术来解决这个问题。此外,主动门极驱动技术可以提高器件的开关速度和效率。 2. 高功率密度功率组件结构设计、低杂感母排设计 高功率密度功率组件结构设计可以提高电力电子设备的功率密度,使得设备更加紧凑和高效。低杂感母排设计可以降低杂散电感对设备的影响,提高设备的性能和可靠性。 3. 电力电子设备的在线状态监测、寿命预测、可预测性维护技术 电力电子设备的在线状态监测、寿命预测和可预测性维护技术可以帮助维护人员及时发现设备故障并进行维护,降低设备的维修成本和停机时间。这些技术通常采用传感器和数据分析技术来实现。 4. 电源领域的磁集成技术、功能安全电路设计、高精度采样电路设计、EMI抗干扰设计发展方向 电源领域的磁集成技术可以减小电源的体积和重量,提高电源的效率和可靠性。功能安全电路设计可以保证电源在工作过程中的安全性和可靠性。高精度采样电路设计可以提高电源的稳定性和精度。EMI抗干扰设计可以提高电源的抗干扰能力,减小对其他设备的影响。这些技术的发展方向是更加集成化、精度更高、效率更高、可靠性更好。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值