[Feelings & Sharing] unilang : 看见这一堆 $ & ! 我就头疼
Tofloor
poster avatar
Barry-okx
Junior Packager
2022-09-25 00:40
Author

https://github.com/linuxdeepin/unilang/blob/master/demo/base-language/sort2.txt

unilang :

$def! data (list 2 3 13 11 5 1 14 6 16 8 10 9 15 7 12 4);

python :

data = [2, 3, 13, 11, 5, 1, 14, 6, 16, 8, 10, 9, 15, 7, 12, 4]

Reply Favorite View the author
All Replies
1 / 2
To page
c***u@126.com
deepin
2022-09-25 00:55
#1

彼此彼此,我看了一眼,放弃了!😂

Reply View the author
寂静的羽夏
deepin
2022-09-25 01:09
#2

确实,写起来太复杂了,可读性也比较差,C++11 写法都比这个简单。

doubt

Reply View the author
心平气和
deepin
2022-09-25 01:12
#3

同感。

Reply View the author
ThinkYoung
deepin
2022-09-25 03:22
#4
$defl! partition! (&lst i j pivot)
(
	$unless (eqv? i j)
	(
		$while ($and (not? (=? i j)) (

定义,循环,判断....啥语法都离不开个"$"

这绝对是很有钱途的语言,含钱量绝对超过js,php,赞!!!

blush

Reply View the author
方老四
deepin
2022-09-25 04:03
#5

用上层语言呀,大多是底层函数的别名,基础语言主要用于编写新特性的库函数。Unilang没有关键字,变量名是非数字开头的可打印字符串,限制较少,底层一切皆函数,包括各种运算操作符。上层语言把基础语言的前辍式函数转换为中辍式操作符,更符合人们的习惯。比如:+ A B,改成 A+B

def data ();

data := list 2 3 13 11 5 1 14 6 16 8 10 9 15 7 12 4;

Reply View the author
Barry-okx
Junior Packager
2022-09-25 05:13
#6
方老四

用上层语言呀,大多是底层函数的别名,基础语言主要用于编写新特性的库函数。Unilang没有关键字,变量名是非数字开头的可打印字符串,限制较少,底层一切皆函数,包括各种运算操作符。上层语言把基础语言的前辍式函数转换为中辍式操作符,更符合人们的习惯。比如:+ A B,改成 A+B

def data ();

data := list 2 3 13 11 5 1 14 6 16 8 10 9 15 7 12 4;

我解除的大部分语言都有关键字,不知道考虑啥要去掉关键字。

Reply View the author
Comments
方老四
2022-09-25 05:24
因为Unilang是一个全新的语言呀!
随风乘万里
deepin
2022-09-25 05:56
#7

这是参考lisp编程语言的!你如果学过lisp语言,一看就明了,还是先等它完善好核心库再用吧!我奇怪的是这语言的拓展名居然是用 txt,乍一看,还以是文本文件!我觉得unilang这语言的扩展名可以命名为 unl

Reply View the author
Comments
方老四
2022-09-25 18:02
赞同,建议正式发布的时候改一下
牧野
deepin
2022-09-25 06:01
#8

不在IDE,Ui编程框架上下功夫,这种脚本语言是个异数,现阶段注定不会有人学习使用它!莫废功夫了!

Reply View the author
楚天杳/淇伶泠-ictye
deepin
2022-09-25 06:01
#9
ThinkYoung
$defl! partition! (&lst i j pivot)
(
	$unless (eqv? i j)
	(
		$while ($and (not? (=? i j)) (

定义,循环,判断....啥语法都离不开个"$"

这绝对是很有钱途的语言,含钱量绝对超过js,php,赞!!!

blush

我还是喜欢c++多一些。。。。。。。。。

Reply View the author
安洛
deepin
2022-09-25 06:21
#10
牧野

不在IDE,Ui编程框架上下功夫,这种脚本语言是个异数,现阶段注定不会有人学习使用它!莫废功夫了!

开发ide和开发一门语言完全两码事……

Reply View the author
方老四
deepin
2022-09-25 19:37
#11

V23是基于Linux内核打造的根社区版本,必须要有区别于其他发行版的根技术才行,玲珑包、Unilang语言、DTK图形开发框架、IDE集成环境等,这些都实现了,才能名符其实。

Reply View the author
joo
deepin
2022-09-25 20:20
#12

我之前就评论过,我是perl恐惧症,一看到这么多 $ & ! 就使我想起了perl。

Reply View the author
joo
deepin
2022-09-25 20:34
#13
joo

我之前就评论过,我是perl恐惧症,一看到这么多 $ & ! 就使我想起了perl。

最重要是dart、swift和ts等新进语言都不约而同用 “!” “?” 处理非空变量,用 “$” 处理字符串内变量。

特别是:“!” “?” 用来处理非空变量,几乎成了不成文的约定,这会造成很多程序员阅读的困难(不要说开发),就等于“+”不是加,“*”不是乘,这回造成多大的困难,unilang是后来者,你必须考虑习惯的问题。

Reply View the author
joo
deepin
2022-09-25 21:02
#14
joo

最重要是dart、swift和ts等新进语言都不约而同用 “!” “?” 处理非空变量,用 “$” 处理字符串内变量。

特别是:“!” “?” 用来处理非空变量,几乎成了不成文的约定,这会造成很多程序员阅读的困难(不要说开发),就等于“+”不是加,“*”不是乘,这回造成多大的困难,unilang是后来者,你必须考虑习惯的问题。

还有我不明白函数体不用 “{” “}” 而是用 “(” “)”,这样阅读时函数体与表达式就不能清晰区分,这很明显架构师缺乏实战经验。

其实unilang作为新语言很多硬伤,一下子没时间说出自己的见解,比如:强调自己是动态语言,这个强调已显示架构师没有领会最新的语言开发思想,动态语言和静态语言是20年前的分类和设计思想,现在新进的开发语言已经没有动态语言和静态语言的区分,dart、ts、swift都同时支持动态语言和静态语言的特征,你习惯用动态语言就用动态语言的写法,你习惯用静态语言就用静态语言的写法,这些新进语言都不约而同想到一块,jit的vm用在开发测试,发布时编译成机器码直接执行,同时可以编译成js和WebAssembly(网络时代必须的),他们都一致想到一块,拥有类似python的动态灵活,C/C++的速度,以及无缝对接web开发。

Reply View the author
joo
deepin
2022-09-25 21:48
#15

dart也是参考很多lisp的,但dart的架构师知道,今天的软件工程代码行数规模已不是lisp发明那个年代的级别,需要注重工程的清晰(在lisp那个年代很多程序都是一个人完成的,现在几乎所有程序都是多人共同完成的,你需要阅读别人的代码,不要像perl那样自己写的代码自己都看不懂),工程的清晰包含两方面:1、语义的清晰,2、阅读的清晰,所以dart不会将自己弄成与lisp一样,所以dart在设计规范就说,会尽量避免多种含义模糊不清的陷阱,这对于现代动不动就几十万行代码的工程非常重要,比如:js三种等号的区别(=、==、===),还有perl的一种结果可以多种写法的宗教,都是反面教材。

Reply View the author
joo
deepin
2022-09-25 22:19
#16

拥有python的动态灵活,和C/C++的速度,以前的架构师的想法是打造一个超级jit runtime vm,让高级语言运行像低级语言一样快。java和.net是目前人类jit runtime vm的最高水平(不用怀疑,sun、ibm、微软、谷歌聘请了全球最顶级的专家、数学家和天才程序员,花了20几年打造),但java 和 .net的运行速度依然无法匹敌C/C++的速度,反而带来另外一个副作用,就是java 和 .net运行需要的内存是C/C++程序的10~300倍,平均统计都是50倍。

所以sun、ibm、微软、谷歌的专家、数学家和天才程序员在想,我为什么要一条路走到黑,代码一定要jit runtime vm执行呢?为什么不在保留可以通过jit runtime vm运行,同时可以编译成目标机器码执行,这样不是两全其美吗?所以这些公司才创建dart、ts、swift这些语言来适应新的行业需要,而不是为了新语言而创建新语言。

Reply View the author
joo
deepin
2022-09-25 22:23
#17
joo

拥有python的动态灵活,和C/C++的速度,以前的架构师的想法是打造一个超级jit runtime vm,让高级语言运行像低级语言一样快。java和.net是目前人类jit runtime vm的最高水平(不用怀疑,sun、ibm、微软、谷歌聘请了全球最顶级的专家、数学家和天才程序员,花了20几年打造),但java 和 .net的运行速度依然无法匹敌C/C++的速度,反而带来另外一个副作用,就是java 和 .net运行需要的内存是C/C++程序的10~300倍,平均统计都是50倍。

所以sun、ibm、微软、谷歌的专家、数学家和天才程序员在想,我为什么要一条路走到黑,代码一定要jit runtime vm执行呢?为什么不在保留可以通过jit runtime vm运行,同时可以编译成目标机器码执行,这样不是两全其美吗?所以这些公司才创建dart、ts、swift这些语言来适应新的行业需要,而不是为了新语言而创建新语言。

所以我在想,unilang会不会还没出生就已输在起跑线了呢?

Reply View the author
方老四
deepin
2022-09-26 00:59
#18

千万不要说哪个语言好,哪个语言不好,各有所长,也有各自的局限性。后出来的语言肯定要吸收前面语言的教训,Unilang的优势在于语言的可扩展性,同时引入了环境实体的概念。基础语言部分只提供基础的核心特性,扩展特性通过编写函数库来实现,用户甚至可以自己编写一套上层语言。Unilang的函数也比其他语言的函数概念更宽范,我认为表达式编程更易于学习和使用。

文档里面说了,待解释器稳定后,会出基于 LLVM 的多种后端的本机编译器,性能将会得到大幅度提升。

Unilang语言目前用于桌面应用的开发,将来会不会用于web和移动端的开发,不好说,拭目以待吧。

Reply View the author
星辰使者
deepin
2022-09-27 00:22
#19
方老四

用上层语言呀,大多是底层函数的别名,基础语言主要用于编写新特性的库函数。Unilang没有关键字,变量名是非数字开头的可打印字符串,限制较少,底层一切皆函数,包括各种运算操作符。上层语言把基础语言的前辍式函数转换为中辍式操作符,更符合人们的习惯。比如:+ A B,改成 A+B

def data ();

data := list 2 3 13 11 5 1 14 6 16 8 10 9 15 7 12 4;

没有关键字的语言是个什么神仙

Reply View the author
Comments
方老四
2022-09-27 02:04
比如,def用于定义一个变量,它不是语言层面的关键字,是底层函数$def!的一个别名。 $def! def $def! 就定义了一个别名def,功能与$def!一样。操作符在底层全是同名前辍函数,上层语言:A+B 底层语言转换成 + A B。“+”是函数名,A B是两个操作数。
joo
deepin
2022-09-27 05:32
#20
方老四

千万不要说哪个语言好,哪个语言不好,各有所长,也有各自的局限性。后出来的语言肯定要吸收前面语言的教训,Unilang的优势在于语言的可扩展性,同时引入了环境实体的概念。基础语言部分只提供基础的核心特性,扩展特性通过编写函数库来实现,用户甚至可以自己编写一套上层语言。Unilang的函数也比其他语言的函数概念更宽范,我认为表达式编程更易于学习和使用。

文档里面说了,待解释器稳定后,会出基于 LLVM 的多种后端的本机编译器,性能将会得到大幅度提升。

Unilang语言目前用于桌面应用的开发,将来会不会用于web和移动端的开发,不好说,拭目以待吧。

语言没有哪个好那个坏是对的,但,语言有用户数和流行度,热门的语言与冷门的语言在行业开发上区别太大了,一门开发语言如果不能进入流行度前20,基本上在企业开发领域可以宣布死刑,当然学院和研究室除外。

Reply View the author
1 / 2
To page