V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
javak
V2EX  ›  程序员

看到有大神用 Swift 做后端,坚定了我用 Java 之路

  •  1
     
  •   javak · 2023-06-11 23:35:49 +08:00 · 7029 次点击
    这是一个创建于 535 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT ,

    刚刚看了一个关注很久的 iOS 大神写的一篇 blog ,他做了一个单机版的 app ,后面由于需要数据同步之类的需求,需要做了一个后端,经过综合考虑之后,选择了 Swift 来做后端 server 。

    看了他的选择过程,我理解到的有个很重要的点,就是对 Swift 这个语言特别的喜欢,其他的优缺点,都不是这个选择的决定性因素,这个喜欢才是。(这是我读完文章的理解,并不是代表作者的原意)

    正是他的这个喜欢,让我对自己和解了,我决定在 Java 这条路上继续走下去。因为我本来是摇摆不定的,觉得做 Java 的人太多,CURD 又没啥难度,是个人都能做,年龄大了容易被裁等等,在考虑要不要回头做 C++相关的。

    下面讲讲我使用过的语言历程,只在学校学过的就不算了。

    • 在工作中用 C++做了 5 年多的后端 server ,然后对 C++ 依然没有什么信心的感觉。
    • Swift 刚出来的时候,我就用 Swift 写了一个 app ,然后后端用的是 Django 。
    • 平时工作中的小脚本,也用的 python 来做的。
    • 后面的工作中又写了 2 年的 Ruby on rails 做后端。
    • 然后又换了一个公司,新公司让我重新学 Java 做后端,至今已做了 4 年多了。

    上面都是我切实生产环境用过的语言,而不是那种紧紧写了一个 hello world 或者 demo 的学习程度,我觉得 demo 程度的使用,是对一个语言的评价没有发言权的。这么多语言中,只有 Java 让我有一种一接触就爱上的感觉,让我觉得,这就是我以后的主语言了,其他语言都只能在特别合适的场景做辅助。

    使用了 Java 之后,我把一些脚本场景,之前会毫不犹豫的选择 python 来做,现在我都直接用 Java 来做了,我的想法就是:学一个技术的时候,应该尽可能把平时所有的场景都用这个技术来做,而不管当前场景是否合适。等过了这个阶段之后,再更加场景选择合适的技术。

    这样的切换之后,并没有不适感,反而觉得非常好。其实这样的事情,放到任何人面前,都会毫不犹豫选择 python 来做。(我做过实验问过一些人)

    但是由于随着年龄接近了 35 岁,所以有了上面说的摇摆和犹豫。看了这个 blog ,让我和自己和解了,喜欢和持续投入才是最重要的,其他的走一步看一步吧,所谓车到山前必有路。

    现在我觉得搞 Java 的优势:进,可以从 0 到 1 到 100 的完整后端架构和普通 CRUD 工作;退,可以做各种开源框架;再退,还可以去搞 JVM (我本来也在研究这块),这种 Java 生态中的底层技术。

    总能是有口饭吃的,既然如此,那当然是让自己舒心和开学最重要了。


    一些只言片语,share to you

    46 条回复    2023-06-16 12:09:29 +08:00
    bunny189
        1
    bunny189  
       2023-06-12 00:12:12 +08:00
    他好厉害
    foolishcrab
        2
    foolishcrab  
       2023-06-12 01:21:54 +08:00 via iPhone
    Java 生态确实好,要什么都有成熟方案
    但是语言本身也没什么特别值得喜欢的吧
    jimages
        3
    jimages  
       2023-06-12 01:45:00 +08:00   ❤️ 1
    我认为用什么语言,用什么框架其实都不是最重要的,程序员的思维模式有了,其他都是解决问题的不同路径罢了,不一定要限定在一种语言,一种工具。皓叔写过一篇文章 别让自己“墙”了自己 https://coolshell.cn/articles/20276.html
    786375312123
        4
    786375312123  
       2023-06-12 02:04:30 +08:00   ❤️ 2
    @jimages 在我接触 rust 之前,我是认同的。
    我现在觉得项目,如果有可能,成本可以接受,都可以考虑用 rust
    jklove123bai
        5
    jklove123bai  
       2023-06-12 07:16:11 +08:00
    java 里有类似 python 的 pandas 第三方库吗
    javak
        6
    javak  
    OP
       2023-06-12 07:47:33 +08:00 via iPhone
    @jklove123bai tablesaw
    chuck1in
        7
    chuck1in  
       2023-06-12 07:57:45 +08:00   ❤️ 1
    虽然论坛很多人看不起做 java 的,但是 java 确实不错。不过这个不错是指 jdk17+
    在稳定的基础上,克制的增加了一些有用的特性,极大的方便了开发人员的同时又不放飞自我。lz 可以试试。
    gowk
        8
    gowk  
       2023-06-12 09:01:01 +08:00   ❤️ 1
    选择自己喜欢的,适合自己的,坚定不移的贯彻下去就很好

    我目前的选择是 C#
    zjsxwc
        9
    zjsxwc  
       2023-06-12 09:01:15 +08:00
    虽然但是,jvm 是个好东西,我选 kotlin
    Edward4074
        10
    Edward4074  
       2023-06-12 09:03:16 +08:00
    补个原文链接: https://blog.kevinzhow.com/posts/why-swift-on-server/zh

    我认为原文的重点是,复用原本作为单机产品开发了 2 年所累积的 swift 代码
    lmq2582609
        11
    lmq2582609  
       2023-06-12 09:09:02 +08:00
    加油~
    zjsxwc
        12
    zjsxwc  
       2023-06-12 09:14:42 +08:00
    @Edward4074 https://blog.kevinzhow.com/posts/why-swift-on-server/zh#:~:text=Lambda%20Function

    学习了,当没有第三方,sdk 时可以用 Serverless 的 Lambda Function 提供服务。
    ybz
        13
    ybz  
       2023-06-12 09:42:33 +08:00   ❤️ 1
    Swift......屎味的巧克力..............
    xuanbg
        14
    xuanbg  
       2023-06-12 09:49:34 +08:00
    人太多,太卷,换个小众的语言。这本来就是伪命题。别人吃过了小众语言的屎,凭什么就不能换成 Java ?管他什么语言,把事情做好才是真的。
    knightdf
        15
    knightdf  
       2023-06-12 09:52:35 +08:00   ❤️ 3
    @chuck1in 论坛里看不起 java 的大部分只不过是为了凸显自己很牛逼,批判他人才能增长自己
    gadore
        16
    gadore  
       2023-06-12 10:09:37 +08:00
    @Edward4074 我可是 Kevin 的忠实拥趸,《 Product 从 0 到 1 》的实际践行者之一,你不补这个链接我都要发出来了哈哈哈哈哈。OP 的抉择是对的,能让自己写的时候感受到愉悦的语言才是最好的语言。语言不是最重要的,最重要的是什么能让我们在做这件事的时候开心
    Uplay
        17
    Uplay  
       2023-06-12 10:10:09 +08:00
    @zjsxwc kotlin 好是好,但是工作机会太少
    mazai
        18
    mazai  
       2023-06-12 10:12:54 +08:00
    写脚本,写工具,喜欢用 JavaScript ,我自己很喜欢这门语言,写的时候心情很愉快
    MrSheng
        19
    MrSheng  
       2023-06-12 10:29:59 +08:00   ❤️ 1
    java 很棒,我选 golang ~~~
    dcopen
        20
    dcopen  
       2023-06-12 10:30:29 +08:00
    @jimages 有道理,认死理的最终都会吃亏。没必要设墙。
    elshir
        21
    elshir  
       2023-06-12 10:32:12 +08:00
    我好几个 app 都是 swift 做后端.. 确实是因为喜欢,这个很重要。
    si1enceneo
        22
    si1enceneo  
       2023-06-12 10:34:20 +08:00
    Java 生态成熟,要啥轮子基本都有,写着非常顺手,唯一的缺点就是占用内存比较多,有时候服务器内存不多就得考虑用 go 写了
    caiqichang
        23
    caiqichang  
       2023-06-12 10:37:03 +08:00
    目前后端我觉得最舒适的是 kotlin+spring ,兼具语言和生态优势。脚本场景倾向用 node
    nnegier
        24
    nnegier  
       2023-06-12 10:43:01 +08:00 via Android
    楼主,我有个疑问,我也想用 java 做后端,但是它解 war 包太慢了呀,有一次解了超过 2 分钟,弄得我心神不宁,搞得我很想用云原生呀
    dw2693734d
        25
    dw2693734d  
       2023-06-12 10:46:19 +08:00
    @786375312123 rust 是不是开发效率不够高,而且人也不好招
    Leviathann
        26
    Leviathann  
       2023-06-12 10:48:43 +08:00
    高版本 java 的确还不错
    尤其是分代 ZGC 有划时代意义
    Kamiyu0087
        27
    Kamiyu0087  
       2023-06-12 11:01:06 +08:00
    @zjsxwc
    我写 kotlin 也有原文作者所说的愉悦感,奈何领导不让用啊 T T
    q447643445
        28
    q447643445  
       2023-06-12 11:03:24 +08:00
    深信`语言只是工具` 就是了.
    arcRainbow
        29
    arcRainbow  
       2023-06-12 11:15:36 +08:00
    @jimages 痛心呀。。
    arcRainbow
        30
    arcRainbow  
       2023-06-12 11:16:04 +08:00
    @jimages 痛心啊
    不知道后面 coolshell 还会不会维护
    whyrookie
        31
    whyrookie  
       2023-06-12 11:20:19 +08:00
    还是更喜欢 Kotlin.
    Vegetable
        32
    Vegetable  
       2023-06-12 11:24:39 +08:00
    有自己的认识就是很好的状态了,不过我对于这种有一些”执念“的状态并不是很认同,更倾向于选择更合适的,而不是优先考虑喜欢。
    nnegier
        33
    nnegier  
       2023-06-12 11:45:26 +08:00 via Android
    @jimages 现在 go 火起来了,文章我也看过,第一个故事我觉得不太恰当
    Ayanokouji
        34
    Ayanokouji  
       2023-06-12 12:08:32 +08:00
    @nnegier 新项目基本不用 war 包了,都是内嵌 servlet 了吧
    kenvix
        35
    kenvix  
       2023-06-12 12:14:36 +08:00
    个人觉得做项目技术选型的标准是先看轮子有多少,再看团队水平,最后才考虑语言本身。
    libook
        36
    libook  
       2023-06-12 12:26:36 +08:00
    我个人不想在一棵树上吊死,做东西有余力就研究一些最适合这个需求的技术栈,没有余力就用自己熟悉的东西。
    多了解别的技术栈挺开阔眼界的,解决问题也有更多思路。
    lesismal
        37
    lesismal  
       2023-06-12 12:30:28 +08:00   ❤️ 1
    @jimages
    以前对陈皓不熟悉,他去世了才去看了他的主页,看到那几个抵制资本家之类的观点,觉得他人很好。但偶尔看到他的一些技术观点,我不认同。

    比如只喜欢 go 的小伙子不该被技术限制这个故事:
    1. 很多老手都有同样的观点,技术只是工具。但一个年轻人在技术积累期间,深挖一个方向是很有必要的,钻研一下精深一些,积累到实例之后再去扩展技能点,能让自己做到博而精,而且多数人经历几年钻研后也基本都会自己体会到技术只是工具,根本不需要年长者们提前来指导。这种指导,更多概率是造成这些年轻人博而不精,都成了 CURD 工具人。所以其实是两个不同阶段的人,年长者的建议初衷是好的、效果可能是差的。我身边就有这种例子,大专肄业的小伙子,刚工作技术很菜,拿着不够生活费的低工资只为求学习转行的机会,然后坚持了几年硬啃 c++、数据库相关的领域,现在是他们公司开发里的大拿,代码能力超过很多他的名校专业硕士同事。他几年前也是在各种技术群里问各种问题,很多老手给他说技术只是工具,幸亏他自己有坚持,没有盲从那些建议。就像罗永浩说的,不是每只鸟来到世上都是为了躲枪子的。
    2. 虽然语言只是工具。但不同语言解决问题的能力,确实大不相同。最简单的方法,整体思维,如果学什么语言不重要,那也就意味着随便哪个语言都可以解决所有问题了,然而并不是,所以才会有 go 、rust 的再次横空出世并且大火。
    shuimugan
        38
    shuimugan  
       2023-06-12 12:49:12 +08:00   ❤️ 5
    带 GC 的语言,不如用 C#;
    不带 GC 的语言,不如用 Rust 。

    其实坚定什么语言是没有意义的,迟早会有一堆无 GC 的语言基于 AI 做的各种热门语言转译过来的或者原创的生态库。现在各种可以本地部署的 LLM 模型每周都有新进展,还可以结合 LangChain 做私人知识库,丢文档喂给 AI 也不是什么复杂的事情,后面基于 AI 对话的代码开发会越来越多,到时候就是 AI 时代了,根本不会考虑哪个语言写起来高效的问题,因为人写的不会比 AI 快。

    我在还没看 Rust 语法的时候让 ChatGPT 写了一个 http proxy ,稍微改一下就跑了起来,无编译优化模式下跑起来内存占用只有 500KB 左右,很惊艳,现在就在用 ChatGPT 把我之前用 Node.js 写的爬虫框架转译到 Rust 。

    我平时用的 prompt:
    你扮演一个经验丰富的 rust 专家,接下来的问题请以 rust 专家的角度回答,如果涉及到代码输出,则代码要充分利用异步非阻塞特性,并且要注释丰富、多打印日志、容错性好、对外部输入进行充分校验、充分利用 rust 标准库的特性
    jitongxi
        39
    jitongxi  
       2023-06-12 14:00:02 +08:00
    @nnegier 现在都是内置 tomcat 或者 netty ,jre+jar 启动
    zsj1029
        40
    zsj1029  
       2023-06-12 15:37:51 +08:00
    Swift 写后端没毛病,flutter 的 dart 也可以,dart 优化的 nodejs ,真的好用,我也拿 dart 写后端
    Hse7enD
        41
    Hse7enD  
       2023-06-12 15:52:45 +08:00
    身边很多朋友,包括自己在内。也用 swift 的 vapor 框架在做后端,很成熟,社区文档也很全面,Discord 交流疑问也方便。
    786375312123
        42
    786375312123  
       2023-06-12 16:05:32 +08:00
    @dw2693734d 开发效率一点都不低。
    招人的难度应该和招 c++开发的难度差不多,只不过想直接找到有 rust 经验的不容易,只能找 c++开发过来转。
    dcsuibian
        43
    dcsuibian  
       2023-06-12 16:14:22 +08:00
    我就是,选 Java 就是喜欢,喜欢它面向对象、喜欢它严谨、喜欢它跨平台。接触的语言多了反而让我更让我有了深耕的决心。
    不得不说这种语言也有缺点,比如检查型异常,但总体来说我觉得还是非常好且最适合工程的语言
    iamqk
        44
    iamqk  
       2023-06-12 17:10:17 +08:00
    最近在学 vapor ,被题目吓了一跳
    xiaozhang192
        45
    xiaozhang192  
       2023-06-13 11:37:37 +08:00
    不错的大佬。java 是世界上最好的语言
    agagega
        46
    agagega  
       2023-06-16 12:09:29 +08:00
    写东西最快的语言永远是你最熟悉的语言。除非应用场景确实不适合(比如用 Java 在 iOS 上写 App ),否则用自己最熟悉的那个语言永远是第一选择。不必说停留在舒适区这种话,因为如果对一门语言不熟悉+需求也没完全理清的话,写起代码来是非常痛苦的,思路会持续不停地被打断。如果想学新语言,把熟悉的已有的其他语言的小项目用新语言重写都比这个好。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3248 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:11 · PVG 20:11 · LAX 04:11 · JFK 07:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.