Redian新闻
>
为什么说Javascript 是披着C 外衣的Lisp?
avatar
为什么说Javascript 是披着C 外衣的Lisp?# Programming - 葵花宝典
K*l
1
【 以下文字转载自 Texas 讨论区 】
发信人: Kewell (二表), 信区: Texas
标 题: 帮父母征个飞友
发信站: BBS 未名空间站 (Fri Sep 14 16:25:06 2012, 美东)
有没有12月初PVG飞IAH的童鞋
方便的话带父母过一下海关和转机,可以提供适当的报酬
休斯顿地区的话我会去接机,顺道送你回家
机票还没定,有那位方便帮一下忙...
要是真不行只能飞去中转城市接了
avatar
d*n
2
【 以下文字转载自 Money 讨论区 】
发信人: dragonrn (dragonrn), 信区: Money
标 题: 跟Ally的客服讨论关于5年CD提前取出的penalty
发信站: BBS 未名空间站 (Sun Jun 29 10:14:51 2014, 美东)
刚跟Ally的客服讨论,5年的CD,在5年内不管什么时候取钱,罚款都是1.6%*150/
365,如果刚存进去还没有利息就要取,就从本金里扣罚款。也就是说,150天之内取出
来,就要赔钱。满一年的时候取出来,就相当于0.94%,跟一年的CD 0.95%差不多了
。而且不能像BOA那样取一部分,要取只能close整个帐户。
所以要确保一年以上不用这笔钱,才能选择存5年的CD,对吧?
Barclay的罚款情况大家了解么,网站上只说会有penalty,没说有多少。
Ally现在是5年1.6, Barclay是2.25, 为什么大家讨论Ally更多呢?
avatar
s*1
3
情况比较特殊:
妈妈也是绿卡(爸爸没有) 但去年在美国待的时间没有到30天,所以貌似可以填某表
就不用交税了是吗?
本人绿卡 还在大学读书,今年第一年填税表。平时也就campus job所以收入也不多(
低于3000)。求教是可以填1040-EZ还是要填1040?
还是照网上说的把我作为dependent写到我妈妈的税表里面比较划算?
谢谢谢谢!!!
btw 因为第一次填税表 如果实在搞不清楚了 大家有没有推荐的华人会计师我可以咨询
的?
avatar
r*n
4
因为是最近结婚的,婚姻状况发生了改变,H1B一方(大学任教)在国内探亲正准备去
上海签证,因为另一方(F1,现在美国)不知道这种情况有什么需要特别注意和准备的
吗?
担心的原因是,H1B一方140已经批了,移民倾向是黑纸白字的,但是另一方是F1,原则是不允许有移民倾向的,所以有点担心
多谢,包子答谢
avatar
a*a
5
算顶级Z V T了,5场表演赛
avatar
X*I
6
avatar
p*2
7
到了该澄清一下的时候了。
披着C 外衣,我信。但是为什么是Lisp呢?
avatar
w*t
8
你这种情况根本不算特殊。你可以选dependent,填1040ez,由于你的收入低,可以申
请fafsa,如果申请work study,work study的钱不算正常收入.新移民第一年申请
financial aid是最容易的。
avatar
i*n
9
要签证的是H1又不是F1,你担心个啥

则是不允许有移民倾向的,所以有点担心

【在 r********n 的大作中提到】
: 因为是最近结婚的,婚姻状况发生了改变,H1B一方(大学任教)在国内探亲正准备去
: 上海签证,因为另一方(F1,现在美国)不知道这种情况有什么需要特别注意和准备的
: 吗?
: 担心的原因是,H1B一方140已经批了,移民倾向是黑纸白字的,但是另一方是F1,原则是不允许有移民倾向的,所以有点担心
: 多谢,包子答谢

