ld开发中文编程的高效IDE
Tofloor
poster avatar
electricface
deepin
2013-04-25 04:56
Author
我知道编程的语言界限不大,但是对于初学者或者已经习惯使用易语言编程和拖拉控件的人有急切需求.
好软件是不分编写它的语言的.用中文编程语言一样可以写出好软件.

我期待的一种语言是
很简洁,表意不会有重复,但也便于编译器检查.
能发挥中文语言的表意能力,能与中文输入法完美结合.
高效,是静态编译的,不是动态的脚本
有自动的垃圾收集器,有完善的面向对象机制,异常处理机制.
方法和类是同级的
(这种语言还不存在,这是我下一步的研究目标)


如果出一种英文的IDE就也许没有必要,因为已经有很多,只是不如vs系列的强大.
翻译大量开源库的文档,不如将这些优秀的库翻译成中文的类名,方法,这样凭借名称和使用者的简单测试就能够辨别具体的用途,而且针对性强,翻译文档这种漫无目的的工作就显得很低效,和不划算.

linux平台缺乏大公司的积极参与,这正是小软件生产者生存的希望,目前小软件生产者在linux平台,相比在win下有更大的机会,当然得ld系统能基本满足日常工作及娱乐需求,并且大量开拓版图,让更多人有意使用ld系统作为自己的工作系统.

某个刚长大的小公司有软件开发项目时,期待能找到便宜的软件开发团队时(ld可以做中介),小软件开发者的收费更加便宜是肯定的.我总觉得在提高企业工作效率的软件这方面中国还有很长的路要走,看中国各种高校的信息管理系统就知道了.

linux平台对于大公司里的开发者和用中文编程的小开发者都是十分陌生的环境,市场上也没有那么多linux人才,如果没有大量成熟的中文的文档,有可能让这些小生产者一辈子都与ld绝缘.但如果有了比易语言IDE更加先进IDE(易语言在ld上挂定了,而且没有同类竞争产品)这些小生产者的状况就完全不一样了,它们有更快速的反应.而且这些小软件软件开发者还可能忽悠一些有识之士换用ld系统呢.比ld在这方面不作为要好很多吧.
(除非你否认有中文资料对于学习一门新系统环境下编程的作用,ld可以用中文将类库都封装的妥妥的)

易语言飞扬,是易语言公司在隐匿前的得意作品,比易语言尘土更加先进,只是目前项目完全停止了.里面就有跨平台的思路,有linux平台开发软件的能力.因为包装了开源跨平台的库.我看到它还有开源的意向.我在考虑ld是将这种强大的IDE限制在linux系统,还是应该搞跨平台.

