由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - J 语言 --最短的语言?
相关主题
Any one knows 'Q Programming Language'?这么多人讨论 FP, 大牛推荐门语言吧
C++ for Java programmer?总觉得python 用缩进定义逻辑block 这种思想很诡异
板上的高人们能给科普比较functional programming language么来看一个C#的职位是如何要求的
对scala很失望 (转载)FP内部比较: Haskell其实可以当脚本语言来用
我老给你们指条明路吧Scala又被鄙视了
抛砖引玉,来谈谈functional programming玩具语言其实很容易实现的
粉FP的人是因为把电脑想象成图灵机了Facebook’s New Spam-Killer Hints at the Future of Coding - Haskell
Python is easy and not easyF# surprisingly good啊
相关话题的讨论汇总
话题: paren话题: 语言话题: cmask话题: op话题: ea
进入Programming版参与讨论
1 (共1页)
r*g
发帖数: 3159
1
班上有没有玩过J语言的?有什么评论?
看底下这个算24,没有其它的能写得更短了吧?
http://rosettacode.org/wiki/24_game/Solve#J
perm=: (A.&i.~ !) 4
ops=: ' ',.'+-*%' {~ >,{i.each 4 4 4
cmask=: 1 + 0j1 * i.@{:@$@[ e. ]
left=: [ #!.'('~"1 cmask
right=: [ #!.')'~"1 cmask
paren=: 2 :'[: left&m right&n'
parens=: ], 0 paren 3, 0 paren 5, 2 paren 5, [: 0 paren 7 (0 paren 3)
all=: [: parens [:,/ ops ,@,."1/ perm { [:;":each
answer=: ({.@#~ 24 = ".)@all
w***g
发帖数: 5958
2
有人能看懂吗?

【在 r*g 的大作中提到】
: 班上有没有玩过J语言的?有什么评论?
: 看底下这个算24,没有其它的能写得更短了吧?
: http://rosettacode.org/wiki/24_game/Solve#J
: perm=: (A.&i.~ !) 4
: ops=: ' ',.'+-*%' {~ >,{i.each 4 4 4
: cmask=: 1 + 0j1 * i.@{:@$@[ e. ]
: left=: [ #!.'('~"1 cmask
: right=: [ #!.')'~"1 cmask
: paren=: 2 :'[: left&m right&n'
: parens=: ], 0 paren 3, 0 paren 5, 2 paren 5, [: 0 paren 7 (0 paren 3)

a9
发帖数: 21638
3
看不懂。。。。。

【在 w***g 的大作中提到】
: 有人能看懂吗?
a**e
发帖数: 64
4
这个程序一半都是标点符号。看着够累。
t****t
发帖数: 6806
5
我以为perl的标点符号已经很多了. 没想到...

【在 a**e 的大作中提到】
: 这个程序一半都是标点符号。看着够累。
r*g
发帖数: 3159
6
底下这个不算,原来质数是内置的。。。
算1e9 以内有多少个质数:
(p:inv) 1e9

【在 r*g 的大作中提到】
: 班上有没有玩过J语言的?有什么评论?
: 看底下这个算24,没有其它的能写得更短了吧?
: http://rosettacode.org/wiki/24_game/Solve#J
: perm=: (A.&i.~ !) 4
: ops=: ' ',.'+-*%' {~ >,{i.each 4 4 4
: cmask=: 1 + 0j1 * i.@{:@$@[ e. ]
: left=: [ #!.'('~"1 cmask
: right=: [ #!.')'~"1 cmask
: paren=: 2 :'[: left&m right&n'
: parens=: ], 0 paren 3, 0 paren 5, 2 paren 5, [: 0 paren 7 (0 paren 3)

d****n
发帖数: 1637
7
反人类啊,你留着好好用吧。
万一你老板要裁员,没人能整你的J语言,你就幸存了。
努力多写点J语言的应用,让后人无从下手,让老板抓耳挠腮。

【在 r*g 的大作中提到】
: 底下这个不算,原来质数是内置的。。。
: 算1e9 以内有多少个质数:
: (p:inv) 1e9

n******t
发帖数: 4406
8
玩过。。。
和K差不多,但是K肯定比这个短。

【在 r*g 的大作中提到】
: 班上有没有玩过J语言的?有什么评论?
: 看底下这个算24,没有其它的能写得更短了吧?
: http://rosettacode.org/wiki/24_game/Solve#J
: perm=: (A.&i.~ !) 4
: ops=: ' ',.'+-*%' {~ >,{i.each 4 4 4
: cmask=: 1 + 0j1 * i.@{:@$@[ e. ]
: left=: [ #!.'('~"1 cmask
: right=: [ #!.')'~"1 cmask
: paren=: 2 :'[: left&m right&n'
: parens=: ], 0 paren 3, 0 paren 5, 2 paren 5, [: 0 paren 7 (0 paren 3)

d**s
发帖数: 98
9
看不懂。

【在 a**e 的大作中提到】
: 这个程序一半都是标点符号。看着够累。
c*****m
发帖数: 1160
10
"write only program"?
相关主题
抛砖引玉,来谈谈functional programming这么多人讨论 FP, 大牛推荐门语言吧
粉FP的人是因为把电脑想象成图灵机了总觉得python 用缩进定义逻辑block 这种思想很诡异
Python is easy and not easy来看一个C#的职位是如何要求的
进入Programming版参与讨论
r*g
发帖数: 3159
11
评价如何?
纯粹浪费时间?挺有意思?
J语言的作者因为这个(前身ADL)拿了图灵奖,也不知除了这些toy problem, J到底有什
么优势。

【在 n******t 的大作中提到】
: 玩过。。。
: 和K差不多,但是K肯定比这个短。

n******t
发帖数: 4406
12
挺好的,我觉得functional programming language里面,这一类的设计可能
是最简洁和elegant的。而且速度也还挺快. 做统计也还不错,虽然没法利用多个core.
我觉得最大的优势是一旦你熟悉语法之后,写程序的速度,无人能比。哈哈。。。
可读性就看你愿意多简洁了,如果你多打几个字给那些匿名函数,
可读性只高会比别的程序高不低。

【在 r*g 的大作中提到】
: 评价如何?
: 纯粹浪费时间?挺有意思?
: J语言的作者因为这个(前身ADL)拿了图灵奖,也不知除了这些toy problem, J到底有什
: 么优势。

m********5
发帖数: 17667
13
我从来都觉得脑残才会追求语言最短...
code是拿来读的好不好

【在 r*g 的大作中提到】
: 班上有没有玩过J语言的?有什么评论?
: 看底下这个算24,没有其它的能写得更短了吧?
: http://rosettacode.org/wiki/24_game/Solve#J
: perm=: (A.&i.~ !) 4
: ops=: ' ',.'+-*%' {~ >,{i.each 4 4 4
: cmask=: 1 + 0j1 * i.@{:@$@[ e. ]
: left=: [ #!.'('~"1 cmask
: right=: [ #!.')'~"1 cmask
: paren=: 2 :'[: left&m right&n'
: parens=: ], 0 paren 3, 0 paren 5, 2 paren 5, [: 0 paren 7 (0 paren 3)

n******t
发帖数: 4406
14
这code非常好读,当你掌握了那几个关键词之后,比大部分C++/Java都好读。

【在 m********5 的大作中提到】
: 我从来都觉得脑残才会追求语言最短...
: code是拿来读的好不好

m********5
发帖数: 17667
15
有好的IDE你还在意多打几个字?!

core.

【在 n******t 的大作中提到】
: 挺好的,我觉得functional programming language里面,这一类的设计可能
: 是最简洁和elegant的。而且速度也还挺快. 做统计也还不错,虽然没法利用多个core.
: 我觉得最大的优势是一旦你熟悉语法之后,写程序的速度,无人能比。哈哈。。。
: 可读性就看你愿意多简洁了,如果你多打几个字给那些匿名函数,
: 可读性只高会比别的程序高不低。

n******t
发帖数: 4406
16
不是打字的问题。是思维变简单了。。。
就像递归一般比非递归的写法简单一个道理。

【在 m********5 的大作中提到】
: 有好的IDE你还在意多打几个字?!
:
: core.

g******w
发帖数: 78
17
不是matrix genius就别折腾了。我也研究过几天。后来有一次看Roger Hui的slides发
现他居然也混淆了两个相近但结果天差地远的语法,可能是无心之失,但也可见J语法
的古怪,我自问智商没他高,就毅然放弃了。当然不以使用为目的的浏览一下还是很长
见识的,我确实从中学习了不少。
a****e
发帖数: 9589
18
我觉得程序要是都这么写的话,我宁愿用电话机直接按0和1

【在 r*g 的大作中提到】
: 班上有没有玩过J语言的?有什么评论?
: 看底下这个算24,没有其它的能写得更短了吧?
: http://rosettacode.org/wiki/24_game/Solve#J
: perm=: (A.&i.~ !) 4
: ops=: ' ',.'+-*%' {~ >,{i.each 4 4 4
: cmask=: 1 + 0j1 * i.@{:@$@[ e. ]
: left=: [ #!.'('~"1 cmask
: right=: [ #!.')'~"1 cmask
: paren=: 2 :'[: left&m right&n'
: parens=: ], 0 paren 3, 0 paren 5, 2 paren 5, [: 0 paren 7 (0 paren 3)

t*****n
发帖数: 4908
19
实际工作中,coding的时间估计20%都不到。80%以上都在处理bug。容易懂的程序也容
易维护。

【在 n******t 的大作中提到】
: 不是打字的问题。是思维变简单了。。。
: 就像递归一般比非递归的写法简单一个道理。

n******t
发帖数: 4406
20
这是你写的code。

【在 t*****n 的大作中提到】
: 实际工作中,coding的时间估计20%都不到。80%以上都在处理bug。容易懂的程序也容
: 易维护。

相关主题
FP内部比较: Haskell其实可以当脚本语言来用Facebook’s New Spam-Killer Hints at the Future of Coding - Haskell
Scala又被鄙视了F# surprisingly good啊
玩具语言其实很容易实现的Duck typing is great ...
进入Programming版参与讨论
t****a
发帖数: 1212
21
不仔细看还以为是把某人的code给gzip了一下cat出来
不过这真是个好例子,语言本身的性能还真有个比较了... 大力鼓吹的Go也很长,
python也很长。
几种functional programming language: clojure, lisp, haskell, scala, R都很精
炼,果然是更适合用来做计算啊。
coffee script长得貌似FP语言。有哪位朋友有经验说说么?
t****a
发帖数: 1212
22
有个笑话说看java程序看了三页,发现它什么都没干。
是越来越不喜欢这种冗长的玩意了,跟在垃圾堆里找东西一样的感觉。

【在 m********5 的大作中提到】
: 有好的IDE你还在意多打几个字?!
:
: core.

z*******3
发帖数: 13709
23
所以结构是最重要的,要看三页才能弄懂是怎么回事的代码肯定不行
好代码光看类名就能知道作者在做什么

【在 t****a 的大作中提到】
: 有个笑话说看java程序看了三页,发现它什么都没干。
: 是越来越不喜欢这种冗长的玩意了,跟在垃圾堆里找东西一样的感觉。

t*****n
发帖数: 4908
24
你想说什么?实际情况就是这样的。从0开始开发的软件很难遇到。

【在 n******t 的大作中提到】
: 这是你写的code。
b***e
发帖数: 1419
25
I don't know who wrote the Haskell one on the wiki provided, but here's a
shorter one:
rec l@(x:[]) = [(a, e) | (a, e) <- l, a == 24]
rec l = [c |
(a, ea) <- l,
(b, eb) <- l `rm` (a, ea),
op <- ['+', '-', '*', '/'],
n <- [(r, pr ea op eb) | r <- cal a op b] ++
[(r, pr eb op ea) | r <- cal b op a],
c <- rec (n:(l `rm` (a, ea) `rm` (b, eb)))
]
with the following lib support:
rm [] x = []
rm (y:ys) x = if x == y then ys else y:(rm ys x)
pr ea op eb = "(" ++ ea ++ [op] ++ eb ++ ")"
cal a op b = case op of
'+' -> [a+b]
'-' -> [a-b]
'*' -> [a*b]
'/' -> if b == 0 then [] else [a/b]

【在 r*g 的大作中提到】
: 班上有没有玩过J语言的?有什么评论?
: 看底下这个算24,没有其它的能写得更短了吧?
: http://rosettacode.org/wiki/24_game/Solve#J
: perm=: (A.&i.~ !) 4
: ops=: ' ',.'+-*%' {~ >,{i.each 4 4 4
: cmask=: 1 + 0j1 * i.@{:@$@[ e. ]
: left=: [ #!.'('~"1 cmask
: right=: [ #!.')'~"1 cmask
: paren=: 2 :'[: left&m right&n'
: parens=: ], 0 paren 3, 0 paren 5, 2 paren 5, [: 0 paren 7 (0 paren 3)

t****a
发帖数: 1212
26
虽然不会写haskell但知道这个要顶

【在 b***e 的大作中提到】
: I don't know who wrote the Haskell one on the wiki provided, but here's a
: shorter one:
: rec l@(x:[]) = [(a, e) | (a, e) <- l, a == 24]
: rec l = [c |
: (a, ea) <- l,
: (b, eb) <- l `rm` (a, ea),
: op <- ['+', '-', '*', '/'],
: n <- [(r, pr ea op eb) | r <- cal a op b] ++
: [(r, pr eb op ea) | r <- cal b op a],
: c <- rec (n:(l `rm` (a, ea) `rm` (b, eb)))

g*****g
发帖数: 34805
27
关于语言简洁:
我老有一年维护一个Scala写的Server。代码简洁是简洁,经常一行代码把三件事情干
了。
出错的时候也一样,一个简单的错,知道是哪一行,不知道是因为三个的哪一个导致了
错误,只能挨个蒙。效率可想而知。
t****a
发帖数: 1212
28
在下愚见:
语言的发展趋势是从具体-》抽象,可以想象30年前一个汇编程序员在抱怨C的时候,
说:我老有一年维护一个C写的code。代码简洁是简洁,经常一行代码把三件事情干了
。出错的时候也一样,一个简单的错,知道是哪一行,不知道是因为三个的哪一个导致
了错误,只能挨个蒙。效率可想而知。
所以...当code简洁,更佳抽象后,必然是一行代码做更多的事情。如何让debug变的简
单,依赖于程序员的经验,新的debug方法和工具的开发。
同时,FP不是万能的。对某些任务而言FP可能更合适(比如科学计算),对另一些任务
至少目前它并不是很合适。

【在 g*****g 的大作中提到】
: 关于语言简洁:
: 我老有一年维护一个Scala写的Server。代码简洁是简洁,经常一行代码把三件事情干
: 了。
: 出错的时候也一样,一个简单的错,知道是哪一行,不知道是因为三个的哪一个导致了
: 错误,只能挨个蒙。效率可想而知。

g*****g
发帖数: 34805
29
如果是因为高度抽象引起的代码简洁,就如从汇编到C,你说得有道理。
我不认为FP的抽象高度高于OOP。FP跟OOP更像正交的两种编程方式。
写一些特定的逻辑,比如编译,FP很合适,在大多数时候,OOP更接近于现实世界的建
模。
FP的简洁通常是因为FP是动态语言而产生的,当然lamda expression也有所帮助。
诸如Groovy不是FP,也很简洁。动态语言简洁归简洁,有自身的缺点,这里我就不多说
了。

【在 t****a 的大作中提到】
: 在下愚见:
: 语言的发展趋势是从具体-》抽象,可以想象30年前一个汇编程序员在抱怨C的时候,
: 说:我老有一年维护一个C写的code。代码简洁是简洁,经常一行代码把三件事情干了
: 。出错的时候也一样,一个简单的错,知道是哪一行,不知道是因为三个的哪一个导致
: 了错误,只能挨个蒙。效率可想而知。
: 所以...当code简洁,更佳抽象后,必然是一行代码做更多的事情。如何让debug变的简
: 单,依赖于程序员的经验,新的debug方法和工具的开发。
: 同时,FP不是万能的。对某些任务而言FP可能更合适(比如科学计算),对另一些任务
: 至少目前它并不是很合适。

n*w
发帖数: 3393
30
强类型的ocaml/f#也相当的简洁。
相关主题
坑:这波fp scala 算是赢了吧C++ for Java programmer?
FP over head很高板上的高人们能给科普比较functional programming language么
Any one knows 'Q Programming Language'?对scala很失望 (转载)
进入Programming版参与讨论
r*g
发帖数: 3159
31
这个J高度抽象.它把常见逻辑结构抽象成了算符.那些奇怪符号,就像+-*/()的延伸. F#
/lisp/haskell,都没有这个奇怪.

【在 g*****g 的大作中提到】
: 如果是因为高度抽象引起的代码简洁,就如从汇编到C,你说得有道理。
: 我不认为FP的抽象高度高于OOP。FP跟OOP更像正交的两种编程方式。
: 写一些特定的逻辑,比如编译,FP很合适,在大多数时候,OOP更接近于现实世界的建
: 模。
: FP的简洁通常是因为FP是动态语言而产生的,当然lamda expression也有所帮助。
: 诸如Groovy不是FP,也很简洁。动态语言简洁归简洁,有自身的缺点,这里我就不多说
: 了。

i**c
发帖数: 753
32
APL

【在 r*g 的大作中提到】
: 评价如何?
: 纯粹浪费时间?挺有意思?
: J语言的作者因为这个(前身ADL)拿了图灵奖,也不知除了这些toy problem, J到底有什
: 么优势。

b***e
发帖数: 1419
33
什么叫动态语言?Dynamically typed language? Haskell, ML, Ocaml等都是
Statically typed languaged。整个FP发展的趋势也是以type theory为主(参见每年的
International conference of functional programming)。不懂的东西不要信口开河。

【在 g*****g 的大作中提到】
: 如果是因为高度抽象引起的代码简洁,就如从汇编到C,你说得有道理。
: 我不认为FP的抽象高度高于OOP。FP跟OOP更像正交的两种编程方式。
: 写一些特定的逻辑,比如编译,FP很合适,在大多数时候,OOP更接近于现实世界的建
: 模。
: FP的简洁通常是因为FP是动态语言而产生的,当然lamda expression也有所帮助。
: 诸如Groovy不是FP,也很简洁。动态语言简洁归简洁,有自身的缺点,这里我就不多说
: 了。

t****a
发帖数: 1212
34
确实FP!=动态
goodbug是java的大拿。他对动态语言是有些抵制的。他以前的帖子认为动态语言不过
“是一堆零散的script的组合”,很不stable,robust
静态语言的效率确实要高很多,不过,静态语言真的“不好玩”,它们不能交互编程..
.不能使用一些很高级的feature...写静态语言的时候会觉得语言真的很蠢
不懂type inference,它们好像使得静态语言聪明了一些

河。

【在 b***e 的大作中提到】
: 什么叫动态语言?Dynamically typed language? Haskell, ML, Ocaml等都是
: Statically typed languaged。整个FP发展的趋势也是以type theory为主(参见每年的
: International conference of functional programming)。不懂的东西不要信口开河。

g******y
发帖数: 1101
35
真正追求玩具语言的,大多都是搞系统的而非写软件的。
r********n
发帖数: 7441
36
有一种数学规划建模语言 GAMS, 除去变量等式定义行外,只要 2 + 1 行即可搞定
2 行用于定义等式,1 行求解 (打印全部解也很容易,再加2-3行循环即可)

【在 r*g 的大作中提到】
: 班上有没有玩过J语言的?有什么评论?
: 看底下这个算24,没有其它的能写得更短了吧?
: http://rosettacode.org/wiki/24_game/Solve#J
: perm=: (A.&i.~ !) 4
: ops=: ' ',.'+-*%' {~ >,{i.each 4 4 4
: cmask=: 1 + 0j1 * i.@{:@$@[ e. ]
: left=: [ #!.'('~"1 cmask
: right=: [ #!.')'~"1 cmask
: paren=: 2 :'[: left&m right&n'
: parens=: ], 0 paren 3, 0 paren 5, 2 paren 5, [: 0 paren 7 (0 paren 3)

r*g
发帖数: 3159
37
具体到算24,还能转化成优化问题求解?您能不能给具体写出来用gams?

【在 r********n 的大作中提到】
: 有一种数学规划建模语言 GAMS, 除去变量等式定义行外,只要 2 + 1 行即可搞定
: 2 行用于定义等式,1 行求解 (打印全部解也很容易,再加2-3行循环即可)

1 (共1页)
进入Programming版参与讨论
相关主题
F# surprisingly good啊我老给你们指条明路吧
Duck typing is great ...抛砖引玉,来谈谈functional programming
坑:这波fp scala 算是赢了吧粉FP的人是因为把电脑想象成图灵机了
FP over head很高Python is easy and not easy
Any one knows 'Q Programming Language'?这么多人讨论 FP, 大牛推荐门语言吧
C++ for Java programmer?总觉得python 用缩进定义逻辑block 这种思想很诡异
板上的高人们能给科普比较functional programming language么来看一个C#的职位是如何要求的
对scala很失望 (转载)FP内部比较: Haskell其实可以当脚本语言来用
相关话题的讨论汇总
话题: paren话题: 语言话题: cmask话题: op话题: ea