• 请不要在回答技术问题时复制粘贴 AI 生成的内容
gaitana
V2EX  ›  程序员

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

  •  
  •   gaitana · Sep 10, 2015 · 6196 views
    This topic created in 4075 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
    xiamingchong
    Sep 10, 2015
    1
    php 是世界上最好的语言。
    Shieffan
    Shieffan
    Sep 10, 2015
    2
    用 go 写 web ,写恶心死了,关键是尼玛需求天天变,写业务逻辑,吐吐吐
    ipconfiger
    ipconfiger
    Sep 10, 2015
    3
    @Shieffan 有那些吐点?
    tabris17
    tabris17
    Sep 10, 2015
    4
    @Shieffan go 写写中间件还凑合,写 web 是作死了
    88250
    88250
    Sep 10, 2015
    5
    @tabris17 https://wide.b3log.org Go 写的,感觉还可以,没有作死。
    Shieffan
    Shieffan
    Sep 10, 2015
    6
    @ipconfiger 模板系统渣; 逻辑代码里一半的 error check, 代码丑陋; 调试困难,开发效率低下,单是处理 http in/out 数据就能把人难过死。

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

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

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

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

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