如果要让各位设计一个理想的编程开发语言与 IDE,各位会怎么设计?有哪些脑洞?

2020-06-28 08:57:41 +08:00
 tctc4869

国内经常有中英文编程的争执,但我觉得无论是所谓的英语编程还是中文编程,都有很多不足,而且很多问题并没有解决,就是显示代码外观的不同。没有本质变化。

我觉得编程体验开发的本质问题,应该是 IDE 开发软件与一类编程语言的功能匹配结合问题。比如 V2015 与 C#搞了一个资源文件。让我们可以以表格的方式编辑一个类的静态资源,不用搞手写 static 之类的麻烦事了。

如果要各位设计一个理想的编程开发语言,各位会怎么设计,有什么特定和脑洞?针对什么领域?广泛的,还是特定的?若与 ide 开发软件结合,则各位会怎么考虑设计合适的 IDE 开发软件?

5164 次点击
所在节点    程序员
63 条回复
baobao1270
2020-06-28 11:17:48 +08:00
知乎上有一个一模一样的问题哎……

转自知乎:
提出需求,IDE 自己动,自动写出代码
felixin
2020-06-28 11:25:07 +08:00
dark lang
ChanKc
2020-06-28 11:30:14 +08:00
@LokiSharp 有一些是 runtime 的事情,有一些不是
tctc4869
2020-06-28 11:35:53 +08:00
@ChanKc java 的注解,我觉得可以用 ide 可视化编辑注解,编辑丰富的注解,ide 能显示隐藏一些注解。然后 ide 根据规则,为项目生成一个思维导图之类的,或者变换显示方式,把一个类文件的所有标识符,都用所属的某个注解里的某个属性盖住,并显示在界面上。

比如有一个类
@info(title="测试类")
class Test{

public void testFun (){

}
}
tctc4869
2020-06-28 11:39:26 +08:00
抱歉操作失误没写完整

java 的注解,我觉得可以用 ide 可视化编辑注解,编辑丰富的注解,ide 能显示隐藏一些注解。然后 ide 根据规则,为项目生成一个思维导图之类的,或者变换显示方式,把一个类文件的所有标识符,都用所属的某个注解里的某个属性盖住,并显示在界面上。


演示,比如有一个类
@info(title="测试类",)
class Test{

@info(title="测试属性")
private int name;

@info(title="测试方法")
public void testFun (){
@(title="测试变量")
int a=1;
}
}
使用 ide 的一键替换显示不同的代码显示


class 测试类{


private int 测试属性;


public void 测试方法 (){
int 测试变量=1;
}
}

然后换回来
icylogic
2020-06-28 13:37:11 +08:00
xi 和 xray 好像都跪了吧,所以还是只有 vscode,(neo)vim,emacs,vs,jb 系这些可选。

就提一点,你说的资源文件-表格,本质上我觉得可以当做一种 structure editing,好处是可视化的编辑,避免了语法错误,而且可以有更好的补全 /重构功能,因为操作的单元是 ast ( expr/stmt )而不是文本 (char/word)。先不说编程语言,光是 toml/json/xml/csv 这些配置 /数据文件能做出来就挺好的。

https://raphlinus.github.io/xi/2020/06/27/xi-retrospective.html
Jooooooooo
2020-06-28 15:27:18 +08:00
IDE?

绝大多数人连一个带编辑功能的记事本都做不出来
secondwtq
2020-06-28 19:17:17 +08:00
@keith1126 #12 我觉得一个编程语言是否流行这个问题和 PLT 压根不沾边…
tctc4869
2020-06-28 19:20:53 +08:00
@cmdOptionKana 坐拥整个 Java 生态圈。是什么意思? Kotlin 能调 java 的方法?比如在 Kotlin new 一个 java 的类对象?
crella
2020-06-28 19:47:57 +08:00
话说 c#怎样才能像 ruby 一样,在运行时动态加载外部的代码文件?

其实觉得 ruby 的有些语法怪怪的,在试着换到 c#上去,结果 c#的泛型让我感觉有点晕
tctc4869
2020-06-28 20:35:24 +08:00
c# 动态编译
cmdOptionKana
2020-06-28 20:46:46 +08:00
@tctc4869 对,可以。比如这样

import java.util.*

val list = ArrayList<Int>() // 没有用 new 这个关键字,但 ArrayList 确实是直接拿来就用的。

