v1.0, by Liigo, 20170912.

原创链接:http://blog.csdn.net/liigo/article/details/77964660

写在前面

火山安卓开发平台”娃娃#2”版于2017年8月3日发布,作者吴涛。我针对此测试版本给作者提了一点意见和建议,并得到吴总亲自答复。征得吴总同意后连同意见和回复一并发布。文中以红色文字突出标示吴总回复文本。

火山软件开发平台(voldev.net):是一种目的硬件设备无关、目的软件环境无关、易学易用实用、完全本地化的软件快速开发平台,目前已经实现了【火山安卓软件开发平台】和【火山游戏软件开发平台】两个子平台,更多适用于其它设备和环境的子平台软件正在开发中。

火山软件开发平台是火山编程语言、火山开发库、火山IDE的集成。

关于源代码文件存储格式

建议用纯文本的源文件,不建议用二进制私有格式的源文件。

吴总回复:企业版本会提供此功能,就是考虑到企业开发团队协作较多.

二进制格式源文件有以下缺点:

  • 一旦损坏不易恢复,哪怕坏一个字节也可能导致整个文件打不开,损失惨重。无论以前的.e还是现在的.v都有文件损坏的先例,给用户较大的心理负担。
  • 不能很好的适应GIT/SVN这类版本管理系统,无法通过对比观察前后变动部分,给源码管理、协同开发、代码评审制造阻力。

可以做一些市场调查看看有多少企业用户能够接受以上缺点。

纯文本格式源文件没有这些缺点:

  • 即使文件局部损坏,不影响未损坏部分
  • 对比历史版本,可以看到修改、删除、增加的每一行代码,方便管理、协同、评审

如果切实需要存储某些二进制数据,可考虑在项目cache目录内生成辅助存储文件。

是否采用纯文本格式存储,和是否采用表格式展示,两者是不矛盾的。因为前者是存储,后者是形式,理应彼此相对隔离。

关于表格式源码展示形式

我基本赞同用表格式源码展示形式,也可以接受传统的文本展示格式。

表格式的优点是形象、直观,无需记忆繁琐的语法。

表格式的缺点是,需要从头开发编辑器,是一个很大的开发负担。可以看一下现在针对程序员的纯文本编辑器,如 VSCode, Atom, Sublime Text, EmEditor,已经十分先进了,各种方便的、人性化的特性,层出不穷。作为对比,易语言IDE中的文本编辑部分,仅仅是具有最基本的编辑功能。

在流程控制语句块的内部,缩进摆放定义局部变量的子表格;缩进层次不同,子表格左边缘位置也不同。这种做法严重挑战用户体验。像在屏幕不同位置贴满膏药,那画面太美。其实只需要简单的一行代码var v = 1;就能基本满足最常见需求;其他需求还是放到顶部变量表中解决。

吴总回复:这个地方估计是没有习惯的地方,不能前面用表格,后面用var定义,两者需要保持一致.需要考虑到火山的目标用户群体仍然不是专业程序员,表格可以减少关键字记忆量,是必不可少的.

关于目标平台API

最好能支持直接调用Android平台API,次选项是自动生成调用接口。

人工封装接口应视为锦上添花行为,做更高层次的优化的接口设计。

前期依赖(官方的和第三方的)大量人工的机械的封装的接口,这条路估计会漫长而曲折。

吴总回复:考虑到火山的用户群体,接口封装是必不可少的,好在现在这方面的免费资源很多,到时候直接拿过来封装就行了.火山同样提供了直接在程序中调用目标语言的语句.

Kotlin Scala那样既可无缝调用Java API,又能封装上层接口,是较好方案。

封装的API接口应准确而详细的返回错误信息。避免像易语言那样多数时候仅仅返回,调用者知道调用失败了,却不知道究竟错在哪里,更无法做针对性修正。

关于开发环境

这里说的是开发火山平台所用的开发环境。

推测现在采用的开发环境:VC++ 2013, MFC v12, Java 1.6。可能还用到某些类似COM的技术,如插件接口处。

吴总回复:开始开发前考虑了很久,之所以选用vs,主要还是因为以下原因:
1.目前最主要的工作前端操作系统还是windows;
2.对于windows界面组件的细节我了解得比较多,选用vs能够快速进入开发状态而且避免出现意外;
3.使用的是我自己定义的跨平台com接口技术,这种技术不依赖windows,也就是说,不会出现类似易语言绑定在windows和mfc的情况;
4.插件基本没有用mfc,全部使用的是我自己的跨平台类库;
5.如果需要修改为跨平台版本,只需要修改ide的界面部分即可.

这些都比较旧了。就像当年的VC6 + MFC6一样的旧,易语言用了它之后就一直是VC6 + MFC6,未能与时俱进。

而且不能跨平台。

组织团队开发火山的话,建议选择比较新的、大众化的、跨平台的技术,例如QT 5(做界面是非常专业的),或者也可以考虑基于Electron(配备一个熟悉前端的同事,用HTML/CSS/JS做界面应该是很方便的,做各种效果都方便,例子有Atom/VsCode等)。如此利于招聘新同事。

关于其他

火山语言滥用@符号的现象十分严重,用户体验差

吴总回复:哈哈,我也是尽量避免使用多个不同的符号增加记忆量,再说了这个符号也就是L层用户使用,对于主要的H级用户,基本接触不到.

@成了万金油,不同场景随处用,符号本身没有语义,可读性不好,我都被搞糊涂了。建议仔细设计现有每一处用到@的地方,尽量彻底消除@,实在不行用关键字也好一些。

关于嵌套的Java代码块,我第一感觉是采用如下写法:

` ` `java

System.out.println(“”);

` ` `

因为这是 Markdown 语法中嵌套代码块的标准写法,应用十分广泛,多数程序员都熟悉。而且扩展性良好,天然的支持其他非Java语言代码(java->other)。

另外易友提议的如下写法,我认为也挺好:

@java {System.out.println("");
}

吴总回复:这个功能正在实现中

每行Java代码前面都加@的话,需要依赖IDE自动添加(复制进来)和去除(复制出去)@的功能,且需要用户执行额外的操作(非普通的Ctrl+C/V)。

在嵌套的Java代码内使用火山名称,可采用类似如下语法:

<变量:变量1>
<全名:类1>

如果考虑支持泛型的话,<>可能需要换成别的符号(如果不换是否可行)。

如果取消“字面字符串”的话,在属性表里,是否可以减少对@的使用呢。

对于@安卓.窗口.布局这类属性名称,可否与语言类型系统相结合,如视之为包.包.文本常量包.包.常量类

项目文件格式

我打开.vsln .vprj后第一感是,哦,用了自己发明的轮子格式,没用市面上通行的国际标准格式。后来看到属性表等处也用了这种格式,多处通用,比INI表达力强,比JSON简洁,也挺好。唯一缺点就是花括号嵌套太多了,如果支持数组应该能好点。

吴总回复:我也想过用json或xml什么的,但是总是感觉有一些地方不能满足我的需求,就使用了我自己的类库里面的一个格式,其实这个格式还有很多功能支持,只不过没展示出来.