ld做操作系统正愁没有第三方开发者,如果ld能在宣传成熟美观桌面环境的同时制作出开源的高效的中文开发语言和高效的IDE,我觉得比自己开发游戏更有价值.
Reply Favorite View the author
All Replies
3 / 4
To page
musmuhe
deepin
2013-04-27 08:41
#41
中文编程不是不可能,简单地宏定义一下就行了。
楼主的想法就只是一个想法。可行性很低。
还是如楼上,建议楼主多学点实干的。
至于你说的那些功能。。交给人工智能来实现吧。。
送楼主一句话。。
talk is short 。show me the code
Reply View the author
electricface
deepin
2013-04-27 17:03
#42
哭笑不得你就笑一笑,我发的帖就当给大家娱乐了,但我的想法可是要不断进步的,也许我有朝一日就没了和大家将中文编程的坏习惯了。
Reply View the author
electricface
deepin
2013-04-27 17:13
#43
我不觉得只由复杂化的代码才能解决问题,其实很多写程序的思路是从生活的经验得来的,如果你能将程序中的各种过程步骤放到生活中去,你会觉得它很简单的,写程序就像在教一个有智力障碍但在数学和记忆上有超人天赋的小孩一样,不信你试试。
My little brother Guy took a computer programming class recently, and complained that programming is like telling an i d i o t savant how to do simple things: You need to spell out every step precisely, but you need not worry that a step will be missed or performed incorrectly. Why, he asked me, can we not just tell a computer what we want it to do? The answer is not clear, but it is clear that artificial intelligence applications are making it easier to do so.
对应该用程序教计算机做一些有创意的事情才有价值,否则就会被计算机的思维模式同化的...
我比较感兴趣的是,这个世界上有没有编程速度奇快无比的高功能自闭症患者,但按照以上理论推断这是不可能的,因为编程需要现实中的经验,需要创造力,这是自闭症患者不可能有的.
Reply View the author
a287740928
deepin
2013-04-27 19:55
#44
我敬佩你得执着,有偏执的想法再去偏执的做,也许你会有成功的那一天的!加油,骚年!
Reply View the author
electricface
deepin
2013-04-27 22:40
#45
[quote]go语言的继承(坑爹)和指针比较不符合lzx的预期。
你对 go 语言了解的都这么浅显, 谈何改造 go 语言?[/quote]
是很浅显,但go语言的设计思想我觉得很优秀.http://www.ituring.com.cn/article/1339
Reply View the author
electricface
deepin
2013-04-29 05:02
#46
go语言的标准库可用性不佳
比如go对zip压缩文件只提供 文件属性 , 读写,打开关闭 这些个功能,而python 则提供了更高一级的功能,比如读取zip中的文件结构,放入文件,解压文件.等等GUI层面的方法.
如果用go的基础库直接去编程,是不可能做到让代码简洁易懂的.所以.
lzx的标准库,起码也要强大到和python的标准库一般才可以给普通人使用.

强化对象的作用.
要在高级的对象中,嵌入很多重量级的对象才行.不能再使用松散的 简单数据组装.
我想做到让这些重量级对象一经嵌入就立马发挥它应有的作用,让用户的类拥有很高端的属性.

做些小猜想:
比如拥有"显示"模块,能够将类的各种参数通过 html代码显示出来,也就是他有自己的 div ,也许会有gui编辑器来编辑它们.
比如图片 这个类, 它的显示模块能让它直接显示在屏幕上.

有显示这个命令

