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

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

  •  
  •   gaitana · 2015-09-10 16:27:35 +08:00 · 4933 次点击
    这是一个创建于 3156 天前的主题,其中的信息可能已经有所发展或是发生改变。
    看到很多人说静态语言的类型检查可以避免很多错误,不用像动态语言那么多测试。但是用动态语言有个最爽的地方,我不知道该怎么描述。开发 rails 的都知道 binding.pry 吧,直接在访问页面的时候进入程序内部跟上下文交互, python 的 web 框架也有这种技术。如果用 java 的话,能实现这种效果吗?

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

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

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

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

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

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