我觉得程序语言在设计的时候,要把 IDE 的支持考虑在内 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
thinker3
V2EX    程序员

我觉得程序语言在设计的时候,要把 IDE 的支持考虑在内

  •  
  •   thinker3 2015-06-26 08:35:44 +08:00 7470 次点击
    这是一个创建于 3762 天前的主题,其中的信息可能已经有所发展或是发生改变。
    所以你看好IDEA设计的语言吗?Kotlin,我觉得还不错
    第 1 条附言    2015-06-27 15:42:26 +08:00
    不觉得python的缩进设计好,事实上这个设计阻碍了我自学python一下下,几个月后才又开始学。

    因为学过一点C语言,对此不习惯;刚开始还要在TAB和Spaces之间纠结一下;没有自动缩进还不是要敲很多下。

    格式美化对于IDE来说就是一个快捷键的事情。
    缩进(也许是其它原因)使得python多行语句用 \ 来连接,我觉得很丑。

    缩进不是python的优点。
    举一个python的一个优点:简洁。比如,在声明变量时不需要let val var int string 之类的前辍。
    49 条回复    2015-06-27 15:40:49 +08:00
    ybh37
        1
    ybh37  
       2015-06-26 09:00:14 +08:00
    微硬表示很赞同
    north521
        2
    north521  
       2015-06-26 09:09:05 +08:00
    本末倒置吧
    cxh116
        3
    cxh116  
       2015-06-26 09:11:58 +08:00 via Android
    用不需要ide的语言不就行了。这么多语言只需要编辑器
    shuax
        4
    shuax  
       2015-06-26 09:16:01 +08:00
    除了IDE,我觉得还需要内嵌的注释处理,比如python,help一下很爽
    wizardoz
        5
    wizardoz  
       2015-06-26 09:21:13 +08:00
    应该是动态语言的一种趋势吧,对于编译型语言来说,确实有点本末倒置
    webflier
        6
    webflier  
       2015-06-26 09:26:42 +08:00
    好的IDE是钱堆出来的
    tini21
        7
    tini21  
       2015-06-26 09:28:54 +08:00
    看题目就猜到了撸主是JB党,jetbrains家的IDE确实NB
    gamexg
        8
    gamexg  
       2015-06-26 09:31:32 +08:00
    .net 设计 LINQ 时就考虑了IDE自动补全功能,记得测试版是 select ? from ? in ? 格式的,后来为了能自动补全改成了 from ? in ? select ?格式。
    garfeildma
        9
    garfeildma  
       2015-06-26 09:37:45 +08:00
    c#的linq,fsharp在设计的时候都考虑了ide的因素
    hooluupog
        10
    hooluupog  
       2015-06-26 09:50:11 +08:00
    只需要提供一些接口或者工具支持即可,这样第三方的IDE,编辑器将这些工具整合进来就成,或者直接在命令行下使用。比如clang现在做的事情,比如Go语言周边的工具链,其他编辑器和IDE可以很方便的集成进去。
    Kotlin是一个特例,因为jetbrains本身就擅长做ide,而且现成的ide已经有好多年了,所以kotlin得到IDE的很好的支持就不奇怪了。但这个还不够,还需要去支持其他编辑器甚至命令行,给开发者多一些选择,毕竟使用场景有很多。比如java的IDE支持很强,但java的弱点同时也是:和ide绑的太死,导致现在几乎只能用IDE去写java。
    s5s5
        11
    s5s5  
       2015-06-26 10:03:56 +08:00
    从JAVA开始,之后好一点的语言就是这么设计的啊
    aiqier
        12
    aiqier  
       2015-06-26 10:11:09 +08:00
    c# 和vs在一起简直就是完美结合
    ruchee
        13
    ruchee  
       2015-06-26 10:21:57 +08:00
    Kotlin确实让人眼前一亮,再加上自家强大的IDE支持,很有前途。不过,我撸代码从不用什么IDE
    oska874
        14
    oska874  
       2015-06-26 10:25:36 +08:00
    破电脑表示也就能跑个vim和gcc了,eclipse 开多了都卡
    lilydjwg
        15
    lilydjwg  
       2015-06-26 10:32:40 +08:00
    你觉得作家在写书时,需要考虑她手头的辞典吗?
    losincasablanca
        16
    losincasablanca  
       2015-06-26 10:39:11 +08:00
    如果单纯以学习为目的,IDE其实帮忙不是很大。实际项目开发IDE还是不错的, 如果source insight, vim plugins等等。
    quix
        17
    quix  
       2015-06-26 10:49:41 +08:00
    之前的一个 team leader 认为 coder中如果存在真的能称得上是码农的 也只有那些离开IDE就不能开发的. 个人表示赞同.
    mengzhuo
        18
    mengzhuo  
       2015-06-26 10:55:45 +08:00
    楼主反过来了吧……

    vim党感觉IDE的噪音太多,到处都是图标,提示来提示去的,都不觉得烦?
    loolac
        19
    loolac  
       2015-06-26 11:01:10 +08:00
    你看vs 都把社区集成到里面了,设计程序语言的时候干脆把系统驱动也设计进去吧。如果可能最好考虑下裸机执行的情况?或者把邮件 聊天都集成进去
    chaucerling
        20
    chaucerling  
       2015-06-26 11:07:53 +08:00
    @quix java离开ide基本就不会写了。。
    Jex
        21
    Jex  
       2015-06-26 11:13:16 +08:00   1
    @lilydjwg 如果Python的import语法改成 `import a,b,c from m`,确实不方便实现自动补全。Lisp的语法也存在这种问题:`(method object arg)`,问题这货的不少方言连命名空间都没有。作家的比方是不太恰当的,正确的比方是自然语言的设计者(假设现在人为创造一个新的自然语言)应当考虑下现有书写工具,假设现在只有钢笔且不方便画曲线细折线,我不知道藏文还能不能写;没有括号自动匹配和检查,写Lisp难道不痛苦?
    msg7086
        22
    msg7086  
       2015-06-26 11:17:45 +08:00
    @loolac Visual Studio Retina 2015
    Gem
        23
    Gem  
       2015-06-26 11:29:44 +08:00
    顺道问下, http://kotlinlang.org/#get-kotlin 首页上的视频中,IntelliJ IDEA中那些代码使用的字体是什么名字?
    visonme
        24
    visonme  
       2015-06-26 11:33:26 +08:00
    其实我不是 赞成楼主的观点,对于一门程序 语言来说IDE是可有可无的 存在,IDE和语言是N-1的一种关系,如果语言要考虑到IDE势必某些东西会被局限
    jiangpeng
        25
    jiangpeng  
       2015-06-26 11:33:39 +08:00   1
    @loolac Emacs 不就是这样吗
    Jex
        26
    Jex  
       2015-06-26 11:35:33 +08:00   5
    PS:
    我觉得在Generic技术社区里讨论程序语言通常不会得到什么有益的观点。大部分程序员从来没有对手头工具有过**反思**,而且总有护短心理。我常常感觉是在鸡同鸭讲。我曾说Ruby的require module其实只是功能非常弱的read and eval once,它需要向Python学习, OpenStruct的包名是ostruct,FileUtils的包名是fileutils,而Gems们又都习惯用下划线,搞得这么混乱,跟PHP有得一拼了;然而仍有不少人来教育我「有经验的不会乱」、「规范多了嫌束缚」,鸡同鸭讲。

    最搞笑的是竟然还有Node.js程序员鼓吹 Callback很好啊,然后ES6就加了async await。

    我以前在Python社区讲,文档中应当指出方法参数的类型(class),并且最好文档能像Java一样,显示出class继承得到的方法,不然我看到某对象一个方法,我找到这个对象所属类的文档,却找不到这个方法,需要人肉到父类中一层一层去找。然后他们就来教育我「Python是动态类型」、「Python的类型只有int、string这几个,不需要注释」、「Python不是Java,不要用Java的思维来看Python」…………然后 Python之父想要给Python加上Type Hint的时候,我有点想问他们现在脸疼不疼,连动态类型静态类型是什么意思都没搞懂,一加了Type Hint,他们竟然有人高呼Python变静态类型了。鸡同鸭讲。
    zonghua
        27
    zonghua  
       2015-06-26 11:41:05 +08:00
    asp.net不碰代码都能完成工作,有谁比得过?
    cvv
        28
    cvv  
       2015-06-26 11:44:27 +08:00
    其实我觉得楼主的痛点本质是想用图形化操作实现编程,所谓 IDE 支持本来就是为了把敲键盘写 script 变成鼠标点点点…
    min
        29
    div class="sep3"> min  
       2015-06-26 12:00:06 +08:00
    某软表示大家努力抄我吧
    kkurs
        30
    kkurs  
       2015-06-26 12:14:30 +08:00
    松本行弘在《代码的未来》一书中说过类似的话:

    未来的编程语言可能不会像过去的编程语言那样,让语言本身单独存在,而是和编辑器、调试器、性能分析器等开发工具相互配合,以达到提高整体生产效率的目的。话说,那不就是 Smalltalk 吗?
    zhujinliang
        31
    zhujinliang  
       2015-06-26 12:22:29 +08:00 via iPhone
    比如说 易语言?
    kzzhr
        32
    kzzhr  
       2015-06-26 12:26:13 +08:00 via Android
    你是想表达 应该跟现有工具链相结合吧。不同的ide配好工具链也就大同小异了。
    alsotang
        33
    alsotang  
       2015-06-26 12:27:22 +08:00
    @Jex 纠正一下。es7 加入了 async await,es6 是通过 generator 实现的类似功能。
    Jex
        34
    Jex  
       2015-06-26 12:35:23 +08:00   1
    @alsotang 版本号记不清了,现在又改成 ES2015了好像
    alsotang
        35
    alsotang  
       2015-06-26 12:36:15 +08:00
    @Jex es2015 === es6
    Jex
        36
    Jex  
       2015-06-26 12:47:56 +08:00   1
    @alsotang 还真记岔了,我还以为ES2015已经包含了这些特性了的呢
    lilydjwg
        37
    lilydjwg  
       2015-06-26 12:57:46 +08:00
    @Jex Python 的 import 也不过是在一个单独的命名空间里 read and eval once。没记错的话这点是从 Haskell 学来的。

    Ruby 的方案的问题是没有命名空间的区分,大家都往一个空间里加东西。不但往全局空间里加东西,还往已有的类上加方法。于是想知道某个类或者方法是从哪里来的就只有询问 Google 了。
    Jex
        38
    Jex  
       2015-06-26 13:56:49 +08:00   1
    @lilydjwg Java和CSharp尚且有package/namespace org.path.foo.bar 这样的语法,Ruby无法像Python那样自动根据文件路径确定命名空间也就算了,最无语的是,它竟然非要这样写:

    ```
    module A
    __module B
    ____module C

    ____end
    __end
    end
    ```

    除非B已经先被导入生成了module对象,不然下面写法会报错uninitialized constant `A::B`:

    ```
    module A::B::C
    end
    ```
    jjlovegrape
        39
    jjlovegrape  
       2015-06-26 14:36:07 +08:00
    如果你学的是计算机专业你专业课是不是体育老师教的。
    KISS,keep it simple,stupid.
    refear99
        40
    refear99  
       2015-06-26 14:41:30 +08:00   1
    不用代码提示的人就是矫情
    asj
        41
    asj  
       2015-06-26 15:14:20 +08:00
    比如Scala就是设计出来折磨编译器和IDE的
    R4rvZ6agNVWr56V0
        42
    R4rvZ6agNVWr56V0  
       2015-06-26 16:39:18 +08:00
    E语言。。。呵呵
    Bluecoda
        43
    Bluecoda  
       2015-06-26 17:49:16 +08:00
    为啥呢?n年不用ide了,没觉得ide是必需品
    jokester
        44
    jokester  
       2015-06-26 19:13:16 +08:00
    反了 先有言特性才有ide跟上
    AndersQ
        45
    AndersQ  
       2015-06-26 19:46:41 +08:00
    不能认同,语言设计需要考虑特性和实现问题,而IDE只是一个应用程序,虽然都是为了让语言更好用,但是两者不在一个维度。
    Comdex
        46
    Comdex  
       2015-06-26 20:18:06 +08:00
    golang正是这样设计的
    bdbai
        47
    bdbai  
       2015-06-26 20:34:07 +08:00 via iPhone
    yangmafu
        48
    yangmafu  
       2015-06-27 07:21:19 +08:00 via iPhone
    又回到了vim和emacs之争了。
    zartouch
        49
    zartouch  
       2015-06-27 15:40:49 +08:00
    @asj 表示同意,目前用的intellij,但很多时候报错相当混乱,当然最惨的还是超长的编译时间。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5578 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 08:54 PVG 16:54 LAX 01:54 JFK 04:54
    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