avatar
e*n
10
挡住风扇会变热。:(

【在 X*****I 的大作中提到】

avatar
m*l
11
functional

【在 p*****2 的大作中提到】
: 到了该澄清一下的时候了。
: 披着C 外衣,我信。但是为什么是Lisp呢?

avatar
S*I
12
有绿卡的,在美国一天没呆也得交税
如果你妈收入较高,你算你妈的dependent更合算

【在 s*********1 的大作中提到】
: 情况比较特殊:
: 妈妈也是绿卡(爸爸没有) 但去年在美国待的时间没有到30天,所以貌似可以填某表
: 就不用交税了是吗?
: 本人绿卡 还在大学读书,今年第一年填税表。平时也就campus job所以收入也不多(
: 低于3000)。求教是可以填1040-EZ还是要填1040?
: 还是照网上说的把我作为dependent写到我妈妈的税表里面比较划算?
: 谢谢谢谢!!!
: btw 因为第一次填税表 如果实在搞不清楚了 大家有没有推荐的华人会计师我可以咨询
: 的?

avatar
r*n
13
担心签证官问及另一方F1将来毕业后的打算,不知道如何回答好,怕回答不好引出麻烦来
请问如何回答比较好啊,急!

【在 i*n 的大作中提到】
: 要签证的是H1又不是F1,你担心个啥
:
: 则是不允许有移民倾向的,所以有点担心

avatar
n*T
14
刚在weiphone看到这个帖子
LZ是本人还是转帖?
avatar
c*o
15
dynamic functional with a little oo
avatar
s*1
16
我妈妈人在国内那税表部分应该怎么填?(关于W2的那部分) 她在国内的收入没有很高 换算成美元的话
最多不超过2W吧
所以ls和lss的建议就是我把我自己写成我妈妈的dependent然后两个人一起填?恩我已
经申了FA了
谢谢!
avatar
t*u
17
那需要不需要告诉你,你看看我博客怎么写的签证官移民侵想的定义(从签证官工作手
册上翻译的)

则是不允许有移民倾向的,所以有点担心

【在 r********n 的大作中提到】
: 因为是最近结婚的,婚姻状况发生了改变,H1B一方(大学任教)在国内探亲正准备去
: 上海签证,因为另一方(F1,现在美国)不知道这种情况有什么需要特别注意和准备的
: 吗?
: 担心的原因是,H1B一方140已经批了,移民倾向是黑纸白字的,但是另一方是F1,原则是不允许有移民倾向的,所以有点担心
: 多谢,包子答谢

avatar
v*3
18
双面交贴的
avatar
p*2
19

functional就是lisp吗?

【在 m*******l 的大作中提到】
: functional
avatar
r*n
20
多谢,我去看看
能否给个链接,一下子没找到

【在 t*****u 的大作中提到】
: 那需要不需要告诉你,你看看我博客怎么写的签证官移民侵想的定义(从签证官工作手
: 册上翻译的)
:
: 则是不允许有移民倾向的,所以有点担心

avatar
p*2
21

什么叫dynamic functional? 就是dynamic + functional吗?Ruby算吗?
LISP的a little OO是怎么体现的呀?
我觉得LISP最有特点的是code is data,这个我在JS上没看到呀。今天想了半天也没明
白这两个语言怎么像。要说functional的语言可多了。

【在 c******o 的大作中提到】
: dynamic functional with a little oo
avatar
t*u
22
美国从来也没说过有移民申请的不能签非移民签证(特别是旅游,商务签证)临时去美
国。 根据签证官工作手册B签证的部分有详细说明,只要申请人能够证明此次去美国的
目的不是赖着那里不走,等着移民被批,就可以批准非移民签证。
连有移民申请的都能拿B2,你们那算什么

【在 r********n 的大作中提到】
: 多谢,我去看看
: 能否给个链接,一下子没找到

avatar
f*3
23
如果非要说这个的话,js有eval

【在 p*****2 的大作中提到】
:
: 什么叫dynamic functional? 就是dynamic + functional吗?Ruby算吗?
: LISP的a little OO是怎么体现的呀?
: 我觉得LISP最有特点的是code is data,这个我在JS上没看到呀。今天想了半天也没明
: 白这两个语言怎么像。要说functional的语言可多了。

avatar
r*n
24
还是不确定,如果签证官问题起来,“你配偶F1毕业后的计划是什么?”
该如何作答?是不是应该按照回(中)国计划来回答,那样不是很容易被引起怀疑,因
为H1B反签一方自己的140都批了;还是说老实回答,打算F1毕业后在美国找工作,或者
说不确定
到底如何回答这个问题好啊,google了半天,居然没有类似的例子,怎么可能,头疼死
avatar
p*2
25

eval只能处理string吧?

【在 f**********3 的大作中提到】
: 如果非要说这个的话,js有eval
avatar
m*h
26
是什么就答什么
没问题

【在 r********n 的大作中提到】
: 还是不确定,如果签证官问题起来,“你配偶F1毕业后的计划是什么?”
: 该如何作答?是不是应该按照回(中)国计划来回答,那样不是很容易被引起怀疑,因
: 为H1B反签一方自己的140都批了;还是说老实回答,打算F1毕业后在美国找工作,或者
: 说不确定
: 到底如何回答这个问题好啊,google了半天,居然没有类似的例子,怎么可能,头疼死
: 了

avatar
f*3
27
code = string = data...

【在 p*****2 的大作中提到】
:
: eval只能处理string吧?

avatar
t*u
28
签证官不会问的
你这是屁大点的问题,让你们弄的跟天大问题似的。
我一个绿卡排期都到了的人,还天天拿着B2晃来晃去,你们这些人都有什么好担心的
你们这些人呀,净瞎担心。

【在 r********n 的大作中提到】
: 还是不确定,如果签证官问题起来,“你配偶F1毕业后的计划是什么?”
: 该如何作答?是不是应该按照回(中)国计划来回答,那样不是很容易被引起怀疑,因
: 为H1B反签一方自己的140都批了;还是说老实回答,打算F1毕业后在美国找工作,或者
: 说不确定
: 到底如何回答这个问题好啊,google了半天,居然没有类似的例子,怎么可能,头疼死
: 了

avatar
p*2
29

lisp的data是list吧?

【在 f**********3 的大作中提到】
: code = string = data...
avatar
f*3
30
是的,我只是说js里也可以data=code而已... 如果硬要说js和lisp像的话

【在 p*****2 的大作中提到】
:
: lisp的data是list吧?

avatar
p*2
32

我觉得不是一回事。JS里至少data应该是JSON。你能把函数和JSON互相转换吗?

【在 f**********3 的大作中提到】
: 是的,我只是说js里也可以data=code而已... 如果硬要说js和lisp像的话
avatar
c*9
33
Lisp也可以处理JSON吧。JS data不一定是JSON吧。
觉得Lisp比Javascript更容易一层层composition。

【在 p*****2 的大作中提到】
:
: 我觉得不是一回事。JS里至少data应该是JSON。你能把函数和JSON互相转换吗?

avatar
n*w
34
lisp数据代码用同一个notation。js不是。
avatar
p*2
35

那你觉得JS data是什么?就是String?

【在 c*******9 的大作中提到】
: Lisp也可以处理JSON吧。JS data不一定是JSON吧。
: 觉得Lisp比Javascript更容易一层层composition。

avatar
c*9
36
data可以多种什么数组之类,String也比较常用吧。

【在 p*****2 的大作中提到】
:
: 那你觉得JS data是什么?就是String?

avatar
c*9
37
嗯。这个notation是容易相互嵌套组合的关键。

【在 n*w 的大作中提到】
: lisp数据代码用同一个notation。js不是。
avatar
p*2
38

LISP也有string呀。

【在 c*******9 的大作中提到】
: data可以多种什么数组之类,String也比较常用吧。
avatar
f*3
39
lisp的reference是有结构的,js的string是没结构的,当然也可以parse。lisp和js当
然是不同的。只不过js有code=data这种“feature”而已。data的形式当然不一样。而
且js和lisp的差别有何至于此。至于说"js是披着c外衣的lisp”这句话,我并不认同。
还是应该看看提出这个观点的人怎么说。理论上说,所有图灵完备的语言都是等价的,
还是应该看看作者提出这个观点的context是什么才有意义。
至于说json和函数转换,json就是string,
json {"code": "1+3"} lisp '(+ 1 3)
json {"int": "1"} lisp '1
parse一下,把string eval了
lisp对reference也是parse string,只不过build in了而已。reference无非就是也是
一个string,不过同时有信息说我的内容(type)是“代码”。而且前缀表达式使得很
多形式都统一了,比较方便而已。
【 在 peking2 (clojure) 的大作中提到: 】
avatar
p*2
40

有eval的语言太多了吧?为什么只有JS说自己是LISP?
另外LISP里的list是functional language最基本的数据结构,这个JS里根本就没有。
你说的String真的不算什么数据结构,算是数据类型吧。如果有个eval就可以说自己
code=data的话,那可是太多语言有这个特点了。

【在 f**********3 的大作中提到】
: lisp的reference是有结构的,js的string是没结构的,当然也可以parse。lisp和js当
: 然是不同的。只不过js有code=data这种“feature”而已。data的形式当然不一样。而
: 且js和lisp的差别有何至于此。至于说"js是披着c外衣的lisp”这句话,我并不认同。
: 还是应该看看提出这个观点的人怎么说。理论上说,所有图灵完备的语言都是等价的,
: 还是应该看看作者提出这个观点的context是什么才有意义。
: 至于说json和函数转换,json就是string,
: json {"code": "1+3"} lisp '(+ 1 3)
: json {"int": "1"} lisp '1
: parse一下,把string eval了
: lisp对reference也是parse string,只不过build in了而已。reference无非就是也是

avatar
p*2
41
Google了一下,就看到下边这段模棱两可的context。
Lisp in C's Clothing
JavaScript's C-like syntax, including curly braces and the clunky for
statement, makes it appear to be an ordinary procedural language. This is
misleading because JavaScript has more in common with functional languages
like Lisp or Scheme than with C or Java. It has arrays instead of lists and
objects instead of property lists. Functions are first class. It has
closures. You get lambdas without having to balance all those parens.
avatar
p*2
42
按照王垠的说法,貌似也就是lambda, JS跟Lisp搭边吧?可是支持lambda的语言也很
多呀。难道JS是第二个支持lambda的语言吗?
Lisp 的语法是世界上最精炼,最美观,也是语法分析起来最高效的语法。这是 Lisp
独一无二的,其他语言都没有的优点。有些人喜欢设计看起来很炫的语法,其实都是自
找麻烦。为什么这么说呢,请参考这篇《谈语法》。
Lisp 是第一个可以在程序的任何位置定义函数,并且可以把函数作为值传递的语言。
这样的设计使得它的表达能力非常强大。这种理念被 Python,JavaScript,Ruby 等语
言所借鉴。
Lisp 有世界上最强大的宏系统(macro system)。这种宏系统的表达力几乎达到了理
论所允许的极限。如果你只见过 C 语言的“宏”,那我可以告诉你它是完全没法跟
Lisp 的宏系统相提并论的。
Lisp 是世界上第一个使用垃圾回收(garbage collection)的语言。这种超前的理念
,后来被 Java,C# 等语言借鉴。
avatar
e*o
43
https://gist.github.com/ayosec/3121940

【在 p*****2 的大作中提到】
: 按照王垠的说法,貌似也就是lambda, JS跟Lisp搭边吧?可是支持lambda的语言也很
: 多呀。难道JS是第二个支持lambda的语言吗?
: Lisp 的语法是世界上最精炼,最美观,也是语法分析起来最高效的语法。这是 Lisp
: 独一无二的,其他语言都没有的优点。有些人喜欢设计看起来很炫的语法,其实都是自
: 找麻烦。为什么这么说呢,请参考这篇《谈语法》。
: Lisp 是第一个可以在程序的任何位置定义函数,并且可以把函数作为值传递的语言。
: 这样的设计使得它的表达能力非常强大。这种理念被 Python,JavaScript,Ruby 等语
: 言所借鉴。
: Lisp 有世界上最强大的宏系统(macro system)。这种宏系统的表达力几乎达到了理
: 论所允许的极限。如果你只见过 C 语言的“宏”,那我可以告诉你它是完全没法跟

avatar
e*o
45
讲的是 macro 的牛逼之处。
javascript,perl 与lisp的距离是一样的啊。

【在 p*****2 的大作中提到】
:
: 没看到有提javascript

avatar
p*2
46

是。回头好好研究一下。macro确实还没好好领悟呢。

【在 e*******o 的大作中提到】
: 讲的是 macro 的牛逼之处。
: javascript,perl 与lisp的距离是一样的啊。

avatar
e*o
47
我觉得macro 这个东西是过度抽象,牛逼的程序员可以自己玩。大家一起玩,还是java
好。哈哈。

【在 p*****2 的大作中提到】
:
: 是。回头好好研究一下。macro确实还没好好领悟呢。

avatar
p*2
48

java
macro和monad比哪个更抽象呀?还是差不多?java确实是大众语言,就是罗嗦了,写起
来不如python, ruby什么的有意思。

【在 e*******o 的大作中提到】
: 我觉得macro 这个东西是过度抽象,牛逼的程序员可以自己玩。大家一起玩,还是java
: 好。哈哈。

avatar
c*9
49
LISP方便把代码quote 成string,处理后在反向quote成代码。js怎么做到这点?

【在 p*****2 的大作中提到】
:
: java
: macro和monad比哪个更抽象呀?还是差不多?java确实是大众语言,就是罗嗦了,写起
: 来不如python, ruby什么的有意思。

avatar
c*9
50
对没有相关数学基础的人来说monad确实抽象了些。不过不认同王垠对monad的批判,照
他的说法,什么语音都不用封装,直接全局变量岂不是更方便。

【在 p*****2 的大作中提到】
:
: java
: macro和monad比哪个更抽象呀?还是差不多?java确实是大众语言,就是罗嗦了,写起
: 来不如python, ruby什么的有意思。

avatar
m*t
51
Javascript只是被承认是FP,重来没有被承认是Lisp或者scheme,在wikipedia上JS和
Ruby, Python等一票属于被Lisp影响的语言。
http://en.wikipedia.org/wiki/Lisp_%28programming_language%29
我个人认为能否被认为是否Lisp的关键是下面这句:
The interchangeability of code and data also gives Lisp its instantly
recognizable syntax. All program code is written as s-expressions, or
parenthesized lists.
这条在Javascript是不成立的,JS的改版CoffeeScript也不是。但是ClojureScript是
可以的。

and

【在 p*****2 的大作中提到】
: Google了一下,就看到下边这段模棱两可的context。
: Lisp in C's Clothing
: JavaScript's C-like syntax, including curly braces and the clunky for
: statement, makes it appear to be an ordinary procedural language. This is
: misleading because JavaScript has more in common with functional languages
: like Lisp or Scheme than with C or Java. It has arrays instead of lists and
: objects instead of property lists. Functions are first class. It has
: closures. You get lambdas without having to balance all those parens.

avatar
e*o
52
monad 抽象。
macro 理念好理解,但是写起来,和看别人写的,比较蛋疼。

【在 p*****2 的大作中提到】
:
: java
: macro和monad比哪个更抽象呀?还是差不多?java确实是大众语言,就是罗嗦了,写起
: 来不如python, ruby什么的有意思。

avatar
b*e
53
Lisp's expressiveness power is the strongest among the programming languages
. It is so close to lambda calculus such that everything and anything can
be encoded. JS is almost like that, where the only counter part that is not
found is the powerful macro system. "eval" is in fact very weak as
compared to macros. Not everything can be serialized and put in a string
that fits eval. If you turn to the help of variables in eval, then you lose
static binding. Not even mentioning the possibility of nested macros, e.g.
code generation in code generation, in Lisp.

and

【在 p*****2 的大作中提到】
: Google了一下,就看到下边这段模棱两可的context。
: Lisp in C's Clothing
: JavaScript's C-like syntax, including curly braces and the clunky for
: statement, makes it appear to be an ordinary procedural language. This is
: misleading because JavaScript has more in common with functional languages
: like Lisp or Scheme than with C or Java. It has arrays instead of lists and
: objects instead of property lists. Functions are first class. It has
: closures. You get lambdas without having to balance all those parens.

avatar
p*2
54

这个是我觉得最靠谱的。跟我理解类似 。

【在 m******t 的大作中提到】
: Javascript只是被承认是FP,重来没有被承认是Lisp或者scheme,在wikipedia上JS和
: Ruby, Python等一票属于被Lisp影响的语言。
: http://en.wikipedia.org/wiki/Lisp_%28programming_language%29
: 我个人认为能否被认为是否Lisp的关键是下面这句:
: The interchangeability of code and data also gives Lisp its instantly
: recognizable syntax. All program code is written as s-expressions, or
: parenthesized lists.
: 这条在Javascript是不成立的,JS的改版CoffeeScript也不是。但是ClojureScript是
: 可以的。
:

avatar
c*9
55
Macro虽强,但不是Lisp的最突出特征,很多语言都有很强的macro系统。lisp还是强在
s表达式的扩展性,也让eval在lisp中更有用。和macro比哪个更有用不好说,但楖念上
lisp的eval更完美。code生成code生成code用eval也能做到吧。

languages
not
lose
g.

【在 b***e 的大作中提到】
: Lisp's expressiveness power is the strongest among the programming languages
: . It is so close to lambda calculus such that everything and anything can
: be encoded. JS is almost like that, where the only counter part that is not
: found is the powerful macro system. "eval" is in fact very weak as
: compared to macros. Not everything can be serialized and put in a string
: that fits eval. If you turn to the help of variables in eval, then you lose
: static binding. Not even mentioning the possibility of nested macros, e.g.
: code generation in code generation, in Lisp.
:
: and

avatar
c*9
56
更外你说说什么可执行语句不能引用为string。

languages
not
lose
g.

【在 b***e 的大作中提到】
: Lisp's expressiveness power is the strongest among the programming languages
: . It is so close to lambda calculus such that everything and anything can
: be encoded. JS is almost like that, where the only counter part that is not
: found is the powerful macro system. "eval" is in fact very weak as
: compared to macros. Not everything can be serialized and put in a string
: that fits eval. If you turn to the help of variables in eval, then you lose
: static binding. Not even mentioning the possibility of nested macros, e.g.
: code generation in code generation, in Lisp.
:
: and

avatar
c*9
57
更外你说说什么可执行语句不能引用为string。

languages
not
lose
g.

【在 b***e 的大作中提到】
: Lisp's expressiveness power is the strongest among the programming languages
: . It is so close to lambda calculus such that everything and anything can
: be encoded. JS is almost like that, where the only counter part that is not
: found is the powerful macro system. "eval" is in fact very weak as
: compared to macros. Not everything can be serialized and put in a string
: that fits eval. If you turn to the help of variables in eval, then you lose
: static binding. Not even mentioning the possibility of nested macros, e.g.
: code generation in code generation, in Lisp.
:
: and

avatar
b*e
58
For instance, you want to generate code:
var f = ...;
var code = "f (1)";
Then at some other point you want to call:
eval(code);
You lose the static binding of f at the call point. Variable f will be
evaluated in the dynamic context at call point.
In general, it is difficult to inline a non serializable value, such as a
function closure in to "code", which is just string in JS.

【在 c*******9 的大作中提到】
: 更外你说说什么可执行语句不能引用为string。
:
: languages
: not
: lose
: g.

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。