是否同其他语言相比, Java 程序员比起程序员更像是码农 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
darksheep9527
V2EX    随想

是否同其他语言相比, Java 程序员比起程序员更像是码农

  •  1
     
  •   darksheep9527 2021-04-01 21:22:46 +08:00 6613 次点击
    这是一个创建于 1653 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先说一下这个题目里程序员和码农的解释(仅限本帖)

    程序员:能够通过代码便利自己的生活,小到脚本,大到独立开发者,做出能影响到普通人的产品 码农:公司生产系统中的一块砖,组成部分之一,工业社会的螺丝钉

    为什么会有这个想法

    感觉像 github 上面受欢迎的国人开源,js,python 这些脚本语言会有更多小脚本,网页工具这些便利或者给现实生活带来些趣味的东西,java 项目则更多是生产系统中的框架脚手架,更底层和硬件结合的 c 和 c++则可以做出一些硬件 diy 的很有趣的东西

    这个想法的一些悖论

    事实上安卓平台的主要开发语言还是 java 和与 java 千丝万缕联系的 kotlin

    或者说,java 是带来趣味更少的一门语言?也是后台的特性

    42 条回复    2021-04-05 20:43:26 +08:00
    Vegetable
        1
    Vegetable  
       2021-04-01 21:29:03 +08:00   13
    JAVA 程序员忙着背题呢,哪有功夫整这些有的没的 /狗头
    putaozhenhaochi
        2
    putaozhenhaochi  
       2021-04-01 21:35:50 +08:00 via Android
    管它啥趣味,做业务 Java 确实耐操
    linvon
        3
    linvon  
       2021-04-01 21:57:06 +08:00   2
    这只是基于你的视角得出的结论罢了
    首先我觉得你所谓的程序员和码农之间没有明显的边界,在做码农的过程中经常性的就会为了便利、进一步的技术需求而产出你所谓程序员的工作内容
    其次所谓的受欢迎的开源,自然跟对应语言的受众人数有关,js 和 python 的使用人数无疑非常多,也利于实现便利工具。而且难道 GitHub 上 Java 的受欢迎开源项目就少吗?是不是你没观察到呢?
    Java 在业务处理上的健壮性也是一门艺术
    kuangwinnie
        4
    kuangwinnie  
       2021-04-01 22:01:22 +08:00   1
    码农不好吗,能赚钱就行了吧
    yeqizhang
        5
    yeqizhang  
       2021-04-01 22:03:43 +08:00 via Android   1
    而且 java 需要虚拟机,比较重,不太适合做一些小东西,我做 java 开发的,也会摸索整一些脚本,工具,Python 和 go 的都有。个人是比较喜欢很多 golang 的项目。

    还有就是生态环境,js 的工具我能想到的就是油猴脚本,浏览器开放出来的接口。

    厉害的人,用 java 也能写出个人赚钱的东西。大多数普通人包括前端,也没啥想法整出啥来,都是码农。
    cmdOptionKana
        6
    cmdOptionKana  
       2021-04-01 22:08:54 +08:00   4
    楼主疏忽了一点:Java 程序员也可以业余用其他语言做个人项目,github 上用其他语言做个人项目的人他的正职可能是个 Java 程序员。
    billlee
        7
    billlee  
       2021-04-01 22:09:12 +08:00
    随便起个进程至少 128 MB 内存, 稍微复杂一点就超 1 GB 了
    随便写个程序都要拉 IDE 起来,要写构建配置

    所以虽然我工作都是用 scala 和 java, 但自己写小工具都是用 python 或 C
    murmur
        8
    murmur  
       2021-04-01 22:12:14 +08:00
    什么叫趣味 某些语言从 shit 里找金子算趣味么 用成熟的技术 成熟的框架 成熟的模式开发居然想找趣味。。
    FreeEx
        9
    FreeEx  
       2021-04-01 22:13:48 +08:00   2
    我本职是一个 Java 程序员,日常工作却和网络打交道,为了练习 Go 开源了几个项目,不过我找工作还是愿意找 Java 。
    GitHub: https://github.com/dushixiang
    Bolg: https://typesafe.cn/
    Cbdy
        10
    Cbdy  
       2021-04-01 22:35:31 +08:00 via Android   1
    虽然我是一个前端,但我的电报机器人就是 Java 写的
    https://github.com/cbdyzj/natrium
    EscYezi
        11
    EscYezi  
       2021-04-02 00:49:52 +08:00 via iPhone
    Java 是一门工程化程度很高的语言, 做复杂系统比较有优势,但是做规模较小的软件就显得太重了。写个小工具还要先建个 maven 项目引一大堆依赖进来,想想就难受。用 Golang 就爽多了。
    不过吃饭还是要靠 Java
    applehater
        12
    applehater  
       2021-04-02 02:43:43 +08:00 via Android
    其他的写时一时爽,重构 xxx
    GG668v26Fd55CP5W
        13
    GG668v26Fd55CP5W  
       2021-04-02 02:51:58 +08:00
    是的,连输出 hello world 都有工业化的感觉。
    myBatis
        14
    myBatis  
       2021-04-02 03:20:57 +08:00
    为社么非要局限于 java 程序员,我早年也写 java 但是 python,c++,js 这些要是需要写个三四千行的小项目也是信手拈来,需要小工具自己写一个就是了。作为工程师不是讲究的是一通百通吗,你主用 java 就非得把自己定位成 java 程序员?
    binux
        15
    binux  
       2021-04-02 04:18:15 +08:00 via Android   4
    因为 Java 写起来不 fun,fun projects 当然要用 fun 的语言啦。
    levelworm
        16
    levelworm  
       2021-04-02 05:05:51 +08:00 via Android
    大数据一大堆东西还是 java 做起来的
    msg7086
        17
    msg7086  
       2021-04-02 05:32:42 +08:00   1
    有些语言,好玩,灵活,所以写起来爽,但是不容易集团开发。
    有些语言相反,死板,固定,写了 2 年和写了 20 年的写出来代码差不多,适合集团开发。
    大公司大都偏向 Java 和 Python 这两个死板的语言,因为没有人鹤立鸡群,每个人写出来的代码都差不多,每个人都能大致看懂别人的代码。这种就是最适合工业上用的语言了。

    你要写点 lisp 啊 haskell 啊什么的,鬼才看得懂咧。
    xupefei
        18
    xupefei  
       2021-04-02 05:43:29 +08:00 via iPhone
    这样说来 apache 基金会养了一群 jawa 码农
    mikulch
        19
    mikulch  
       2021-04-02 08:10:34 +08:00 via iPhone   1
    可能你不太懂什么是小作坊和工程的概念吧。
    daimubai
        20
    daimubai  
       2021-04-02 08:12:05 +08:00 via iPhone
    /div>
    你所说的缺点不也正是它的优点吗
    502Chef
        21
    502Chef  
       2021-04-02 09:05:13 +08:00 via iPhone
    之前写 py,感觉有需求很快就能实现。自从入坑 java,感觉从冲锋枪换成了加特林,不过写起来更加规范成体系了,各种全局配置,开发幸福感增加不少。
    love
        22
    love  
       2021-04-02 09:27:38 +08:00
    @huyujievip py 如果没上静态检查还真不如 java,写起来是快但动态语言改东西太费劲,早期少花的时间全找回来了。

    当然现在我脱 py 成 typescrip 粉了,集合动静态双方优点,前后端同一语言,语言本身也写起来比 py 舒服
    bequt
        23
    bequt  
       2021-04-02 09:31:48 +08:00
    java 很强呀,头秃。
    Cyen
        24
    Cyen  
       2021-04-02 09:37:33 +08:00
    内卷严重
    Craig37
        25
    Craig37  
       2021-04-02 09:38:36 +08:00
    做 IoT 的好像都没资格自称码农
    grewer
        26
    grewer  
       2021-04-02 09:48:16 +08:00
    开除码籍
    Rwing
        27
    Rwing  
       2021-04-02 09:48:43 +08:00
    一般来说是的,java 实现一个功能通常要比其它语言写更多行的代码……
    502Chef
        28
    502Chef  
       2021-04-02 09:52:49 +08:00 via iPhone
    @love 是的是的,这就是我幸福感的来源之一。用多了 java 后,回到 py,函数多了,调用函数自动补全都不知道函数返回类型是啥,有点难受
    bk201
        29
    bk201  
       2021-04-02 09:55:24 +08:00
    程序员好像不应该有语言之分。
    abersheeran
        30
    abersheeran  
       2021-04-02 11:19:54 +08:00
    @huyujievip 现在越来越多的库可以自动补全了……比如我的,几乎都可以允许自动补全
    Jooooooooo
        31
    Jooooooooo  
       2021-04-02 11:22:32 +08:00
    你说盖大厦用的家伙肯定不是玩具啊
    boris93
        32
    boris93  
       2021-04-02 12:02:04 +08:00 via iPhone
    如果你把自己限定为 Java 程序员,那干啥都是码农
    我靠 Java 挣饭钱,也不耽误我用 Go/Swift 写自己的玩具啊
    tinyuu
        33
    tinyuu  
       2021-04-02 12:32:29 +08:00
    都是进城务工的农民工
    zagfai
        34
    zagfai  
       2021-04-02 13:49:06 +08:00
    @msg7086 Python 是很死板的语言??。。你确认有认真用过?


    所谓的工程化,大 project,是过去 20 年的事情了。计算机语言和程序组织的发展过程一直在工程化和自由化中摇摆,并在近几年又有自由化的趋势。
    no1xsyzy
        35
    no1xsyzy  
       2021-04-02 14:48:30 +08:00
    @msg7086 Python 你可以随便实现 __*__ 魔法替换系统内置函数效果,死板?

    Lisp 工程化也很好,就是语言有点多。
    Haskell 的工程化是超过 Java 的,就是约束比较大,写法不符合直觉。
    msg7086
        36
    msg7086  
       2021-04-03 16:37:55 +08:00 via Android
    @zagfai @no1xsyzy
    看看会被别的 Python 程序员骂成啥样。

    我说的不是语言本身的能力。Java 你也可以从头到尾反射个遍,问题是有人这么用吗。写 Python 的是不是宗旨是每件事都应该用一种最优做法?是不是显式优于隐式?这些信条最终是不是造就了死板的语言?你炫技,别人劈头盖脸来一句,这 pythonic 吗。

    我承认我没有认真用过 Python,因为我在其他语言中写 block 的习惯,放到 Python 上根本没法实现,因为我发现 lambda 好像只能写成单行。就算是列表表达也只能表达很简单的句子。我自己的项目是不会用 Python 去写的,只有公司项目要写 Python 了才会照着别人的要求写出一样一板一眼的代码。Java 也是。
    zagfai
        37
    zagfai  
       2021-04-03 18:17:22 +08:00
    @msg7086 我是 10 年+的 Pyhton 老鸟。。。不骂你,建议你先多学习学习。。。分析对比下各种语言,你所谓写的 Python 其实是 Javphon,包了 python 外壳的 Java 。我曾经维护过用 Python 写成的像 C++的工程,各种想死。。。很简单的功能复杂地实现了,大概是 1000 行的代码用了 8000 行这样,你说这些代码是 Python 代码吗?说是也算是。
    no1xsyzy
        38
    no1xsyzy  
       2021-04-03 19:55:04 +08:00
    @msg7086 库代码魔法多得多了。
    pydantic 是 Python 最有名的库之一,目前基本上是序列化反序列化的事实标准,整个库基于 Metaclass 魔法,在 Python 语法解析下实现了一个伪 DSL 。
    还有 sympy 和 ORM 这种修改云算符以表达运算关系而不是计算结果的东西。比如 Table.a+Table.b 不是把 a 和 b 加在一起,而是表达 “a 字段与 b 字段之和”,从而 ORM 中可以直接使用 Table.a+Table.b<42 来构造 WHERE 条件)
    主要一点,Python 的逻辑并不是 worse is better,将复杂的脏逻辑封装成使用上更简便的库是被 Zen 允许的。可以说你想用 Python 写基本绕不开各种库自定义的伪 DSL 。
    你可能写惯了很多 worse is better 的语言,误解了这些价值判断在 Python 语境下的含义。
    (话说其实现在官方都在各种地方违背 Zen
    msg7086
        39
    msg7086  
       2021-04-04 06:29:46 +08:00   1
    @no1xsyzy 其实你说的这些才是我觉得 Python 「应该有的样子」。
    但是在项目上,工程上,去用这些黑魔法,还是算了吧,我反正不敢。
    我自己写项目也会写 DSL,包括像你说的重载运算符实现各种高级语义。
    我自己做的 workflow 项目,就是用 +() 和 |() 运算符来实现数据流定义的。

    我平时是写 Ruby 的,天天用黑魔法,至少我可以随便放心用,不怕被人打死……
    我们习惯于写 2.days.ago 或者 5.minutes.since,而不是 datetime.now() - timedelta(days=2)。
    在 Python 里你们会把 Integer 类给打开然后往里塞奇怪的方法吗?应该不会吧。

    我说 Python 死板也不是在贬低他。黑魔法越少,代码越容易读懂,这是 Python 被大量公司采用的原因之一,也是 Java 8 被大量公司采用的原因。(我司本来还在用 Java 7,连 lambda 都没有,我随便写一个闭包都要各种 hack……)
    实际上,我一个不懂 Python 的人,都可以读写 Python 代码,本身就说明 Python 是一个相对死板的语言,可以让任何写其他语言的人都能快速上手。
    同样,我一个不懂 Java 的人,也可以直接上手做 Java 开发,也可以说明 Java 是一个相对死板的语言。

    有一点我要承认,我对 Python 的印象基本停留在十几年前,差不多 Python 3 还没出生的年代。如果现在 Python 对那些黑魔法黑科技更宽容了,那倒也是件好事,至少写代码的人会轻松很多。
    no1xsyzy
        40
    no1xsyzy  
       2021-04-04 17:05:04 +08:00
    @msg7086 你是从这方面说的话,其实可能死板的原因是 by implementation 而不是 by design 。大部分功能完全依赖纯 C 实现然后提供接口。比如 int 类根本不能塞东西,因为它是个纯 C 的类,最多是继承之后稍作修改,限制也很大,因为没有通用的实现覆盖,最显著的也不过是 T(2).days.ago ,其实那也根本不需要继承,直接写个 T 就成。典型的问题,dict 可以继承后改改,但是 __setitem__ 覆盖了以后并不能影响 update,因为 update 并不调用 __setitem__(反过来也不是)。
    msg7086
        41
    msg7086  
       2021-04-05 02:02:13 +08:00 via Android
    @no1xsyzy 这样啊。那应该就是你说的实现上的问题了。如果能修改纯 C 类的话,可以玩出很多好玩的花样(当然也会变得很魔法就是了……)。
    shm7
        42
    shm7  
       2021-04-05 20:43:26 +08:00 via iPhone
    人艰不拆。都是同类,非要逼自己承认一个鄙视链,好同类相残,我真的很佩服人类的基因了,真的可以和气生活的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1025 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 18:32 PVG 02:32 LAX 11:32 JFK 14:32
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86