不仅如此,kotlin 写的库,也可以从 java 那边直接调用。官方的说法是 “Kotlin 在设计时就考虑了兼容 Java” 以及 “100%与 Java 兼容”。
msg7086
2020-06-28 21:03:06 +08:00
@crella
Ruby 是一个有能力在运行时直接重写自己的语言。
C#从灵活性来看还差得很远。

@tctc4869
你觉得本质问题是 IDE ?
我觉得这不是什么大问题。大问题是对于你要做的事情一门语言是否最适合。
比如说做快速开发,应该用 Ruby 。做容易招人的项目,应该首选 PHP (网站)和 Java (桌面应用)。做大量复杂工作,应该用 C 和汇编。做大量并行和重复的工作,应该用 CUDA 。

没有一种语言是大而全,能面面俱到的。因为面面俱到本身就是一个非常巨大的缺点。
winglight2016
2020-06-28 21:31:47 +08:00
楼上诸位似乎都没有接触过各式代码自动生成工具?有些基于 UML,有些面向行业,有些面向 OA/CMS,有些面向数据库,用户可以是略懂 SQL 的需求人员,甚至可以是精通业务的销售人员。做大而全的 IDE,的确没有这样的产品,曾经的 visual studio 是这种目标,但是现在大概用的人不多了,因为解决所有编程问题的银弹是不存在的,更不用说面向的程序员水平参差不齐,最重要的是,开发活动中,最大的风险在于系统的复杂性,而不是具体的 coding,所以 lz 说的需求没人去做。
namelosw
2020-06-28 21:41:13 +08:00
1. 所有的 Lisp 都有一个叫 Paredit 的插件,因为 Lisp 代码本身就像数据结构,所以你可以用快捷键像数据结构一样随心所欲地操控代码。有点像 Intellij 的重构,但是更和语言合到一起。

2. Clojure / ClojureScript Cider 那样的远程 REPL,再编辑器里不离开原地同时就能写完 Server 和 Browser 的所有功能,一次刷新 /重启都不需要。想知道代码好不好用,表达式的值是多少,半秒之内就能知道。这个其实现在已经有了。

3. Idris / Agda 和其他 Dependent type 语言的理论补全能力 + Intellij 的质量,写一个签名生成一大片代码,暴力搜解,让电脑带着你写代码。还可以靠科里霍华德同构证明代码,代码不对直接实时飘红。这些也已经有了,但是要变成 Intellij 级别的话,估计 30-50 年以后见……
lululau
2020-06-28 21:42:25 +08:00
Ruby 加上可选的带类型推导的静态类型系统、模式匹配、更具效率的数组和 struct/data class,这样应该就是最完美的语言了,能使用这个语言来编写 Emacs 扩展,那基本就是最完美的编辑器 /IDE 了
crella
2020-06-28 23:22:16 +08:00
@msg7086 ruby 的 pass by object reference 还是有点深奥啊,我刚才看了 stackoverflow 一会儿才明白为什么 string 有.replace 这个方法。本质上,验证了我的猜想,ruby 里面都是‘引用传递’是因为 ruby 里包括数字和文本都是对象,但这个引用传递跟 c 语言的指针不一样

总感觉有点复杂。就我肉眼统计,v2 上捧 ruby 的捧得很高,踩 ruby 的踩的很低,有点心累。
msg7086
2020-06-29 00:35:39 +08:00
@crella 是的,Ruby 是 pass by object ref 。

捧踩其实非常完美地说明了为什么需要那么多种不同的语言。
比如大家捧得很高的 Python,我其实很不喜欢。
风格死板,行事保守,推崇一件事只有一种最好的做法,但好处是上手容易,让一个新手写出和一个五年老手差不多的代码可能只需要五个月。

Ruby 则完全相反。
灵活,激进,一件事最好有无数种做法,好处是你什么都能做(我之前给自己写了一个 DSL 玩),坏处是上手非常难,让一个新手写出和一个五年老手差不多的代码,可能需要八年。

所以必然有人非常喜欢 Python 而讨厌 Ruby,也必然有人非常喜欢 Ruby 而讨厌 Python 。
XanderChen
2020-06-29 01:34:05 +08:00
让 ide 能读取脑电波,

我想输入英文的时候,换英文输入法,

我想输入中文的时候,换中文输入法,

我想把光标插在哪里,就自动插过去。

别的脑洞没了。
levelworm
2020-06-29 04:04:49 +08:00
@baobao1270 程序员为什么老是做这种把自己的工作搞没的梦呢。。。

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

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

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

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

© 2021 V2EX