不同系统(C#/Python/IronPython/Jython/C++)之间的技术整合(续一)

上一次讨论http://sunxiunan.com/?p=1854 发出去以后提问者回复了一些问题,然后也提出一些新问题,觉得这种总体设计还是挺有趣的,值得发出来一起看看。

    首先说明下为什么会有这样的想法吧—-公司里面有很多不同部门, 部门之间有不同的产品, 对于不同的产品和项目都有着自己的测试方案, 有手工的也有自动化的, 自动化的里面又有使用各种语言的(包括Tcl, Python, Lua等), 即使使用同一种语言, 也有使用各种框架的, 这样就导致了不同产品间很难沟通(最典型的案例就是需要互相借人的时候, 发现要重新学习一套测试方式, 周期太长), 同时也不便于管理. 于是呢, 领导们就突发奇想, 是不是可以统一一种语言和框架呢?为了能满足领导们以及测试部门等各方面的诉求,就有了以上的想法…..

    再来说说我的想法吧. 目前领导要统一已经是一个不可避免的问题了, 因此我非常希望可以引导到Python上面来(其实有些部门是使用Python的), 这里大概和我的个人喜好, 同时我也相信Python可以胜任这种情况. 于是为了证明这个, 所以我就有了以上的尝试. 所有的一切都是为了尽量少改动现有的代码而实现新的统一的目标,想调用Java的原因是有大量的类库目前可以使用,希望调用C/C++的原因是因为其他部门非常有可能需要与硬件相关的C/C++的扩展来实现框架,要尽量满足大家的需求大家才会支持你 。。。。。。

    至于框架方面,说实话,现在Python的测试框架好像还没有特别成熟的,相对来说见得多的是Robot Framework,不过其实我自己的构想是重新创建的一个可以将各个部门完全分离同时又可以分别集群的架构,不过这些都是后话了。

至于这位仁兄说的这条:

3)IronPython无法调用C扩展,但是很容易调用C#,可以考虑将其作为C#与CPython的包装层,仅此而已,不要用的太多。
4)Jython也是一样,仅用于Java与CPython的包装。

鉴于我才疏学浅,不大理解具体怎么做,因为我的理解是Jython和IronPython都是重新实现的解释器,如何去包装CPython呢?(类似Pyhon For .net的做法?如果是这样的话,这个难度还是相当大的。。。。)

希望能进一步解释。

============================

我的回答如下:

包装层(wrapper)是一个抽象概念,有句名言说:编程问题大多数可以通过引入新的抽象来解决(当然,同时也产生新的问题)。

我们以IronPython和CPython以及现有的C# DotNet程序、C++程序为例来做个探讨好了。在上一次讨论提问者描述以后,我的感觉就是他对性能要求不高,交互紧密性要求不高(也就是未必有IronPython必须不得不直接调用C编写的Python扩展要求),只要把异构系统整合起来能够互相通讯就好。

整合异构系统,需要分清主次,我这里的设计方案,是以CPython为主,其它编程语言的应用程序或者以DLL形式存在或者被CPython程序调用激活,或者是驻留系统中等待CPython主程序的消息。如果你的方案不是这样,建议你重新考虑一下,没有主次之分的系统设计是有问题的。

另外看这位提问者的描述,他对于系统之间传递的内容,以及交互的紧密程度,要求不是很高,甚至感觉上就是只要Python能调用一下这些系统就行了。

这也是设计者需要考虑的,真正需要整合起来做什么,把方案做得细致一些,多考虑一些。

 

类似这种不同语言的系统进行通讯,基本上有这样几个办法:

1,基于消息Message Queue通讯

定义通用格式消息或者使用通用现成格式(比如ProtocolBuffer、Thrift、Json、XML、MsgPack等等),使用跨开发平台通讯方式比如zeromq、http web service进行通讯支持。这是扩展性最好、实现也不麻烦的解决方案,在Python-cn中Zoom.Quiet也提出同一种方案。

http://en.wikipedia.org/wiki/%C3%98MQ

http://nichol.as/zeromq-an-introduction

关于数据序列化比较,可以参考这里

http://en.wikipedia.org/wiki/Comparison_of_data_serialization_formats

另外在Windows下,如果是本机,也可以通过Windows自定义消息在不同系统之间传递。

Python、IronPython也好,C#也好,或者是C++、Lua、Java,它们都很容易建立Web Server,这种方案可以优先考虑。而且scalablity比较好,容易扩展。

 

2,基于COM

这个对开发者要求比较高,另外只能用于IronPython和Python以及C++之间,不能用于Jython和Java。但是如果不需要考虑Java系产品,可以考虑COM,其实COM技术即使在DotNet发展到4.0的现在,依然有强大的生命力。而且开发其实也不难。

 

3,基于数据库或文件系统传递

这种方案也是比较通用的,如果你不需要序列化对象,只关心结果(比如数字、字符串、时间等等),这个方案也可以参考。优点是相比第一种,更容易学习使用。可以使用SQLite这样轻量的数据库。

 

4,基于Python序列化传递对象

这是针对Python编程语言特定的办法。同时也回答了这个问题:怎么叫用IronPython作CPython和C#之间的包装器?

如果了解Python,应该知道Python有个序列化方法pickle,可以把对象保存到文件中,以后载入。

幸运的是,经过我的实验,IronPython2.7支持pickle,与CPython之间通过pickle文件传递对象,那是非常容易。

也就是说,C#程序运行完毕,或者通过IronPython运行完毕,可以将结果保存到pickle文件中,CPython载入以后继续运行,装得跟直接一样。

通过我的描述可以看出,IronPython和CPython还是没关联,你是你我是我。这的确没办法,因为它们各自都是完整的系统,设计初衷也没考虑到直接交互,但是IronPython发展前景不错,值得跟进。相比Python.Net而言,我还是建议使用CPython和IronPython。

iron_cpython

 

最后要说的是,这种大一统的方案,如果没有强力领导介入和长期支持,基本上不能成功。但这不是技术方案需要考量的。

