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

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

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


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

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

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

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

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