SAS中文论坛

标题: 强烈建议修改SAS语法,同意的请举手! [打印本页]

作者: shiyiming    时间: 2004-6-3 22:40
标题: 强烈建议修改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灭亡的时候.谁遵从标准,谁才有可能成为赢家.科技以人为本!
作者: shiyiming    时间: 2004-6-4 00:40
标题: hihi
hahaha, 我先要大笑几声!!!

我也郁闷了很长时间了。

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

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

我跟你真好相反。老实说过了SAS语言这一关,Java确实简单多了。
作者: shiyiming    时间: 2004-6-4 15:35
标题: support
嗯..proc step参照着R改吧,呵呵。
data step估计改起来困难些。
界面无所谓,有没有影响都不大,反正也不怎么用。
倒是希望win32版的sas也加上-stdio参数的支持,
这样,不用总是用batch方式。
作者: shiyiming    时间: 2004-6-10 14:22
标题: 反对
[b:2cce7]sas的功能强大不仅仅是在数据分析上,同样在数据清洗方面也极其强大,当你面对几百个G的历史数据,那是十几年的积累,有各种各样的数据格式,存在着这样那样的数据错误,有人工录入的错误,由数据格式转换的错误,等等,好多对于用户都是未知的,随着我使用SAS的深入,我越来越欣赏SAS的DATA步语法,觉得它在作数据处理上比传统概念的编程语言要更方便。至于你说要把sas的过程步改为函数,我个人持反对意见,PROC所完成工作和带来的方便,函数的结构是很难取代的,比如,过程步中可以自顶返回那些统计量,什么格式,多少,顺序,如果使用函数的时候,你需要对函数进行多少次的重载?!对于各种控制的保留字,我也认为没有必要非得改成你所熟悉的语言风格,现在的编程语言并不只有JAVA和C系列, 在国内和国外,还有很多很多在使用其它语言的程序员,对于他们,是否会同意你的意见呢?每一种开发语言都有他们自身的特点,和他们所针对的领域,你如果只是需要SAS完成和其他编程语言相同的工作,那我劝您没有必要多花几十倍的代价去使用SAS。 对于af的开发,我个人同意你的观点,对于开发客户端,与其它公司强大的工具相比较,确实做得够烂,不过个人认为因为客户端的运行必须建立在Sas的基础上的,所以价格的原因使得它这块的市场很小,我想这可能也是SAS公司放弃在这上面投入的原因之一,至于本人,平时使用c#,和进行400上的程序开发[/b:2cce7]
作者: shiyiming    时间: 2004-6-10 16:07
标题: @~@
一套约定俗成的游戏规则. 有本事自己设计出一个现在比SAS好的软件出来.
作者: shiyiming    时间: 2004-6-10 16:50
标题: 呵呵
同意genechina老兄的看法,还有一点是大家不要揪着老版本的AF不放了。其实对于sas公司本身AF与SCL也是准备放弃的模块。如果大家有机会接触sas的v9的话,会看到另一番天地。从v9可以看到,sas公司对于产品的态度是有翻天覆地的变化,以前技术是相对比较独立保守,很多都是自己来作,现在很多接口都已经公开,鼓励第三方厂商来作基于v9平台上的产品开发。如果大家对sas以及java都比较熟的话,真的可以大展拳脚。不管是客户端模式还是浏览器模式,现在都可以作很多以前想都没想过的工作。
作者: shiyiming    时间: 2004-7-24 15:27
标题: 源于古老的编程技术
六七十年代进化到现在,也只能这样了!为什么SAS不用最新的软件技术重新开发,很多时候我觉得SAS使用起来比Excel差远了
作者: shiyiming    时间: 2004-8-2 17:04
标题: sas
最近我在处理基因芯片的数据,本想用excel的宏来对基因排序,结果速度慢的如同死机,后我改为sas一秒钟都不要便可得到结果。我承认在操作上excel要方便很多,但从效率上,excel可差远了。至于说语法怪异,我倒不觉的,恐怕使用的不够深入,我仅仅用于数据处理base、stat、graph模块用的多些。
作者: shiyiming    时间: 2004-8-2 21:12
标题: 同感
至少format名称只能是8个字母的规定要改.8个字母太少了,格式名称很大意义就是要说明格式是做什么的,8个字母根本不够,如果是字符型8个字母还不到,而且不能以数字结尾也不合理.STATA之类的好象都不是这么规定的.
而且,变量名称只能局限在下划线和数字字母好象也不够灵活.例如想表示为94-97,用SAS没法表示.另外,一个完整的IF/ELSE却需要多个分号似乎也不合理,不利于保证程序的可读性和逻辑清晰.变量之间用空格分割,好象很少有语言是这样规定的.至少和SAS自己的PROC SQL就自相矛盾.改语法不大可能,但感觉SAS从编程的角度看对用户不如其他一些分析语言友好.
作者: shiyiming    时间: 2004-8-30 10:26
标题: 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 --> (我不是很确认)
作者: shiyiming    时间: 2004-9-1 19:00
标题: 需要改的太多了
作为统计软件市场的龙头老大,SAS现在不是哪一部分人的产品,它属于世界。
到今天,SAS有开发人员的努力,更是市场的需求。
对于习惯微软产品的人来说,SAS有许多不足,需要很大的改变,而这恰恰是SAS的特色。方便和功能有时是矛盾的!
因此,不论是从技术的角度,还是市场的角度,我都不赞成修改SAS的语法。但可以随着技术的改进做某些不伤核心的修改(比如变量的长度等)。
如有不同观点,可以相互探讨!
作者: shiyiming    时间: 2004-9-10 20:24
标题: 有改语法的必要
是啊,我觉得sas的语法是有些蹩脚,与现在的编程语言习惯有很大的差别
作者: shiyiming    时间: 2004-10-13 18:00
标题: 为什么一定要有主题,你们看不出来吗?
sas语法是应该改,不过该改的东西都不在你列出的范围内。
你的什么select 改成switch这种说法都是无理取闹。只是表示你熟悉c语言的关键字而已
index(name,"wang")改为name.index("wang"),这种说法更是好笑。
sas现在又不是面象类和对象的语言.有必要用这种方式来满足你的兽欲吗?
再说了,name也只是个字符串,也不算什么类吧.
我认为sas应该改的是字符串后面自动生成空格
任意长度空格和空字符都要计且只计1个长度的这些太'出众'
的特点.处理字符串的连接太麻烦了.
还有宏语句中的字符串加不加引号,宏变量要加&这些用起来好象指针变量的
outstanded but not outstanding的东西.
作者: shiyiming    时间: 2004-11-22 14:17
标题: 废话!
如果因为sas语言不符合你的习惯就全部修改,那未免太没有道理了,以前我们有学习过很多种计算机语言,它们都有写共同的地方,也有自己的优势,当然,只有强大的产品才能一直使用至今,sas产品在未来在扩展性上会更加强大,直到有一天不需要编程就可以实现复杂的数据分析工作。
作者: shiyiming    时间: 2005-1-11 17:50
标题: v9里面支持数据仓库和olap_server的工具是什么呢?
我下载的v9只能单机操作系统使用,不能在nt上安装,如果重点用数据仓库功能,不知道v9具有哪些方面的优势?
作者: shiyiming    时间: 2005-3-30 11:39
标题: 习惯就好了
SAS 语言为做数据分析的人提供了极大的灵活性。
用它开发数据库应用软件的话,用VC、VB干什么?
作者: shiyiming    时间: 2005-5-30 18:33
标题: :)
其实如果你同时做过SAS的ETL项目和使用其它数据库的ETL项目,就会发现sas的语法真是可爱,简洁的语言,高效的处理,是其它数据语言无法比拟的。
作者: shiyiming    时间: 2005-5-31 10:28
标题: to ALL
不怕不识货,就怕货比货。
作者: shiyiming    时间: 2005-9-2 08:42
标题: 补必要
sas 有些地方确实让人蹩脚。但毫无疑问你提出了很多,一看就是外行人提出的错误。
我先说我支持你的几点:
       1。数据入录,我觉得改成矩阵,是一个很好的建议。不改成,至少支持矩阵格式也是不错的。毕竟很多数学软件都是矩阵格式,而且矩阵在理解,及应用,在包括他说具有的完备的理论,这都是可行的。
       2。界面,也许确实可以变一变,毕竟多样化是市场的需求。至少他可以给一个大的灵活性,有用者自己去调试。