其他的其他

  • 属性表里大量的转义字符(\" \n)导致可读性差,可考虑在单元格里以紧凑模式显示

    吴总回复:这个估计有些难,毕竟空间有限,目前的解决方案是单击一个按钮弹出一个对话框全部显示.

  • 火山IDE和文档中大量使用斜体汉字,不宜识读,用户体验差,应避免之(我以为全国人民都知道呢)

    吴总回复:抽时间整理一下

  • 火山IDE错误输出栏未使用等宽字体,导致错误指示符^指向错误的地方

    吴总回复:实际上,基本90%的错误都被我自己的编译器拦截了,剩下未被拦截被javac识别出来的错误,由于涉及到符号文本转换(目标符号名(“rg_xxx”)到源程序符号名),转换后基本对齐也是无望,所以只能是参考.

  • 火山语言应尽量支持闭包和泛型这两个功能,意义重大(但不急迫)

    吴总回复:闭包够呛,泛型正在开发中.
    Liigo回复:如果能够二选一,我宁愿先选闭包(clousre)。这是可以改变代码书写方法的特性。当然听到即将支持泛型我还是很开心,然而GO同学可能并不开心。

  • 按下F7编译哪个项目设定不明确:当前前台打开的文件可能同时隶属于多个项目(例如android_controls.v

    吴总回复:F7编译当前项目
    Liigo回复:然而“当前项目”的设定也不明确(我已证实不是“活动项目”)。

  • 生成Java代码应符合约定俗成的规范,如package名称全部小写,方法前添加必要的空行,方法内部末尾无需多余的空行

  • 生成Java代码时不应消除注释,反而应保留原有注释,并额外生成必要的注释
  • 生成的Java名称前加rg_前缀看着怪怪的(也不符合命名规范),最好是没有这类前缀
  • 系统翻译成JiTong也是无语(多音字的问题要怎么解决)

    吴总回复:生成的java代码目前主要保证能够被javac编译通过,阅读性在以后增强.
    添加”rg_”是为了确保不会出现名称冲突,因为用户可以自行定义输出名.

  • 多个按钮都触发同一个按钮_被单击事件方法,这样真的好么,耦合更多

    吴总回复:为了支持挂接动态生成的组件的事件,基本没得选择…


吴总回复:最后: 其实如果仅仅针对java平台,可以做得更好一些,但是需要考虑到以后的其它目标平台,尤其是c,很多地方不得不做出一些放弃.

吴总回复:感谢你提出的建议!

给火山安卓软件开发平台娃娃#2版提点意见相关推荐

  1. 基于原生开发的全新中文安卓应用开发平台

    VcnStudio基于原生开发的全新中文安卓应用开发平台 简介 新版特征 界面预览 后记 简介 VcnStudio 全称为Visual Chinese Studio:是一款依照现有的开发语言进行扩展使 ...

  2. 苹果手机软件升级密码_免编程软件开发平台,可视化手机软件开发

    在移动互联网时代,企业营销及创业赚钱自然离不开手机app软件.众多企业及创业者都想开发一款自己的手机app.但是,经历过手机软件开发的都知道,手机软件开发是一件非常不容易的事情. app手机软件开发除 ...

  3. ubuntu14.04如何在线安装eclipse以及C/C++开发组件,搭建软件开发平台

    在ubuntu14.04操作系统中进行C/C++软件开发,需要安装eclipse以及CDT等各种组件,下载安装包一一安装,之后再进行各种配置可能比较麻烦,在这里推荐一种在线安装方式,安装配置较为方便. ...

  4. HiSDP —— 高效的C++软件开发平台

    目前阿里集团每天有近1000PB的数据是通过LogAgent采集的,为了让LogAgent做到资源占用节省和高效采集,背后是基于HiSDP去构建的. 缘由 当决定采用C++编程语言去开发一个软件时,紧 ...

  5. 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 文章汇总及学习指南...

    一.AgileEAS.NET平台简介 AgileEAS.NET平台是一套应用系统快速开发平台,用于帮助中小软件开发商快速构建自己的企业信息管理类开发团队,以达到节省开发成本.缩短开发时间,快速适应市场 ...

  6. 移动开发:给安卓软件开发初学者简单的教程

    如果你想学习安卓软件开发,还是个初学者,可以在网上找到很多的安卓教程和学习材料,眼花缭乱的初学者教程和进阶教程,如果您看到这篇文章就不要错过,简直是初学者的福音. 考虑到有如此多的信息你又是初学者,所 ...

  7. 软件开发平台流辰信息如何为客户分忧解难?

    在数字化信息越来越丰富的今天,作为软件开发平台服务商,流辰信息如何为客户提质增产.降本增效?又凭什么为客户分忧解难,创造更大的价值? 一.以产品研发及创新为动力,夯实发展根基 俗语云:真金不怕火炼.是 ...

  8. 大学为什么选择学习安卓软件开发?

    大一大二期间,学校开了许多英语.数学课,觉得总要学点实用的技术,不能虚度时光,当时有四个可选项: 安卓 ios,当时用的联想笔记本电脑也装不了黑苹果系统,所以不能进行ios开发. web 前端,当时觉 ...

  9. 选择软件开发平台,“快速开发”是关键

    一.快速开发平台 传统代码级开发成本越来越高,软件的功能升级跟不上市场的变化,客户的满意度越来越低.造这方面的原因是多方面,最重要是人力成本大幅上升和企业对软件的要求越来越高,通用的软件产品已无法满足 ...

  10. 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 4

    前文: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 3 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The E ...

最新文章

  1. nprogress.js 头部进度条使用方法
  2. [转载]vs2008下安装boost
  3. 阿里云 超级码力在线编程大赛初赛 第2场 题目1. 三角魔法
  4. 深入探索PowerPivot客户端和服务器端架构
  5. caffe(4):mnist实例---手写数字识别
  6. c语言上机+pdf,c语言上机题库.pdf
  7. 2018最新私塾在线高级java软件架构师实战培训
  8. 为什么onenote一直在加载_【完美解决】11.OneNote中英文字体不统一,微软10多年未解决的Bug!...
  9. 云熙板式家具设计拆单
  10. 机甲大师s1 python编程_机甲大师RoboMaster S1教育机器人- DJI 大疆创新
  11. 批量创建文件夹 在批量创建的文件夹下创建两个子文件夹
  12. 怎样用微信与电脑连接服务器,怎么使用WebSocket进行微信小程序远程控制电脑屏幕?...
  13. 移动硬盘linux双系统,在移动硬盘安装Linux(Ubuntu)双系统
  14. C++程序设计技巧 NVI(Non-Virtual Interface )
  15. 上市公司环境污染数据大全 2000-2020年上市公司(区分行业、重污染)环境污染数据 环境信息披露EDI 环保投资环境绩效环境排放数据
  16. iOS 面试基础题目
  17. ABP VNext学习日记22
  18. 嵌入式软件学习问题汇总(一)什么是嵌入式?
  19. php实用教程第3版郑阿奇课后答案_PHP实用教程(第3版)
  20. C语言fopen函数的用法,C语言打开文件详解

热门文章

  1. 查看显卡显存_选购显卡必须知道的五大参数及分类推荐购买显卡
  2. 修改android_server默认调试端口号来反调试
  3. 实时操作系统与通用操作系统的一些比较
  4. 基于python的贴吧舆情监控助手实战
  5. Echarts+Vue地图
  6. 【考研数学】视频,你喜欢看哪位老师?
  7. vision画流程图的软件_这个可以代替Visio的流程图绘制软件,你值得拥有,还有网页版的~...
  8. java用那个软件编,java编译软件 编写java程序用什么软件?
  9. 简单的小说阅读网站JavaWeb项目
  10. python基础--语句