不同系统(C#/Python/IronPython/Jython/C++)之间的技术整合

在python-cn讨论组看到某人咨询架构设计,心痒回复了一下,有点价值。放在这里大家共享一下。

Python的解释器可谓相当的丰富了,CPython,Jython,IronPython,他们分别可以以非常简单的方式与C,Java以及.NET调用, 但是它们也有严重的缺点—-他们都是单独的解释器,因此想把他们共同使用就比较麻烦了.

    最近工作上遇到这样的场景, 现有的代码中大部分代码是使用C#写的,考虑到性能以及工作量的问题, 这部分代码必须可以用上; 由于别人提供的工具中, 有大量Jython的代码, 这部分代码也不可能重写; 后续代码可能涉及到部分硬件相关代码,可能需要使用C/C++进行扩展编写; 最后后续的代码希望使用Python, 以保证开发的效率以及灵活性.  这样就遇到难题了, 如何保证这些不同语言编写的代码在同一个工程中使用呢?

    我也做了一些尝试,但是结果都不是非常理想:

        CPython: 1,使用C/C++标准扩展的方式重新将C#编写的.NET组件包装之后, 编译可以通过, 但是实际调用的时候会显示找不到目标, 使用ctypes调用用C/C++包装之后的.NET组件,报Windows Error错误, 网上随便搜索了下, CPython想使用.NET组件是个非常复杂的问题; (其实在这里我并不是非常理解C#编译成为DLL之后调用过程是怎么样的, 因为理论上C#也是一个解释型的语言, 他的执行过程是不是需要什么依赖呢? 在这里我做的实验是非常简单:使用C#实现一个类,里面有一个static method, 在C/C++的文件中调用C#中实现的static method编译为PYD文件给Python调用—-也许是我的调用逻辑有问题)

        2,同时CPython想使用Java代码比较繁琐. 

        Jython: 不支持ctypes, 使用C/C++代码相对繁琐, 与.NET组件的调用也比较繁琐, 同时Python的支持版本很低, 貌似开发进度比较不给力啊…..

        IronPython: C/C++标准扩展无法在IronPython中调用, 调用Java也相对比较繁琐.

    另外我还考虑过通过COM使用CPython调用.NET组件, 应该可行但是不想使用….

    也想过通过把不同的语言实现的部分分离在不同的进程中通讯也是可行的, 但是带来的性能问题以及稳定性难以评估.

由于时间比较仓促,需要尽快作一个技术上的选型, 所以没有更多的时间来做更多的实验, 所以在这里询问下, 不知道这里有没有以前遇到过类似问题,或者对这些有所了解的朋友, 还请不吝赐教!谢谢!

==================================

我的回答如下:

 

这个架构设计蛮有意思的,首先想问几个问题确定一下细节:

1)Python选型是否是官方意见?已经决定好的?还是仅仅是你个人的?
2)不同语言模块交换的工作是一次性的(就是用完就抛的)?还是说需要长期使用的?
3)这里需要重用的是数据?还是业务逻辑?还是仅仅就是模块?
4)你对整体设计是否有决定权?你对这些系统(Jython、CPython、C++、C#)是否了解?
5)当时做出这些选型是否考虑过整合?

说实话,从你的问题来看,你对整个系统了解程度还是不够的,这是设计的大忌。

建议你按照这些步骤来做:

1)确定真正的问题列表。把不同模块画出来,那些需要交换数据,那些需要重用逻辑。把不同系统之间的交互(已有的和将来要有的)列成表格,加上估计的技术难度以及估计的工作时间。
先把思路搞清晰,要把系统的真正问题了解透,这点最为重要。
再重复强调一次,编程是为了解决问题,重中之重就是确定你解决的是真正问题而不是枝节。

2)按照问题优先级,来进行技术分析。比如C#与Python的交互,需要Python调用C#的逻辑。最佳方案是C#暴露为service形式,可以通过web service(WCF)很容易实现,数据格式可以为xml或者json,都是语言无关的。
也可以C#作为COM组件形式暴露,优点是可重用性更好,C++也可以直接使用。

3)IronPython无法调用C扩展,但是很容易调用C#,可以考虑将其作为C#与CPython的包装层,仅此而已,不要用的太多。

4)Jython也是一样,仅用于Java与CPython的包装。

5)CPython与硬件可以通过C编写扩展来实现,不是很难。我最近在翻译的一本书就是有类似整合方法。

这里的设计方案是以CPython作为中心,其它方案向CPython靠拢。当然我觉得以C++为中心更好,但你未必能接受。

转《写在中草药被欧盟扫地出门的时候》——张功耀

在张老师这篇文章之前,想提一下马悦凌的固元膏,这东西依然在各大超市销售,依然欺骗着希望健康的人们。

关于马悦凌和固元膏,参考“科学松鼠会”的这个专题,有点常识的朋友,甚至你不需要有医学常识,只要有科学常识都会理解的。

六问“固元膏”

http://songshuhui.net/archives/52206

在我印象里,保健品就是食品,健字号的东西就是只要吃了不死人就可以,拿个馒头兑点胡萝卜水也可以看作保健品,补充胡萝卜素而且还充饥呢。

————————————————

从2011年5月1日起,进入欧洲20多年的中草药被智慧的欧洲人民强制性地扫地出门。在国外不断制造医学灾难和人道主义灾难,抹黑中华民族的中医 中药,在国内一再厚颜无耻地自吹自擂“墙内开花墙外香”。今天,它终于原形毕露,呈现出了败絮不如的本质。这个事件具有高度的象征意义。限于本人的时间和 精力,也考虑到网络读者的阅读习惯,本文拟就这个事件,讨论如下四个问题:

《传统草药产品注册指令》;
中草药进出欧洲的历史概貌;
中草药被踢出欧盟的原因分析;
中草药的前途只有死路一条。

一、《传统草药产品注册指令》

导致中草药被逐出欧洲的直接原因,来自欧洲议会和欧盟理事会颁布的《传统草药产品注册指令》(Traditional Herbal Medicinal Products Directive, THMPD)。这个指令的前身是2001年11月6日由欧洲议会和欧盟理事会共同颁布的《2001/83/EC指令》。2003年1月27日和2004年 3月31日,欧洲议会和欧盟理事会曾经两次修改了这个指令,最后形成了从2011年5月1日起强制执行的《第2004/24/EC号指令》。依据这个指 令,从2004年4月30日开始,欧盟各国的草药管理当局接受来自世界各地的人用草药产品简易注册申请。这里所说的“简易注册”是与工业化生产的化学及生 物药品必须履行严格而复杂的检验和审批程序相对而言的。作为传统人用草药产品的注册,只需满足下列条件即可:

第一、所有传统草药产品的生产都必须满足良好生产实践(Good manufacturing practice,GMP)标准。

第二、申请注册的公司必须提供草药产品至少连续30年在欧盟国家使用有效而安全的证据。如果不能提供欧盟国家以内使用30年的相关证据,也可以对应提供欧盟国家以内使用15年和欧盟国家以外使用30年的证据。

第三、只接受通过口服、吸食、外用的传统草药产品注册,不接受任何静脉或肌肉注射的草药产品注册。

第四、所有被注册的草药产品必须是不需要医生指导,也不需要遵照任何用药限制,就可以安全使用的,这就是说,草药产品一旦获准注册,就可以作为非处方药销售。(附记:这里所讲的“医生”是指在欧盟国家注册的医生,不包括草药医生。)

第五、所有被注册的草药产品必须具有充分的历史依据(30年法则),或者通过现代药物学的实验研究明确了其中的有效成分。如果依据后者申请注册,则 需要提供理化测试、生物测试、药理测试、毒理测试、临床使用结果的对比测试,共计五个方面的测试数据。如果有已经发表的草药产品研究报告,也可以作为申请 的实验依据。既不能满足“30年法则”要求,又不能提供现代药物学实验证据的,将不被接受为简易注册。

第六、维生素和矿物质可以加入申请注册的草药产品当中。但是,这些被加入的维生素和矿物质,与草药产品原有成分相比应当只是从属性的,并且是草药原 料中已经具备的。也就是说,如果草药产品原料中含维生素,可以在草药产品中再补充少量的维生素;如果草药产品原料中不含人工牛黄,则绝对不允许在草药产品 中添加人工牛黄。

第七、从草药当中萃取有效成分(相当于我国公民常说的“植物精华”)不属于传统草药产品的注册范畴。这些产品在进入欧盟药品市场之前,需按复杂程序申请注册,不得按简易程序申请注册。

第八、自己生产或配制的草药产品给自己或亲戚朋友吃,不在市面上销售,可以不受这个注册指令的限制。

以上草药产品注册指令,是针对所有希望在欧盟销售的草药产品项目的,并不特别针对中草药。但是,依据这个注册指令,下列中草药产品直接地就不符合注册要求:

1、中成药。(须按工业化生产的药品接受复杂程序注册,不在简易注册范围之列)。

2、风油精、万金油、万花油、红花油、活络油之类用“植物精华”生产出来的草药制品。(违背以上第七条)。

3、中药和西药混合配制而成的复方药。(违背以上第六条)。

4、组方不严,可以随意加减药物分量和组成成分的汤、丸、膏、散、丹。(违背“30年法则”)。

5、祖传秘方和民间偏方。(违背“30年法则”)。

6、只能按医嘱使用的单方或复方。(违背以上第四条)。

7、中药注射剂。(违背以上第三条)。

8、不能满足欧盟国家共同制定的良好生产实践(GMP)标准的草药产品。(违背以上第一条)。

二、中草药进出欧洲的历史概貌

中草药最早传入欧洲大约是在16世纪。那个时候,尽管有中草药传入欧洲,但欧洲人并不接受这种东西。在欧洲列强侵略中国的过程中,没有任何欧洲商人或士兵对中国的“名贵药材”发生过任何兴趣。由之,时有“洋夷不识我大清之宝”的说法流行。

1957年,毛泽东去苏联参加十月革命40周年纪念活动,顺便带了大量的中草药和著名的中医去,想以中医中药换取苏联人先进的军事科学技术,遭到了苏联“老大哥”的拒绝。

中草药大量出口欧洲始于上个世纪90年代初。这个出口有着显明的时代背景:

冷战结束以后,国际关系格局发生了重大变化。这个变化使得各国之间的人员往来空前地频繁起来。原来被紧紧封闭在国内的中国人,冷战结束之后,也可以 出国留学、旅游、购物、承揽工程和做生意了。他们不可能带医生出国,又无力购买所在国家的医疗保险,于是就有了寻求本国传统医疗方法治病的需求。加上人类 医疗条件的改善,普遍地延长了人类的平均寿命,增加了人类患病的机会,由此产生了医学越进步,人类平均寿命越长,医学资源越发显得不足的尴尬局面。在这个 背景下,人们开始借助于传统医学以补充常规的或现代的科学医学的不足,并由此形成了一股“返璞归真”的医学风潮。一时间,传统医药学呈现出了前所未有的辉 煌,而常规的和现代的科学医学则被妖魔化了。我国的中草药便借着这样一个千载难逢的机会,走出了国门。

中医中药走出国门之初,很是在国外风光了一阵子。它给了西方民众一种特别的新鲜感。

以往的世界医学史著作,通常都没有中医的地位。客气一点的作者会解释说,他们“不了解中医”。实际的情形则是,中医不具有写入世界医学史的条件。众 所周知,中医至今没有合格的疾病名称,没有可靠的诊断方法,没有可信的治疗规范,更没有关于医疗预后的风险评估与防范策略。中医对人体解剖、生理和病理的 解释,全是些胡说八道。没有任何严肃的医学史家,愿意将这样虚浮、混乱而且充满迷信的传统医学写进世界医学史。

上个世纪50年代开始,中国政府创办了中医药大学。这在全世界的高等教育体系建构中都是绝无仅有的。自那以后,中医中药在这些大学经历了独特的“现代化改造”。

经过“现代化改造”之后的中医,开始有了西方人可以理解的疾病名称,也开始有了注射剂、胶囊、片剂、口服液、酊剂这样一些西方人习以为常的剂型。更 加令西方民众惊讶的是,中医看病的诊断方法也“现代化”了。诸如听诊器、血压计、超声诊断仪、心电图仪这些源自西方的发明,都纷纷进入了中医诊所。“抗病 毒”“消炎”“降血压”这样一些原属于“西医”(这个概念非常别扭)的治疗原理,也写进了中医治疗学教材。就这样,原本捏不到一块的中医和西医,居然被 “现代中医”捏在一起了。中国人还给了它一些非常好听的学术名称,如“中西医结合”“现代中医”“分子中医学”“整体疗法”,等等。这种被“现代化改造” 之后的传统医学,不但迷惑了中国民众,也欺骗了不少洋人。盲目轻信现代中医的洋人不知就里。而实际上中医生自我标榜的中草药抗病毒、消炎、减肥,中草药治 疗艾滋病,中草药预防脑膜炎,等等,都毫无科学依据。

我们可以这样告诉国际社会,“现代中医”比古代中医具有更大的欺骗性。如果说古代中医只是“有意或无意的骗子”的话,那么,“现代中医”则是彻头彻尾的“有意的骗子”!

自古以来,中医生都普遍缺乏文化修养,尤其缺乏对科学的理解力。所谓的“中医肝病专家”,甚至不能正确地指出肝在人体中的位置。尽管中医生实际上不 会使用西医方法做诊断,但他们却经常装模作样地给病人量血压、测脉搏、听心脏。有时,中医生也仰赖训练有素的医学检验员进行疾病诊断,但他们并不真正知道 那些诊断数据的病理学意义。纵然有些中医生理解了那些诊断结果的病理学内涵,在实际治疗当中却又往往别出心裁,另搞一套。比如说,中医生可能已经明知患者 罹患的是流行性感冒,又明知流行性感冒是病毒感染引起的,但是,他们在治疗这些流行性感冒的时候,又完全置流行性感冒病毒于不顾,而是坚持采用他们那些毫 无科学根据,他们自己又自以为是的“降火”、“凉血”、“宣肺”之类的中医方法。现在我们可以这样直截了当地告诉国际社会:“现代化”仅仅是目前中国流行 的中医中药给自己装扮起来的华丽的外表,它不仅与现代医学毫不相干,也与常规医学南辕北辙,完全不值得信赖!

1998年,在比利时爆发了“中草药肾病事件”,洋人才开始对具有现代化外表的中医药警觉起来。

“中草药肾病事件”是由出国骗钱(不是“为国争光”)的中医生将自己配制的减肥茶卖给比利时民众的欺诈行为引起的。所谓“中草药减肥”,既没有历史 传闻依据,也没有现代化的实验依据,是一种彻头彻尾的胡作非为。它曾经导致了100多位迷信中草药减肥的比利时妇女肾中毒。1998年布鲁塞尔自由大学医 学院肾脏学系教授万赫富根(J. L. Vanherweghem)首次发表关于中草药肾病的临床观察报告的时候,已经死亡43人。导致这个旷世空前的医学灾难和人道主义灾难的罪魁祸首,不是别 的,就是在我国常用的,并且所有医药学经典著作中都没有记载其毒性的,防己和木通。这些植物属于马兜铃科植物。据欧洲植物学家调查,马兜铃植物有8个 属,400多种。香港禁止了其中72种。我国政府只禁止了其中4种。

本来,我国政府很容易与这个事件撇清。首先,它没有历史传闻依据(按:我国历史上完全没有“减肥”概念)。由此,中央政府完全可以申明它与我国传统 医学无关。其次,它也没有现代实验依据,我国政府卫生部没有批准过任何减肥茶出口。抓住这样两条,就可以撇清政府与药商之间的关系。如果国家中医药管理局 还稍微负责任一点的话,应当立即在国内组织对防己和木通导致肾中毒的科学研究,并及时发布相关的草药用药警告,劝诫我国民众提高对防己和木通入药的警惕。 可是,国家中医药管理局既没有宣布这个事件与中国传统医药无关,更没有以科学的态度去面对它,而是反其道而行之,一方面竭力掩盖和淡化这个事件的严重性, 另一方面继续固守旧有的认识,拼命为木通和防己做无毒辩护。

一种原本就没有科学基础的传统中草药,遭遇这样严重的医学灾难之后,我国国家中医药管理局还竭力文过饰非,中草药在欧洲人心目中究竟是什么形象,恐怕只有不可救药的傻瓜才会执迷不悟。

再后来,欧洲国家的一些环境保护组织发现了中草药在大量滥用稀有植物和动物身体部分(如熊胆、虎骨、犀角、麝香)入药,多次发起了对中草药的杯葛 (boycott)行动。诸如此类,我国政府和我国中医药界都没有做出过任何积极面对的表示。于是,在90年代中后期,中国传统草药的安全性问题、有效性 问题、品质保证问题,以及滥用珍稀动植物资源的问题,在世界卫生组织的会议上被多次提及。它催生了2001年发表的《世界卫生组织传统医药战略 (2002-2005)》(WHO Traditional Medicine Strategy 2002–2005)。欧洲议会和欧盟理事会有关人用草药产品管理的全部政策,都是从这个战略文件的基本思想延伸出来的。

《世界卫生组织传统医药战略(2002-2005)》共分五章,连同附录一起的英文译本长达59页,其核心思想就是致力于传统草药的安全(Safety)、有效(efficacy)和品质(quality)。

从维护人类生命安全和健康的根本利益来说,世界卫生组织制定的传统草药战略,以及欧盟依据这个战略颁布的《第2004/24/EC号指令》并无任何 过分的要求。况且,它们都不是特别针对中草药的,而是一视同仁地针对全世界所有传统医药的。为了贯彻世界卫生组织制定的“六字方针”,同时也充分考虑欧洲 民众对传统草药的选择自由,欧盟两次修改了传统草药注册指令。不仅如此,欧盟还给了所有草药产品生产企业从2004年3月31日到2011年4月30日7 年缓冲时间。用我们中国人的说法,这样做可谓“仁至义尽”。其间,欧盟总共批准了350个草药产品的注册申请,只有印度和中国交了白卷。于是,中草药只好 卷起铺盖回国。

三、中草药被踢出欧盟的原因分析

中草药产品申请在欧盟销售的注册失败之后,国内舆论多次提到了钱的问题。它留给我国读者的印象是,钱的问题阻碍了中草药产品进入欧盟的道路。

中医药界如此渲染钱的问题,蕴含了一种阴谋。在我国,有一种财政现象,叫做“会哭的孩子有奶吃”。如果中国政府继续死抱着“中医药是我国优秀的传统 文化”这个错误的判断不放,中医药回国之后继续大肆哭钱,就可以轻而易举地从那些热衷于“办实事”“做好人”的政府官员那里要到不菲的钱。多少年来,中医 中药就是这样,不知廉耻地依靠一把鼻涕一把泪地哭诉,赚取了各级政府挤出来的同情费。一些基层政府领导曾经对我抱怨说,由于中央政府把中医中药当作“优秀 传统文化”抱在手里不放,使得他们很不好办事。他们跟我说,“谁都知道中医院在保证人民生命安全方面根本起不了什么作用。但是,政府每年给中医药企业的扶 持经费却一分钱都不能少。甚至中小学教师的工资都发不出了,给中医中药的扶持经费也绝对拖欠不得。否则,动不动就捅到上面去了”。

中草药产品要进入欧盟,钱的确是一个问题。但不是我国舆论所暗示的那种问题。我们不妨以英国和中国的对比为例,来做一些澄清。

欧盟《第2004/24/EC号指令》生效之后,英国卫生部草药局于2005年成立了一个专门机构,并制定了一个scheme(申报方案)来操作这 件事。英国民间常用的传统草药产品项目有300多个。实际完成注册的只有27个。英国草药管理当局统计过,七年下来,每完成一个草药产品注册的花费大约是 8到12万英镑。按照我国现在的外汇市场牌价100英镑兑换1088.91元人民币计算,每个注册项目的实际消费不过130万元人民币。这点钱对于已经 “富起来”了中国,应该不算什么。

问题在于,这样的花费对于中草药的申请是远远不够的!

英国是近代科学的策源地。英国民众一直有着良好的科学传统。用实验生理学方法证明柚子抗败血症的药理学原理的林德,就出在英国。不难理解,英国草药产品生产厂家提出的申请项目,通常都会具备较好的历史依据和实验观察依据。

相比较而言,近代科学没有在中国兴起。中国人的科学精神从来就没有得到很好的培养。中国人信迷信的程度一直为世界之冠,至今也没有任何改观。不仅如 此,进入20世纪50年代以来,中国人的科学精神还遭遇了持续性的败坏。20世纪90年代以来的中草药进入欧洲的托词,既不是依据现代医学实验,也不是依 据长期的医疗实践,而是那些未经严格考订的各种传闻。与古代中医多少还能够依据历史传闻捕风捉影相比,“现代中医”连捕风捉影的传闻之影都没有。据此,读 者不难想象,中草药要完成在欧盟的注册,其文本准备所需要的费用,不是我国新闻界所渲染的500万元,而最有可能成为一个无底洞。说得更实际一点,甚至连 进入这个无底洞的入口处都不可能找到。

为什么可以这么说呢?我们不妨假设我国拿柳树皮去申请注册做一个纯粹概念化的分析。

在欧洲,希波克拉底时代就开始有人用柳树皮治病。它的基本疗效是退烧和止头痛。18世纪,柳树皮被确认可以替代金鸡纳霜治疗疟疾。19世纪,法国人 发现了柳树皮当中的有效成分水杨苷。这种水杨苷被人体同化以后生成水杨酸。柳树皮退烧的奥秘就存在于这种水杨酸当中。有了这样一些医学和药理学实验研究证 据,加上柳树皮退烧和治头痛的临床观察证据,法国人要拿它去注册,虽然我们不能判断它达到了水到渠成的境界,但至少是找到了入口处。

可是,在我们中国,同样是柳树皮,单是《本草纲目》记载的“疗效”就有19种。在这19种疗效中,恰恰没有退烧和止头痛这两个得到了全世界公认的疗 效。假若我国的中草药商人也拿柳树皮去注册,这个企业首先就得从这19种疗效当中筛选出最有效、最安全、品质最容易得到保证的那一种。按照欧盟《传统草药 产品注册指令》的要求,如果历史依据不充分,就得提供现代科学条件下5个方面的测试数据。这样一来,我国要完成柳树皮的草药注册,理论上所要进行的实验测 试就是95项。以平均每完成一项实验花费5000元计,共计所需实验费用是47.5万元。再加上临床观察证据的收集与整理,就有可能是一个上百万元的开 支。如果花费上百万元能够取得预想实验数据,那显然是值得的。中草药的盲目性就在于,它不能使实验研究得到任何可靠的结果。这就不是钱可以解决问题的了。

在欧盟注册草药产品项目需要花费一定数目的钱。但是,这个注册费开支,不是我国“乱收费”意义上的那个注册费开支,而是申请注册之前进行文本准备所 可能产生的费用。实际上,欧盟各国的草药管理机构,在接受草药产品项目注册的时候,都是不收费的。只要文本齐全,符合简易注册条件,均可注册。

那么,究竟是哪些原因使得中草药产品在欧盟注册交了白卷呢?

第一、中草药产品生产不能满足欧盟良好生产实践(GMP)的要求。良好生产实践这个概念,虽然在我们中国也经常被提到,但通常都不如欧盟表述得那样 严格。比如说,我国关于“良好生产实践”的通常表述可能是:“去泥,洗净,晒干”。这样的表述拿到欧洲是不合格的,因为这里的“去泥”“洗净”“晒干”缺 乏严格的检验标准。欧洲的“良好生产实践”标准则可能会做出这样的表述:草药产品在封装之前,确认其残留物(对应于我国的“去泥”)小于多少个ppm,产 品经过表面消毒处理(对应于我国的“洗净”)细菌密度小于多少个ppm,产品湿度(对应于我国的“晒干”)达到什么样的百分比湿度。这样的生产标准,在欧 洲属于寻常的药品生产规范,在我国则往往会被指责为“过于苛刻”。众所周知,在我国的传统医药观念中有一种观念,叫做“越陈越好”。发了霉的,生了虫的, 只要用蜂蜜一浆,“不干不净,吃了没病”,都有可能摆进中草药的药柜当中卖给消费者。这样的医疗观念,怎么可能承受得住欧盟那种良好生产实践标准呢?

第二、无法满足的“30年法则”。

传统的中草药疗法,从来就没有统一的标准。对于相同的疾病,你用大青龙汤,我用柴胡汤,他用六和汤,都是“无原则错误的”。甚至同样一个医生,昨天 用了柴胡桂枝汤,今天他可能改用柴胡白术汤,明天他又可能改用柴胡四物汤。从古到今,没有任何一个中医生连续性地使用过任何方剂。任意改变组方成分和分 量,在我国中医药界可以说是司空见惯,不足为奇。“现代中医”甚至还对这种医疗行为做出辩护说,这是在依据不同的疾病个体进行辩证论治。

你尽管可以这样去辩证论治。但是,欧盟的中草药注册指令需要你提供连续30年使用同一个方剂的安全性和有效性证据。就单味用药来说,改变用药份量不 算改用新的配方。但是,就多味组方来说,改变其中某些药味的份量,就属于改用新的配方了。从化学的角度看问题,相同反应物的不同份量,完全有可能改变它们 的生成物。1958年,贝洛索夫和扎波廷斯基发现一种振荡化学现象。它告诉我们,相同反应物的不同份量可能导致化学反应走向混沌。为避免出现这样的混沌, 欧盟强调的“30年法则”,要求方剂的组成成分和组成份量保持不变的使用达30年。这个强调是有充分科学依据的,丝毫也不过分。就我对中医的了解来看,不 用说连续使用30年,就是要找出连续不变使用一年的中草药方剂,也是不可能的。由此可见,中草药完全不可能满足“30年法则”的要求。

第三、声名狼藉的中成药没有获得简易注册的任何希望。

中成药起源于1117年在开封成立的熟药所。所谓熟药,也就是用熟了的药。当时使用熟药有一个不成文的规矩,叫做“药不三世,不服其药”。也就是 说,只有经历过三代人使用过的药,才能做成熟药销售。由于经济利益的驱动,这个“药不三世,不服其药”的规矩早就被破坏殆尽了。任何一个药铺,只要它愿 意,都可以生产属于自己的熟药向消费者兜售。我国创办中药厂以后,中成药的生产和销售已经彻底失控,甚至连“熟药”的概念都不见踪影了。随便配几味药,再 取一个好听的名称,捏造一些莫名其妙的疗效,就可以在卫生部注册,然后行销国内外。改革开放之后,这个完全失控的中成药,伴随着中医中药走出了国门。但 是,很快就在国外声名狼藉了。

概括起来说,中成药主要存在以下七个方面的问题:

一、重金属及珍稀动植物身体部分入药屡禁不止。

二、中药掺西药防不胜防。

三、漠视国际社会禁止某些具有兴奋剂效果的植物(如麻黄和半夏)入药的禁令。

四、没有产品质量标准。比如,同样是六味地黄丸,A厂的产品和B厂的产品,完全可以有互不相同的产品质量标准,甚至同一批次也可以有不同的产品质量内涵。

五、没有保质期。虽然有些中成药的包装盒上也印了保质期,但那是抓着脑袋写出来的,不是依据药物的半衰期计算出来的。

六、没有办法进行生物体内的药物代谢实验,因而无法保证中成药进入人体之后的代谢安全。

七、对植物毒素缺乏起码的识别能力。

鉴于以上,自从世界卫生组织颁布《传统医药战略(2002-2005)》之后,中成药在欧美国家的销售只能“像做贼一样”在地下进行。现在,欧盟 2004/24/EC号指令已经明确指示,所有经过工业化生产的草药制品和所萃取的植物精华药剂,都必须按照化学及生物药品的复杂注册程序申请注册,不在 简易注册程序可接受的范围以内。这样一来,中成药就完全没有被欧盟接受注册的任何希望了。

四、中草药的前途只有死路一条

中草药被欧盟扫地出门之后,我国中医药界并不甘心失败。他们还在寻求中草药产品继续在欧盟销售的各种模式和可能性。在各种可能的模式中,他们设想得 最多的,就是争取欧盟各国允许中草药继续以“保健品”“食品”“膳食补充剂”“医疗仪器”(按:中草药中的膏药是以医疗仪器的名义进入欧盟的)在欧盟境内 销售。

我国中医药界的这个梦想能不能实现呢?

中草药当中的许多东西是可以当食品吃的。如蜂蜜、石榴、红枣、苡仁、赤豆、淮山、当归、白茅根、食用大黄、黄精、榛子之类,都是可以直接当食品吃 的。还有一些野生植物,可以间接地当食品吃。用葛根做成的葛根粉,用橛根做出的橛根粉,土茯苓代替粮食酿出来的酒,都是可以间接地当食品吃的。文化大革命 当中,我家缺粮食,我就挖过葛根和橛根充饥。当年,用粮食酿酒被视为“极大的浪费”。郴州酒厂没有粮食酿酒,就动员过农民搞“小秋收”,挖一些土茯苓和金 刚苼蔸子晒干之后,卖给酒厂去酿酒。

出口的蜂蜜,在我国的统计规范中被列在了中草药一类。其实,蜂蜜完全可以当食品吃。2000年,中国的蜂蜜曾经被英国政府列入了12个黑名单之一。 那是因为中国出口到英国的蜂蜜里边被发现掺了抗生素。我想,只要我国的蜂蜜销售商采取老老实实的态度,按照“蜂蜜就是蜂蜜”的模式去销售,不再自作聪明地 添加任何东西,欧盟肯定能够继续接受中国的蜂蜜。

至于其它我们中国人当食品吃的“中草药”,如果欧洲人愿意接受的话,也应当是可以继续在欧洲销售的。我注意到,欧盟各国的食品目录是不同的。有些中 国人认为可以吃的东西,欧盟国家的人可能会认为不能吃。比如说,中国人吃蚂蚁和蚱蜢,欧盟国家的人可能就会接受不了。人家不能接受的“中国食品”,不可能 列入他那个国家的食品目录。中草药当中究竟有哪些东西可被人家接受为“食品”,人家是要审查的。审查通不过的话,是不能在人家的市场上以食品的名义销售 的。

值得特别提到的是,自2000年1月12日欧盟在布鲁塞尔发表《食品安全白皮书》(White Paper On Food Safety)之后,欧洲在食品安全管理方面的政策、措施和立法得到了空前的加强。其中,有些已经变成了欧洲的法律,正在实施。有的还没有变成法律,等待 实施。依据欧盟《食品安全白皮书》,欧洲的近期追求目标是,通过84个步骤,建立欧洲食品安全体系,“使欧洲成为世界上食品最安全的地区”。

