单片机什么时候会有中文的文字编程啊?
单片机什么时候会有中文的文字编程啊? 没有意义的东西 为什么总有人在幻想?我要你输入“如果”和IF 你更愿意输入哪一个? 我要你输入DJNZ R4,XXX 和 “减R4 跳转XXX”你愿意输入哪一个?用中文文字编程就是自找麻烦,我建议你去学易语言吧中文编程的 最好别有 去学易语言吧,论坛上发项目都有50块钱一个项目的 {:funk:}{:funk:}{:funk:}无意义 把他们全部define/typedef了,伪造成中文的 易语言就是中文的文字编程 虽然我英文也是一般般,但是我还是喜欢英文编程,更加简单,习惯,就那么几个关键字用中文反而麻烦~~ 不是中文的问题 而是输入法的问题。 因为拿诺贝尔奖的人没几个是懂中文的 这问题问得可爱啊,你可以先自己写个编译器,让计算机认识“如果”,“否则”等 我也有和楼主类似的想法。就像可以自编程速带显示屏的PLC 中文的容易看懂,只要学好语文就可以编程岂不更好。{:lol:}{:tongue:} 有,还真有,一般人他不知道,(*^__^*) 嘻嘻…… 用处不大吧????
关键字就那么几个字,没必要
如果变量和函数名称支持中文倒是不错的! 同意二楼 一共才26个英文字母,有多难么? 最佳创意奖 中文编程的唯一一点好处就是变量、常量、函数名名用中文容易看懂。
但是缺点多多,最大的麻烦就是输入法的切换。
其实MCU编程和易语言可比性不大,易语言的优势在于有很多的库可以直接调用,可MCU要的是效率,低资源占用,大多情况下是裸奔的连OS都不用何况去把那些大多数无用的的库函数集成进去。 编程语言倒是有一两种中文的,有个易语言还有个习语言 我在期待楼主能把这个想法变成现实。。。。。。。 我在期待楼主能把这个想法变成现实。。。。。。。 切换输入发我不觉得麻烦,多按一个按键而已 在此谢谢21楼的支持,还感谢18楼颁发的创意奖,我还想要奖品。{:smile:} 还是学习英语吧,本人的习惯,平时看资料,能看明原版英文的,就不会看翻译过来的中文.一个是可以提高自已的能力,另一个是,英文的资料才是最准确的. wszyjsw2 发表于 2012-5-3 13:36 static/image/common/back.gif
没有意义的东西 为什么总有人在幻想?我要你输入“如果”和IF 你更愿意输入哪一个? 我要你输入DJNZ R4, ...
你这么想因为你已经进入了英文编程语言的思维定势,如果使用中文作为编程语言,编程的思想就完全不一样了。比如说,有可能一个中文字代表一系列操作,或者说用于更高级的语言,一个程序一句话就完了(猜测)。
以前看过有个网页介绍很多特殊的编程语言的,有中文的,跟英文的编程方式完全不一样。并不是 if else for while 什么的 易语言~~~ 会编程序以后就不会想用中文的了。 成长的路上 发表于 2012-5-3 20:14 static/image/common/back.gif
中文的容易看懂,只要学好语文就可以编程岂不更好。
你在打瞌睡?编程是逻辑能力。难道还要分析主谓宾。 usingavr 发表于 2012-5-4 12:15 static/image/common/back.gif
你这么想因为你已经进入了英文编程语言的思维定势,如果使用中文作为编程语言,编程的思想就完全不一样了 ...
不妨介绍一下你看见的中文编程 拿现在我们所用的ASDFG方式的电脑键盘来说
当年就是为了避免把机械式英文打字机打坏了才搞得这么一套标准,就是让你打不了太快
如今你就是有本事一秒输入100个字符,键盘也坏不了。
可是键盘还是这样的排布,就连手机上的虚拟键盘就是这样子的. wszyjsw2 发表于 2012-5-4 12:53 static/image/common/back.gif
不妨介绍一下你看见的中文编程
找了一下,找到这个
----------------------------------------------
PerlYuYan
PerlYuYan语言是一个能令人使用中文文言文开发程式 Perl 程式的 Perl 模块,由唐凤于2002年一月发表。它是中文编程语言的尝试。作者利用中文的特质,将许多指令改成以一个中国汉字来表示,因而造成了文言语法的感觉。
看看下面的这段代码,相当的文言文啊。有兴趣可以去CPAN上下载回来玩玩。
#!/usr/local/bin/perl
use Lingua::Sinica::PerlYuYan;
用警兮用嚴。
印道
一至一
哉兮
印編曰雜申雜申矣
又纖曰龍鼠矣
又曰一矣
亂曰
國無人莫我知兮 又何懷乎故都
既莫足與為美政兮吾將從彭咸之所居
还有下面这个五言。
# The Sieve of Eratosthenes - 埃拉托斯芬篩法
use Lingua::Sinica::PerlYuYan;
用籌兮用嚴。井涸兮無礙
。印曰最高矣又道數然哉。
。截起吾純風賦小入大合。
。習予吾陣地並二至純風。
。當起段賦取加陣地合始。
。陣地賦篩始繫繫此雜段。
。終陣地兮印正道次標哉。
。輸空接段點列終註泰來。
还有很多其他的BT语言,参见
http://coolshell.cn/articles/4458.html
http://esolangs.org/wiki/Main_Page 因为计算机是老外发明的. usingavr 发表于 2012-5-4 13:23 static/image/common/back.gif
找了一下,找到这个
----------------------------------------------
PerlYuYan
繁体字 又是 诗词形式的 不便于他人理解 最好能够发明一套语言,比如要控制流水灯:
XX单片机:
你的工作是这样:首先点亮第一个灯,亮1秒钟之后熄灭,然后亮第二个灯,亮3秒钟后熄灭
重复这个过程,直到你跑不动为止 lengshuicha 发表于 2012-5-4 14:04 static/image/common/back.gif
最好能够发明一套语言,比如要控制流水灯:
XX单片机:
循环、再循环、到死循环 看来我以后要学机器语言了。 应该考虑语音编程。
坐电脑前说话就可以了,不用打字。 adcr 发表于 2012-5-4 13:08 static/image/common/back.gif
拿现在我们所用的ASDFG方式的电脑键盘来说
当年就是为了避免把机械式英文打字机打坏了才搞得这么一套标准, ...
歪一下楼:请搜一下Dvorak, Colemak等关键字
这是另外的一些键盘布局
Dvorak布局windows有内置支持,可以体验一下 adcr 发表于 2012-5-4 13:08 static/image/common/back.gif
拿现在我们所用的ASDFG方式的电脑键盘来说
当年就是为了避免把机械式英文打字机打坏了才搞得这么一套标准, ...
汗。。。{:funk:}
那个排列恰恰就是为了打字能快些才那样排列的。
排列的依据也是根据英文单词中字母使用频度来考虑的。 huayuliang 发表于 2012-5-4 15:33 static/image/common/back.gif
汗。。。
那个排列恰恰就是为了打字能快些才那样排列的。
不是为了快,而是为了减慢速度。
打字机当初发明的时候,键盘是按ABCD顺序排的
结果连续敲击相邻键时经常卡住,所以就把按键位置打散 huayuliang 发表于 2012-5-4 15:33 static/image/common/back.gif
汗。。。
那个排列恰恰就是为了打字能快些才那样排列的。
在几种说法中我觉得比较靠谱的是
为了“在不搞坏打字机的前提下”尽量提高打字速度 我设计了一个中文编程的语言,编译器基本完工了,下面是一段示例代码。如果真有人对这个感兴趣,我可以再详细介绍下。
**************************************************************************
电子琴程序
//注意,这个程序运行后没有界面,播放一遍音乐之后自动结束
ici cpu = ici cputype pc80x86 ici Wind 开始,
//加载windows内核类
import syslib.windows.kernel32,
//加载MIDI接口类
import syslib.windows_pack.midi,
link vdata code {} = ici Cloud code,
//=======================================
public void 开始()
{
//打开MIDI设备并设置当前音色为 "风铃" 10为风铃
midi open[],
midi set_timbre[ 0, 10 ],
//用当前音色播放一遍曲子,曲子一共有64个音符
反复执行 初始 i(N8) = 0,每次 i + 1,直到 i == 65,
//解码器
节拍(N16) = 乐曲 i >> 4,
节拍 * 200,
音阶(N8) = 62 + 音符表(乐曲 i & 0x0f),
//播放器
midi play[ 0, 音阶, 90 ],
kernel32 Sleep[ 节拍 ],
midi stop[ 0, 音阶 ],
...
//播放完成,退出程序
kernel32 ExitProcess[ 0 ],
}
//各个音的频率, 3-4 和 7-1 之间差一个半音,其他的相差一个全音
音符表() =
[
// 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7
0, 2, 4, 5, 7, 9,11, 12,14,16,17,19,21,23, 24,26,28,29,31,33,35
],
//《敖包相会》的曲子,每个字节的高位表示时值;低位表示音阶,0~f依次对应 67-1234567-1234567
乐曲() =
[
0x20,0x48,0x2a,0x2a,0x18,0x17,0x45,0x25,0x47,0x28,0x37,0x18,0x4a,0x88,
0x20,0x48,0x2a,0x2a,0x18,0x17,0x45,0x25,0x47,0x28,0x27,0x28,0x2a,0x18,0x17,0x85,
0x25,0x17,0x28,0x2a,0x25,0x24,0x23,0x20,0x44,0x24,0x23,0x34,0x15,0x28,0x27,0x85,
0x25,0x17,0x28,0x18,0x1a,0x25,0x24,0x23,0x20,0x34,0x17,0x25,0x25,0x23,0x13,0x10,0x24,0x23,0x80
],
******************************************************************
这是AVR流水灯的测试程序
ACI cpu = ACI cputype mega8 ACI Wind 启动,
导入 组件库 avr mega8 chip,
link 组件 芯片 {} = chip,
public void 启动()
{
芯片 DDRB = 0xff,
芯片 DDRD = 0xff,
反复执行
芯片 PORTB = 0xff,
芯片 PORTD = 0xff,
反复执行 8 次,
芯片 PORTB >> 1,
延时100MS[],
...
反复执行 8 次,
芯片 PORTD >> 1,
延时100MS[],
...
...
}
void 延时100MS()
{
反复执行 100 次,
反复执行 100 次,
...
...
}
********************************************************************
这是一个秒表程序
ACI cpu = ACI cputype mega16 ACI Wind 引擎 启动,
导入 组件库 avr mega16 chip,
引擎 显示屏 = 显示屏,
引擎 键盘 = 键盘,
键盘 芯片 = chip,
显示屏 芯片 = chip,
//==========================================
组件 引擎
{
public link 组件 显示屏 {}
public link 组件 键盘 {}
public void 启动()
{
键盘 初始化[],
显示屏 初始化[],
显示屏 清零[],
开始键之前状态(N1) = 1,
复位键之前状态(N1) = 1,
暂停(T) = true,
反复执行
//判断是否刚刚按下清零键
如果 键盘 复位键 == 0 && 复位键之前状态 == 1,
显示屏 清零[],
暂停 = true.
//判断是否刚刚按下开始/暂停键
如果 键盘 开始键 == 0 && 开始键之前状态 == 1, !暂停.
开始键之前状态 = 键盘 开始键,
复位键之前状态 = 键盘 复位键,
如果 !暂停, 显示屏 时间累加[].
显示屏 显示[],
...
}
}
//==========================================
组件 键盘
{
public link 组件 芯片 {}
public void 初始化()
{
开始键_DDR = 0,
复位键_DDR = 0,
}
public link 开始键(N1) = 芯片 PIND 7,
public link 开始键_DDR(N1) = 芯片 DDRD 7,
public link 复位键(N1) = 芯片 PIND 6,
public link 复位键_DDR(N1) = 芯片 DDRD 6,
}
//==========================================
组件 显示屏
{
public link 组件 芯片 {}
link 虚拟类型 code {} = ACI Cloud code,
public void 初始化()
{
port_dir = 0xff,
select_dir = 0xff,
}
public void 清零()
{
data0 = 0,
data1 = 0,
data2 = 0,
data3 = 0,
}
//改变显示数据,加1,满10进1
public void 时间累加()
{
data0 + 1,
如果 data0 != 10, 返回.
data0 = 0,
data1 + 1,
如果 data1 != 10, 返回.
data1 = 0,
data2 + 1,
如果 data2 != 10, 返回.
data2 = 0,
data3 + 1,
如果 data3 != 10, 返回.
data3 = 0,
}
public void 显示()
{
//显示小数位的数据
select = 0b0000_0000,
port = seg data0,
select = 0b0000_1000,
延时5ms[],
//显示个位数据,并消隐十位和百位的零
select = 0b0000_0000,
port = seg data1 & 0b0111_1111,
select = 0b0000_0100,
延时5ms[],
如果 data2 == 0 && data3 == 0,
延时5ms[],
延时5ms[],
select = 0b0000_0000,
返回.
//显示十位数据,并消隐百位的零
select = 0b0000_0000,
port = seg data2,
select = 0b0000_0010,
延时5ms[],
如果 data3 == 0,
延时5ms[],
select = 0b0000_0000,
返回.
//显示百位数据
select = 0b0000_0000,
port = seg data3,
select = 0b0000_0001,
延时5ms[],
select = 0b0000_0000,
}
void 延时5ms()
{
反复执行 10 次,
反复执行 100 次,
...
...
}
//全局变量定义
data0(N8),
data1(N8),
data2(N8),
data3(N8),
//数码管字形表
seg() =
[
0b1100_0000, 0b1111_1001, 0b1010_0100, 0b1011_0000, 0b1001_1001,//0,1,2,3,4
0b1001_0010, 0b1000_0010, 0b1111_1000, 0b1000_0000, 0b1001_0000 //5,6,7,8,9
],
//数据端口
link port(N8) = 芯片 PORTA,
link port_dir(N8) = 芯片 DDRA,
link select(N8) = 芯片 PORTB,
link select_dir(N8) = 芯片 DDRB,
}
如果能通过国家自然科学基金项目支持,有人做 非编码式语言遇上计算机的悲哀
页:
[1]