Befehishaber
V2EX  ›  问与答

从 C#转 Java 为什么感觉 Java 的语法那么蠢

  •  1
     
  •   Befehishaber · Jul 28, 2023 · 8171 views
    This topic created in 1198 days ago, the information mentioned may be changed or developed.
    Supplement 1  ·  Jul 28, 2023
    最简单的时间不能直接 date.toString("yyyy-MM-dd")非要用 SimpleDateFormat 这种类来转,这不是脱裤子放屁吗。还有就是 list 必须要先 stream(), 必须要写 setter 和 getter(现在貌似都用插件了?) 真是难以理解。当然,个人观点。也不是为了在这里喷,没有意义。只是感慨下
    Supplement 2  ·  Aug 1, 2023
    回复太多 根本看不过来。感觉类似这种帖子以后大家还是少发,本身没啥意义,还影响 v 站环境 不知道的还以为去了知乎。溜了溜了 大家散了吧
    67 replies  •  2023-07-31 14:46:55 +08:00
    liuguangxuan
    liuguangxuan
    Jul 28, 2023
    1
    借楼问一下,从 C++转 C#(主要是 wpf ),请问有什么推荐的书籍吗?由浅入深,循序渐进的那种。
    zapper
    zapper
    Jul 28, 2023❤️1
    2
    钓鱼?比如?


    @liuguangxuan #1 我很久以前看过一本《 C#本质论》觉得还行。不知道现在的眼光再去看怎么样,可以先 pdf 试读
    yuyu2140
    yuyu2140
    Jul 28, 2023❤️1
    3
    试试 kotlin 就没那么蠢了,哈哈
    jameszhangqk1
    jameszhangqk1
    Jul 28, 2023❤️2
    4
    比如呢? 上来就喷?
    cozof
    cozof
    Jul 28, 2023 via iPhone
    5
    写过 c#再写 java 确实累,java 特别啰嗦。
    senjyougahara
    senjyougahara
    Jul 28, 2023
    6
    @liuguangxuan 刘铁锰有本《深入浅出 WPF 》
    liuguangxuan
    liuguangxuan
    Jul 28, 2023
    7
    @senjyougahara #6 这个看到一半就看不下去了,感觉对初学 wpf 的人来说,有点儿难度。
    senjyougahara
    senjyougahara
    Jul 28, 2023❤️1
    8
    @liuguangxuan 初学先看看视频,了解 wpf 基本概念后再看书好点
    TtTtTtT
    TtTtTtT
    Jul 28, 2023
    9
    就是的,太蠢力!
    wudicgi
    wudicgi
    Jul 28, 2023❤️1
    10
    @liuguangxuan #1 《深入浅出 WPF 》入门看还行,之后深入点可以看看《 WPF 编程宝典》
    idealhs
    idealhs
    Jul 28, 2023❤️3
    11
    本来就是蠢,如果不是工作特别需求完全可以改学 kotlin
    Aloento
    Aloento
    Jul 28, 2023
    12
    就是,谁用 Java 谁倒霉
    idragonet
    idragonet
    Jul 28, 2023
    13
    是的. C#程序员路过。
    jiangpeng
    jiangpeng
    Jul 28, 2023
    14
    说这有用吗,有本事把.NET 加到信创名单里去啊
    Bazingal
    Bazingal
    Jul 28, 2023❤️2
    15
    @jiangpeng 咋的加入信创名单就光宗耀祖了?
    wanguorui123
    wanguorui123
    Jul 28, 2023
    16
    Java 就是喜欢各种范式和接口,然而很多人 CURD 的分层都没整明白就要上一堆接口。C#语法相对 JAVA 很简化,使得 C#上下限都很高,C#的语法设计理念比较先进,然而微软这个大蠢包喜欢赶晚集,什么轮子生态都慢几拍,导致 C#生态比较烂,向后兼容性也拉胯。
    unco020511
    unco020511
    Jul 28, 2023
    17
    请使用 kotlin,呼吸新鲜空气
    howfree
    howfree
    Jul 28, 2023
    18
    多了解吧
    dddd1919
    dddd1919
    Jul 28, 2023
    19
    转 ruby 吧
    ktqFDx9m2Bvfq3y4
    ktqFDx9m2Bvfq3y4
    Jul 28, 2023 via iPhone
    20
    C#爱好者,连 APP 都用它写
    yedanten
    yedanten
    Jul 28, 2023 via iPhone
    21
    自信一点,你的感觉是对的,java 就是这么蠢
    sheeta
    sheeta
    Jul 28, 2023
    22
    那是历史遗留原因了,LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))
    ljrdxs
    ljrdxs
    Jul 28, 2023
    23
    @jiangpeng 想起大连车务段因为 Flash 停用,某个系统用不了。
    塔的项目,很多时候逆向淘汰。
    doanything
    doanything
    Jul 28, 2023
    24
    kotlin 不啰嗦,反正你也刚开始
    jack4536251
    jack4536251
    Jul 28, 2023 via Android
    25
    Java 确实一堆脱裤子放屁的设计
    jakeze
    jakeze
    Jul 28, 2023
    26
    jdk 设计之初的问题
    me1onsoda
    me1onsoda
    Jul 28, 2023
    27
    get set 老黄历了,record 已经从语言层面解决这个问题了
    kgcHQbTYyvcz2w3j
    kgcHQbTYyvcz2w3j
    Jul 28, 2023❤️1
    28
    是的,你的感觉没错。 所以最好第一门语言就学 Java ,这样就不会骂它了
    charlie21
    charlie21
    Jul 28, 2023 via Android
    29
    这只能说明软件流行度和语法细节没有相关性,往往是具体行业巨头(比如 Apache 基金会)推出的软件在功能等硬实力、软件客服等软实力、软件盈利能力、软件法律专利打手等方面上打败了竞争对手,最终笑到最后,最后大家死光光了它活下来了,这决定了软件流行度。在这里,编程语言的表达力并不具备决定性因素,实际上 在面对特定问题时候编程语言只要没有硬伤就可以了

    比如在游戏行业,一个游戏引擎的 API 往往用 C++ 或 C# 而非 java ,因为 C# 没有硬伤,java 有硬伤,这直接决定了 unity 等游戏引擎选择了 C# 而非 java

    https://juejin.cn/post/6964019904148144142
    zachlhb
    zachlhb
    Jul 28, 2023 via Android
    30
    同感我也是 c#前面看过 java ,然后各种不习惯,感觉那那都不对,最终果断放弃了,不过 c#感觉要回春了,最近招聘发现一下子多出很多.net core 的职位
    enihcam
    enihcam
    Jul 28, 2023❤️2
    31
    java 的诞生比 C#要早,而且并没有太多的借鉴。C#的设计本来针对了当时很多 java 的问题,但即便如此,后浪都没把前浪拍死在沙滩上。
    a33291
    a33291
    Jul 28, 2023
    32
    说信创的笑死,zf 出红头文件指定 java 了?
    pipilu
    pipilu
    Jul 28, 2023
    33
    @liuguangxuan 现在竟然还有 wpf 的
    x77
    x77
    Jul 28, 2023
    34
    确实,先用 Java 再用 C# 就感觉前进了不少。但是 C# 应用范围没人家 Java 广啊,微软家里转一圈还得跑出来 ^^
    Rocketer
    Rocketer
    Jul 28, 2023 via iPhone❤️3
    35
    因为 C#是站在 Java 的肩膀上发明出来的呀,当然会取其精华弃其糟粕。而且 C#观念比较激进,毫无历史包袱(它不仅没有继承 Java 的历史包袱,连他自己的包袱也不管,大版本更新时基本不管历史兼容性)

    另外 @wanguorui123 #16 ,C#只是在中国生态不好,在北美还是很好的,第三方类库极其丰富,基本你想做的事都有人给你做好了,你就做个快乐的调包党即可。
    EminemW
    EminemW
    Jul 28, 2023
    36
    看最新版的 JAVA 优化很多了
    ooee2016
    ooee2016
    Jul 28, 2023
    37
    @liuguangxuan
    C#8.0 核心技术指南 ( C#语言)
    CLR via C#(运行时)
    jack4536251
    jack4536251
    Jul 28, 2023 via Android
    38
    @EminemW 除非打工需要,不然坚决不用 java
    iintothewind
    iintothewind
    Jul 29, 2023
    39
    Java 语法特性很多都是历史遗留问题,以后的更新属于带着脚镣跳舞,哪能那么容易改良?
    要不你试试 Scala2 ,Scala3 ,跟 C#比比看看谁更激进?
    要不再上点强度,玩玩 Lisp 的各种分支语言,玩玩 Erlang ,玩玩 Haskell ,看看有哪些所谓 C#上的先进思想是上世纪 70 ,80 年代那些大神们玩剩下的?
    voidmnwzp
    voidmnwzp
    Jul 29, 2023 via iPhone
    40
    java 很多语法都是脱裤子放屁的裹脚布 又臭又长
    Donahue
    Donahue
    Jul 29, 2023
    41
    学 java 的时候非常抵触,读取一个文件要用好几个类,什么 stream, bufferedxx 什么的,又臭又长
    msg7086
    msg7086
    Jul 29, 2023❤️1
    42
    C#比 Java 晚很多,自然设计上多了很多借鉴,少了很多包袱。
    要看蠢不蠢,看看 C++23 跟 C++98 差别有多大就知道了。你甚至不觉得他们是同一个语言。

    然后你也别说 C#。C#1.1 的时候连泛型都没有,2.0 才引入,然后大量的代码要重构到泛型,你都忘了?
    msg7086
    msg7086
    Jul 29, 2023
    43
    @Donahue 现在简单了。String content = Files.readString(fileName);
    那个 bufferedreader 是 Java 1.6 的东西,已经是十几年前的事情了。
    cssk
    cssk
    Jul 29, 2023 via iPhone
    44
    不蠢怎么能成工业语言
    v2er4241
    v2er4241
    Jul 29, 2023
    45
    CSharper 路过,真的是爱不上别的语言,除了 JavaScript 。
    MakHoCheung
    MakHoCheung
    Jul 29, 2023
    46
    学 Swift 路过,C# 也就那样,lamda 要写在括号里面也挺蠢的。现实中吐槽来来去去也就是一些语法糖和标准 API 是否简洁,挺没意思的
    cylx3124
    cylx3124
    Jul 29, 2023 via Android
    47
    试试 kotlin 吧,Java 确实一言难尽
    yogogo
    yogogo
    Jul 29, 2023
    48
    算 KPI 好用多了,哈哈哈哈
    niubiman
    niubiman
    Jul 29, 2023
    49
    @MakHoCheung lambda 不就是个委托的变量吗,跟写在哪里有什么关系
    bytewalk
    bytewalk
    Jul 29, 2023
    50
    @Chad0000 用啥框架呀?
    bytewalk
    bytewalk
    Jul 29, 2023
    51
    自己写 C# 真的很爽,只能说工作很少
    lovedebug
    lovedebug
    Jul 29, 2023
    52
    产品用的 JDK 17 ,功能还是不错的
    Leviathann
    Leviathann
    Jul 29, 2023
    53
    你说的对,但是 不能直接 date.toString("yyyy-MM-dd")非要用 SimpleDateFormat 和语法没任何关系
    levon
    levon
    Jul 29, 2023
    54
    语法上确实差点,但生态好太多。
    hhjswf
    hhjswf
    Jul 29, 2023 via Android
    55
    @Rocketer 无法理解你这“中国生态不好,在北美很好”是什么意思,用个库还分国内外? Java 的生态不都是靠着老外的库吗
    ktqFDx9m2Bvfq3y4
    ktqFDx9m2Bvfq3y4
    Jul 29, 2023 via iPhone
    56
    @poorcai
    xamarin 写的 APP 。工作少可以出来,直接变主流了
    ShinichiYao
    ShinichiYao
    Jul 29, 2023
    57
    C#你可以想成 VB 用 C 的语法写出来,和 VB 可以一对一完美转换
    storyxc
    storyxc
    Jul 29, 2023❤️2
    58
    我认为 SimpleDateFormat 不如 golang 的日期格式化恶心
    chocotan
    chocotan
    Jul 29, 2023
    59
    “还有就是 list 必须要先 stream(), 必须要写 setter 和 getter(现在貌似都用插件了?) 真是难以理解。”
    楼主你这没喷到点子上啊
    ---
    不过楼主说 java 语法蠢我是赞同的。
    tommyzhang
    tommyzhang
    Jul 29, 2023❤️1
    60
    五十步笑百步 徒孙偶见祖宗总要怪一句祖宗不时尚
    ggvoking
    ggvoking
    Jul 29, 2023❤️1
    61
    不能再认同 OP 了,大学时就很讨厌 java ,写代码又臭又长。现在从事游戏用 c#和 go 就很舒服。
    XuYijie
    XuYijie
    Jul 29, 2023 via Android
    62
    那也正常,c #就是在 java 先有问题的层面上开发出来的
    fang2hou
    fang2hou
    Jul 29, 2023
    63
    Java 啰嗦是啰嗦,不过还好有 kotlin 可以换着用
    wertywert
    wertywert
    Jul 29, 2023
    64
    Java 出来比较晚,语法糖少一些,写起来没那么顺
    (题外话,现在转 java 不是 49 年入国军吗??)
    Bingchunmoli
    Bingchunmoli
    Jul 30, 2023 via Android
    65
    data 属于历史遗留问题,确实属于奇葩,get 和 set 难道不是因为不是 public 吗
    xmt328
    xmt328
    Jul 31, 2023
    66
    就是,垃圾 Java ,快别入坑了
    ljrdxs
    ljrdxs
    Jul 31, 2023
    67
    @hhjswf 资料不同。
    Java 生态中文资料多。C#生态(其实语言本身也一般,不过生态是很差)中文资料少太多了。
    你要是习惯看英文资料学习,C#资源一点都不少。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   751 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 147ms · UTC 23:00 · PVG 07:00 · LAX 15:00 · JFK 18:00
    ♥ Do have faith in what you're doing.