反对点: 你所说的语法问题,简直就是在扯蛋,现在sas语法的灵活性给编程者很大的自由度了。编程者给予思想,计算机去计算,这种模式  还需要怎么改。要不要你什么都不要干,就在那对着计算机喊。

加补一点:我认为sas在对汉字的支持上还需要提高,完全靠label 来完成是件很费时间的事情。
sas的重点是数据的处理,分析。

本人是统计学专业毕业,完全非计算机专业的,其他的编程语言基本上都听不懂。  sas开发的出发点就是针对数学家大量的数据处理。
作者: shiyiming    时间: 2005-9-7 22:01
标题: 我只说,我喜欢sas,因为sas给了我更加广泛的想象空间!
我只说,我喜欢sas,因为sas给了我更加广泛的想象空间! <!-- s:oops: --><img src="{SMILIES_PATH}/icon_redface.gif" alt=":oops:" title="Embarassed" /><!-- s:oops: -->
作者: shiyiming    时间: 2005-11-27 12:10
标题: 目前还不清楚
我是学地质学的,刚大3,就学过C,别的还不清楚。不过得学。改不改还不太清楚。希望各位行家能推荐一套学习方法,先学什么,后学什么。谢谢了。
作者: shiyiming    时间: 2005-12-31 01:47
标题: 还好了
呵呵,兴许是我学习过俄语的缘故吧(而且不错),再者刚刚入道,没有接触高深的程序,现在感觉还可以。
作者: shiyiming    时间: 2005-12-31 09:42
标题: to orientaldream
莫非SAS的语法很像俄语? <!-- s:roll: --><img src="{SMILIES_PATH}/icon_rolleyes.gif" alt=":roll:" title="Rolling Eyes" /><!-- s:roll: -->
作者: shiyiming    时间: 2006-1-11 20:33
标题: 见下
其实SAS的语法一直都在改,看看SAS的新版本中的帮助就知道了.
作者: shiyiming    时间: 2006-2-14 23:37
标题: 观点
我觉得这里有些人真的在胡扯。
SAS没了解多少就在乱喊,其实很多人因为学某种语言而先入为主,养成了自己的偏好。
顺便提一下,如果你学一样东西不能带着无知的心态,那你一定学不好,一定自己跟自己打架,只有扬弃,才会有收获。
SAS积累了那么多年,本来是专门给统计研究人员用的,所以它的记录叫OBSERVATION,它的字段叫VARIABLE。至于它的语法特点和语言特色,是由于SAS的语言解释器所造成的,底层的执行应该是C语言。很多有特色的语法设计都是基于数据处理而考虑的,可谓用心良苦。
在很多方面,SAS当然没有现在看到的很多软件来得花哨,因为SAS玩的是数据,用事实说话和保持本色是SAS的风格。
最后我觉得SAS的帮助需要改进,如果一点都不了解SAS产品线的人一开始进去很容易找不到北。
SAS很多内容都执行了ANSI的标准,在PROC SQL步中,还允许用标准的变量格式来写,当然内部解析后还是还原到两种类型来执行,一种为字符型,一种为数值型。顺便说一句,数值型变量默认存放长度是8个字节长度,而非8位数位;至于字符型要看具体情况而定,不是随随便便说几位就是几位的。
以上是本人学习6门SAS9.1.3课程后的感受,可能比较肤浅,作为学后标底。
是为阶段总结。
作者: shiyiming    时间: 2006-2-15 10:51
标题: 交作业了
改作业.
1.[quote:d8424]底层的执行应该是C语言[/quote:d8424]-----------所谓底层的执行,那时只有编译好的执行指令了.哪里还谈得上用什么高级语言来执行("执行"只能用于机器指令,高级语言只能被编译或者解释).至多也是汇编级的了.
2.[quote:d8424]至于它的语法特点和语言特色,是由于SAS的语言解释器所造成的[/quote:d8424]-----------------------应该是先有语法再有语言解释器,而不是反之.
3.[quote:d8424]数值型变量默认存放长度是8个字节长度,而非8位数位[/quote:d8424]-----计算机的文章在存储长度方面一般不会提数位,如果你真的指的是数学上的个十百千万的数位,那一般还是一个字节存一位或者节约一点,四个BIT够用.估计你想说的是"位"BIT, 字节是BYTE.概念你应该知道,但为什么不好好使用?
作者: shiyiming    时间: 2006-2-17 05:20
标题: SAS is SAS
Hi, everyone,
I just browsed the whole topic. all of you are right from some specific prospect. However, SAS is a data analysis system  first , this is also its original goal.
it does provide some programming method : like some procedure macro, scl and iml maybe someting else I did not touch till now.
SAS might not be suitable to compare with other programming language.
Now SAS is trying to break its orignal image in people's mind.
It has provide some new function module.
In one words, it is not SAS to adapt to us , instead, we need to adjust ourselves to it.  At the same time . we really need provide some beneficial advice to the SAs company to help them improve the product.
I am soory , If anything is wrong  or offend some guru.

Best Regards,




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2