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

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

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

而且敝司确实招 C# ,不是来引战的,真的想了解看法。
8572 次点击
所在节点    程序员
52 条回复
incompatible
2018-05-28 21:42:08 +08:00
@noli

手动制造一堆类有什么问题? 你要做一个依赖上下文的 comparator,那就写个类叫做 ContextBasedComparator。这有什么不自然的吗?简直没有什么比这更自然了。

你贬损了半天 Java 和 Java 程序员,你自己还不也是个拿着现成 library 写写业务代码、拿着 C#里的语法糖秀秀优越感的码🐶而已。摊手。
noli
2018-05-28 22:08:08 +08:00
@incompatible

1. 写 C# 不需要引进新的类型,就可以完成刚才的需求。算了,你觉得习惯就好。夏虫不可语冰

2. 虽然我不介意你误解我为用 library 写写业务代码;不过我也可以跟你说,用 C# 写 Libraray 要比 Java 容易多了,因为你低估了语法糖的重要性。

更别说 async/await, delegate, linq, Expression Tree 本质上就不是语法糖。

啊,你也吃不到,当然会认为是酸的咯。
noli
2018-05-28 22:14:05 +08:00
@incompatible

另外,你要讨论语法糖的话。
先准备好知识点,ANTLR 以及 Monadic Parser 分别是什么鬼。

没有写过 parser,AST walker 就别人云亦云说什么 语法糖了。你根本没弄清楚自己在说什么。

好了 Java 简单工整天下第一,其他都是渣渣。满意了吧?
noli
2018-05-28 22:55:59 +08:00
关于什么是语法糖,什么不是,我参照的是维基的说法: https://zh.wikipedia.org/wiki/%E8%AF%AD%E6%B3%95%E7%B3%96

“指计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。”

1. 为什么 async/await 不仅仅是语法糖,
因为带有 async/await 的代码段会被 C# 编译器插入状态机代码。这已经改变了代码原来的含义了。

2. delegate 对应到 C++ 的相同作用的应该是类似于 std::bind,std::bind 就不是一个 class 或者别的语法结构的替代物。硬要用 class 来表示的话,至少也得支持重载 operator() ;

可惜这两者 Java 都不支持。所以说 delegate 就是 interface 的简化版,要么蠢要么坏。

3. LINQ 只是一个 SQL 语言嵌入在 C# 里面,可以用函数以及一些类来组合表示达到同样的效果?

这样想纯粹是因为那些人只会写 SQL。
SQL 有 delete update insert 这些 LINQ 都没有,也不需要。

因为 LINQ 实际上是表达一个 C# 的语法树结构 AST,并且 C#编译器保证这个 AST 至少能符合 C#语义

然后,有了 AST,你就可以在不同的场合 interpret 也好,compile 也好,让它做不一样的事情。
例如在 与数据库交互的领域,你可以让这个 AST 翻译成对应的 SQL。
如果你自己写一个数据库,你也可以直接解析运行这个 AST 而不需要 转一遍 SQL。

管这些叫语法糖??

这种代码及数据 的在编程语言中的实践,除了 LISP F# C# ,目前我还不知道别的通用编程语言能做到。

你喜欢认为这是语法糖的话,你开心就好。
incompatible
2018-05-28 23:59:57 +08:00
@noli 抱歉,在你看来 可惜 / 酸 的事儿对我来说完全不足挂齿。请你尽情自 high🤷🏻‍♂️

你的长篇大论说到底只是在描述 C#的特性而已,C#并不是您本人设计的对不对?我看好这些特性的话我可以直接下载一个 dotnet sdk 开始用它了对不对?就可以瞬间拥有你也拥有的优越感了对不对?请问你到底高明在哪儿了??
noli
2018-05-29 00:09:17 +08:00
@incompatible 我本来不觉得自己有多高明,不过是前人探路我跟上得比较快;

但是经你这么一提醒,我发现我还是蛮高明的;

高明在我已经用 C# 写出我想要的代码,而别的语言很难写得这么方便;

然后发现有很多像你这样愿意抬杠的,把我拾人牙慧后的自卑心都弥补了:
原来自己虽然不是 1% 的聪明人,也是 10% 以内的。

你该不该替我开心一下?哈哈
incompatible
2018-05-29 00:12:55 +08:00
@noli 哈哈 不该 我觉得你蠢透了😄
noli
2018-05-29 00:13:08 +08:00
@incompatible

为了和你抬杠下去,我不得不认真思考一下 C# 到底好在哪里,什么是是语法糖。

整理完之后,我发了一个知乎回答: https://www.zhihu.com/question/28942665/answer/403871596

欢迎你过去继续抬。

我反正是挺享受这个过程的。谢谢了。
ShineSmile
2018-06-20 17:19:04 +08:00
niubi.cs
beyondex
2020-02-15 21:14:13 +08:00
Java C# 都会,Java 语法过于陈腐了,想起很久很久以前和一个同事维护一个更久更久以前的 VBA 项目,那朋友写着写着骂了一句,“妈的,写个属性都这么啰嗦,人家一句话就搞定了”,这话同适用于 Java。
ragnaroks
2020-05-08 08:44:10 +08:00
dotnet core = java100 的语言设计,java50 的性能,java10 的生态,java1 的后备韭菜
ragnaroks
2020-05-08 08:46:36 +08:00
dotnet 生态太差了,至少国内是这样,招一批人,问一个分布式,回答都是"没了解过 /有这个吗 /你是想问异地部署",我都怀疑我去了假的大学,好在上面沟通从上海请了 2 位救兵过来负责这部分的开发了

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

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

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

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

© 2021 V2EX