V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
gaitana
V2EX  ›  程序员

静态语言开发 web 有优势吗?

  •  
  •   gaitana · Sep 10, 2015 · 5776 views
    This topic created in 3884 days ago, the information mentioned may be changed or developed.
    看到很多人说静态语言的类型检查可以避免很多错误,不用像动态语言那么多测试。但是用动态语言有个最爽的地方,我不知道该怎么描述。开发 rails 的都知道 binding.pry 吧,直接在访问页面的时候进入程序内部跟上下文交互, python 的 web 框架也有这种技术。如果用 java 的话,能实现这种效果吗?

    rails console 和 django 的 manage.py shell ,都可以直接进入命令行环境操作查看 model ,我觉得 web 开发中,这种技术比静态检查重要的多
    24 replies    2015-09-11 09:26:02 +08:00
    xiamingchong
        1
    xiamingchong  
       Sep 10, 2015
    php 是世界上最好的语言。
    Shieffan
        2
    Shieffan  
       Sep 10, 2015
    用 go 写 web ,写恶心死了,关键是尼玛需求天天变,写业务逻辑,吐吐吐
    ipconfiger
        3
    ipconfiger  
       Sep 10, 2015
    @Shieffan 有那些吐点?
    tabris17
        4
    tabris17  
       Sep 10, 2015
    @Shieffan go 写写中间件还凑合,写 web 是作死了
    88250
        5
    88250  
       Sep 10, 2015
    @tabris17 https://wide.b3log.org Go 写的,感觉还可以,没有作死。
    Shieffan
        6
    Shieffan  
       Sep 10, 2015
    @ipconfiger 模板系统渣; 逻辑代码里一半的 error check, 代码丑陋; 调试困难,开发效率低下,单是处理 http in/out 数据就能把人难过死。

    可能是我写习惯了 ruby 跟 python ,用 go 写起来就各种折腾了, ruby 里一两行的代码放 go 里我要一二十行,感觉 100 行的业务代码里, 80 行都是在处理语言相关问题,只剩下 20 行是业务逻辑了。
    fising
        7
    fising  
       Sep 10, 2015
    @Shieffan 这是因为你没选好框架吧
    88250
        8
    88250  
       Sep 10, 2015
    @Shieffan 这些槽点和 Java 没法比吧....
    Shieffan
        9
    Shieffan  
       Sep 10, 2015
    @fising 框架不是我选的, beego
    guotie
        10
    guotie  
       Sep 10, 2015
    go 写 web 挺好的
    lululau
        11
    lululau  
       Sep 10, 2015
    Java 能不能实现 binding.pry 这样的功能不知道,但是这个和是静态类型还是动态类型没有关系
    igordonshaw
        12
    igordonshaw  
       Sep 10, 2015 via iPhone
    java 有个神器叫 jrebel
    datou552211
        13
    datou552211  
       Sep 10, 2015 via iPhone
    @Shieffan m:n 的并发模型,确实没啥好的调试工具来 debug ,不过官方的 trace 工具已经算比较好用的了

    动态语言没有 err check 是要确保一切都按照预期在执行,到这需要大量全面的 test

    语法确实不优雅
    gaitana
        14
    gaitana  
    OP
       Sep 10, 2015
    @datou552211 动态语言写 test 多是检测业务逻辑,很少听说写 test 来检测语法,业务逻辑上的失误静态语言在编译阶段也检测不出来吧。

    写 web 程序,语言的存在感很弱,最好是感觉不到语言的存在,动态脚本语言正巧充当了这个角色
    llhhss
        15
    llhhss  
       Sep 10, 2015 via iPhone
    Java 用 ide 开 debug 模式加断点,感觉比 binding 方便

    console 确实非常有帮助
    datou552211
        16
    datou552211  
       Sep 10, 2015 via iPhone
    @gaitana 有说检查语法嘛。。这里的预期是指,每一个变量都是自己想要的类型
    datou552211
        17
    datou552211  
       Sep 10, 2015 via iPhone
    @datou552211 每一步都真确处理了,检查语法是编译器解释器的事吧
    gaitana
        18
    gaitana  
    OP
       Sep 10, 2015
    @datou552211 用动态语言写 web 程序的时候很少被类型问题困然,也许从动态语言入门编程的和静态语言入门编程的,写程序的时候思维方式不一样。
    datou552211
        19
    datou552211  
       Sep 10, 2015 via iPhone
    @gaitana 确实,静态语言变量你不用的时候可以不管它,但是需要对它操作了就必须通过各种方法明确类型,虽然有时候你知道这是多此一举
    janxin
        20
    janxin  
       Sep 10, 2015
    Go 做性能敏感后端可以,现在大部分用 Python 搞定就行了
    loading
        21
    loading  
       Sep 10, 2015 via iPhone
    用 go 写 restful 接口应该不太难吧~
    业务逻辑尽量移到前端。
    mengzhuo
        22
    mengzhuo  
       Sep 10, 2015
    @Shieffan
    还好吧,
    http://binary.toys 就是用 go (gin + mgo ) 写的
    目前木有什么问题
    oscarzhao
        23
    oscarzhao  
       Sep 11, 2015
    @Shieffan 前端(此前端非比前端)用 node 或者 php 做展示,后端用 go 单独处理业务逻辑,开放出来一个 restful api ,容易扩展
    Shieffan
        24
    Shieffan  
       Sep 11, 2015 via iPhone
    @oscarzhao 如果业务逻辑很确定,单纯的写 restful api ,那确实能省下不少麻烦,但是这种单纯的数据库 IO 操作,用 go 感觉并没有什么好处
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5299 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 03:22 · PVG 11:22 · LAX 20:22 · JFK 23:22
    ♥ Do have faith in what you're doing.