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

是否应该优先学习简单、便捷的开发语言、工具?

  •  4
     
  •   V2XEX · 2018-10-28 20:43:39 +08:00 · 3742 次点击
    这是一个创建于 1978 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在 golang 在国内越来越火了,回想起之前大火的KotlinPython,甚至是更早的Java,我想他们火起来的原因不是因为其附带了什么绝对意义上其他同类产品所不具有的核心属性,而是能以一种更优雅、更先进、更人性化的方式解决问题,毕竟不是人人都有时间、有能力去搞编译器优化,去注意内存泄漏问题等。

    除了语言,还有各种框架、工具,如前端三大框架中的Vue(以学习成本,开发效率著称)还有Angular2+(每次更新都宣称变得更“易用”),Spring 全家桶之一的 Spring boot(目标是消除所有配置文件,简化开发前置步骤和开发流程)他们的出现都意味着一种趋势:开发流程对程序员越来越友好,解决问题的方式越来越优雅。 当然还有诸如 Ruby 的 Rails 啥的听说就 web 开发来说开发速度是独占鳌头的,但本人没听说过就不过多评价了。

    一个人的命运啊,当然要靠自我奋斗,但是也要考虑到历史的行程

    几年前发布的 Java8 是当时 Java 历史上变动最大的一个版本,其中的不少变化就是拥抱了潮流,个人认为从侧面也印证了冗长、繁杂的东西是终将要被淘汰的。

    那么就目前情形来看,在保证温饱的情况下,在选择要学习的技术时是否应该抛弃旧物,顺应新的趋势呢?

    我本人是个 java crud 工程师,感觉 Java 开发喜欢搞什么设计范式,搞什么封装,我不清楚这是否是因 java 历史遗留问题所衍生出来的解决方案,这些动作背后蕴藏了什么价值呢?其他的语言是否有这些操作呢?请懂的大佬指教下

    以上发言非引战,纯属个人观点,如有错误敬请指出

    39 条回复    2018-10-29 13:17:58 +08:00
    iappled
        1
    iappled  
       2018-10-28 20:46:39 +08:00
    当然,简单最好
    Justin13
        2
    Justin13  
       2018-10-28 20:50:26 +08:00 via Android
    如果是为了工作,那就学当前技术栈内最火的。如果是为了兴趣,那就跟着兴趣走,想学什么学什么。
    V2XEX
        3
    V2XEX  
    OP
       2018-10-28 20:54:06 +08:00
    @Justin13 我的兴趣就是将来能火的,种技术不一定有什么强力的顶级特性,但一定是能更优雅地解决问题,一定具有顽强的生命力
    lhx2008
        4
    lhx2008  
       2018-10-28 21:01:19 +08:00 via Android
    Java,Boot 是易用和可靠的平衡,js 就别提了,新东西太多,反正出了问题也没啥大不了,python 又太简单不好调试了,所以没有说越极端越好
    bucky
        5
    bucky  
       2018-10-28 21:02:07 +08:00
    学一门动态语言,比如 js 或者 python, 你会发现大多数设计模式都不需要了,动态语言里面设计模式大多内化了
    Tianny
        6
    Tianny  
       2018-10-28 21:08:38 +08:00
    楼主问的太好了这个问题。
    supuwoerc
        7
    supuwoerc  
       2018-10-28 21:24:22 +08:00
    地摊语言 js 就完事了嗷
    trait
        8
    trait  
       2018-10-28 21:47:35 +08:00
    imperative 和 declarative 各学一个主流的,比如 java + haskell。楼上说的动态语言所谓设计模式不重要,还是看看大厂最近都在做什么比较好,ts 就不提了,python 现在 google, facebook 都在加类型检查
    KeepPro
        9
    KeepPro  
       2018-10-28 21:48:22 +08:00
    >>> 一个人的命运啊,当然要靠自我奋斗,但是也要考虑到历史的行程
    你这不是已经有答案了么。
    agagega
        10
    agagega  
       2018-10-28 22:02:02 +08:00
    光简单易用就能火的话,那 Ruby 也不会是现在这个样子了。当然,也可能是火过了,后继乏力。
    zjsxwc
        11
    zjsxwc  
       2018-10-28 22:06:06 +08:00 via Android
    别看不起设计模式,也别以为换了语言就不需要学设计模式,主要的 23 个设计模式只是 solid 原则的衍生物,不管换了什么语言也都应该按照 solid 原则来写易维护的代码,学习设计模式是理解在面相对象编程方式下如何应用 solid 原则的最快速的方式。
    bucky
        12
    bucky  
       2018-10-28 22:09:50 +08:00 via Android
    @zjsxwc 然后走火入魔的人更多,大多数能抄的好函数都算代码写的好的了
    mmdsun
        13
    mmdsun  
       2018-10-28 23:36:06 +08:00 via Android
    一个人的命运啊,当然要靠自我奋斗,但是也要考虑到历史的行程?苟..
    likuku
        14
    likuku  
       2018-10-28 23:38:58 +08:00
    楼主,你这个用户 ID 和 用户头像,在本站太容易引起误解了哎。
    lekai63
        15
    lekai63  
       2018-10-28 23:44:46 +08:00 via iPhone
    ai 趋势没有异议吧?
    so why not Python ?
    —————————-
    其实我想说:看定位啊。
    你搞 web 的学 Python 固然多个技能,但提升不大。你搞 ai,打底 Python 了吧。当然对 Python 语言本身要求不高。
    ——————————
    最后反正 Python 基础语法是简单的,不如抽空学下,万一碰到个难题,也许还能找个合适的东东 pip install 下,说不得就解决了。
    UIXX
        16
    UIXX  
       2018-10-28 23:52:13 +08:00
    那么就目前情形来看,在保证温饱的情况下,在选择要学习的技术时是否应该抛弃旧物,顺应新的趋势呢?
    你这个问题,在大道理上来说是肯定的。

    但是在人的精力有限的前提下来看,还得跟你所处的位置一起评估。
    newtype0092
        17
    newtype0092  
       2018-10-29 00:01:40 +08:00
    @zjsxwc 我怎么觉得 23 个常用设计模式是给不愿 /不能理解面向对象和 solid 原则的人一个照本宣科死记硬背的下下策。。。
    waytoexplorewhat
        18
    waytoexplorewhat  
       2018-10-29 00:04:35 +08:00
    个人见解,无论使用的是何种语言或开发工具,最核心的还是得解决实际业务问题。比如简便或便捷带来很好的开发效率,却未必能有更好的性能,而性能作为瓶颈带来的问题无法解决,那就不适合了。
    当然从大流来说,新出的东西是值得去了解学习的。
    t6attack
        19
    t6attack  
       2018-10-29 03:00:05 +08:00
    未来发展趋势,就是解决问题的方式就是越来越简单。比如在数据库层面,你不再需要自己搞什么数据库优化,云服务解决一切问题。原有的经验和公开的解决方案,会越来越落后,直到彻底淘汰。
    到最后技术人员分化为两类人,一类高级工程师,开发语言、系统、云服务、造轮子。。一类搬砖码农,专注业务层面,无需了解背后的复杂原理,经过简单培训就可以掌握上岗。
    fy
        20
    fy  
       2018-10-29 03:23:28 +08:00
    如果新的工具能够更简单解决旧的问题,为什么不用呢?
    当然用了
    murmur
        21
    murmur  
       2018-10-29 08:29:53 +08:00   ❤️ 1
    java 的魅力就是把一群不知道哪里来的妖魔鬼怪凑一起都能搞出个能跑的东西来
    没设计模式搞得定?
    vegito2002
        22
    vegito2002  
       2018-10-29 08:30:03 +08:00
    don't choose language. choose money.
    kfchyc
        23
    kfchyc  
       2018-10-29 08:46:40 +08:00
    @vegito2002 对的对的,面向金钱开发!
    passerbytiny
        24
    passerbytiny  
       2018-10-29 08:47:37 +08:00   ❤️ 1
    @V2XEX #3 你前面说得很对,但是倒数第二段就错得离谱。

    除非你想要的是一个只打算解决“一个”问题的语言,设计模式、封装是简单、便捷的必要条件。
    changhe626
        25
    changhe626  
       2018-10-29 08:56:06 +08:00
    是啊,谁会没啥天天跟自己过不去
    lihongjie0209
        26
    lihongjie0209  
       2018-10-29 09:02:52 +08:00
    出了 bug 你调试一下

    新需求文档没有, 你实现一下


    框架天天换,底层的原理什么时候变过
    lihongjie0209
        27
    lihongjie0209  
       2018-10-29 09:04:43 +08:00
    @bucky 动态语言不太需要设计模式的原因是: 他们把动态语言当作过程式语言用来写脚本, 并没有构建一个复杂的系统, 所以不需要设计模式
    SeaRecluse
        28
    SeaRecluse  
       2018-10-29 09:19:39 +08:00
    python 更人性?? python 火起来不是因为 AI 风口吗。如果不是工作需要,我应该不会去用 python 的(超过 300 行就分不清东西南北了:|),不懂 JAVA,不过 C#和 java 比应该很像吧,个人觉得 C#挺好的,无论是性能和易用程度,但是生态圈不行。应该优先学习生态圈成熟的
    V2XEX
        29
    V2XEX  
    OP
       2018-10-29 09:23:27 +08:00 via Android
    @passerbytiny 也许是我在小公司写 crud 时间太长,早已忘了思考。
    大公司里搞的项目要注意工程化、规范化,然而我在小公司搞小项目特别是自己一个人搞一个项目就觉得这些行为令人疲惫
    owenliang
        30
    owenliang  
       2018-10-29 09:26:04 +08:00 via Android
    生态牛逼,语言再恶心也得往下咽,是这个道理吧。
    murmur
        31
    murmur  
       2018-10-29 09:41:18 +08:00
    @owenliang 你说的是 object-c,java 就是麻烦但是他是 c 特性的语法不能叫恶心,唯一的问题是 java 早期不支持传回调函数,其余的都不算问题
    TommyLemon
        32
    TommyLemon  
       2018-10-29 09:50:37 +08:00   ❤️ 1
    面试时看招聘要求,人家要啥你就得会啥;
    工作时在满足需求的前提下尽可能用简单的方案。

    SpringBoot 能火起来就是因为简单易用,省去了大量 XML 配置。
    APIJSON 基于 SpringBoot,从 路由 到 数据库 CRUD 的代码全都省掉了,
    后端不用写代码就能提供接口给前端灵活调用了,可以查任何数据和结构
    github。com/TommyLemon/APIJSON
    q397064399
        33
    q397064399  
       2018-10-29 09:57:21 +08:00   ❤️ 1
    @V2XEX #29 建狗窝 跟 建摩天大厦 是两回事,狗窝大不了推倒从来,一堆码农加班就好了,你跟我说摩天大楼 推倒重来? --<<代码大全>>
    lancelee01
        34
    lancelee01  
       2018-10-29 10:04:37 +08:00
    从复杂开始学,再学简单的,很 easy。但是从简单的开始学,学着学着就成 SB 了
    bucky
        35
    bucky  
       2018-10-29 10:23:41 +08:00
    @lancelee01 这个不一定,有些复杂是必要的,有些复杂是没必要,历史遗留的问题,后面这种复杂学了纯粹是浪费时间
    lancelee01
        36
    lancelee01  
       2018-10-29 10:49:33 +08:00
    @bucky 学习得学复杂的、得深入原理;而干活得用简单的,简化开发、把没有技术含量的交给工具去做。如果直接学习简单的,出了问题你不都知道怎么排查
    bucky
        37
    bucky  
       2018-10-29 10:54:14 +08:00
    @lancelee01 复杂和深入原理并没有直接关系
    zhaogaz
        38
    zhaogaz  
       2018-10-29 11:20:35 +08:00   ❤️ 1
    1.旧物不是你想抛就能抛的,——参考 cobol 语言
    2.封装和设计,代表着一种规划。如果你理解不了,那你学学 spring 的设计就懂了。随便做做怎么都行,但是盘子大到一定程度后,按照规矩办事(指定类型啊,接口啊)才是最恰当的,不容易出问题。
    3.其他语言不清楚。你需要找一个体量相当,用途相当的语言。
    V2XEX
        39
    V2XEX  
    OP
       2018-10-29 13:17:58 +08:00 via Android
    @q397064399 看来修狗窝久了,眼里就只有狗窝了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2767 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:13 · PVG 20:13 · LAX 05:13 · JFK 08:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.