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

2015-06-26 08:35:44 +08:00
 thinker3
所以你看好IDEA设计的语言吗?Kotlin,我觉得还不错
6935 次点击
所在节点    程序员
49 条回复
Jex
2015-06-26 11:13:16 +08:00
@lilydjwg 如果Python的import语法改成 `import a,b,c from m`,确实不方便实现自动补全。Lisp的语法也存在这种问题:`(method object arg)`,问题这货的不少方言连命名空间都没有。作家的比方是不太恰当的,正确的比方是自然语言的设计者(假设现在人为创造一个新的自然语言)应当考虑下现有书写工具,假设现在只有钢笔且不方便画曲线细折线,我不知道藏文还能不能写;没有括号自动匹配和检查,写Lisp难道不痛苦?
msg7086
2015-06-26 11:17:45 +08:00
@loolac Visual Studio Retina 2015
Gem
2015-06-26 11:29:44 +08:00
顺道问下, http://kotlinlang.org/#get-kotlin 首页上的视频中,IntelliJ IDEA中那些代码使用的字体是什么名字?
visonme
2015-06-26 11:33:26 +08:00
其实我不是 赞成楼主的观点,对于一门程序 语言来说IDE是可有可无的 存在,IDE和语言是N-1的一种关系,如果语言要考虑到IDE势必某些东西会被局限
jiangpeng
2015-06-26 11:33:39 +08:00
@loolac Emacs 不就是这样吗
Jex
2015-06-26 11:35:33 +08:00
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
2015-06-26 11:41:05 +08:00
asp.net不碰代码都能完成工作,有谁比得过?
cvv
2015-06-26 11:44:27 +08:00
其实我觉得楼主的痛点本质是想用图形化操作实现编程,所谓 IDE 支持本来就是为了把敲键盘写 script 变成鼠标点点点…
min
2015-06-26 12:00:06 +08:00
某软表示大家努力抄我吧
kkurs
2015-06-26 12:14:30 +08:00
松本行弘在《代码的未来》一书中说过类似的话:

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

Ruby 的方案的问题是没有命名空间的区分,大家都往一个空间里加东西。不但往全局空间里加东西,还往已有的类上加方法。于是想知道某个类或者方法是从哪里来的就只有询问 Google 了。
Jex
2015-06-26 13:56:49 +08:00
@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
2015-06-26 14:36:07 +08:00
如果你学的是计算机专业你专业课是不是体育老师教的。
KISS,keep it simple,stupid.
refear99
2015-06-26 14:41:30 +08:00
不用代码提示的人就是矫情

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/201281

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX