V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Befehishaber
V2EX  ›  问与答

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

  •  1
     
  •   Befehishaber · 2023-07-28 12:30:16 +08:00 · 6183 次点击
    这是一个创建于 485 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2023-07-28 15:19:58 +08:00
    最简单的时间不能直接 date.toString("yyyy-MM-dd")非要用 SimpleDateFormat 这种类来转,这不是脱裤子放屁吗。还有就是 list 必须要先 stream(), 必须要写 setter 和 getter(现在貌似都用插件了?) 真是难以理解。当然,个人观点。也不是为了在这里喷,没有意义。只是感慨下
    第 2 条附言  ·  2023-08-01 09:22:06 +08:00
    回复太多 根本看不过来。感觉类似这种帖子以后大家还是少发,本身没啥意义,还影响 v 站环境 不知道的还以为去了知乎。溜了溜了 大家散了吧
    67 条回复    2023-07-31 14:46:55 +08:00
    liuguangxuan
        1
    liuguangxuan  
       2023-07-28 12:32:32 +08:00
    借楼问一下,从 C++转 C#(主要是 wpf ),请问有什么推荐的书籍吗?由浅入深,循序渐进的那种。
    zapper
        2
    zapper  
       2023-07-28 12:37:41 +08:00   ❤️ 1
    钓鱼?比如?


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

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

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

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

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