为了落实《食品安全白皮书》的精神,2002年1月,欧盟在意大利的帕尔玛(Parma)成立了欧洲食品安全局(European Food Safety Authority, EFSA)专门负责监管在欧盟成员国境内的食品安全问题,并且已经颁布了两个指令:一个是关于食品的《2002/178/EC号指令》,另一个是关于膳食 补充剂的《第2002/46/EC号指令》。

概括起来,欧洲在食品安全方面须遵守三个基本原则:

第一、可追溯性(traceability)原则。它强调食品、饲料、食品添加剂在生产、加工处理和销售每一个环节的可追踪性。假若有一种奶产品, 原奶的蛋白质含量是8%,产品检验时蛋白质含量却高到了16%,多出的8%是哪里来的?如果经不起追踪的话,这个产品就是不合格产品。我国的三聚氰胺奶制 品,如果拿到欧盟,依据这个原则就可以把它卡下来。

第二、透明性(transparent)原则。食品、饲料、食品添加剂从原料到消费者的每一个环节都必须清晰透明。以酸奶制品为例,原奶是哪里来 的?增稠剂是谁提供的?益生菌菌种是谁提供的,又是怎样培养出来的?酸奶的酸味是怎样产生的?酸奶是在哪里生产?经过了怎样的工艺进行包装?销售环节中如 何保质保鲜?如此等等,都必须一一注册清楚,不能含含糊糊,更不能容许任何“黑作坊”插入食品生产和销售的中间环节。

第三、预警(precautionary)原则。欧盟各国必须加强科学研究和食品安全监管,一旦发现食品或相关萃取物存在安全隐患,及时发出食品安全预警。

可以直接或间接当食品吃的“中草药”,如果要继续在欧盟国家境内销售,就必须遵守以上这些指令。

还有一类中草药恐怕得以“功能食品”(functional food)的名义在欧盟国家销售。

“功能食品”这个概念,最早是日本厚生省提出来的。它特指那些对消费者有健康促进作用的食品。这个概念的提出,为中草药走向国际市场,开了一个不大不小的后门。

以往欧美国家对功能食品的管理多采用“无伤害”(no harm)原则。也就是说,不管销售商对功能食品做怎样的宣告,即使牛皮吹破也没有关系,只要不对消费者造成伤害,这样的功能食品就可以上市销售。最新的 动向表明,这个无伤害原则将被“健康宣告责任制”所取代。瑞典、加拿大、美国都已经出台了关于“健康宣告”(health claim)的相关立法。这些国家的食品安全法规强调,所有销售商做出的“健康宣告”都必须要有科学依据。依据这个立法,所有功能食品的说明书,都必须接 受严格的科学审查才能使用。目前,欧洲正在接受功能食品说明书的审查。它的截止日期是今年的8月31日。未获批准的说明书不许使用,以免误导消费者。否 则,销售商将承担由此引起的法律责任。中草药能不能作为功能食品在欧盟销售,到今年的8月31日就可以见分晓了。

在我看来,单是“健康宣告责任制”这一条,对于我国中草药企业将中草药作为“功能食品”打进欧盟,毫无疑问是致命的。“人参健脾丸可以健脾”,“六 味地黄丸滋补肾阴”,“枸杞抗癌、明目安神,延年益寿”,“绿豆汤解毒”,“葡萄酒浸洋葱治疗高血压、心脏病、糖尿病”,这样一些健康宣告所使用的术语就 不符合科学的要求,更不用说它们究竟有没有科学依据了。我注意到,就在十天前的5月2日,加拿大政府已经宣布,删除枸杞的“抗癌、明目安神、延年益寿”的 健康宣告。销售商如果继续这样宣告,将被视为违法。

我实在想象不出,中草药没有了这样一些从来“自以为是”,又一直“不受约束”的健康宣告之后,它究竟还能卖给谁?

必须客观地指出一点,中草药被欧盟扫地出门,并不是中草药面临的唯一困境。早在2010年6月,加拿大议会完成了C-36号法案的起草工作。这个法 案的重要内容之一,就是为加拿大消费者提供产品健康保证,其中包括牙膏、玩具、涂料、油漆、食品、药品、保健品、美容品等等,所引起的消费者产品安全问 题。这个法案也就是《加拿大消费者产品安全法》(Canada Consumer Product Safety Act ,CCPSA)。由于加拿大现在依然保留了君主立宪制。2010年6月9日,这个法案进行了第一轮御前宣读。从那以后,这个法案总共经过了三轮御前宣读, 直到在2010年12月15日才获得了皇家御批,正式成为了一个法律。依据这个法案,加拿大卫生部(Health Canada)有权责令召回所有对消费者可能造成危害的产品。它从原来的“卫生部建议,企业自愿召回”,进步到了“直接由卫生部责令召回”。此外,加拿大 卫生部还有权发布禁令,禁止制造、进口、推销可能对消费者造成危害的产品,禁止为这些有害产品提供标签和包装。与欧盟和美国相同,也许比美国和欧盟强调得 更厉害,这个法案明确阐述了“健康宣告”的法律责任。谁宣告某产品具有某种保健功能,谁就应当对这个产品的安全性承担责任。当卫生部需要相关数据时,负责 宣告的一方有义务提供这些数据。如果不能提供这些数据,卫生部有权判定这个宣告为非法。虽然这个法案不是特别针对草药产品的。但它对草药产品形成的冲击, 绝不亚于欧盟的《草药产品注册指令》。有人预测,这个法案将导致2万加拿大草药医生失业。

无独有偶,2011年1月4日奥巴马总统签署了《FDA食品安全现代化法案》(FDA Food Safety Modernization Act,即S.510号法案)。这个法案授权FDA加强对家用厨具的安全性检测,调查突发性食品致病事件,责令召回受污染的食品。在美国谋生的草药产品商 人攻击这个法案为“反草药法案”。足见它对草药产品的冲击是不言而喻的。这个法案强调了2010年4月1日生效的联邦法令21CFR101.14所规定的 关于“健康宣告”的法律责任。依据这个21CFR101.14联邦法令,食品、药品、食品添加剂、饲料包装标签上的图案、文字、符号都涉嫌对包装物的健康 宣告。比如,印上一个心脏符号,可视为对保持心脏健康或维持心脏营养的宣告。按照21CFR101.14联邦法令,所有健康宣告都必须满足完整、真实、不 带误导的要求。

与欧盟和加拿大相比,美国政府将“健康宣告”的科学性划分了不同的层次:

1、可以宣告为“有充分的科学证据证明”。意即,这些证据可视为“结论性的”。

2、可以宣告为“有科学证据显示”。意即,这些科学证据“还不是结论性的”。

3、可以宣告为“有迹象表明”。意即,这些科学证据还非常有限,远没有达到给出结论的水平。

4、可以宣告为“初步研究显示”。意即,研究工作还做得相当少,还谈不上对任何有意义的科学结论的支持。

这就是说,美国、欧盟、加拿大对于食品、饲料、保健品、食品添加剂、膳食补充剂的合法销售,增加了严格的标签管理。标签审查不合格的产品,不得在市面上出售。

中草药要变身为功能食品,就必须接受标签审查。

显然,中草药完全不具备可以接受如此严格的标签审查的基础。诸如“性平,味甘,温补脾胃”之类的表述,用来忽悠那些愚顽不化的中国人,当然是可以的。但是,要进入欧盟、加拿大和美国市场,我们可以结论性地说:此路不通!

俗话说,“东方不亮西方亮,黑了南方有北方”。中草药在以上这些地方遭遇“此路不通”之后,它还会往哪些地方去呢?

首先是韩国和日本。这是接受中草药最早,延续时间最长的两个国家。可是,据我所知,这两个国家的反中医浪潮有增无已。

韩国最早提出废除中医是在1820年。它是由丁若镛和崔汉崎领头倡导的。2006年10月,在这个国家兴起了一个市民组织,叫做“大韩民国医疗一元 化国民联合会”。他们的目标,从这个组织的名称当中就可以看出来,那就是实现国家医疗体制的一元化。目前,注册参与这个市民组织的有6000多人。他们都 是在韩国在医疗、政治、哲学、科学、文学、艺术、法律等领域,从事教育工作或职业性实践工作的社会精英。韩国的确还有许多迷信中草药的人。但是,在韩国医 疗一元化运动的推动下,中草药究竟在韩国前景如何,目前还很难预料。

日本最早提出废除中医是在1729年。它是由大槻泽一发起的。到明治维新开始之前3年(1865年),日本就已经成功地实现了“废除皇汉医学”的奋 斗目标。中日甲午战争,日本侵华战争,使得中日关系恶化了90年。20世纪80年代中叶,中日关系进入“蜜月时代”。以邓小平和中曾根康弘为代表的中日两 国政治家,通过互谅互让的谈判,中草药重新进入了日本。但是,进入90年代以后,首先是高桥晄正出版了两本揭露汉方危险的著作。这两本书的出版,惊醒了日 本人民,并且引发了日本人民对中曾根所在的自由民主党的严重不满。从政治角度说,汉方重新进入日本,没有经过国会讨论,是自由民主党独断专行作出的决定。 从国际大环境方面说,2000年世界卫生组织公布《传统医药战略2002-2005》之后,传统医药的安全性、有效性和品质保证成为了世界性的话题。据我 所知,汉方重新成为厚生省承认的合法用药,经常不时成为日本民主党打压日本自民党的大棒。有这样一个背景存在,加上日本反华势力日益膨胀,中草药在日本将 面临怎样一种前景,我国中医药界应该多少有点自知之明。

剩下的,就是最近中医药界的头面人物所多次表述过的“向东南亚进军”。

事实上,改革开放以来,中草药一直在向东南亚进军。只不过,中草药的每一次进军都没有他们想象的那样顺利。东南亚国家受法国和印度文化的影响,远甚 于中国。印度的吠陀医学、法国的传统草药和欧洲的顺势疗法,在东南亚国家依然占据着最重要的位置。有人统计过,至少在马来西亚,泰式按摩在传统医疗方面占 的份量最大,达到了56%。其次是印度的吠陀医学,占传统医学的26%。中草药只占传统医学的9%。在东南亚国家,对传统草药管理最严的是新加坡。此外, 引起警觉最充分的是菲律宾。2007年,一些中草药商人将他们生产的中草药卖给菲律宾偏远地区的农民抗疟。不但完全没有效果,而且还造成了菲律宾疟原虫的 耐药性。它引发了菲律宾政府对中草药的信任危机。这一年的7月24日,菲律宾政府依据他们本国1963年制定的法律,一次就查封了在菲律宾营生的11家中 草药店。

中草药在其国际化的过程中四处碰壁之后,剩下的,就只有一条路可走了,那就是像阿Q那样“飘飘然又飘进了土谷祠”。也就是说,在国外飘飘然20多年 之后,中草药最后还是会飘回到中国这个“土谷祠”来。只有中国这个“土谷祠”,才是中草药的真正归宿。你看我们中国那些著名的京剧演员和歌唱家,不是在国 外“飘飘然”之后都感受到了“我的观众在我的祖国”吗?你看!当他们达到这样一种思想境界之后,他们想不爱国都不可能了!京剧是这样,中草药又何尝不是如 此呢?

中草药重新回国是必然的。值得我们警惕的是,回国之后,他们必将加大有关中医药的“宣传力度”(也就是继续拼死拼活地吹牛撒谎),并且还将动员他们 一切可以动员的政治力量、法律力量、经济力量、政策力量,科技力量,教育力量,不择手段地实现“堤外损失堤内补”(京剧《龙江颂》里的著名台词),把在国 外遭遇的损失,在国内补回来。只不过这种“补回来”的财政来源,可能来自政府财政的“大力扶持”,也可能来自那些把自己卖给骗子之后,还为骗子数钱和送锦 旗的愚民。

不过,2006年在我国民间重新开始的反中医斗争,正在唤醒那些沉睡的人们。虽然中医中药这种文化怪胎被赋予了一些迷人的桂冠,这种陈旧的破烂货被 粉饰了五颜六色的华丽外表,但它只能一时地欺骗那些愚不可及的人。一旦这些愚民的智慧之门被充分开启,他们就会醒来找那些骗子算账。

我不相信我们的人民会一直愚昧下去。鉴于此,我再次断言,留给中草药的前途只有死路一条,不会有第二条路!

4月29日起草于天津天宇大酒店,

5月12日定稿于中南大学校本部寓所。

张功耀