pic 图片'avc.png
显示pic
`简写是
[color=#FF4040:29yoxmys]图片'avc.png' 显示[/color:29yoxmys]
这样就能弹出窗口.

又比如加入 放大缩小控制,加入 分享到新浪微博的功能...
仅仅是在结构定义中加入
我的图片{
 ...
 显示show
 放大缩小控制Mag
 微博分享weibo
}

这才是真正的对象化编程,哈!
Reply View the author
liyongzhang
deepin
2013-04-29 05:28
#47
楼主如果有这种想法,可以先在理论上进行研究 ,将你的想法形式化的表达出来,比如写个Paper,这样可以方便大家交流。如果你的主意真的可行,自然会有人去实现你的想法。
Reply View the author
electricface
deepin
2013-05-01 19:21
#48
在基础方面只能纯粹翻译
  1. 打招呼 (w HTTP响应写,r * HTTP请求)=
  2.     form r解析表单
  3.     打印form
  4.     打印r路径
  5.     打印r协议
  6.     打印form'url_long
  7.     k,v :form
  8.         打印'键:',k
  9.         打印'值:',' '连接v
  10.     ;k
  11.     w写'写给客户端
  12. =
  13. 登录 (w HTTP响应写,r * HTTP请求)=
  14.     打印'方法:',r方法
  15.     若r方法=='GET
  16.         t 模板 解析文件'login.gtpl
  17.         t执行w
  18.     _
  19.         打印'用户名: ',r表单'username'
  20.         打印'密码: ',r表单'password'
  21.     ;若
  22. =
  23. 入口 ()=
  24.     HTTP
  25.         路由方法'/' 打招呼
  26.         路由方法'/login' 登录
  27.         服务监听':9090'
  28.         !!致命错误'HTTP服务监听出错',e
  29.     ;HTTP
  30. =
Copy the Code

下面是go语言代码
  1. func sayhelloName(w http.ResponseWriter, r *http.Request) {
  2.     r.ParseForm()       //解析url传递的参数,对于POST则解析响应包的主体(request body)
  3.     //注意:如果没有调用ParseForm方法,下面无法获取表单的数据
  4.     fmt.Println(r.Form) //这些信息是输出到服务器端的打印信息
  5.     fmt.Println("path", r.URL.Path)
  6.     fmt.Println("scheme", r.URL.Scheme)
  7.     fmt.Println(r.Form["url_long"])
  8.     for k, v := range r.Form {
  9.         fmt.Println("key:", k)
  10.         fmt.Println("val:", strings.Join(v, ""))
  11.     }
  12.     fmt.Fprintf(w, "Hello astaxie!") //这个写入到w的是输出到客户端的
  13. }
  14. func login(w http.ResponseWriter, r *http.Request) {
  15.     fmt.Println("method:", r.Method) //获取请求的方法
  16.     if r.Method == "GET" {
  17.         t, _ := template.ParseFiles("login.gtpl")
  18.         t.Execute(w, nil)
  19.     } else {
  20.         //请求的是登陆数据,那么执行登陆的逻辑判断
  21.         fmt.Println("username:", r.Form["username"])
  22.         fmt.Println("password:", r.Form["password"])
  23.     }
  24. }
  25. func main() {
  26.     http.HandleFunc("/", sayhelloName)       //设置访问的路由
  27.     http.HandleFunc("/login", login)         //设置访问的路由
  28.     err := http.ListenAndServe(":9090", nil) //设置监听的端口
  29.     if err != nil {
  30.         log.Fatal("ListenAndServe: ", err)
  31.     }
  32. }
Copy the Code
Reply View the author
electricface
deepin
2013-05-03 01:17
#49
我该如何改善代码的可读性呀 ! ! 各位给点提示吧.
  1. 入口()=
  2.     db SQL打开'mysql' 'astaxie:astaxie@/test?charset=utf8'
  3.     !!检查错误e
  4.         
  5.     `插入数据
  6.     插 db命令'插入表 用户信息 设 用户名=?,部门=?,创建日期=?'
  7.     !!检查错误e
  8.         
  9.     果 插执行'astaxie' '研发部门' '2012-12-09'
  10.     !!检查错误e
  11.         
  12.     id 果上次插入号
  13.     !!检查错误e
  14.         
  15.     打印id
  16.         
  17.     `更新数据
  18.     更 db命令'更新表 用户信息 设 用户名=? 条件 号=?'
  19.     !!检查错误e
  20.         
  21.     果 = 更执行'astaxieupdate' id
  22.     !!检查错误e
  23.         
  24.     aff 果受影响条目数
  25.     !!检查错误e
  26.         
  27.     打印aff
  28.         
  29.     `查询数据
  30.     条目 db查询'选 * 自表 用户信息'
  31.     !!检查错误e
  32.     当条目下一个
  33.         号 i
  34.         用户名 s
  35.         部门 s
  36.         创建日期 s
  37.         rows填&号 &用户名 &部门 &创建日期
  38.         !!检查错误
  39.         打印号
  40.         打印用户名
  41.         打印部门
  42.         打印创建日期
  43.     ;当
  44.         
  45.     `删除数据
  46.     删=db命令'删除 自表 用户信息 条件 号=?'
  47.     !!检查错误
  48.         
  49.     果 = 删执行id
  50.     !!检查错误
  51.         
  52.     aff = 果受影响条目数
  53.     !!检查错误
  54.         
  55.     打印aff
  56.     db关闭
  57. =
  58. 检查错误(e 错误之类)=
  59.     若e!=空
  60.         恐慌e
  61. =
Copy the Code

go语言代码
  1. func main() {
  2.     db, err := sql.Open("mysql", "astaxie:astaxie@/test?charset=utf8")
  3.     checkErr(err)
  4.     //插入数据
  5.     stmt, err := db.Prepare("INSERT userinfo SET username=?,departname=?,created=?")
  6.     checkErr(err)
  7.     res, err := stmt.Exec("astaxie", "研发部门", "2012-12-09")
  8.     checkErr(err)
  9.     id, err := res.LastInsertId()
  10.     checkErr(err)
  11.     fmt.Println(id)
  12.     //更新数据
  13.     stmt, err = db.Prepare("update userinfo set username=? where uid=?")
  14.     checkErr(err)
  15.     res, err = stmt.Exec("astaxieupdate", id)
  16.     checkErr(err)
  17.     affect, err := res.RowsAffected()
  18.     checkErr(err)
  19.     fmt.Println(affect)
  20.     //查询数据
  21.     rows, err := db.Query("SELECT * FROM userinfo")
  22.     checkErr(err)
  23.     for rows.Next() {
  24.         var uid int
  25.         var username string
  26.         var department string
  27.         var created string
  28.         err = rows.Scan(&uid, &username, &department, &created)
  29.         checkErr(err)
  30.         fmt.Println(uid)
  31.         fmt.Println(username)
  32.         fmt.Println(department)
  33.         fmt.Println(created)
  34.     }
  35.     //删除数据
  36.     stmt, err = db.Prepare("delete from userinfo where uid=?")
  37.     checkErr(err)
  38.     res, err = stmt.Exec(id)
  39.     checkErr(err)
  40.     affect, err = res.RowsAffected()
  41.     checkErr(err)
  42.     fmt.Println(affect)
  43.     db.Close()
  44. }
  45. func checkErr(err error) {
  46.     if err != nil {
  47.         panic(err)
  48.     }
  49. }
Copy the Code
Reply View the author
electricface
deepin
2013-05-03 04:24
#50
经过我的简单改善,你可以把代码写成这个样子,更有营养哟~
  1. 入口()=
  2.     db SQL打开'mysql' 'astaxie:astaxie@/test?charset=utf8'
  3.     !!检查错误e
  4.         
  5.     `插入数据
  6.     插入命令 db命令'插入表 用户信息 设 用户名=?,部门=?,创建日期=?'
  7.     !!检查错误e
  8.         
  9.     之后 插入命令执行'astaxie' '研发部门' '2012-12-09'
  10.     !!检查错误e
  11.         
  12.     id 之后末次插入号
  13.     !!检查错误e
  14.         
  15.     打印id
  16.         
  17.     `更新数据
  18.     更新命令 db命令'更新表 用户信息 设 用户名=? 条件 号=?'
  19.     !!检查错误e
  20.         
  21.     之后 = 更新命令执行'astaxieupdate' id
  22.     !!检查错误e
  23.         
  24.     n 之后受影响行数
  25.         
  26.     打印n
  27.         
  28.     `查询数据
  29.     查询 db查询'选 * 自表 用户信息'
  30.     !!检查错误e
  31.     当查询下一个
  32.         号 i
  33.         用户名 s
  34.         部门 s
  35.         创建日期 s
  36.         查询得 &号 &用户名 &部门 &创建日期
  37.         !!检查错误
  38.         打印号
  39.         打印用户名
  40.         打印部门
  41.         打印创建日期
  42.     ;当
  43.         
  44.     `删除数据
  45.     删除命令 db命令'删除 自表 用户信息 条件 号=?'
  46.     !!检查错误e
  47.         
  48.     之后 = 删除命令执行id
  49.     !!检查错误e
  50.         
  51.     n = 之后受影响行数
  52.     !!检查错误e
  53.         
  54.     打印n
  55.     db关闭
  56. =
  57. 检查错误(e 错误之类)=
  58.     若e!=空
  59.         恐慌e
  60. =
Copy the Code
lzx1.png
这种技巧适用于有丰富经验的lzx代码写者(受不了go语言的错误检查机制了,每一行代码后面都要写一个错误处理)

我认为提高代码的可读性的核心是更提高代码的可视性,要看它的结构是否能清晰的展现,lzx正向着这个目标继续畅想.

我想这种语法已经可以战胜一般的英文编程语言了吧.
其实它还包含lisp的编程范式...
Reply View the author
electricface
deepin
2013-05-04 01:08
#51
有人受得了这样子的代码吗?
  1. 斐波纳契数()=
  2.     a,b 0,1
  3.     返回 F()=
  4.         a,b=b,a+b
  5.         返回b
  6.     =
  7. =
  8.    
  9. 入口 ()=
  10.     f 斐波那契数
  11.     i::10
  12.         打印f+' ',
  13.     ;i
  14. =
Copy the Code
Reply View the author
peaceman
deepin
2013-05-04 02:24
#52
lazarus开发一些小软件就很不错。又是跨平台的
Reply View the author
4***8@qq.com
deepin
2013-05-04 02:32
#53
lazarus开发一些小软件就很不错。又是跨平台的
在开源的世界里,pasca的使用者感觉比较少啊!
Reply View the author
electricface
deepin
2013-05-04 18:20
#54
  1. 入口{}=
  2.     fw OS创建'tar/lin_golang_src.tar.gz'
  3.     tw TAR写GZIP写fw
  4.     dir OS打开'file/'
  5.     fi : dir目录0
  6.         若fi是文件夹
  7.             重入fi
  8.                  
  9.         打印fi名
  10.         fr OS打开dir名/fi名
  11.         tw写头(TAR头 名~fi 大小~fi 模式~fi 修改时间~fi)
  12.         IO复制tw fr
  13.     ;fi
  14.     打印'tar.gz 终于完成'
  15. =   
Copy the Code

如果将go语言的错误处理隐藏,延迟文件关闭也自动添加,那go语言也可以简化成这个样子.思路可以很清晰.
对比C#最先进的IDE,纵使它的智能提示可以帮助你很快的输入方法名.但是如果你不熟悉方法名的拼写那也很麻烦,而汉语你不一样,你可以使用拼音输入法的简拼特性,拼一两个第一个汉字的拼音然后再拼后一个汉字的拼音.这是英文编程IDE的自动完成无法感应的,如果利用字母大小写来分割方法名,并且修改提示搜索算法也可以简单做到.lzx的这种优势也无足挂齿.

fw OS创建'
[fw][回车][空格][oschj]'   共10次击键

如果你用原版go语言,这么简单的代码,你肯定不需要使用到IDE的自动完成,所以你会直接敲
fw := OS.Create("")   共19次击键  + 8 次按住shift

一般情况下,按键越少,越不容易出错,也可以让手指稍微轻松一下.
而没有IDE的协助,没有自动完成,纯手工敲代码是非常累的.一个字母的大小写拼错了,编译器就会报错.

软件开发上大部分时间是在思考应该让电脑怎么去一步步地做(也许还需要自己手工一步步地去尝试),才能总结出高效的算法,
然后再将这些在你脑袋中的步骤转成代码,lzx可以利用你对中文的熟悉性(一般远高于英文)和汉语拼音(或者五笔)输入能力节省大家敲键盘的时间.让大家有更多的时间改善算法.
关于如何去思考算法,我实在是无能为力了.
Reply View the author
jhkwei
deepin
2013-05-04 19:08
#55
你知不知道,这样写程序很受罪,用汉字还不如用拼音。不过 LZ 可以去看看《计算机程序的构造和解释》之类的书,可以自己写一种语言出来。应该难又不难吧。简单的意思, 就是写个程序语言,自己写一个解释器去解释这种语言。
Reply View the author
electricface
deepin
2013-05-04 19:12
#56
你知不知道,这样写程序很受罪,用汉字还不如用拼音。不过 LZ 可以去看看《计算机程序的构造和解释》之类的书,可以自己写一种语言出来。应该难又不难吧。简单的意思, 就是写个程序语言,自己写一个解释器去解释这种语言。
我觉得用拼音不适合大规模的代码管理,用汉字去管理几千几万个方法或者类毫无压力.这就是汉语符号的魅力所在了.
Reply View the author
左心房的痛
deepin
2013-05-04 22:33
#57
易语言和VC++我都用过,VC++其实是更底层一点,而易语言把很多消息什么的都封装起来一切就非常简单了,这种架构上的区别不在今天的讨论范围。

中文的好处就是不用死记命令了,易语言的IDE做得比较好,所有的命令和函数都可以自动补全,下方还带有语法及参数说明,很多人会说用中文编程输入速度有问题,我建议你还是真正去用下易语言就明白了,所有的命令都是智能首拼字母识别的,比如return(C++)在易语言中只需要输入fh即可自动弹出补全列表让你选择“返回()"函数(易语言),中文编程实际上在录入上并不存在问题,很多没用过的人都在说录入这个问题~

对于计算机来讲,中文编程的意义并不是很大,因为无论你用什么语言最终还是要被编译为二进制码来执行,然而对于编程者来讲意义就是非常非常大的,无论你英文好与不好,只要你的母语是中文,那么你就不用刻意去死记复杂的命令(有时英文的缩写组合命令让你无语),如果你定义一个变量更容易从名字上知道变量的意义,现在的易语言虽然从形式和使用上来看更像是中文版的VB,但是对于使用者来讲,真的非常非常好用,只有体会过的人才知道,当然有些人会说操作系统本身的API函数都是英文的,不过易语言至少解决了一大部分命令难记忆的问题,而且易语言还可以通过封装将英文api翻译为中文函数名来使用~

综上所述:中文编程并不像有些人说得一无是处,尤其对于使用者来讲,意义还是很大的,易语言被很多非计算机专业的人士所喜爱和接受那也是有一定道理的,语言是编程上的一种障碍,易语言只是帮你突破语言上的障碍而已,这就好比英国人用英语写了首诗,我们中国人用中文写了首诗一样,都是艺术但表现形式不一样罢了,中文编程对于计算机来讲,差别不大,计算机只认二进制

以上字全为手动打,自己亲自切身使用的体会,当然我现在也在努力学习VC++,也在努力突破语言上的障碍,多学几种语言没坏处,我想说的是如果能中好的中文编程,那么会更好~
Reply View the author
electricface
deepin
2013-05-05 05:28
#58
  1. 入口{}=
  2.     若命令行参数# >1
  3.         树 命令行参数1 1 (diB 1?是)
  4. =
  5.          
  6. 树{目录名 s,当前层级 i, 需要竖 diB}=
  7.     jd  路径绝对的 目录名
  8.     fis  读目录jd
  9.          
  10.     i_fi : fis
  11.         `画竖线
  12.         j:1到当前层级-1
  13.             若 需要竖[j]
  14.                 打印'|',
  15.             _ 打印' ',
  16.                
  17.             打印3*' ',
  18.         ;j  
  19.          
  20.         需要竖线 := 需要竖 `复制一份
  21.         若 i!=fis#
  22.             打印'|',
  23.             需要竖线[当前层级]=是
  24.         _  `是尾部
  25.             打印' ',
  26.             需要竖线 $当前层级
  27.         ;若
  28.         打印'---',
  29.         打印fi名
  30.         若fi是文件夹
  31.             树jd/fi名 当前层级+1 需要竖线
  32.         ;若
  33.     ;i_fi
  34.     返回
  35. =
Copy the Code
Reply View the author
electricface
deepin
2013-05-06 05:09
#59
我真感觉我设计的lzx的文法可以极大提高初学者打代码的效率.只要不引起歧义,它就是最高效率的了.
用英文可以写出各种错误
而用lzx中文文法,基本写不出几个错误.(自我欣赏中)
Reply View the author
electricface
deepin
2013-05-07 19:40
#60
空两个格子表示继续上一行,
因为是以空格做区分的,所以可以跨很多行再来继续上上上上行的都行.空两个格子.png

如果IDE有这个特性会很给力的.
Reply View the author
3 / 4
To page