[gzlug] 新人报到~

15 views
Skip to first unread message

Ma Xiaojun

unread,
Jul 5, 2011, 4:36:20 AM7/5/11
to 广州 GNU/Linux 用户组
基本情况:
我是一个男生。
中山大学,信息科学技术学院,电子2+2专业(今年9月份开始去香港中文大学念后面那个“2”),大二。
学校里两部机器(都AMD^_^),一部笔记本用Debian 6.0(stable)、一部台式机用Ubuntu 10.04 LTS
只保留了一个VirtualBox中的内存192MB的Windows XP用于工行网银等特殊应用

研究兴趣:
范型数据结构的在不同编程语言(C、C++、Java、Python)中的实现
经典UNIX系统的设计与实现、GNU/Linux对经典UNIX的增强和改进
在理工教育中使用Python语言(例如用SciPy等取代matlab、在网络编程实验、图形编程中使用Python取代或配合C/C++等)
在企业环境中使用GNU/Linux桌面,我目前认为有两大问题(不考虑历史因素):
1、用户习惯
Windows桌面:从Windows 95到Windows 7的界面布局,快捷键等没有本质的改变,旧Windows和新Windows的使用起来
没有太大差别。
但是GNU/Linux桌面呢,是GNOME(2还3)?还是KDE?还是XFCE?还是自己配置的超酷FVWM?还是……?
我们假设有一个人完全不懂电脑,同时假设他懂各种自然语言,给他全面培训一下Windows XP,他在世界任何地方碰到Windows桌面应该都会基
本用了,如果我们想给他培训GNU/Linux桌面呢?该培训什么?至少我没有想到很好的答案。
2、软件管理
对于新机器而言,Windows和GNU/Linux都可以装新版的,网络条件也往往较好,软件也需要保持较新(为了安全)。如果只部署同一种发行版的
话,GNU/Linux桌面的软件管理(通过apt、yum等包管理机制)应该比Windows桌面简单。
对于旧机器而言,Windows只能装旧版,而GNU/Linux可以装旧版、特殊版本、新版并特别配置。就我个人观察,旧版GNU/Linux得到的
支持(软件源停止更新甚至停止服务,新软件不易在旧系统上安装)可能还不及旧版的Windows,特殊版本可能不容易管理维护(可能没有一个比较全的软
件源),新版本特殊配置,怎么配置呢?研究吧!
BTW,我认为,对于个人用户而言,如果硬件都配置好了的话,GNU/Linux桌面相比Windows桌面的友好程度不相上下。主要困难就是不能运行
所有的Windows专属程序和游戏,而随着许多传统应用的网络化,如GMail、WebQQ等和网络新应用的流行,如人人(Facebook)和微薄
(Twitter)等,这种困难在缩小。我觉得真正要做的工作是改变公众对于电脑操作系统(的标准)就是Windows的错误观念,这方面的资料还很不
足。

其他兴趣:
数学,纯和应用都喜欢。准备有时间看一些数学大师的书,如Rudin的,钟开莱的,小平邦彥的等。
历史,一般说的那种历史太庞大了,中学时比较喜欢,现在不太看了。我现在主要感兴趣的是C和Java是怎么样取得现在这种如此广泛的使用的。

生活细节:
我两部机器的locale都是en_US.UTF-8,买书绝不买翻译版(不是中文也不是英文的书另外考虑),手边的书大都是英文的
我喜欢各种毛绒公仔,如加菲猫,机器猫,灰太狼等。
我喜欢各类山珍海味、琼浆玉液。
……

先写这么多吧……

cool roky

unread,
Jul 5, 2011, 4:46:09 AM7/5/11
to gz...@googlegroups.com
欢迎欢迎,好详细啊!

在 11-7-5,Ma Xiaojun<damag...@gmail.com> 写道:

> --
> 您收到此邮件是因为您订阅了 Google 网上论坛的“广州 GNU/Linux 用户组”论坛。
> 要向此网上论坛发帖,请发送电子邮件至 gz...@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 gzlug+un...@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/gzlug?hl=zh-CN 访问此网上论坛。
>
>

Robin Lee

unread,
Jul 5, 2011, 4:51:13 AM7/5/11
to gz...@googlegroups.com
噢,我校势力继续在扩大

的确,不管一些企业的业务多么依赖 Linux ,员工在桌面上用 Linux 的还是凤毛麟角,虽然可能他们的计算机水平已经多高。

2011/7/5 cool roky <rok...@gmail.com>:

Lasntonpeng

unread,
Jul 5, 2011, 5:30:35 AM7/5/11
to gz...@googlegroups.com
同龄学生表示压力大~
luck is where preparation meets opportunity

Kenny He

unread,
Jul 5, 2011, 5:33:30 AM7/5/11
to gz...@googlegroups.com
高龄校友表示鸭梨无比巨大~~~膜拜ing

2011/7/5 Lasntonpeng <lanst...@gmail.com>



--
Best regards!

--

Kenny He

wang zelong

unread,
Jul 5, 2011, 5:40:22 AM7/5/11
to gz...@googlegroups.com
鸭梨山大,+1
Best regards!
wang zelong





刘滔

unread,
Jul 5, 2011, 11:40:44 AM7/5/11
to gz...@googlegroups.com
华农人民发来贺电,表示压力很大,貌似我对自己好像也没一时能想出这些来~
Liutos Love Linux LaTeX Lisp Ling

Xueqiao Xu

unread,
Jul 5, 2011, 12:34:52 PM7/5/11
to 广州 GNU/Linux 用户组
作为曾经的隔壁班同学,必须过来支持一下,期待以后的探讨与交流:)

On Jul 5, 4:36 pm, Ma Xiaojun <damage3...@gmail.com> wrote:
> 基本情况:
> 我是一个男生。
> 中山大学,信息科学技术学院,电子2+2专业(今年9月份开始去香港中文大学念后面那个"2"),大二。
> 学校里两部机器(都AMD^_^),一部笔记本用Debian 6.0(stable)、一部台式机用Ubuntu 10.04 LTS
> 只保留了一个VirtualBox中的内存192MB的Windows XP用于工行网银等特殊应用
>
> 研究兴趣:
> 范型数据结构的在不同编程语言(C、C++、Java、Python)中的实现
> 经典UNIX系统的设计与实现、GNU/Linux对经典UNIX的增强和改进
> 在理工教育中使用Python语言(例如用SciPy等取代matlab、在网络编程实验、图形编程中使用Python取代或配合C/C++等)
> 在企业环境中使用GNU/Linux桌面,我目前认为有两大问题(不考虑历史因素):
> 1、用户习惯
> Windows桌面:从Windows 95到Windows 7的界面布局,快捷键等没有本质的改变,旧Windows和新Windows的使用起来
> 没有太大差别。

> 但是GNU/Linux桌面呢,是GNOME(2还3)?还是KDE?还是XFCE?还是自己配置的超酷FVWM?还是......?


> 我们假设有一个人完全不懂电脑,同时假设他懂各种自然语言,给他全面培训一下Windows XP,他在世界任何地方碰到Windows桌面应该都会基
> 本用了,如果我们想给他培训GNU/Linux桌面呢?该培训什么?至少我没有想到很好的答案。
> 2、软件管理
> 对于新机器而言,Windows和GNU/Linux都可以装新版的,网络条件也往往较好,软件也需要保持较新(为了安全)。如果只部署同一种发行版的
> 话,GNU/Linux桌面的软件管理(通过apt、yum等包管理机制)应该比Windows桌面简单。
> 对于旧机器而言,Windows只能装旧版,而GNU/Linux可以装旧版、特殊版本、新版并特别配置。就我个人观察,旧版GNU/Linux得到的
> 支持(软件源停止更新甚至停止服务,新软件不易在旧系统上安装)可能还不及旧版的Windows,特殊版本可能不容易管理维护(可能没有一个比较全的软
> 件源),新版本特殊配置,怎么配置呢?研究吧!
> BTW,我认为,对于个人用户而言,如果硬件都配置好了的话,GNU/Linux桌面相比Windows桌面的友好程度不相上下。主要困难就是不能运行
> 所有的Windows专属程序和游戏,而随着许多传统应用的网络化,如GMail、WebQQ等和网络新应用的流行,如人人(Facebook)和微薄
> (Twitter)等,这种困难在缩小。我觉得真正要做的工作是改变公众对于电脑操作系统(的标准)就是Windows的错误观念,这方面的资料还很不
> 足。
>
> 其他兴趣:
> 数学,纯和应用都喜欢。准备有时间看一些数学大师的书,如Rudin的,钟开莱的,小平邦彥的等。
> 历史,一般说的那种历史太庞大了,中学时比较喜欢,现在不太看了。我现在主要感兴趣的是C和Java是怎么样取得现在这种如此广泛的使用的。
>
> 生活细节:
> 我两部机器的locale都是en_US.UTF-8,买书绝不买翻译版(不是中文也不是英文的书另外考虑),手边的书大都是英文的
> 我喜欢各种毛绒公仔,如加菲猫,机器猫,灰太狼等。
> 我喜欢各类山珍海味、琼浆玉液。

> ......
>
> 先写这么多吧......

Maple

unread,
Jul 5, 2011, 10:28:10 PM7/5/11
to gz...@googlegroups.com
SYSU 大二 软院菜鸟报道  同期待~
话说你有技术Blog吗?求围观

2011/7/6 Xueqiao Xu <xueqi...@gmail.com>
作为曾经的隔壁班同学,必须过来支持一下,期待以后的探讨与交流:)

李文俊

unread,
Jul 5, 2011, 10:57:57 PM7/5/11
to gz...@googlegroups.com
欢迎欢迎~,同期待以后的讨论和交流

--
您收到此邮件是因为您订阅了 Google 网上论坛的“广州 GNU/Linux 用户组”论坛。
要向此网上论坛发帖,请发送电子邮件至 gz...@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 gzlug+un...@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/gzlug?hl=zh-CN 访问此网上论坛。




--
best wishes by Li Wenjun

wang zelong

unread,
Jul 5, 2011, 11:12:12 PM7/5/11
to gz...@googlegroups.com
无责任点评,欢迎拍砖

在 2011-7-6,上午10:57, 李文俊 写道:

欢迎欢迎~,同期待以后的讨论和交流

在 2011年7月5日 下午4:36,Ma Xiaojun <damag...@gmail.com>写道:
基本情况:
我是一个男生。
中山大学,信息科学技术学院,电子2+2专业(今年9月份开始去香港中文大学念后面那个“2”),大二。
学校里两部机器(都AMD^_^),一部笔记本用Debian 6.0(stable)、一部台式机用Ubuntu 10.04 LTS
只保留了一个VirtualBox中的内存192MB的Windows XP用于工行网银等特殊应用

研究兴趣:
范型数据结构的在不同编程语言(C、C++、Java、Python)中的实现
我来较个真,范型?还是泛型? ^^!概念完全不同哦。
实现机制:是到了编译器的设计不?

经典UNIX系统的设计与实现、GNU/Linux对经典UNIX的增强和改进
经典操作系统参考很丰富了,工业化程度很高的。

在理工教育中使用Python语言(例如用SciPy等取代matlab、在网络编程实验、图形编程中使用Python取代或配合C/C++等)
我不太懂python,还要多了解~

在企业环境中使用GNU/Linux桌面,我目前认为有两大问题(不考虑历史因素):
1、用户习惯
Windows桌面:从Windows 95到Windows 7的界面布局,快捷键等没有本质的改变,旧Windows和新Windows的使用起来
没有太大差别。
但是GNU/Linux桌面呢,是GNOME(2还3)?还是KDE?还是XFCE?还是自己配置的超酷FVWM?还是……?
我们假设有一个人完全不懂电脑,同时假设他懂各种自然语言,给他全面培训一下Windows XP,他在世界任何地方碰到Windows桌面应该都会基
本用了,如果我们想给他培训GNU/Linux桌面呢?该培训什么?至少我没有想到很好的答案。
这里我很赞同

喻华阳

unread,
Jul 6, 2011, 3:16:38 AM7/6/11
to gz...@googlegroups.com
中专生毕业的,表示压力大得无法形容。。。

在 Tue, 05 Jul 2011 23:40:44 +0800,刘滔 <mat.l...@gmail.com> 写道:

> 华农人民发来贺电,表示压力很大,貌似我对自己好像也没一时能想出这些来~
>
> 在 2011年7月5日 下午5:40,wang zelong <wangzel...@gmail.com>写道:
>
>> 鸭梨山大,+1
>> 在 2011-7-5,下午5:33, Kenny He 写道:
>>
>> 高龄校友表示鸭梨无比巨大~~~膜拜ing
>>
>> 2011/7/5 Lasntonpeng <lanst...@gmail.com>
>>

<省略部分>

Xiaojun Ma

unread,
Jul 6, 2011, 2:00:46 PM7/6/11
to gz...@googlegroups.com
我没有技术博客……

是”泛型“……打错了……我举例说明一下我想研究什么……想必大家都会STL……我也是我思考的起点
STL的威力:
比如说,一般认为图有邻接表和邻接矩阵两种表示方法。
其实可用哈希表或平衡BST来取代邻接表中的链表,如果用STL表示,就是vector< unordered_map<int,int> >或vector< map<int,int> >
我肤浅的结论就是,STL让数据结构可以套数据结构,很给力。它是怎么实现的?有没有它不如专门写的非泛型数据结构的时候?
BTW,STL之父Alexander Stepanov曾在莫斯科大学(你们懂的吧?)念数学,他在最近几年写了本书介绍STL背后的数学原理,国内也出版了影印版……我还没买没看……
泛型只属于C++吗?
如果学C++不用读这么多书……如果不是看到Linus和其他无名的技术博主们批评、反对C++……那我们看看C语言……
最近了解到Linux内核和Glib都有实现一些C语言的泛型数据结构,且方法不同。至少可以提3个问题:
1、两种的优缺点分别是什么?
2、有没有其他可能?
3、和STL的关系,谁性能高?谁用起来方便?
Java如何?
J2SE1.5也说加入了泛型,这又是怎么实现的?
Python如何?
哇!动态语言,和静态语言有何区别?

工业化程度很高……没看懂是什么意思……

那个C&UNIX ritch...@qq.com也是我,QQ邮箱会话模式启用无效,所以那个退订了,只用这个GMail了……

--
Ma Xiaojun
SYSU+CUHK
damag...@gmail.com

wang zelong

unread,
Jul 6, 2011, 9:47:00 PM7/6/11
to gz...@googlegroups.com
继续无责任评论。。

在 2011-7-7 上午2:00 時, Xiaojun Ma 寫到:

我没有技术博客……

是”泛型“……打错了……我举例说明一下我想研究什么……想必大家都会STL……我也是我思考的起点
STL的威力:
比如说,一般认为图有邻接表和邻接矩阵两种表示方法。
其实可用哈希表或平衡BST来取代邻接表中的链表,如果用STL表示,就是vector< unordered_map<int,int> >或vector< map<int,int> >
我肤浅的结论就是,STL让数据结构可以套数据结构,很给力。它是怎么实现的?有没有它不如专门写的非泛型数据结构的时候?
BTW,STL之父Alexander Stepanov曾在莫斯科大学(你们懂的吧?)念数学,他在最近几年写了本书介绍STL背后的数学原理,国内也出版了影印版……我还没买没看……
数学原理这个还真是不了解,我看过侯捷老师的STL源码分析(一小部分),我觉得你可以参考一下,这本书是C++的分析。
泛型只属于C++吗?
当然不是只属于C++
如果学C++不用读这么多书……如果不是看到Linus和其他无名的技术博主们批评、反对C++…
这些批评都是见仁见智的,说实话C++太博大精深了。

…那我们看看C语言……
最近了解到Linux内核和Glib都有实现一些C语言的泛型数据结构,且方法不同。至少可以提3个问题:
1、两种的优缺点分别是什么?
2、有没有其他可能?
3、和STL的关系,谁性能高?谁用起来方便?
C语言不是语言级别支持泛型的
泛型的概念一般来说是编写代码时提供可变的部分,这部分要在使用前定义,按照这个概念来说C语言人为实现泛型是合理的,比方说C库的qsort这些。使用宏或者是指针来实现,技巧性强。
用起来当然是原生支持泛型的语言会方便一些(不用自己造轮子)
性能没分析过
优缺点因人而异


Java如何?
J2SE1.5也说加入了泛型,这又是怎么实现的?
java的泛型没用过,具体不好说,有动力就阅读源码看看吧。

Python如何?
哇!动态语言,和静态语言有何区别?
google之,编程语言的分类


工业化程度很高……没看懂是什么意思……
操作系统经过了几十年的发展,目前的典型结构已经固定,有能力开发的厂商也是技术积累了几十年,比方MS IBM Oracle RH,我觉得对这些厂商来说上层应用和安全性提高是现在很关注的。


那个C&UNIX ritch...@qq.com也是我,QQ邮箱会话模式启用无效,所以那个退订了,只用这个GMail了……

--
Ma Xiaojun
SYSU+CUHK
damag...@gmail.com


--
您收到此邮件是因为您订阅了 Google 网上论坛的“广州 GNU/Linux 用户组”论坛。
要向此网上论坛发帖,请发送电子邮件至 gz...@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 gzlug+un...@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/gzlug?hl=zh-CN 访问此网上论坛。

刘滔

unread,
Jul 6, 2011, 10:31:52 PM7/6/11
to gz...@googlegroups.com
说到泛型和前面的那个例子的话,我立马想到了Lisp里面的列表数据类型

zhantu law

unread,
Jul 7, 2011, 10:01:04 AM7/7/11
to gz...@googlegroups.com
快大四的表示你说的我几乎都不会 哈哈 后生可畏

wang zelong

unread,
Jul 7, 2011, 10:25:54 AM7/7/11
to gz...@googlegroups.com

在 2011-7-7 下午10:01 時, zhantu law 寫到:

快大四的表示你说的我几乎都不会 哈哈 后生可畏
闻道有先后,术业有专攻,如是而已。

^.^!

Hunt Xu

unread,
Jul 7, 2011, 9:47:40 PM7/7/11
to gz...@googlegroups.com
术业有专攻...

2011/7/7 wang zelong <wangzel...@gmail.com>:

--
best regards,
hunt

刘滔

unread,
Jul 8, 2011, 12:08:38 AM7/8/11
to gz...@googlegroups.com
其实只是每个人都有不同的兴趣,因此它将我们每个人引向了各自不同的方向而已~~~

Qingping Hou

unread,
Jul 9, 2011, 9:05:19 PM7/9/11
to gz...@googlegroups.com
发现09界牛人好多。。。好大的一个鸭梨

2011/7/5 Ma Xiaojun <damag...@gmail.com>:

JunLe Li

unread,
Jul 10, 2011, 1:16:32 AM7/10/11
to gz...@googlegroups.com
STL和泛型有什么关系?

C++那个不叫泛型,叫模板吧?在编译的时候,就替换为指定的数据类型,然后运行的时候就和具体的数据类型无异了。
Java那个才叫泛型。虽然,两者有类似。不过,Java的泛型其实比C++的模板强大。

---------------------------
LiJ...@Gmail.com




2011/7/10 Qingping Hou <dave2...@gmail.com>

wang zelong

unread,
Jul 10, 2011, 3:07:25 AM7/10/11
to gz...@googlegroups.com


在 2011-7-10 下午1:16 時, JunLe Li 寫到:

STL和泛型有什么关系?

一定要给出关系的话 那只能说STL中用到了泛型的概念~

C++那个不叫泛型,叫模板吧?在编译的时候,就替换为指定的数据类型,然后运行的时候就和具体的数据类型无异了。
没错,运行时的数据类型是固定的,这个是语言本身的类型安全要求。
模板是泛型的一种定义,我的理解泛型就是软件复用(reuse)的一种解决方法

Java那个才叫泛型。虽然,两者有类似。不过,Java的泛型其实比C++的模板强大。

没必要争谁是真的泛型假的泛型,K.I.S.S. 满足使用需求就行~

刘滔

unread,
Jul 10, 2011, 4:03:58 AM7/10/11
to gz...@googlegroups.com
非要说泛型的话,还是弱类型的语言来得直接吧~~~例如Lisp里面的sort函数就肯定满足对任意数据类型进行排序的要求,只要给了用于比较的谓词~~~

JunLe Li

unread,
Jul 10, 2011, 4:09:03 AM7/10/11
to gz...@googlegroups.com
LS是学LISP的么?Orz啊。

---------------------------
LiJ...@Gmail.com




2011/7/10 刘滔 <mat.l...@gmail.com>

刘滔

unread,
Jul 10, 2011, 4:15:04 AM7/10/11
to gz...@googlegroups.com
算是吧,对Lisp很有兴趣,喜欢看看讲Lisp的书,只可惜学艺不精,只能拿来玩玩~~~

hiphen lee

unread,
Jul 10, 2011, 11:16:21 AM7/10/11
to gz...@googlegroups.com
提醒一句,你们讨论泛型很好。但最好把它的名称说完整。

泛型,英文Generic Programming,我们简称GP编程。这里插一下,本人觉得“泛型”这个词对于初学者不友好或是很费解,因为在英文原意中,大概是“通用类型编程方法”或“泛类型编程”的意思,是一种编程方法、或者说是一种模式思维,而不是单单指一种特殊的“类型”。这是单谈"泛型"二字而导致的信息缺失。由于历史翻译原因,又由于它确实长得象一种“类型”,因此导致现在“泛型”概念的永垂不朽。。。。nndx...

它是我们上一代的聪明的程序员为了偷懒和代码复用而创造的,,,一门动态并高度参数化的不容易理解的模式语言,,,是戏言也是事实。只是这种聪明的经验,可以走多远呢?没有人知道。因为它和面向对象稍有冲突。因此当下常见于容器类,例如Java的Collection包。

小规模的应用在项目中,具有很高的效率。
如果大规模的撒开,估计你没疯掉,你的boss或接手你代码的同事就会把你xxx一顿

最后说明,GP编程不是必要研究,不懂的可以先略过。不知读计算机的同学,你们的考试范围,涉及这个么?



在 2011年7月10日 下午1:16,JunLe Li <lij...@gmail.com>写道:
Java那个才叫泛型。虽然,两者有类似。不过,Java的泛型其实比C++的模板强大。



--
Hiphen

hiphen lee

unread,
Jul 10, 2011, 11:24:36 AM7/10/11
to gz...@googlegroups.com
我好象在Maple的blog里面看过他用C来模拟实现


在 2011年7月7日 上午2:00,Xiaojun Ma <damag...@gmail.com>写道:
最近了解到Linux内核和Glib都有实现一些C语言的泛型数据结构,且方法不同。至少可以提3个问题:
1、两种的优缺点分别是什么?
2、有没有其他可能?
3、和STL的关系,谁性能高?谁用起来方便?



--
Hiphen

wang zelong

unread,
Jul 11, 2011, 1:11:18 AM7/11/11
to gz...@googlegroups.com
读过毛德操写的那本《linux内核源代码情景分析》,虽说是2.4的版本,还是很有帮助的。
linux内核中有一个核心的数据结构list_head,它是一个双链表,大部分的linux内核数据结构都是基于它建立的。
这就是一个泛型数据结构,可以嵌入自定义的结构重用~
还有泛型宏:
#define min(x, y) ({ \ 
typeof(x) _min1 = (x); \
typeof(y) _min2 = (y); \
(void) (&_min1 == &_min2); \
_min1 < _min2 ? _min1 : _min2; })
谢谢hiphen的提醒~对GP的理解更深刻了些。

在 2011-7-10 下午11:24 時, hiphen lee 寫到:

--
您收到此邮件是因为您订阅了 Google 网上论坛的“广州 GNU/Linux 用户组”论坛。
要向此网上论坛发帖,请发送电子邮件至 gz...@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 gzlug+un...@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/gzlug?hl=zh-CN 访问此网上论坛。

James Deng

unread,
Jul 11, 2011, 9:03:19 AM7/11/11
to gz...@googlegroups.com
Generic Programming���ͱ����һ������кܶ�ʵ�֣���Ҫ��Ϊ���֣��꣬ģ�壬�̳к�����ϵͳ��
1.��
C��lisp���澭���ú���ʵ��GP���ر���Lisp�ĺ�dz�ǿ��ǿ�󵽿���������ʱ�ı�������?Lisp�ij���Ҳ����ݣ��������������� ��һ����������?Lisp�������һ�ÿɱ����������
2.�
����ͬ�Ĵ���Ƭ�α�ɴ���ģ����ʵ�ִ��븴�á�C++��STL��һ���ܳɹ������ӡ�ģ���и�ȱ�������Զ�ģ���̽������͵��Ƶ���Լ����ִ��� ʱ��ʾ���㡣C++���Concept�����������Ҫ���������⡣����sort����ʵ�����Ͳ���ʱ��Ҫ�������������� Comparable concept�����Ǵ���ƫ���ϵ��
3.��������
OOһ��ʼ��Ƶ�Ŀ���Ǵ���ĸ��ã���Java���洫������Object�����ʹ�ýӿھ���ͨ��̳���ʵ�ַ��ͱ�̡��и����������� Virtual Type��ָ�������͡�����Ϊ��̬���ͣ�DuckѼ��ϵͳ��Ҳ�����Ƶģ���������������ʱȷ��������ͺͷ�����һ��������������Ѽ�ӣ���������Ѽ ��...����ô�����Ѽ�ӣ���
4.����ϵͳ
��������ĵ���ʵ����Haskell��Type class��
��Eq�DZ�ʾ�����ж��Ƿ���ͬ����
class  Eq a  where
    (==), (/=)           :: a -> a -> Bool

    x /= y               = not (x == y)
    x == y               = not (x /= y)

��������ӣ�ֻҪ�����/=����==����һ��������һ��������Զ������ˡ�

class Eq a => Ord a where
  compare :: a -> a -> Ordering
  (<) :: a -> a -> Bool
  (>=) :: a -> a -> Bool
  (>) :: a -> a -> Bool
  (<=) :: a -> a -> Bool
  max :: a -> a -> a
  min :: a -> a -> a
�ɱȽϵ����������϶��壬ֻҪ����compare������������Զ�����ˡ�
����Ord��Ķ��壬sort������Ա�ʾ���£�
sort :: Ord a => [a] -> [a]
Ord a��ʹ��sort������б�����ͽ�����Լ��������Ͳ����㣬����ʱ�ͻ���?

�����ֻ�������򵥵����ӣ�Haskell������ϵͳ�dz�ǿ�󡣴��⣬HaskellҲ֧��ģ���̣��и���չ��Haskell template��

On 07/11/2011 01:11 PM, wang zelong wrote:
����ë�²�д ���DZ��� linux �ں�Դ�����龰����������˵��2.4�İ汾�����Ǻ��а���ġ�
��linux�ں�����һ�����ĵ���ݽṹlist_head������һ��˫���?�󲿷ֵ�linux�ں���ݽṹ���ǻ��������ġ�
�����һ���� ����ݽṹ������Ƕ���Զ���Ľṹ����~
���з��ͺ꣺
#define min(x, y) ({ \ 
typeof(x) _min1 = (x); \ 
typeof(y) _min2 = (y); \ 
(void) (&_min1 == &_min2); \ 
_min1 < _min2 ? _min1 : _min2; })
ллhiphen������~��GP�����������Щ��

�� 2011-7-10 ����11:24 �r�� hiphen lee ������

�Һ�����Maple��blog���濴������C��ģ��ʵ��

�� 2011��7��7�� ����2:00��Xiaojun Ma <damag...@gmail.com>д ����
����˽⵽Linux�ں˺�Glib����ʵ��һЩC���Եķ�����ݽṹ���ҷ�����ͬ�����ٿ� ����3�����⣺
1�����ֵ���ȱ��ֱ���ʲô��
2����û��������ܣ�
3����STL�Ĺ�ϵ��˭���ܸߣ�˭���������㣿



--
Hiphen


--
���յ����ʼ�����Ϊ������ Google ������̳�ġ����� GNU/Linux �û��顱��̳��
Ҫ���������̳�����뷢�͵����ʼ��� gz...@googlegroups.com��
Ҫȡ���Ĵ�������̳���뷢�͵����ʼ��� gzlug+un...@googlegroups.com��
���и�����⣬��ͨ�� http://groups.google.com/group/gzlug?hl=zh-CN ���ʴ�������̳��

Best regards!
wang zelong





--
���յ����ʼ�����Ϊ������ Google ������̳�ġ����� GNU/Linux �û��顱��̳��
Ҫ���������̳�����뷢�͵����ʼ��� gz...@googlegroups.com��
Ҫȡ���Ĵ�������̳���뷢�͵����ʼ��� gzlug+un...@googlegroups.com��
���и�����⣬��ͨ�� http://groups.google.com/group/gzlug?hl=zh-CN ���ʴ�������̳��


--
James Deng
department of computer science
school of information science & technology
Sun-yat-sen University, Guangzhou, China
http://cnjdeng.appspot.com

Robin Lee

unread,
Jul 11, 2011, 11:04:30 AM7/11/11
to gz...@googlegroups.com
很系统的分析,膜拜

2011/7/11 James Deng <cnjam...@gmail.com>:
> Generic Programming范型编程是一个概念,有很多实现,主要分为四种:宏,模板,继承和类型系统。
> 1.宏
> C和lisp里面经常用宏来实现GP,特别是Lisp的宏非常强大,强大到可以在运行时改变程序自身(Lisp的程序也是数据,程序可以像操作数
> 据一样操作程序本身。Lisp程序就是一棵可变的语义树。
> 2.模板
> 将共同的代码片段变成代码模板来实现代码复用。C++的STL是一个很成功的例子。模板有个缺陷是难以对模板编程进行类型的推导和约束,出现错误
> 时提示不足。C++里的Concept(概念)就是想要解决这个问题。比如sort函数实例化类型参数时需要检测参数类型满足 Comparable
> concept,就是存在偏序关系。
> 3.虚拟类型
> OO一开始设计的目的是代码的复用,像Java里面传参数用Object对象和使用接口就是通过继承来实现范型编程。有个词虚拟类型 Virtual
> Type来指这种类型。我认为动态类型(Duck鸭子系统)也是类似的,不过它是在运行时确定它的类型和方法(一个对象走起来像鸭子,叫起来像鸭
> 子...,那么它就是鸭子)。
> 4.类型系统
> 这个方法的典型实例是Haskell的Type class。
> 如Eq是表示可以判断是否相同的类


> class  Eq a  where
>     (==), (/=)           :: a -> a -> Bool
>
>     x /= y               = not (x == y)
>     x == y               = not (x /= y)
>

> 上面的例子,只要定义出/=或者==任意一个函数,另一个函数就自动定义了。


>
> class Eq a => Ord a where
>   compare :: a -> a -> Ordering
>   (<) :: a -> a -> Bool
>   (>=) :: a -> a -> Bool
>   (>) :: a -> a -> Bool
>   (<=) :: a -> a -> Bool
>   max :: a -> a -> a
>   min :: a -> a -> a

> 可比较的类型类如上定义,只要定义compare函数,其它函数就自动生成了。
> 有了Ord类的定义,sort函数可以表示如下:


> sort :: Ord a => [a] -> [a]

> Ord a对使用sort函数的列表的类型进行了约束,如果类型不满足,编译时就会出错。
>
> 上面的只是两个简单的例子,Haskell的类型系统非常强大。此外,Haskell也支持模板编程,有个拓展是Haskell template。


>
> On 07/11/2011 01:11 PM, wang zelong wrote:
>

> 读过毛德操写 的那本《 linux 内核源代码情景分析》,虽说是2.4的版本,还是很有帮助的。


> 在linux内核中有一个核心的数据结构list_head,它是一个双链表,大部分的linux内核数据结构都是基于它建立的。
> 这就是一个泛 型数据结构,可以嵌入自定义的结构重用~
> 还有泛型宏:
>

> #define min(x, y) ({ \
> typeof(x) _min1 = (x); \
> typeof(y) _min2 = (y); \
> (void) (&_min1 == &_min2); \
> _min1 < _min2 ? _min1 : _min2; })
>

> 谢谢hiphen的提醒~对GP的理解更深刻了些。
> 在 2011-7-10 下午11:24 時, hiphen lee 寫到:
>
> 我好象在Maple的blog里面看过他用C来模拟实现
>
> 在 2011年7月7日 上午2:00,Xiaojun Ma <damag...@gmail.com>写 道:
>>
>> 最近了解到Linux内核和Glib都有实现一些C语言的泛型数据结构,且方法不同。至少可 以提3个问题:
>> 1、两种的优缺点分别是什么?
>> 2、有没有其他可能?
>> 3、和STL的关系,谁性能高?谁用起来方便?
>
>
> --
> Hiphen
>
>
> --
> 您收到此邮件是因为您订阅了 Google 网上论坛的“广州 GNU/Linux 用户组”论坛。
> 要向此网上论坛发帖,请发送电子邮件至 gz...@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 gzlug+un...@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/gzlug?hl=zh-CN 访问此网上论坛。
>

> Best regards!
> wang zelong
> wangzel...@gmail.com
>
>
>
>
> --

> 您收到此邮件是因为您订阅了 Google 网上论坛的“广州 GNU/Linux 用户组”论坛。
> 要向此网上论坛发帖,请发送电子邮件至 gz...@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 gzlug+un...@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/gzlug?hl=zh-CN 访问此网上论坛。
>
>

> --
> James Deng
> department of computer science
> school of information science & technology
> Sun-yat-sen University, Guangzhou, China
> http://cnjdeng.appspot.com
>

Reply all
Reply to author
Forward
0 new messages