SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 11240|回复: 26
打印 上一主题 下一主题

强烈建议修改SAS语法,同意的请举手!

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-6-3 22:40:46 | 只看该作者

强烈建议修改SAS语法,同意的请举手!

1.abort<abend/return>改为return;
2.array array_example(n)改为array_example = new array[n]
3.将cards;
   a1
   b1
   c1
  .....
改为cards{a1,b1,c1},或{(a1,a2,..),(b1,b2,..),.....}或将cards去掉,全部改用n维数组。
4.delete 改成continue;
5.do/end改成{},即然它是括号的作用,为什么不用括号?
6.do while ...end改为while(条件){语句}
7.do i=0 to n ...end改为for(i=0,条件,i++){语句}
8.if ...then ...else改为if ... else
9.将format,informat去掉,采用标准数据类型的定义,如var_a $改为string var_a,int i,double j...
10.link/return 改为goto或干脆不要它。
11.select()... when()改为switch case
12.stop改为break;即然是终止此步,为什么不break?
13.将所有函数都改为方法形式,如index(name,"wang")改为name.index("wang"),再如, length(var_a)改为var_a.length();
14.put a= b=;这样的句子不要再出现,可以改为(不就是输出字符串吗?)
put "a="+a,"b="+b;

或者动大手术的话,把数据加工处理和数据分析分成两部分,SAS的分析功能的确很强大,它不是主要用来搞数据加工处理的,在这方面,更优秀的工具多的是.
所以建议把数据加工这一部分单独拿出来做,把数据分析的各种PROC都封装成标准函数.

SAS语法真是太憋足了,和它的GUI界面一样让人难受,label的click事件,估计你在标准的windows程序里很难找到,然而sas里比比皆是.估计它的内核从一诞生就没有真正重写过,sas的确是用Visual C++编译的,不过GUI太差了.估计还是和内核有关,再看看AF里的那些CLASS,作为一个应用层的软件,没有必要重写WINDOWS的标准类吧?也许SAS说它主要面向编程,可是看看它的IDE,是个什么样子,还敢叫IDE?数一数有多少非标准控件?要是很友好也可以,但是它简直就是DOS下图形编程的产物(这样可以省很多钱,不用重写代码).更可笑的是,用SAS命令行的人竟看不起用菜单的人,不知道这种人有多高明,纯粹是浪费自己的脑细胞.只要能到达目的地,可以坐车,坐飞机的话,为什么要跑步?WORD2000里也有VBA,你为什么不用它编辑文档,而非用菜单,工具栏呢?我学的时间不短了,从JAVA转到sas真是难受.而同样用VC++编译的spss却很不错.不知道为什么.我想了很久,才有点看法,SAS的GUI和语法就象俄语一样难学,难怪最初是俄国人开发的.SPSS就好的多了,应该不是俄国人做的吧?

以上只是我的一点看法,希望多提意见.如果SAS不改它的这些很BT的东西的话,我估计当SAS发展到计算机水平不是非常专业的统计专家难以驾驭的时候,就是SAS灭亡的时候.谁遵从标准,谁才有可能成为赢家.科技以人为本!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-6-4 00:40:09 | 只看该作者

hihi

hahaha, 我先要大笑几声!!!

我也郁闷了很长时间了。

我承认SAS的语法是有很多不当,或者说不够优化的地方,但是,你要让SAS公司翻个底朝天地重写一边,你也是程序员,该知道其复杂程度与投入成本,人家也是耗了20多年,几代程序员的心血积累。而且SAS涉及的领域这么多,要让多少人回来,把各自熟悉的那段重写一边?更何况先入为主,你不好不一定别人不好,有很多用惯的人说不定觉得很爽呢!

SAS有很多废弃的技术以及模块,比如Af。自9版本开始,SAS公司只提供对Af的技术支持,不再进行模块更新,把更多的精力放在对外数据接口的提供上,可见SAS公司也意识到了自己的薄弱之处。你应该更多关注SAS的优势技术,以及发展动向,而不是去否定那些SAS公司自身已意识并且已准备淘汰的功能和技术上。

我跟你真好相反。老实说过了SAS语言这一关,Java确实简单多了。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2004-6-4 15:35:35 | 只看该作者

support

嗯..proc step参照着R改吧,呵呵。
data step估计改起来困难些。
界面无所谓,有没有影响都不大,反正也不怎么用。
倒是希望win32版的sas也加上-stdio参数的支持,
这样,不用总是用batch方式。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2004-6-10 14:22:48 | 只看该作者

反对

