会有熟练 Java 的愿意做 dotnet core 后端吗?

2018-05-27 19:23:41 +08:00
 noli
纯粹想了解一下在 Java 高手的眼中做 C# 的是什么地位。

不过我本人人确实喜欢黑 Java (以及 golang )

而且敝司确实招 C# ,不是来引战的,真的想了解看法。
8557 次点击
所在节点    程序员
52 条回复
ala2008
2018-05-28 10:09:35 +08:00
不是高手,宁愿写 c++
noli
2018-05-28 10:13:29 +08:00
@sutra @niubee1

哈哈,服了。

看不到跟帖内容就算了,
看到自己不理解的词语 (dotnet core) 也可以强行套上自己的经验,
什么 “ mono 吧?” “远离 瘟到死”

作为你们的同行,我感到很悲哀,可以后知后觉乃至不知不觉到这个程度。
751762476
2018-05-28 11:16:54 +08:00
jvm 上方言 scala kotlin 不比 c#? 还有 java 的库做支撑
incompatible
2018-05-28 11:43:54 +08:00
@noli 做为一名 Java 高手,我不是很理解你的迷之自信。C#这种东西在我看来,花一天看看语法,再花个两三天看看编译、包管理、主流框架就可以上手了。
Delegate 有什么难理解的?一个简化版的 interface 而已。

回你主贴的问题:C#是个好语言。但是其使用者以及生态建设在互联网从业者的视角来看实在太不入流了。
你想找懂“分布式、高可用、微服务、去中心化”的人,可能还真的得从 Java 生态找点人才,.NET Core 从业者恐怕你是指望不上的。
xiaoshenke
2018-05-28 11:48:45 +08:00
别瞎 jb 扯了,github 贴一个看看你什么水平
sutra
2018-05-28 13:27:43 +08:00
@noli 已经十多年没研究过 dotnet 了,我只熟悉 .Net Framework 1.1.
sagaxu
2018-05-28 14:41:01 +08:00
C#语言设计大概相当于 Java 20 的水准,VM 相当于 Java 7,生态可能还不如 Java 1.4。
x7395759
2018-05-28 15:37:45 +08:00
只要钱管够,我写 VB 都行
noli
2018-05-28 16:02:53 +08:00
@incompatible

Orleans 了解一下。

简化版 interface ?很明显这是一个错误的理解。

interface 必须名字符合、函数签名符合;
delegate 不需要,只需要参数类型和返回类型一致就好;
C# 里面 delegate 还可以支持协变, 算了,估计 Java 用 object 就够了,不需要理解什么叫协变。

哦或许你认为这叫做“简化版”?

我叫这个叫更宽松的约束描述更低程度的耦合。

Java er 的蜜汁自信啊……
noli
2018-05-28 16:06:14 +08:00
@751762476

我没说 Scala Kotlin 不好。不过你要觉得 Kotlin Scala 好那你发个帖开战呗。

再者,写 Java 的有多少人会写 Scala ?
装什么呢……
noli
2018-05-28 16:11:29 +08:00
@incompatible

IList<T> Sort<T>(this IList<T> list, Func<T, T, int> comparator);

你用 interface 表达的时候,势必要引入一个新的类型,难道还要全世界 extends 一遍你的新类型才能用 Sort ?

Java 高手,指点一下?
noli
2018-05-28 16:21:40 +08:00
@xiaoshenke 就你 tm 也配论斤两?
ykrank
2018-05-28 17:09:12 +08:00
于是大神的 github 呢?
xiaoshenke
2018-05-28 17:13:10 +08:00
@noli 秀 github 啊,程序员谁来给你玩虚的
noli
2018-05-28 17:36:55 +08:00
@ykrank 暂时没打算公开某些项目。

@xiaoshenke

没人要跟你要斗代码。也没有打算让你们承认我实力如何。

再说了,代码乃是生产资料,分享给你们,也不见得尔等会添砖加瓦,对我有啥好处?
就为了让你说一句“哦大神”?

别那么幼稚好不好
incompatible
2018-05-28 17:37:47 +08:00
@noli 引入一个新的叫做 Comparator 的类型有什么问题?全世界 implement 一遍新类型有什么问题?
全世界还可以选择匿名内部类,还可以选择用 lambda。
函数指针、delegate、interface 说到底就是对行为的封装,如你所说,无非是约束范围不一样而已。

你会用 delegate、懂协变,那你真的很棒啊。请问你因此比我更懂分布式和高可用了吗?
Definitely not:)
noli
2018-05-28 17:57:52 +08:00
@incompatible

引入一个新的 Comparator 当然有问题啊,因为你不可以指望第三方的库也实现 Comparator。
对于一组类似的 comparator 行为,你就只能多写几个 Adaptor 类。

用 Comparator 不是平凡的 Comparator,而是需要使用上下文的,那么使用匿名内部类封装就必须在 new 的时候把上下文带进去;换句话说,不同上下文类型还要写成不同的 adaptor 类;呵呵……

如果用 Lambda,又丧失了预先封装复杂上下文数据的能力。

也就是说,如果需要一个,既需要构造复杂上下文,又需要从调用初捕捉上下文的 Comparator,

Java 就是办不到。

对行为的封装,只能用 interface 封装行为,就是为了封装行为引入一大堆不需要的约束,这就是 Java 为了适应它自己不合适的抽象模型而制造的不合理的耦合。


请指教。
noli
2018-05-28 18:13:19 +08:00
@incompatible

要说分布式和高可用,Fast PAXOS 还是微软专利呢,呵呵呵~

Java er 不就是用用 ZooKeeper 和 Consul 嘛,还因为封装协议能力不足只能搞 HTTP 协议上的。

离开了 NIO 就写不了高性能网络应用的 Java 废也好意思呱噪哦。

不好意思,在下刚好就是写这样的服务的,你觉得我懂不懂 HA ?
incompatible
2018-05-28 19:27:14 +08:00
@noli 你的行为依赖了上下文,那自然要把依赖带入到行为的作用域里。这是必要的耦合,用任何封装行为的方法都是不可能解掉的。你觉得你用某种封装行为的方法就可以解耦了?不,你只是假装解耦了。

是是是,你比较懂。你老板若是没给你发三百万年薪 + 千万 RSU 简直就对不起你的聪明才智。你管高性能网络应用叫 HA,管 Consul 叫分布式。别人废柴离了 NIO 编不了码,你自己手撸高性能 NIO。真诚为您鼓掌。👏👏👏
noli
2018-05-28 19:33:18 +08:00
@incompatible

1. 转移话题? 我说的是,Java 没办法用自然的方式解耦合,而要手动制造一堆类;

2. 不好意思,C# 不需要手撸 NIO ;标准库也好,接入外部库也好,形式都是一样的 async await ; Java 自己去撸 Future Promise 吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/458167

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX