2011年4月 的存档

《Object Oriented Programming is Dead》读后

本文是一个只会写类似c的c++代码的卢瑟的读后感
《Object Oriented Programming is Dead》原文在此
学c++后就只会用vector什么的,面向对象的思想是完全不会主动去用
一直以来写代码都是模块化的思维完成的,对我来说,类和对象之类的就是看得懂但完全不会主动去用的东西
模块化的c好还是面向对象的c++一直就没有个定论,在这点上争吵没意义,因为吵不出个结果嘛
Linus也曾与一个微软的工程师(Dmitry Kakurin)争论过c/c++,见这里这里
Dmitry Kakurin说

纯C写的,而不是C++,不知道为什么,请别告诉我是为了移植性,这完全是胡扯。

Linus还击

你才是完全在胡扯。C++是一门很恐怖的语言,而比它更恐怖的是很多不合格的程序员在使用着它

我认为这东西争不出个结果来,就我个人来说,偏爱c一些,并且更喜欢用模块化的思维编程
面向对象的程序能看懂但写不出大个头的程序出来。
最后,写个代码写出优越感是很丢人的事。
说个题外话,程序员活该赚不到钱
要是几个人派出一个代表,花点小功夫撸来三五百,然后那几个码农一起去吃个饭多好。
电脑城修电脑的现在赚不到钱也是这个道理。
大伙儿的生意就是这样被砸了的。

c++的namespace

今儿写了个程序,编译出错,出错内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
1>------ 已启动生成: 项目: Image, 配置: Release Win32 ------
1>生成启动时间为 2011/4/23 18:49:121>InitializeBuildStatus:
1>  正在创建“Release\Image.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
1>ClCompile:
1>  main.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(373): error C2039: “iterator_category”: 不是“CvScalar”的成员
1>          C:\OpenCV2.2\include\opencv2/core/types_c.h(1199) : 参见“CvScalar”的声明
1>          main.cpp(42): 参见对正在编译的类 模板 实例化“std::iterator_traits<_Iter>”的引用
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(373): error C2146: 语法错误: 缺少“;”(在标识符“iterator_category”的前面)
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(373): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(373): error C2602: “std::iterator_traits<_Iter>::iterator_category”不是“std::iterator_traits<_Iter>”基类的成员
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(373) : 参见“std::iterator_traits<_Iter>::iterator_category”的声明
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(373): error C2868: “std::iterator_traits<_Iter>::iterator_category”: 非法的 using 声明语法;应输入限定名
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(374): error C2039: “value_type”: 不是“CvScalar”的成员
1>          C:\OpenCV2.2\include\opencv2/core/types_c.h(1199) : 参见“CvScalar”的声明
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(374): error C2146: 语法错误: 缺少“;”(在标识符“value_type”的前面)
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(374): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(374): error C2602: “std::iterator_traits<_Iter>::value_type”不是“std::iterator_traits<_Iter>”基类的成员
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(374) : 参见“std::iterator_traits<_Iter>::value_type”的声明
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(374): error C2868: “std::iterator_traits<_Iter>::value_type”: 非法的 using 声明语法;应输入限定名
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(375): error C2039: “difference_type”: 不是“CvScalar”的成员
1>          C:\OpenCV2.2\include\opencv2/core/types_c.h(1199) : 参见“CvScalar”的声明
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(375): error C2146: 语法错误: 缺少“;”(在标识符“difference_type”的前面)
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(375): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(375): error C2602: “std::iterator_traits<_Iter>::difference_type”不是“std::iterator_traits<_Iter>”基类的成员
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(375) : 参见“std::iterator_traits<_Iter>::difference_type”的声明
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(375): error C2868: “std::iterator_traits<_Iter>::difference_type”: 非法的 using 声明语法;应输入限定名
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(377): error C2039: “pointer”: 不是“CvScalar”的成员
1>          C:\OpenCV2.2\include\opencv2/core/types_c.h(1199) : 参见“CvScalar”的声明
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(377): error C2146: 语法错误: 缺少“;”(在标识符“pointer”的前面)
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(377): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(377): error C2602: “std::iterator_traits<_Iter>::pointer”不是“std::iterator_traits<_Iter>”基类的成员
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(377) : 参见“std::iterator_traits<_Iter>::pointer”的声明
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(377): error C2868: “std::iterator_traits<_Iter>::pointer”: 非法的 using 声明语法;应输入限定名
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(378): error C2039: “reference”: 不是“CvScalar”的成员
1>          C:\OpenCV2.2\include\opencv2/core/types_c.h(1199) : 参见“CvScalar”的声明
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(378): error C2146: 语法错误: 缺少“;”(在标识符“reference”的前面)
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(378): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(378): error C2602: “std::iterator_traits<_Iter>::reference”不是“std::iterator_traits<_Iter>”基类的成员
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(378) : 参见“std::iterator_traits<_Iter>::reference”的声明
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(378): error C2868: “std::iterator_traits<_Iter>::reference”: 非法的 using 声明语法;应输入限定名
1>          with
1>          [
1>              _Iter=CvScalar
1>          ]
1>
1>生成失败。
1>
1>已用时间 00:00:01.25
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

出错部分代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
double distance(CvScalar &color1,CvScalar &color2)
int MinDistance(CvScalar &color)
{
        int index=-1;
        double mindistance=DBL_MAX;
        double dis;
        for (size_t i=0;i<cluster.size();i++)
        {
                dis=distance(color,cluster.at(i).color);
                if (dis<mindistance)
                {
                        index=i;
                        mindistance=dis;
                }
        }
        return index;
}

查错过程不叙述了,出错原因时distance和标准库函数重名了,不同库同时在用时,注意名字空间。

所见略同

从拿到目前这个活儿开始,我就一直在说,某loongson就是个屎,而为了吃饭我不得不跟屎打交到。
今儿开完会后,某哥说,这货就是个垃圾,咱们就是一直在跟垃圾打交道。
听完之后,MB太有感触了。
顺带一提,某2f单片机号称800Mhz-1200Mhz(1200Mhz是wiki英文版上写的),无比牛逼,堪称Pentium 4中档水平。
你想查看其真实频率?对不起呀,木有任何直接查看的接口。
那么我们只能想办法推测一下了,现在使用lemote的某1800大洋的电脑对其测试。

1
cat /proc/cpuinfo

只能查看BogoMIPS,其值为530.43。
尝试在多台x86处理器上使用该命令查看。
所得cpu MHz均为Bogo MIPS的1/2,误差很小。(诸位看倌可以试试,如果相差显著请指正。)
好,那么可以推测该屎的频率,265Mhz。
传说中的800Mhz-1Ghz呢?好吧,不多喷了,继续与屎打交道…

略蛋疼

刚跟马锅约出去玩的事,准备5.5后几天出发,但是算算时间太蛋疼了。
到六月初,有双学位的毕设需要大改一下,有CS的毕设完全没动。
有个答应jm的opencv程序..
有个某Job网站的活儿,此外有另一个网站的活儿..
And某废材处理器工作上打杂的活儿也少不了的,这个是必须的…
五月还有个毕业旅行得花4天时间。
我擦,累死老夫的说,刚才晚饭前后像这挺郁闷的。。
这几天加班加点的干吧,把这几样干完好好玩玩儿。
做完后顺带再买个上网本买个相机,给去tibet做点准备。。
最后这个事儿继续推迟吧,或许要在去tibet的过程中完成了。

终归还是承认恶性通胀了

来源在此

中新网4月15日电 国家统计局今日发布数据显示,采用新权数计算的3月份,居民消费价格(CPI)同比涨幅5.383%,环比下降0.207%,采用旧权数计算的居民消费价格(CPI)同比涨幅5.415%(新浪财经注:此为2008年8月以来的32个月新高),环比下降0.225%。

其实迟早有这么一天的,按国际惯例3%就算是通胀了,5%已经是恶性通胀了。天朝说,我镇镇情特殊,体制优越,所以5%才算通胀。这不,这天终于来了。真实的cpi涨幅不得而知。不过这几年来想生活下来倒是越来越不容易了。

说说梦

今儿谈谈玄乎的,梦是咋回事。我在前几天做梦的时候,想到这个东西的,当时把想到的内容MK下来继续睡觉了,拖到现在来谈这个东西。
这个有趣的想法我没打算验证它,大家当个故事看吧,不必当真。当然各位如果能把自己的看法说给我听,我就更高兴了~
下面牵扯的专业词汇暂不解释,手机打字累,键盘都要按坏了的说。
人脑可以看做一个CPU,人脑不可能并行的思考(牛人最多并发)。在梦中,人脑同时处理两个thing,一个是梦中的自己,一个是梦中的世界。梦中的自己就不用解释了。梦中的世界可以看做是梦中除了自己的所有东西。
以上梦中的自己和梦中的世界可以看做两个进程,它们在大脑(cpu)中并发运行。一些外界的干扰,例如噪音,震动等等通过“梦中的世界”这一线程,干扰梦中的世界,如噪音变成刮风,震动变成地震等等。“梦中的自己”线程的作用等同现实中的自己。
大脑中两个进程以轮循方式调度,达到并发的效果。
至于为什么梦中时间过得快,那天晚上的梦里我没思考这个。
梦中想到的东西,大体上记录完了,不要太认真,当故事看看吧。
==============Writed through wap==============