.NET相对Go的劣势领域

1个回答

写回答

荣的蔡

2025-10-28 17:10

+ 关注

AI
AI

以前我写Go语言的时候,只用了半个小时就掌握了goroutine的用法。C的async Task awAIt,我半分钟就学会该怎么用了。可直到现在,我在winform里还是用不好,更确切地说,我写出来的异步代码特别难看。我特别欣赏Go语言里goroutine的设计。它就是个普通方法,只要加上go这个关键字就能够异步执行了。要是想获取结果也很简单,用select加channel就行,给人一种以简驭繁的感觉(很多时候生产者消费者模式都能套用)。C就不一样了,看起来挺优雅,实际上设计很复杂,细节特别多,用起来很费神。性能方面也存在问题,一直在打补丁。先是有Task,后来又加了ValueTask,现在又打算搞async2。这就好比一堆烂摊子,分好几次收拾,还收拾不干净。老是先拿出个半成品,然后修修补补,一点优雅的样子都没有。Go的AOT从一开始就做得挺好。C的AOT却难产,到现在也就是勉强能用,还不完善,部分语言特性缺乏自动化的最佳实践。还得手动去搞反射列表之类的东西,一听就不靠谱(装插件也不行,现代语言就应该全部自动化才对)。不过Go有些设计也丑到家了,就像以前的异常处理。Go的多返回值比C的更优雅,能省一对括号。我记得Go好像if语句能连续判断多个条件,像if (xxx = (), xxx.ok)这种,C就非得分开判断。具体的我已经记不清了,毕竟我都十年没写Go了。评论区的@漫步经提出可以优化上述代码,达到类似Go的效果。这招确实可行,这个用法我之前确实不知道,虽然看起来有点别扭,但我得承认是我见识少了,还得多学习。毕竟我很鄙视和抵触C的匹配模式,这导致我忽略了它语法方便的地方。虽然可惜还不够精简,但好歹能提升一点编程体验,至少不用写成两行代码了。

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号