[b:2cce7]sas的功能强大不仅仅是在数据分析上,同样在数据清洗方面也极其强大,当你面对几百个G的历史数据,那是十几年的积累,有各种各样的数据格式,存在着这样那样的数据错误,有人工录入的错误,由数据格式转换的错误,等等,好多对于用户都是未知的,随着我使用SAS的深入,我越来越欣赏SAS的DATA步语法,觉得它在作数据处理上比传统概念的编程语言要更方便。至于你说要把sas的过程步改为函数,我个人持反对意见,PROC所完成工作和带来的方便,函数的结构是很难取代的,比如,过程步中可以自顶返回那些统计量,什么格式,多少,顺序,如果使用函数的时候,你需要对函数进行多少次的重载?!对于各种控制的保留字,我也认为没有必要非得改成你所熟悉的语言风格,现在的编程语言并不只有JAVA和C系列, 在国内和国外,还有很多很多在使用其它语言的程序员,对于他们,是否会同意你的意见呢?每一种开发语言都有他们自身的特点,和他们所针对的领域,你如果只是需要SAS完成和其他编程语言相同的工作,那我劝您没有必要多花几十倍的代价去使用SAS。 对于af的开发,我个人同意你的观点,对于开发客户端,与其它公司强大的工具相比较,确实做得够烂,不过个人认为因为客户端的运行必须建立在Sas的基础上的,所以价格的原因使得它这块的市场很小,我想这可能也是SAS公司放弃在这上面投入的原因之一,至于本人,平时使用c#,和进行400上的程序开发[/b:2cce7]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2004-6-10 16:07:43 | 只看该作者

@~@

一套约定俗成的游戏规则. 有本事自己设计出一个现在比SAS好的软件出来.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2004-6-10 16:50:58 | 只看该作者

呵呵

同意genechina老兄的看法,还有一点是大家不要揪着老版本的AF不放了。其实对于sas公司本身AF与SCL也是准备放弃的模块。如果大家有机会接触sas的v9的话,会看到另一番天地。从v9可以看到,sas公司对于产品的态度是有翻天覆地的变化,以前技术是相对比较独立保守,很多都是自己来作,现在很多接口都已经公开,鼓励第三方厂商来作基于v9平台上的产品开发。如果大家对sas以及java都比较熟的话,真的可以大展拳脚。不管是客户端模式还是浏览器模式,现在都可以作很多以前想都没想过的工作。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2004-7-24 15:27:14 | 只看该作者

源于古老的编程技术

六七十年代进化到现在,也只能这样了!为什么SAS不用最新的软件技术重新开发,很多时候我觉得SAS使用起来比Excel差远了
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2004-8-2 17:04:09 | 只看该作者

sas

最近我在处理基因芯片的数据,本想用excel的宏来对基因排序,结果速度慢的如同死机,后我改为sas一秒钟都不要便可得到结果。我承认在操作上excel要方便很多,但从效率上,excel可差远了。至于说语法怪异,我倒不觉的,恐怕使用的不够深入,我仅仅用于数据处理base、stat、graph模块用的多些。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2004-8-2 21:12:46 | 只看该作者

同感

至少format名称只能是8个字母的规定要改.8个字母太少了,格式名称很大意义就是要说明格式是做什么的,8个字母根本不够,如果是字符型8个字母还不到,而且不能以数字结尾也不合理.STATA之类的好象都不是这么规定的.
而且,变量名称只能局限在下划线和数字字母好象也不够灵活.例如想表示为94-97,用SAS没法表示.另外,一个完整的IF/ELSE却需要多个分号似乎也不合理,不利于保证程序的可读性和逻辑清晰.变量之间用空格分割,好象很少有语言是这样规定的.至少和SAS自己的PROC SQL就自相矛盾.改语法不大可能,但感觉SAS从编程的角度看对用户不如其他一些分析语言友好.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2004-8-30 10:26:02 | 只看该作者

Re: 同感

[quote="smartie":1e9e8]至少format名称只能是8个字母的规定要改.8个字母太少了,格式名称很大意义就是要说明格式是做什么的,8个字母根本不够,如果是字符型8个字母还不到,而且不能以数字结尾也不合理.STATA之类的好象都不是这么规定的.
而且,变量名称只能局限在下划线和数字字母好象也不够灵活.例如想表示为94-97,用SAS没法表示.另外,一个完整的IF/ELSE却需要多个分号似乎也不合理,不利于保证程序的可读性和逻辑清晰.变量之间用空格分割,好象很少有语言是这样规定的.至少和SAS自己的PROC SQL就自相矛盾.改语法不大可能,但感觉SAS从编程的角度看对用户不如其他一些分析语言友好.[/quote:1e9e8]

就我所知:

1。format的问题在V9版本已经解决

2。SAS变量名,的确在DBMS数据和SAS数据交换会出现该问题,SAS在V8及以后版本增加了“SAS Name Literals”和一个VALIDVARNAME,部分地解决了这个问题。
运行以下程序:

[code:1e9e8]data test;
        '94-97'n ='value 94-97';
run;[/code:1e9e8]

然后在该程序之前设置options VALIDVARNAME=ANY;再运行上述程序。

XXXXXX
再说说其它:

语句修改影响面很广,将对SAS软件的版本之间的兼容性产生巨大的冲击。如果你是从SAS 早期版本,比如V5,用起,你可能就觉得这种修改所产生的巨大风险。

从市场上的角度来说,SAS的利润绝大多数来自老用户的续租,老用户的续租率据报道达98.x%。SAS公司没有理由不优先考虑版本的兼容性。

当然事情总是会随着条件的变化而改变的,随着SAS用户的行业、背景和市场份额的变化,SAS会有许多/已经有许多变化。拭目以待中

另外,有问题可直接发给SAS公司,他们专门有一拨人负责对用户提出的建议进行回复和考虑。suggest@sas.com , or <!-- e --><a href="mailto:suggestion@sas.com">mailto:suggestion@sas.com</a><!-- e --> (我不是很确认)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-9 22:39 , Processed in 0.071035 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表