> --
> Subscription settings:http://groups.google.com/group/pongba/subscribe?hl=zh-CN
之所以想到这个问题是因为前几天参加一个面试,考官问我:愿不愿意做Pascal的编程。我比较委婉的给出了否定的回答,因为我感觉比较重要的是我能把工作历程串成一条线,我恰恰是把c、c++当成了这个引线的针。
On 4月27日, 下午10时33分, jinhu wang <wangjinhu...@gmail.com> wrote:
个人仍然很喜欢C++。C++是一种非常复杂的语言。在你学计算机几十年后,你需要一种复杂的语言来显示你的才能。;-)
不过,如果你需要新人和你一起工作,不能保证每个人都很强的话,用C++太容易犯错误了。我现在也越来越觉得使用脚本语言在很多情况下是个好主意。
2010/4/27 jinhu wang <wangji...@gmail.com>:
--
Wu Yongwei
URL: http://wyw.dcweb.cn/
编程语言只是工具,用来解决实际问题的。
所以你要看做的项目是否对未来发展有帮助,而不是编程语言。
我认识一个同事,之前和我一样用C来开发,去面试另一个公司的职位,同样领域但是用c++开发。
最后尽管他对c++很不了解,还是成功拿到了offer,而且该公司还给他一笔数额不小的签字费。
在对方眼中,我这个同事的价值在于他个人能力,某技术领域的经验和技能,语言并不是很重要的考核指标。
> 之所以想到这个问题是因为前几天参加一个面试,考官问我:愿不愿意做Pascal的编程。
> 我比较委婉的给出了否定的回答,因为我感觉比较重要的是我能把工作历程串成一条线,我恰恰是把c、c++当成了这个引线的针。
>
--
Cheers,
Oliver Yang
Twitter: http://twitter.com/yangoliver
Blog: http://blog.csdn.net/yayong
--------------------------------------------------------------------
An OpenSolaris Developer
Right off the bat typelist are Just too LISP-ish to be easy to use.
确切的说,更像Scheme/Lisp style
所以你看看Lisp,就发现Alexandrescu只不过在C++中用Scheme/LISP风格来进行template
programming。
这时不禁会心一笑。
另外,你WIKI下STL之父,他的生平中很重要的一个线索,是在设计STL之前,进行了大量的Scheme编程。
--
刘新宇
http://sites.google.com/site/algoxy
2010/4/28 qiaojie <qia...@gmail.com>:
--
Milo Yip
Twitter @miloyip
http://www.cnblogs.com/miloyip/
http://miloyip.seezone.net/
软件工程师的个人修炼应该专注于自己技术领域的问题解决和创新,而不是满足于用不同工具解决相同的问题。
所以要经常反省你是新技术的追随者还是创造者,不要忘记也许你有机会去创造一种标准,而不是跟随一种标准。
所以我给自己的定位不是程序员,而是工程师。
--
2010/4/28 hayate <haya...@gmail.com>:
在 2010年4月28日下午1:36,Jeffrey Zhao <je...@live.com> 寫道:
> 不懂,程序员和工程师有什么区别?
這些稱謂很有爭議性,我不談了。
http://en.wikipedia.org/wiki/Debates_within_software_engineering
http://en.wikipedia.org/wiki/Software_engineer
> 你说不要去追赶新语言,那么你会追赶什么呢?框架?开发模式?一回事儿。
oliver說「专注于自己技术领域的问题解决和创新」。和框架、開發模式並不是一回事兒。
我的看法是,如果專注某個領域,應該花多點時間看相關專著、論文等。例如做圖形的應分配多些時間去看SIGGRAPH、I3D。
> 问题不是出在“语言”,而是出在“追赶”上,语言是创新的重要部分,也是经常被忽视的部分。
> 我是说要去了解新语言,没说了解了就要去切换,取长补短永远是没错的,追求用好的工具来更好的完成任务也是没错的。
個人覺得,任何知識,通常都是越多越好。
並不是說學習新的語言不好,如果新語言能帶來新的編程思維,讓程序員從另一個角度分析及解決問題,是應該花點時間去學。
但如果語言之間的分別不在於思維,而謹是語法上的差異,就不用分配太多時間。
> 你想要创新,你不去广泛了解别人的创新,又怎么提出自己的创新?
這個套用在發展新的編程語言是對的。但更普遍的是在應用上的創新技術。
> 当然,就Java问题来说,我倒觉得它已经可以算是阻碍生产力的发展了,可以被淘汰了……呃,好吧,是被放在神坛上供起来。
淘汰是由市場決定。
大家技术背景不同可能看到的东西不同吧。
我看到很多人把精力花在了追求掌握语言的细枝末节上,而忽略了对自己所处技术领域的钻研。
我认识的人里面,在自己技术领域提交了多项专利,有不少不错的想法,但C语言却不是我见过的最优秀的,可以说很一般吧,也不懂那么多时髦的技术。
做一个好的工程师,解决问题才最重要。衡量工程师的水平不是写段程序就可以的。
oliver yang是有点偏向于学术界的角度思考
开发者(developer)来讲,开发能力最大,谁能用不同语言快速解决不同的问题谁就牛。
研究者(researcher)来讲,研究能力最重要,语言就算不会c,c++,java都没关系,不少researcher纯matlab跟一身的。
所以你们谁也说服不了谁,没用的。这估计是由工作性质决定的。oliver yang估计是某比较牛的外企的研究部门的。
----------------------------------------------------------------------------------
Yours Sincerely
Kun
www.kunli.info
http://twitter.com/cnbuff
2010/4/28 oliver yang <yango...@gmail.com>:
我就是从软件工程师的角度说的。
优秀的工程师应该不满足于在规定时间作出符合功能规范的软件软件产品来。
好的工程师都是能很好的把握自己技术领域的发展趋势,然后才能谈到创新。而做到这一点,本身就值得花费很大的精力。
一个研究顶呱呱,编程很一般的人,在国内90%的公司找不到工作
软件工程师也分很多种,IBM的软件工程师和华为的软件工程师,要求能一样么
----------------------------------------------------------------------------------
Yours Sincerely
Kun
www.kunli.info
http://twitter.com/cnbuff
2010/4/28 oliver yang <yango...@gmail.com>:
但牵涉到电子计算机方面的researcher,除非是研究语言的,否则很少有热追新语言的。因为大部分领域,研究的东西和实现语言没有任何关系,新语言风险大,学习成本高。
----------------------------------------------------------------------------------
Yours Sincerely
Kun
www.kunli.info
http://twitter.com/cnbuff
2010/4/28 Jeffrey Zhao <je...@live.com>:
你的表达比我准确。另外就是标准和规范,我们公司的大牛就能从新规范和标准中解读出很多创新机会,新的项目就来源于此。
假设某软件是劳动密集型的,只需要软件工人,那可能是这样。
但这时显然换一个更有前途的领域比花时间学习语言更重要。在这样的领域,语言
带来的提升作用很小的。
或许我说的有些偏激,但我一直以为,工具作为一种技术壁垒的作用在逐渐削弱,尤其是做为脚本编程语言上面。随着工具越来越好用,对使用工具的人的要求是越来越低才对。
很多时候,一个公司招聘一个人,语言熟练是基本要素,决定性的要素还是在某一领域的技术能力和个人能力。
如果自己的使用工具淘汰就混得很惨的人,只能去怀疑他一开始的成功只是幸运。
恩,我们说的不是一个问题。你说的是语言有高下之分。
我说的是工具只是工具而已,对个人成长来说,工具不重要。
一把宝刀和一把普通刀在效率上的差别谁都知道。
但到了屠夫手里都是屠刀,屠夫要变成刀客要学的东西还有很多。
无意争论这个话题了,编程这是人人都可以学会的事情,但做一个工程师不是人人都可以的。
大学课堂里计算机专业学习的知识语言毕竟只占了一小部分。
当然,每个人的目标不同,身处环境不同,可能观念上有些差别。 大家明白了各自观点就好。
认识到C++的复杂性,所以放弃他,这是一种境界。认识到C++的复杂性,然后学会驾驭他,则是另一种境界。
2010/4/27 jinhu wang <wangji...@gmail.com>
有一句话叫做 工欲善其事,必先利其器
2010/4/28 oliver yang <yango...@gmail.com>
在 2010年4月28日 下午2:50,Jeffrey Zhao <je...@live.com> 写道:
>> 但如果語言之間的分別不在於思維,而謹是語法上的差異,就不用分配太多時間。
>
> 所以我谈语言时,就在一开始说明了,我不会比较语言语法上的差异或是简单的便利性,我只关注能对编程思维产生影响的地方。如果一个语法不会对编程似乎产生 影响,无法引导出更好的编程模式,那么我就不会去关注它了。
>
>> 淘汰是由市場決定。
>
> 作为技术人员不能等市场,否则只能是后来者啊,也要设法走在前面去推动的。如果能使用领先市场水平的工具和方法,这就是领先的一面。待市场来推动个人, 那……就不多说了。
>
> 事实上在Java问题上,国内似乎又已经落后了一大截了,事实上国内技术社区对新事物的接受总是慢一拍……虽然很多人感觉说国内浮躁,不追求核心内容,但 事实上追求的也只是表面——例如我说的语法差异。而另一些人不追求这些,却同时又把语言对编程思维开发模式的影响全盘否定了。
On 4月28日, 下午3时53分, "Jeffrey Zhao" <je...@live.com> wrote:
> 语言的改进,一是在保持生产力的同时降低编程难度,或是在提高编程难度的同时对生产力提高的更大。
>
> 我一直强调的一点是,语言是会影响架构设计和思维的,如果一门语言提出来以后不会影响架构设计和思维,那么倒价值也真不大。
>
> 就好比C# 1.0相对于Java来说是没有价值的,只可惜微软必须有自己的语言,而C# 3.0相对于Java就是有许多价值了。
>
> Jeffrey Zhao
> Blog:http://blog.zhaojie.me/
> Twitter: @jeffz_cn
>
> --------------------------------------------------
> From: "oliver yang" <yangoli...@gmail.com>
> Sent: Wednesday, April 28, 2010 3:38 PM
> To: <pon...@googlegroups.com>
> Subject: Re: [TL][OT]你是如何放弃c++的?
>
>
>
> > 在 2010年4月28日 下午2:50,Jeffrey Zhao <je...@live.com> 写道:
> >>> 但如果語言之間的分別不在於思維,而謹是語法上的差異,就不用分配太多時間。
>
> >> 所以我谈语言时,就在一开始说明了,我不会比较语言语法上的差异或是简单的便利性,我只关注能对编程思维产生影响的地方。如果一个语法不会对编程似乎产生影响, 无法引导出更好的编程模式,那么我就不会去关注它了。
>
> >>> 淘汰是由市場決定。
>
> >> 作为技术人员不能等市场,否则只能是后来者啊,也要设法走在前面去推动的。如果能使用领先市场水平的工具和方法,这就是领先的一面。待市场来推动个人,那......就 不多说了。
>
> >> 事实上在Java问题上,国内似乎又已经落后了一大截了,事实上国内技术社区对新事物的接受总是慢一拍......虽然很多人感觉说国内浮躁,不追求核心内容,但事实上 追求的也只是表面----例如我说的语法差异。而另一些人不追求这些,却同时又把语言对编程思维开发模式的影响全盘否定了。
On Apr 27, 10:33 pm, jinhu wang <wangjinhu...@gmail.com> wrote:
> 听说有不少c++程序员写程序写到一定境界后就不用c++了。
> 咱们这里有没有有此阅历的朋友,能否分享一下你的成长历程。
> 之所以想到这个问题是因为前几天参加一个面试,考官问我:愿不愿意做Pascal的编程。
> 我比较委婉的给出了否定的回答,因为我感觉比较重要的是我能把工作历程串成一条线,我恰恰是把c、c++当成了这个引线的针。
>
> --
> Subscription settings:http://groups.google.com/group/pongba/subscribe?hl=zh-CN
C++太复杂是事实。但是,C++的表达能力也是非常强的。写出优雅而高效的代码,我还不知道那种语言更好。也许D?D没有后向兼容性带来的无数陷阱,但毕竟在工具和库方面没法和C++比。
2010/4/28 n/a <inn...@gmail.com>:
--
Wu Yongwei
URL: http://wyw.dcweb.cn/
大多数纯搞研究的通常都只用1,2门擅长语言处理数据,没精力去研究新语言或语言的高级特性,都是能完成简单任务就好,做东西也大部分都是prototype,不会那么care程序bug之类的东西。
----------------------------------------------------------------------------------
Yours Sincerely
Kun
www.kunli.info
http://twitter.com/cnbuff
2010/4/28 jinhu wang <wangji...@gmail.com>:
我说语言没那么重要不是说编程能力的问题,编程能力是基本素质,尤其是对工程师来说。
但很多业界顶尖的工程师让你敬佩的绝对不是编程能力,而是编程能力之外的东西,而这种东西不是通过多掌握几中编程语言可以学到的。
推荐一本书,裘宗燕老师翻译了中文版。
《程序设计语言--实践之路(第二版)》
这本书的角度比较特别。是从语言实现的角度,也就是编译器作者的角度去看待各种语言的。
大概涉及30多种语言吧,当然详细涉及的就那么5,6种。也挺不错了。
我觉得c++的至高境界是c!
C有C的解决问题的方式:原始、注重效率、容易缓冲区溢出,但是,容易产生层
次较少的设计,而该点往往导致代码容易被理解。除安全问题外,C的重构过于
复杂,改一点小地方往往导致大面积的代码被修改。C++解决问题的方式明显不
同(拿C++当C用的除外):不太容易缓冲区溢出,能够很好地抽象问题的各个层
面,但语言细节过于繁琐难于掌握,有所有OO语言容易产生对象层次复杂的通
病。LISP当然又是另一种情况……
2010/4/29 Jeffrey Zhao <je...@live.com>:
> 我觉得我还是有些话没有表达清楚,还是我表达清楚了但是大家不同意。
>
> 这样,我打个比方吧。就是学真实世界里的语言,多学几门语言,如英语,德语,法语有什么用吗?狭义的说,没什么用,平时又没啥机会去用。
>
> 但是,学这些语言,对那些国家的文化,政治,经济,历史等多方面都会有涉猎,更重要的是开阔眼界。而且我想,如果你真学好那些语言,这些东西是逃不掉的。
>
> 学编程语言也一样,所以我一直强调我不会谈什么简单语法,不会关注可以少写几行代码等等,我一直强调的是语言对设计和架构的影响,对开发思想或编程模式的影响。
>
> 编程语言影响的只是编程能力吗?我想还真不见得。
--
时代发展了..到了今天,我们可以采用go之类的语言去取代c++.当应该抛弃c++的时候,我们要毫不犹豫的抛弃!
我个人觉得,在实际工作中,很多时候使用哪种语言没有太多选择余地。
一方面是商业原因,一方面是技术原因。
比如,公司项目就是用C++搞的,很多时候,已经不能改变;
比如,在游戏开发领域,尽管C++会有这样那样的问题,但现在仍没有一个更好的语言/方案来取代它。
也许使用C是一种方案,但C也有这样那样的问题。我认为C和C++分不出谁好谁坏。
所以,这时候,就应务实一些,比如制定代码风格规范,有选择性地使用语言特性等,这些也是大部分成功C++项目的做法吧。
所以,“你是如何放弃C++的”这种先入为主的问题,并没有太多好说的,至少对于实际工作是这样。
对于我个人来说,“在工程中,如何更好地使用C++”这样的问题,才更有意义,也更加务实。
在 2010年4月27日 下午10:33,jinhu wang <wangji...@gmail.com>写道:
在 2010年4月28日 下午2:50,Jeffrey Zhao <je...@live.com> 写道:
>> 但如果語言之間的分別不在於思維,而謹是語法上的差異,就不用分配太多時間。
>
> 所以我谈语言时,就在一开始说明了,我不会比较语言语法上的差异或是简单的便利性,我只关注能对编程思维产生影响的地方。如果一个语法不会对编程似乎产生影响,无法引导出更好的编程模式,那么我就不会去关注它了。
>
>> 淘汰是由市場決定。
>
> 作为技术人员不能等市场,否则只能是后来者啊,也要设法走在前面去推动的。如果能使用领先市场水平的工具和方法,这就是领先的一面。待市场来推动个人,那……就不多说了。
>
> 事实上在Java问题上,国内似乎又已经落后了一大截了,事实上国内技术社区对新事物的接受总是慢一拍……虽然很多人感觉说国内浮躁,不追求核心内容,但事实上追求的也只是表面——例如我说的语法差异。而另一些人不追求这些,却同时又把语言对编程思维开发模式的影响全盘否定了。
或许我说的有些偏激,但我一直以为,工具作为一种技术壁垒的作用在逐渐削弱,尤其是做为脚本编程语言上面。随着工具越来越好用,对使用工具的人的要求是越来越低才对。
很多时候,一个公司招聘一个人,语言熟练是基本要素,决定性的要素还是在某一领域的技术能力和个人能力。
如果自己的使用工具淘汰就混得很惨的人,只能去怀疑他一开始的成功只是幸运。
听说有不少c++程序员写程序写到一定境界后就不用c++了。咱们这里有没有有此阅历的朋友,能否分享一下你的成长历程。之所以想到这个问题是因为前几天参加一个面试,考官问我:愿不愿意做Pascal的编程。我比较委婉的给出了否定的回答,因为我感觉比较重要的是我能把工作历程串成一条线,我恰恰是把c、c++当成了这个引线的针。
在我的工作中,语言的选择是基于其生成的二进制,在不同情况下的需要:
如果java有能够生成精简的native code的编译器,我可能很少会使用C++;(GNU java貌似支持?)
反过来,如果C++有java那么方便使用的ide,跨平台特性和语言特性,那么,Java对我也不是必须的了(补充,VS2010 ide
已经友好很多了,也粗略支持了lambda和concurrency库)
另外,如果我想测试一下某个win sdk api的功能,往往是打开pyScripter的来用win32api库跑跑
同样,稍微看看scheme,和楼上一样,就比较容易了解loki的一些用法其实是对函数式编程的借鉴
编程和语言无关,赞一个,我非常认同。
所谓新技术,新标准,很多都是老思想的延续,并无颠覆性的变化。掌握好c++的人,掌握任何一个语言都没问题。
所谓新技术,新标准,很多都是老思想的延续,并无颠覆性的变化。掌握好c++的人,掌握任何一个语言都没问题。
On 4月27日, 下午10时33分, jinhu wang <wangjinhu...@gmail.com> wrote:
> 听说有不少c++程序员写程序写到一定境界后就不用c++了。
> 咱们这里有没有有此阅历的朋友,能否分享一下你的成长历程。
> 之所以想到这个问题是因为前几天参加一个面试,考官问我:愿不愿意做Pascal的编程。
> 我比较委婉的给出了否定的回答,因为我感觉比较重要的是我能把工作历程串成一条线,我恰恰是把c、c++当成了这个引线的针。
>
向往叶孤城的境界很好。但是世界上只有1个叶孤城。如果是一个青城派的
三代弟子 还是手中有剑比较实在。眼高手低很容易。
> > Subscription settings:http://groups.google.com/group/pongba/subscribe?hl=zh-CN- 隐藏被引用文字 -
>
> - 显示引用的文字 -
看到有不少做软件的同志,总是对做硬件的佩服得五体投地。觉得那才是真正的底层。
我来略微破除一下迷信,使得大家不要妄自菲薄。
我以前在大学时做机器人的,从机构设计,机械设计,工艺加工,控制系统设计,电机设计,电路设计,单片机编程,嵌入系统编程,到上位机的控制软件,AI
设计等等,一个人走过全流程。所以我对硬件那边很清楚。当然我这些经历都是在2004年前,现在技术飞速发展,可能我有些观念过时了。欢迎现在有做硬件
的同志拍砖。
如果不钻到集成电路芯片里面,搭电路这个活和搭积木区别并不大,当然这个积木更像是乐高积木。首先,由于集成电路技术的进步,如今我们很少需要像我上大
学的时候计算放大器的放大倍数,亲手搭建功放了,大量的集成电路厂商提供了无数芯片供你选择。这就好比一个软件库有大量的类和接口,你要做的就是选择正
确的芯片。厂商一般会提供datasheet,通常是一个pdf文件,里面不仅有各种参数,还有--推荐电路图。这就好比MSDN里面带有
example代码。所以连电阻电容都不用自己考虑了,通常需要做的,就是照着推荐电路搭。
这和我们拿一个类库写程序的难度没有什么太大的区别。当然还是要有一定的创造力的,也有一定的经验在里面,例如在输出上加个电容滤波,干掉噪声,放大下
信号等等。设计数字电路的部分就更加简单了,模拟部分可能还有些计算,数字部分基本就是按照逻辑需要来,这和我们写程序里放for, while,
if-else相等价。
比较考验经验的部分是布线。真正好的电路大多是手工布线的,但是如果你的要求不高,比如没有高频,没有大的串扰。自动布线大多数也能工作,这就好比手工
写程序和利用Wizard。
通常,为了避免危险,做硬件的时候,会用一些模拟软件模拟一下电路的运行,这在我上学的时候还不普遍,但是据说现在已经非常好了。这好比我们做
stub,跑UT。
有时,为了调试方便会放些发光二极管,或者7段数码管显示些信息。这好比我们在程序中加log,或者print到stderr上。当然现在可能都是用液
晶了。
然后是把电路图pcb拿到中关村去制板,(在国外没有中关村这么好的条件,只能自己动手焊接实验板了,所以国人也不要妄自菲薄)。
然后去采购原件,焊接。这相当于我们编译,链接。只不过成本(钱)比较高就是了。
然后是单片机编程。单片机通常很弱,虽说16位,32位N年前就在推广,可是诸位猜猜国内大量用的是什么?8位的51单片机。日本呢?8位的PIC单片
机。用汇编?那是过去,Flanklin C51等等10年前就普及了。IDE和编译器都是free的,可以自由下载。程序非常简单,都是直来直去。复
杂的算法?几乎没有,因为算法可以移到上位机PC上去写。有个PID控制就非常了不起了。控制硬件一点也不神秘,基本就是照着芯片的说明书写。总共不外
乎以下操作:
1,读:从某个地址读数据
2,写:向某个地址写数据
3,中断
对应c语言里面超级简单,无非就相当于Linux的read, write和ioctl
面向对象?想都不要想。根本用不着。顺便说下PIC单片机,虽说是8位机,但是能用的只有7位,另外1位留作它用,那程序就更简单了。
后来有了嵌入系统,我觉得复杂度还是很低,因为策略就是嵌入系统里尽量做简单的事,把复杂的事情通过通讯模块传到上位机里干,上位机要么是
Windows要么是Linux,那里才是AI和复杂的算法。嵌入系统里所做的无非是一些驱动和通讯。
然后说说机械部分。这部分真正考验水平的是机构设计。我举个例子,汽车雨刷你会怎么做?
水平低的方案:两个刷子,两个电机,两个控制电路。
水平高的方案:两个刷子,一个菱形杆机构,一个电机,一个控制电路。
机构部分要用力学知识,需要一些计算。
机构定好了,剩下的就平凡了。照着零件书选零件,包括齿轮,轴承,皮带,螺丝....这和对着类库选函数没有区别。
然后剩下的一些要加工的,就要用CAD设计下。这部分脑子里有车,铣,刨的工艺就差不多了,有时还要和工人师傅确认下。
3D的CAD能干的事情很多,基本装配好的样子都知道了。
有时要算下应力,有ansys这样的有限元分析软件和仿真软件,也不用你亲自动手去人肉计算。然后送去工厂加工装配。
自己去采购机箱,安装电路,布线。
开发上位机软件。这个大家都懂我就不说了。
我想说的是,因为硬件部分对大多数programmer来说是黑盒,所以大家觉得神秘,高科技,有水平。其实在今天大社会分工的背景下,
硬件工程师和我们软件工程师一样,都是一颗一颗的螺丝钉。他们看我们也觉得很神秘,高科技,有水平。这个我和硬件工程师谈过,确信
这一点。有些硬件工程师常年设计DVD的盖子,就是一按按钮就弹出来的那个托盘。他们也很枯燥郁闷。
并且硬件工程师还有一点不爽的是:我们软件工程师回到家,可以下载喜欢的开源软件,业余乐乐。可是硬件工程师呢?哪样不要花钱,自己业余时间做个遥控
车,要比去商店买一个贵好几倍!而且老婆还要担心烙铁不要把家里弄着火了....
我们软件工程师这点上很节能环保呐。
有一点不同意的就是随着arm的发展,现在越来越多的算法以及优化是在嵌入式环境中做了,所以你说
“嵌入系统里所做的无非是一些驱动和通讯。”
这是不对的。
硬件工程师相对于软件工程师还有一点比较好的就是在国内硬件工程师老了比较吃香。搞软件的老了好像反而不吃香,都想着转行了
----------------------------------------------------------------------------------
Yours Sincerely
Kun
www.kunli.info
http://twitter.com/cnbuff
2010/5/16 liuxinyu <liuxi...@gmail.com>: