由买买提看人间百态

topics

全部话题 - 话题: 函数指针
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
k*******a
发帖数: 433
1
第一个:func是个指向函数的指针,
这个函数有一个指向整形的指针参数,
返回类型为指向整形数组的指针;
第二个:func是个指向函数的指针,
这个函数的返回类型为整形,
有两个参数,
第一个为指向整形的指针,
第二个为指向函数的指针,这个函数有一个指向整形的指针参数,返回类型为整形。
y****w
发帖数: 39
2
来自主题: Belief版 - 刨根问底(3):心与物质
六、心是物质吗?
(1)智能机器人之争
“外面的物质世界,是虚幻的,并不存在,离一多故。”
“喂,你到底想说什么啊?!”
“我是说,外境是心的幻象,如梦一般。”
“敢情,你用了这么长一节,绕了一个大圈,就是为了得出前面提到的那句话。‘那个
当年的孩子’怎么说来着?对了,物质世界,还有一个名字,叫做‘梦’。”
“是的。物质如梦。外境如梦。色法如梦。在梦里,我们可以梦见自己开着‘宝马’和
心爱的女友兜风,就像白天一样真实。但是我们知道,正在做梦的当下,在做梦的房间
里根本没有一辆宝马汽车。所有的一切,都是自己梦心里的幻现。”
“外境是心的幻现。可是,心是什么呢?”
“心就是心。”
“可是,我们从小学到的科学知识,心不是物质产生的么?”
“知识是一回事,真理是另外一回事。智者应该追求真理,而不是知识。”
从整个历史来看,持唯物主义观点的人,一直是少数。但是就我们这一代人所学到的知
识来看,唯物主义确实深入人心。
虽然,量子力学的发展,几乎剥夺了传统唯物主义和传统唯心主义生存的土壤。但是,
随着智能机器人的发展,和认知心理学的发展,在某个范围内,人们的唯物主义观念,
还是非常深厚。所以,刚才的... 阅读全帖
y****w
发帖数: 39
3
来自主题: Wisdom版 - 刨根问底(3):心与物质
六、心是物质吗?
(1)智能机器人之争
“外面的物质世界,是虚幻的,并不存在,离一多故。”
“喂,你到底想说什么啊?!”
“我是说,外境是心的幻象,如梦一般。”
“敢情,你用了这么长一节,绕了一个大圈,就是为了得出前面提到的那句话。‘那个
当年的孩子’怎么说来着?对了,物质世界,还有一个名字,叫做‘梦’。”
“是的。物质如梦。外境如梦。色法如梦。在梦里,我们可以梦见自己开着‘宝马’和
心爱的女友兜风,就像白天一样真实。但是我们知道,正在做梦的当下,在做梦的房间
里根本没有一辆宝马汽车。所有的一切,都是自己梦心里的幻现。”
“外境是心的幻现。可是,心是什么呢?”
“心就是心。”
“可是,我们从小学到的科学知识,心不是物质产生的么?”
“知识是一回事,真理是另外一回事。智者应该追求真理,而不是知识。”
从整个历史来看,持唯物主义观点的人,一直是少数。但是就我们这一代人所学到的知
识来看,唯物主义确实深入人心。
虽然,量子力学的发展,几乎剥夺了传统唯物主义和传统唯心主义生存的土壤。但是,
随着智能机器人的发展,和认知心理学的发展,在某个范围内,人们的唯物主义观念,
还是非常深厚。所以,刚才的... 阅读全帖
z*s
发帖数: 209
4
来自主题: JobHunting版 - Google on-site 面试题
上个月中旬面的试,在Mountain View。由于之前在学校进行了校园面试(2*45分钟)
,所以这一次on site只有三个人,每个人还是45分钟;外加一个人带着吃午饭,没有
反馈。
一、二叉树中给定一个节点,查找按照中序遍历顺序它的后继节点,要求写代码,并给
出复杂度;二叉树中查找中序遍历顺序中的第k个节点,如果每个节点都添加了子树中
节点个数这个变量,如何在插入、删除和旋转时更新这个值(旋转是为了保证logn的复
杂度而要使二叉树保持平衡)。
二、C++概念题,包括虚函数、多继承、私有的构造、析构函数、重载的new运算符等;
以前的project问题;开放性问题,跟网络有关,包括了分组交换、拥塞控制、流控制
、多播等等知识点;最后问了一个编程题,跟quad tree有关,不太常见,但不是很难
,我觉得考查了函数的递归。
三、一道编程题,大意是给定一个类read1,它有一个函数read4096,每次调用它可以
从文件中读取4K个字节,同时移动文件指针4K个位置(若文件中剩余数据不足4K,则读
取剩下的所有数据),这个函数返回实际读取的字节数,int型;要求实现另一个类
read2... 阅读全帖
S**I
发帖数: 15689
5
来自主题: JobHunting版 - [合集] 问个C的基本问题
☆─────────────────────────────────────☆
honeydream (pretty) 于 (Fri May 6 00:30:21 2011, 美东) 提到:
下面这个程序为啥会segmentation fault呢?
int main(void)
{
char *p1, *p2;
*p1 = 'a';
*p2 = 'b';
printf("%c %c\n", *p1, *p2);
return 0;
}
如果我不用指针,把p1,p2的星号都去掉,就可以输出正确结果。
☆─────────────────────────────────────☆
chenpp (chenpp) 于 (Fri May 6 00:31:43 2011, 美东) 提到:
p1和p2浮空,指向未定义的地址空间。
对未定义的地址空间进行读写操作会导致未定义的行为,包括段错。

☆─────────────────────────────────────☆
mercuriusl (Mercurius) 于 (Fri May 6 ... 阅读全帖
n**********2
发帖数: 648
6
【 以下文字转载自 Programming 讨论区 】
发信人: xykkkk (asdf), 信区: Programming
标 题: 老码农冒死揭开行业黑幕:如何编写无法维护的代码(zz)
发信站: BBS 未名空间站 (Fri Nov 28 13:28:27 2014, 美东)
如何编写无法维护的代码
让自己稳拿铁饭碗 ;-)
– Roedy Green(翻译版略有删节)
简介
永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无
能。 — 拿破仑
为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍。这些大
师写的代码极其难以维护,后继者就是想对它做最简单的修改都需要花上数年时间。而
且,如果你能对照秘籍潜心修炼,你甚至可以给自己弄个铁饭碗,因为除了你之外,没
人能维护你写的代码。再而且,如果你能练就秘籍中的全部招式,那么连你自己都无法
维护你的代码了!
(伯乐在线配图)
你不想练功过度走火入魔吧。那就不要让你的代码一眼看去就完全无法维护,只要它实
质上是那样就行了。否则,你的代码就有被重写或重构的风险!
总体原则
Quidquid... 阅读全帖
x****k
发帖数: 2932
7
如何编写无法维护的代码
让自己稳拿铁饭碗 ;-)
– Roedy Green(翻译版略有删节)
简介
永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无
能。 — 拿破仑
为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍。这些大
师写的代码极其难以维护,后继者就是想对它做最简单的修改都需要花上数年时间。而
且,如果你能对照秘籍潜心修炼,你甚至可以给自己弄个铁饭碗,因为除了你之外,没
人能维护你写的代码。再而且,如果你能练就秘籍中的全部招式,那么连你自己都无法
维护你的代码了!
(伯乐在线配图)
你不想练功过度走火入魔吧。那就不要让你的代码一眼看去就完全无法维护,只要它实
质上是那样就行了。否则,你的代码就有被重写或重构的风险!
总体原则
Quidquid latine dictum sit, altum sonatur.
(随便用拉丁文写点啥都会显得高大上。)
想挫败维护代码的程序员,你必须先明白他的思维方式。他接手了你的庞大程序,没有
时间把它全部读一遍,更别说理解它了。他无非是想快速找到修改代码的位置、改代码
、编译,然后就能交差,... 阅读全帖
t********e
发帖数: 1169
8
【 以下文字转载自 JobHunting 讨论区 】
发信人: mitbbs59 (bEQi), 信区: JobHunting
标 题: 本版1年以内的所有 面经题目,含帖子link [为大家方便]
发信站: BBS 未名空间站 (Fri Jan 29 14:20:44 2010, 美东)
不敢保证全部涵盖,大部分的都在。
我自己找了一遍,大家一起用着都方便。
不过只是含有题目的帖子 我才包含进来了,只分享经验没贴题目的 我都没有包含
进来。
大家复习着方便。
1. 一个sorted interger Array[1...N], 已知范围 1...N+1. 已知一个数字missing。
找该数字。
把原题改为unsorted,找missing数字。 performance。
2. 复制linked list。 已知每个节点有两个pointer,一个指向后一个节点,另一个指向
其他任意一节点。 O(n)时间内,无附加内存,复制该linked list。(存储不连续)
3. 一个party N个人,如果一个人不认识任何其他人,又被任何其他人认识,此人为
celeb... 阅读全帖
t********e
发帖数: 1169
9
【 以下文字转载自 JobHunting 讨论区 】
发信人: mitbbs59 (bEQi), 信区: JobHunting
标 题: 本版1年以内的所有 面经题目,含帖子link [为大家方便]
发信站: BBS 未名空间站 (Fri Jan 29 14:20:44 2010, 美东)
不敢保证全部涵盖,大部分的都在。
我自己找了一遍,大家一起用着都方便。
不过只是含有题目的帖子 我才包含进来了,只分享经验没贴题目的 我都没有包含
进来。
大家复习着方便。
1. 一个sorted interger Array[1...N], 已知范围 1...N+1. 已知一个数字missing。
找该数字。
把原题改为unsorted,找missing数字。 performance。
2. 复制linked list。 已知每个节点有两个pointer,一个指向后一个节点,另一个指向
其他任意一节点。 O(n)时间内,无附加内存,复制该linked list。(存储不连续)
3. 一个party N个人,如果一个人不认识任何其他人,又被任何其他人认识,此人为
celeb... 阅读全帖
G*****h
发帖数: 33134
10
【 以下文字转载自 Linux 讨论区 】
发信人: GoTouch (够她吃), 信区: Linux
标 题: 说说理想的编程语言该是啥样子
发信站: BBS 未名空间站 (Mon Dec 26 02:52:07 2011, 美东)
琐男天天与代码为伍, 希望手里的代码是啥样的蹂躏起来比较中意呢
偶觉得, 下面几点是最主要的
语法类似 C/C++ 或者 java
编译执行, 效率接近C/C++, 同时有交互式解释执行环境。
OO, 单继承, 支持 interface
静态强类型, 但支持自动类型赋值和转换。
自动生成函数原型, 不需要象C++ 里函数声明和实现两行重复的代码, class 名字要重
复出现无数次。
无自动 garbbage collection, 因为没法有效控制 GC 的时机。但是提供内存的分配释
放跟踪工具, 可以随时检查内存泄露等问题。一般要求内存尽早释放, 可以考虑在适当
的时候手工调用GC 函数回收少量泄露的内存。
有 slice 等带越界检查的数组, 最大限度避免指针的使用。即使不能完全消除指针,
指针代码必须用编译开关明确开启, 而且必须为指针指定一个... 阅读全帖
G*****h
发帖数: 33134
11
偶觉得, 下面几点是最主要的
语法类似 C/C++ 或者 java
编译执行, 效率接近C/C++, 同时有交互式解释执行环境。
OO, 单继承, 支持 interface
静态强类型, 但支持自动类型赋值和转换。
自动生成函数原型, 不需要象C++ 里函数声明和实现两行重复的代码, class 名字要重
复出现无数次。
无自动 garbbage collection, 因为没法有效控制 GC 的时机。但是提供内存的分配释
放跟踪工具, 可以随时检查内存泄露等问题。一般要求内存尽早释放, 可以考虑在适当
的时候手工调用GC 函数回收少量泄露的内存。
有 slice 等带越界检查的数组, 最大限度避免指针的使用。即使不能完全消除指针,
指针代码必须用编译开关明确开启, 而且必须为指针指定一个变量存放其内存大小, 便
于越界检查。
有 generics 或者 C++ template
lambda 可有可无, 如果有, 必须是命名的, 不是无名函数
函数可以作为参数, 嵌套函数可有可无。
可以调用C/C++的函数库
差不多先这些, 现在的语言里 go 大概最接近
但是 go 的多线程实现... 阅读全帖
S**I
发帖数: 15689
12
☆─────────────────────────────────────☆
gzou (gzou) 于 (Thu May 12 02:26:35 2011, 美东) 提到:
马上就要G on site了,
求祝福。
下面是从本版收集到的Google的试题,便于大家查询。
申明:有的附带有解释说明的,也来自于本版或者网络,大家自己看, 不保证真确
http://www.mitbbs.com/article_t1/JobHunting/31847453_0_1.html
本人ECE fresh PhD,背景是电路/EDA,跟G业务基本没什么关系
同学内部推荐的,很简单的一次电面就给了onsite
题都不难,但是自己没把握好机会,出了一些小bug。
总的感觉,出错就是硬伤,宁可从最简单的算法写起,也不能出错。
电面:
1,Skip list, http://en.wikipedia.org/wiki/Skip_list
写code实现struct skip_list * find(struct skip_list *head, int value)
2,sorted array... 阅读全帖
S**I
发帖数: 15689
13
☆─────────────────────────────────────☆
gzou (gzou) 于 (Thu May 12 02:26:35 2011, 美东) 提到:
马上就要G on site了,
求祝福。
下面是从本版收集到的Google的试题,便于大家查询。
申明:有的附带有解释说明的,也来自于本版或者网络,大家自己看, 不保证真确
http://www.mitbbs.com/article_t1/JobHunting/31847453_0_1.html
本人ECE fresh PhD,背景是电路/EDA,跟G业务基本没什么关系
同学内部推荐的,很简单的一次电面就给了onsite
题都不难,但是自己没把握好机会,出了一些小bug。
总的感觉,出错就是硬伤,宁可从最简单的算法写起,也不能出错。
电面:
1,Skip list, http://en.wikipedia.org/wiki/Skip_list
写code实现struct skip_list * find(struct skip_list *head, int value)
2,sorted array... 阅读全帖
l*******o
发帖数: 791
14
来自主题: JobHunting版 - c++ 程序一问
楼上说的对。
问题出现在你的test函数,test函数接受的是一个以值传递的指针。比如说一个经典的
swap(int a, int b)的例子,必须写成swap(int * a, int * b)或者引用才能改变外
界传入函数参数的值。同理如果你想改变一个指针的值,你需要用对一个指向这个指针
的指针进行操作,
所以test必须写成
void test (char * * p)
{
*p = new char[10];
memset((*p), 'A', 10);
}
然后main函数写成
int main(int argc, char *argv[])
{
char *k;

test(&k);
cout << k << endl;
}
不过一般倾向于使用引用即reference这样你就不会混淆,reference版本如下
void test( char * & p )
{
p = new char[10];
memset(p, 'A', 10);
int main(int argc, char *argv[])
{... 阅读全帖
i**********e
发帖数: 1145
15
来自主题: JobHunting版 - 面经-facebook, amazon,telenav, quantcast
当你传一个数组进去的时候,在函数内得到的只是指向数组第一个位置的一个指针。(
不管你函数定义的是 int *a 或者 int a[],编译器都直接转换成 int *a)。
所以如果你在函数内利用 sizeof(a) 的话,那得到的永远是 4,也就是指针的 size,
而不是数组的 size。除非你数组内有个 sentinel 值(类似 c string 的 '\0'),不然你必须传数组的长度进函数。
那为什么在定义了 int a[],然后 sizeof(a) 可以告诉数组的总共 size (in bytes)
呢?因为这里 a 是数组,不是指针。你虽然可以利用 *(a + 3) 来得到 a[3],但是你
不能像指针一样,可以 a++ 或者 a--。因为数组与指针的特别关系,所以数组也称为
constant pointer。
一些常见面试题的答案与总结 -
http://www.ihas1337code.com
t****t
发帖数: 6806
16
好了不开玩笑.
第一, 写一个库函数, 首先要完成的是调用者的要求, 其次才是考虑节约成本. 你从头
到尾没完成调用的要求, 节约成本根本就是一句空话. 交换对象和交换对象的指针, 是
两件完全不同的事情. 库函数能做的, 是提供两个版本由调用者决定调用哪个.
第二, 回到本来的题目. 如果调用者要求交换指针, 应该是调用者自己把指针的指针传
进来, 就象你写的一样. 而不是库函数自己别出心裁, 限制只能交换指针或者"推荐"使
用指针的版本. 从根本上来说, 交换两个对象就是交换两个对象(指针也是对象之一).
除非知道对象内部的结构(即类本身有moving semantics或者specialize swap), 否则
创建一个新对象是不能避免的.
p*****y
发帖数: 1049
17
来自主题: Programming版 - 一道很奇怪的面试题
题目是这样的 首先给出一个函数 int * getptr() {int * a[8]; return a;}
这个函数显然是错的,看不懂的就不要往下看了,因为下面更麻烦
然后题目让写出正确的形式。这当然没有问题,但是题目又说必须用C,不能用C++,
这也没有问题。但是题目又变态的要求还要在函数里额外提供一个数组,这个数组存储
的是 ID * 指针。其中struct ID 是一个自定义的结构。这个数组的大小通过一个函数
int num()实现,这个函数只能被getptr()调用。
我很困惑,因为一个函数是不能返回两个变量的。这样就必须在argument里面提供
reference,但是注意reference是不可以的,必须用指针来实现,所以我的interface就是
int * getptr(ID** *ptr_array, int * num_of_array);
第二个变量就是提供数组的尺寸。
我突然想到一个很不可思议的方法,就是能不能保留int* getptr()的形式,然后将额外
的数组与int数组合并成一个统一的int数组,当然需要转化 int a[i]=(int) ID_p... 阅读全帖
w******t
发帖数: 241
18
【 以下文字转载自 CS 讨论区 】
发信人: webcraft (此处不留爷,自有留爷处;处处不留爷,爷, 信区: CS
标 题: 请教一个程序调用的内存问题
发信站: BBS 未名空间站 (Sat Sep 8 11:10:10 2007)
我现在在做一个嵌入式系统的程序,其中一个中断会调用一function A,然后function
A又会调用function B,function B 调用C, 一直这样有6个嵌套的调用,我想请问一
下这样函数是不是会不停地在stack上面开销内存(包括函数本身以及函数内申明的局
部变量),这些内存会一直被占用到函数调用结束。像这样地情况,有没有更好的程序
架构能够避免这样的问题。
另外还有一个问题想请教,如果我在某个子函数中申明了指针,并且用malloc开了内存
空间,函数完结的时候free了空间,想请问一下函数调用结束返回之后,这个指针是不
是被自动设置为NULL(我想是这样,因为这个指针是局部变量)?谢谢大家
w******t
发帖数: 241
19
【 以下文字转载自 CS 讨论区 】
发信人: webcraft (此处不留爷,自有留爷处;处处不留爷,爷, 信区: CS
标 题: 请教一个程序调用的内存问题
发信站: BBS 未名空间站 (Sat Sep 8 11:10:10 2007)
我现在在做一个嵌入式系统的程序,其中一个中断会调用一function A,然后function
A又会调用function B,function B 调用C, 一直这样有6个嵌套的调用,我想请问一
下这样函数是不是会不停地在stack上面开销内存(包括函数本身以及函数内申明的局
部变量),这些内存会一直被占用到函数调用结束。像这样地情况,有没有更好的程序
架构能够避免这样的问题。
另外还有一个问题想请教,如果我在某个子函数中申明了指针,并且用malloc开了内存
空间,函数完结的时候free了空间,想请问一下函数调用结束返回之后,这个指针是不
是被自动设置为NULL(我想是这样,因为这个指针是局部变量)?谢谢大家
z*********n
发帖数: 1451
20

new
你这问的是两码事。。
你手里有 &a,a是数组名对吧,比如int a[3],a是这么定义的吧?不是int *a = b(b是
一个数组,a是一个指针,指向b数组的某个元素),对吧?
如果你手里那个是&a,这不叫指向首元素的指针。。这叫指向数组的指针。。虽然他俩
值可能一样。
如果你有一个指向数组的指针,你当然可以直接用&a的地址减去 (&a-1)的地址来计算
数组长度了,这本质就是一个sizeof(a)。就跟int * p,对p来说,p和p-1的差值就是
一个sizeof(int)一样。
简而言之,如果你有&a,这么算就是数组大小:(int(&a) - int(&a-1)) / sizeof(int)
和main函数还是其他函数无关,main函数也就是一个特殊点的其他函数而已。
d******i
发帖数: 7160
21
来自主题: Programming版 - COM里CoCreateInstance为什么要用类厂?
多谢。
可偶觉得既然这个CoCreateInstance的职能本来就是返回个COM组件的指针了事,
何不就干干净净地不走类厂直接new出来返回呢?反正它也没责任把什么类厂的指针也
返回给客户。
当然你说了,做框架的要给客户option去把两种logic分开,即不再重复前面得到类厂(i
.e. identify how to create a specific kind of objects that adhere to a given
interface)的过程,而是只拿一次类厂指针,反复使用去Create Objects。这点偶相
当赞成。相信COM程序员看了CoGetObjectClass的说明,自然会写出上述的Code(即拿到
一个类厂指针反复用),因为这是引入类厂的意义之一。这种领会应该不是靠读
CoCreateInstance的源码得到的吧。
Again,CoCreateInstance就是返回一个指定COM组件的指针。看了源码,说它是通过类
厂生成一次组件的某种类厂应用也一点不错。
但是为什么CoCreateInstance这种简单职能的函数的源码偏被写成这样(假手类厂),... 阅读全帖
d******e
发帖数: 2265
22
来自主题: Programming版 - 感觉python的前途堪忧 (转载)
转帖:
克里斯可以说是天才少年和好学生的代名词,他在2000年本科毕业之后,继续攻读计算
机硕士和博士。但克里斯并不是宅男,学习之余他手捧「龙书」游历世界,成为德智体
美劳全面发展的好学生。之后就是一篇又一篇的发表论文,硕士毕业论文即提出了一套
完整的运行时编译思想,奠定了 LLVM 的发展基础,读博期间 LLVM 编译框架在他的领
导下得到了长足的发展,已经可以基于 GCC 前端编译器的语义分析结果进行编译优化
和代码生成,所以克里斯在2005年毕业的时候已经是业界知名的编译器专家了。
注:很多计算机专业的大学生经常问我在大学里学点什么好,看看克里斯就行了。以目
前的科技信息开放程度,如果你在自己感兴趣的领域里用心耕耘,再加上那么一点点天
分,毕业时成为某一个专有领域的专家应该不是问题。那时就不是你满世界去找工作了
,而是工作满世界来找你!
克里斯毕业的时候正是苹果为了编译器焦头烂额的时候,因为苹果之前的软件产品都依
赖于整条 GCC 编译链,而开源界的这帮大爷并不买苹果的帐,他们不愿意专门为了苹
果公司的要求优化和改进 GCC 代码,所以苹果一怒之下将编译器后端直接替换为 LLVM... 阅读全帖
P****D
发帖数: 11146
23
http://www.guokr.com/post/81577/
微博上@叫兽易小星 发的……
某天收到一条短信:
“大叔你好!工作忙吗?我是北京XX大学的女学生,农村出身,家里种地的,弟弟还在
上学,下学期的生活费没有着落,能拜托大叔援助一下吗?我品学兼优,五官端正,身
高1米63,一定让你满意!”
我想了想,顺手回了一条:
“请用拉格朗日中值定理证明若x->0+lim f(x) =f(0)= 0,且当x>0时,f`(x)>0,则x>
0时,f(x)>0。”
果然长久没有动静了……
哪知道10分钟之后手机响了,打开一看……
“这个x>0时有f(x)-f(0)=f`(m)m,其中m在(o, X)上,由已知f(O)=o,故有f(x)>0。
我答对了吗?”
-----------------
某天收到一条短信:
“大叔你好!工作忙吗?我是北京XX大学的女学生,学国际政治的,农村出身,家
里种地的,弟弟还在上学,下学期的生活费没有着落,能拜托大叔援助一下吗?我品学
兼优,五官端正,身高1米63,一定让你满意!”
我想了想,顺手回了一条:
“前苏联有哪15个国家... 阅读全帖
D***n
发帖数: 6804
24
来自主题: Programming版 - C++糟粕和需要避免的。
基本上我认为这些特性都是C++的糟粕:
1)模板:模板的本意是把type和control flow分开,多个type可以共享一个control
flow。但是它引发的问题远比带来的方便程度要多。最后大多数模板都搞成一个杂种:
被塞入各种特化。
我的建议:STL一类成熟的可以用,但是能不用就不用。
2)基本操作符重载:当一个正常人看到A=B居然引发了另外一个线程SIGABT的时候,你
会想到这么一个赋值语句居然触发了某个析构函数把内存给清空了的事情吗?面对现实
吧,这个东西引起的麻烦远远超过其便利性。
至少至少,重载的操作符应该和正常符号分开,比如 = 改成 |= 一类。
3)重载:重载是个好主意,问题在:1)库里面这些重载的函数会被替换成别的函数名
称用于链接,这个替换协议不仅不是标准的一部份,而且还巨复杂。2)只能重载基本
类型。基本上就是一个残废功能。
我的方法:与其让系统自动起名字,不如我自己给他起,比如 init_IntInt, init_Int
, int
4)const
当我读到 Thinking in C++ ,作者开始介绍const的时候,我就开始讨厌C++了,因为
c... 阅读全帖
h********l
发帖数: 67
25
1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
2 . 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。
3. 预处理器标识#error的目的是什么?
4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?
5. 用变量a给出下面的定义 a) 一个整型数(An integer) b)一个指向整型数的指针
( A pointer to an integer) c)一个指向指针的的指针,它指向的指针是指向一个
整型数( A pointer to a pointer to an intege)r d)一个有10个整型数的数组(
An array of 10 integers) e) 一个有10个指针的数组,该指针是指向一个整型数的
。(An array of 10 pointers to integers) f) 一个指向有10个整型数数组的指针
( A pointer to an array of 10 integers) g) 一个指向函数的指针,该函数有一
个整型参数并返回一个整型数(A pointer to a fun
w***g
发帖数: 5958
26
来自主题: Programming版 - 请教c++数组初始化
我需要产生一系列同分布的哈希函数,想存在一个数组里。哈希函数的构造函数接受一
机函数生成器的引用用于产生随机数。这样顺序产生的哈希函数可以各不相同但属
于同

问题是new只能调用无参构造函数; vector允许调用无参或拷贝构造函数。拷贝构造函
数不
行因为产生的对象是完全一样的,而不是独立同分布的。
我目前的做法是定义一个无参构造函数,不干任何事情,再定义一个init方法做真正的
化。vector分配后用一个循环初始化每个元素。但我觉得这种做法不好,因为一开
始生
对象其实并没有真正初始化,如果忘了调用init就会出错。另外同时存在构造
函数和ini
非常混乱。
另一种方法是分配一个指针数组,然后挨个new。用完了挨个delete。感觉比较原始,
得判
断0指针什么的,也很不爽。
重载拷贝构造函数最简单,但是这样就没法保持“拷贝”的语义,也会引起混乱。
不知道有没有什么好的idiom或者现成的library可以用。
c****m
发帖数: 824
27
【 以下文字转载自 Programming 讨论区 】
发信人: xiaoju (可爱的龙猫), 信区: Programming
标 题: 转:王垠--一种新的操作系统设计
发信站: BBS 未名空间站 (Sat Sep 14 10:22:03 2013, 美东)
http://www.yinwang.org/blog-cn/2013/04/14/os-design/
一种新的操作系统设计
我一直在试图利用程序语言的设计原理,设计一种超越“Unix 哲学”的操作系统。这
里是我的设想:
这种系统里面的程序间通信不使用无结构的字符串,而是使用带有类型和结构的数据。
在这样的系统里面,“程序”的概念基本上完全消失。系统由一个个的“函数”组成,
每个函数都可以调用另外一个函数,通过参数传递数据。每个函数都可以并发执行。
由于参数是一个数据结构,而不是字符串,这避免了程序间通信繁琐的“编码”和“解
码”过程。使得“进程间通信”变得轻而易举。任何函数都可以调用另一个函数来处理
特定类型的数据,这使得像 “OLE 嵌入”这样的机制变得极其简单。
所有函数由同一种先进的高级程序语言写成,所以函数间... 阅读全帖
H**********5
发帖数: 2012
28
来自主题: JobHunting版 - 感觉今天结结实实被烙印阴了
C语言传参机制是拷贝的,都放在堆栈里,函数返回后传递的值是不会改变的。
如果你想改变传递的参数,必须传递其地址给一个指针,
但如果你想改变某个指针,那就传递指向该指针的指针。
那就只有2种方法,
(1)在函数中返回一个指针,将返回值给这个指针
(2)传递一个2级指针,即**.
这两种方法对应那两种原型。
t**********g
发帖数: 3388
29
我在这里列出比较显著的区别:
1.指针
JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功
能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也
不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于
Java程序的安全。
2.多重继承
c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能
很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多
重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能
,又避免了c++中的多重继承实现方式带来的诸多不便。
3.数据类型及类
Java是完全面向对象的语言,所有函数和变量部必须是类的一部分。除了基本数据类型
之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类
中,这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的
。此外,Java中取消了c/c++中的结构和联合,消除了不必要的麻烦。
4.自动内存管理
Java程
x****u
发帖数: 44466
30
http://blog.sina.com.cn/s/blog_5d90e82f0101iq0n.html
推荐一篇很久以前看的文章:Oberon - The Overlooked Jewel
它介绍的是 Niklaus Wirth 设计的一种操作系统,叫做 Oberon。Niklaus Wirth 就是
大家熟知的 Pascal 语言的设计者。绝大部分人都没听说过有 Oberon 这个东西存在,
更难以把它跟 Niklaus Wirth 的大名挂上钩。所以作者说:“Wirth 因为 Pascal 而
闻名于世,可是接下来几年,他成为了 Pascal 的受害者。” 确实是这样。Wirth 一
直都不觉得 Pascal 是他的杰作。我想他应该会更喜欢以 Oberon 闻名于世。
Oberon 比起 Unix,有很大的不同,在于它的数据都是结构化的。进程间不通过字符串
交换数据,而是直接使用数据结构。很奇特的一点是,Oberon 操作系统是用一种同名
的程序语言(Oberon 语言)写成。令人惊讶的是,在那个年代,ETH 计算机系的所有
教职员工,学生,包括办公室的大妈,都是用的这种操作系统... 阅读全帖
x****u
发帖数: 44466
31
来自主题: Programming版 - 转:王垠--一种新的操作系统设计
http://www.yinwang.org/blog-cn/2013/04/14/os-design/
一种新的操作系统设计
我一直在试图利用程序语言的设计原理,设计一种超越“Unix 哲学”的操作系统。这
里是我的设想:
这种系统里面的程序间通信不使用无结构的字符串,而是使用带有类型和结构的数据。
在这样的系统里面,“程序”的概念基本上完全消失。系统由一个个的“函数”组成,
每个函数都可以调用另外一个函数,通过参数传递数据。每个函数都可以并发执行。
由于参数是一个数据结构,而不是字符串,这避免了程序间通信繁琐的“编码”和“解
码”过程。使得“进程间通信”变得轻而易举。任何函数都可以调用另一个函数来处理
特定类型的数据,这使得像 “OLE 嵌入”这样的机制变得极其简单。
所有函数由同一种先进的高级程序语言写成,所以函数间的调用完全不需要“翻译”。
由于这种语言不允许应用程序使用“指针运算”,应用程序不可能产生 segfault 一类
愚蠢的错误。
由于没有指针运算,系统不再需要现代处理器提供的“内存映射”机制,以及 TLB。这
使得内存访问效率大幅提高。而且简化了处理器的设计。
操作... 阅读全帖
L*******r
发帖数: 1011
32
Google就是好用。呵呵,以后见面就说:同学,今天你google没有? :)
注:我自己没有这么做过,我的系统只要集成原来的COM系统.
http://www.aspx.cn/comm/dotnetbbs/Showtopic.aspx?Forum_ID=6&Id=5284
指针类型参数传递:
在Windows API函数调用时,大部分函数采用指针传递参数,对一个结构变量指针,我
们除了使用上面的类和结构方法传递参数之外,我们有时还可以采用数组传递参数。
下面这个函数通过调用GetUserName获得用户名
BOOL GetUserName(
LPTSTR lpBuffer, // 用户名缓冲区
LPDWORD nSize // 存放缓冲区大小的地址指针
);

[DllImport("Advapi32.dll",
EntryPoint="GetComputerName",
ExactSpelling=false,
SetLastError=true)]
static extern bool GetComputerName (
[MarshalAs(Unmana
J*****n
发帖数: 4859
33
来自主题: Programming版 - 夕甲甲 zz
欧欧匹代码的格局,是和别的编程模式不同的:首先要有一个构造函数;基类里只定义
了函数的形式,可以随时通过派生增加不同的实现。那些程序员们,每每学会了继承和
多态,便可以接一个项目,——这是十年前的事,现在至少要懂得设计模式,——靠柜
台外站着,写些代码换一个鸡蛋灌饼吃;倘若懂一些多线程的知识,便可以在鸡蛋灌饼
里加火腿肠,或者里脊了,如果懂得语言的实现原理,那就能做一些底层代码的优化,
换一盘炒菜。但这些程序员,多是初级水平,大抵没有这样深入。只有懂得内存模型的
,才能接一些底层的项目,打开调试器和剖析器,慢慢的坐着优化代码。
我从十二岁起,便在村口的githoverflow工厂里当学徒,师傅说,我逻辑思维太差,怕
学不会静态类型语言,就写些shell脚本吧。shell脚本虽然容易写,但语法容易含混不
清的地方也不少。字符串和数组的功能很弱,条件判断的语法也很奇特,有时要对特殊
字符手动做两重转义,然后通过。在这种情况下,写脚本也很为难。所以过了几天,师
傅又说我干不了这事。幸亏荐头的情面大,辞退不得,便改为专管测试的一种无聊职务
了。
我从此便整天的站在测试机前,专管运行测试脚本。虽... 阅读全帖
S**I
发帖数: 15689
34
来自主题: JobHunting版 - [合集] 收到G家拒信,发面经
☆─────────────────────────────────────☆
recursive (递归) 于 (Mon Apr 11 10:56:49 2011, 美东) 提到:
大半夜收到HR的thank you note。不用管什么NDA了
本人ECE fresh PhD,背景是电路/EDA,跟G业务基本没什么关系
同学内部推荐的,很简单的一次电面就给了onsite
题都不难,但是自己没把握好机会,出了一些小bug。
总的感觉,出错就是硬伤,宁可从最简单的算法写起,也不能出错。
电面:
1,Skip list, http://en.wikipedia.org/wiki/Skip_list
写code实现struct skip_list * find(struct skip_list *head, int value)
2,sorted array with repeated elements
for given element, find out its range.
e.g. A A B B B B B C C D D E F G, given B, the out... 阅读全帖
h***o
发帖数: 539
35
BBS水木清华站∶精华区
发信人: FangQ (木头虫子), 信区: MathTools
标 题: Matlab与C++接口与混合编程讨论小结(六)
发信站: BBS 水木清华站 (Tue Nov 2 22:27:44 1999)
第二章、
第四节、用c编写mex程序[四]
发信人: fasiondog (乱了), 信区: MathTools
标 题: 用c编写mex程序 [part 4] (转信)
发信站: BBS 水木清华站 (Mon Apr 5 12:50:30 1999)
发信人: dodoo (虚怀), 信区: Programming
标 题: 用C编写mex程序 [PART 4]
输入数据是在函数调用之前已经在Matlab里申请了内存的,由于mex函数与Matlab共用同
一个地址空间,因而在prhs[]里传递指针就可以达到参数传递的目的。但是,输出参数
却需要在mex函数内申请到内存空间,才能将指针放在plhs[]中传递出去。由于返回指针
类型必须是mxArray,所以Matlab专门提供了一个函数:mxCreateDoubleMatrix来
T******7
发帖数: 1419
36
本片最主要的设定是什么呢?梦中梦对不对?这在程序的角度来说再直观不过了,那就
是——递归,如果做梦是一个函数Dream,那么梦中梦就是该函数的递归调用。
比起一般的递归调用来,该程序的特殊之处是,它是一个多线程的递归调用,也即是说
每一次递归都会新建一个线程来执行函数体。因此该递归函数有两种结束机制,一种是
wait超时(药物失效),另一种是由其调用函数来结束(kick)。
而由于硬件平台所限,该递归只能进行四层,因为每次递归都需要消耗系统资源,所以
递归深一层,系统运行就越慢(梦境每深一层,时间就变慢20倍)。一旦在第四层的时
候资源耗尽(做梦者生命耗尽),就会产生栈溢出,因此线程就会进入僵死状态(
limbo状态)。
而一旦将运行超时时间设置得过长(强力镇静药物),则会导致子线程运行过长从而耗
尽资源。此时如果子线程还没有被上层调用函数强制结束(撞击),则会被detach(在
梦中死去),因此进入僵死状态(进入limbo状态)。
而为什么多层次的梦唤醒需要同步撞击呢,这就跟我们析构一个含有指针的STL容器一
样,如果不遵守顺序,那么就会出现容器被析构而指针内容还在从而发生内存泄露的... 阅读全帖
a****a
发帖数: 5763
37
随着CPU与GPU合并成技术发展的趋势,苹果开发出了OpenCL框架,能够进行高速并行处
理的能力使OpenCL成为了业界标准,被广泛应用。
最近几年,GPU的发展吸引了很多来自科学计算界人士的目光。GPU有稳定的市场推动力
—公众喜闻乐见的电子游戏产生了源源不断的升级GPU的需求—因此比CPU的更新步伐更
快。从技术上讲,GPU本身就是多核架构,高端显卡往往有五百多个核心,即使低端的
集成GPU也有二三十个核心,所以能够通过并行来高效处理成千上万的线程。同时,对
于科学技算中的浮点计算,GPU往往通过硬件加速使其效率比传统CPU更高,因为图形渲
染等工作基本都是浮点计算。
GPGPU浮出水面
早期的GPU只能执行固定的程序,而不开放给程序员编程。随着时代的发展,图像处理
有时需要对着色器进行编程以实现一些特效,因此需要程序员可以使用GPU的汇编语言
写简单的着色程序。这自然对程序员要求过高,所以一些高阶的着色语言又被GPU厂商
开发出来。比如微软和NVIDIA共同开发的Cg语言,就能为顶点和像素编写专门的着色程
序。这类技术虽然面向图形渲染工作者,却吸引了一小簇科学计算研究者的兴趣。... 阅读全帖
w********g
发帖数: 106
38
来自主题: JobHunting版 - Twitter电面经
按行倒序输出文件。例如一个文件如下:
abc
123
def
那么输出:
def
123
abc
我说先给个naive的方法一会再改进,建个vector,把每一行写到这个vector
里,然后倒序输出这个vector。他问有什么缺点,我说处理不了大文件,他就叫我改进
。他给了我三个函数:
void seek(int location):文件指针指向第location个字符,如果seek(-1)那么文件
指针指向end of file。
int tell():返回文件指针当前指向哪个字符
string read(bytes):每次读bytes个字符,返回这些字符组成的string,然后文件指
针向后移动一个字符。比如本来文件指针指向第10个字符,那么read(1)就返回第10个
字符组成的字符串,并且文件指针指向第11个字符。
他让我用这三个函数写倒序输出。写着写着我就逻辑混乱了。其实这题很简单,没有算
法很严,就是考察思路是不是严谨。但是我确实写写就乱了。。。我感觉其实面试时考
察这么繁琐的题目是最难的。
c**s
发帖数: 159
39
转载一个大家共勉。
由于之前Amazon已经发了offer,deadline也快到了,所以不管这次Google on-site结
果如何,都不想再继续折腾,Amazon or Google。求职季到此结束,所以,是时候写点
东西回报地里了。本人NYU-POLY,EE专业,作为一个转行的,感觉自己的求职之路还算
挺顺利,希望自己的经历经验能对各位尤其是非CS的各位有所帮助。
一。
感谢一亩三分地,mitbbs, 米群网(QQ群:320065698,可能满了,但是管理员会清理
,大家可以加加试试,另外米群网也是一个非常不错的求职平台,大家可以通过这个链
接去注册下http://www.meetqun.com/member.php?mod=register&x=12)提供的求职信息,内推信息及面经,当然也得感谢LeetCode和CC150。充分利用上述资源十分必要,而且感觉这些已经足够了。
二。
觉得有必要介绍下自己的准备情况,也算给大家涨点自信。
前面说了我是EE的,所学课程,包括本科的课,都没有什么和计算机相关的。去年暑假
决定开始自学CS,为了毕业好找工作,也就是那时候我才写出了自己第... 阅读全帖
b***i
发帖数: 3043
40
来自主题: Programming版 - Question about type conversion (转载)
我问的是你具体的工程的目的,就是你foo里面做什么。如果改变指针的内容,那么就
有问题了。如果你只是做一些member function,改变指针指向的对象的member data,
传(A*&)b是可以的。
C++传指针的指针,或者reference to a pointer进一个函数不一定就让你改变,要看
函数的目的。从语法上允许作的事情有些是约定了不做的,或者做了会出问题的。你可
以限定传入reference to a constant pointer,保证不改变指针会更明确。
N******K
发帖数: 10202
41
把所有raw pointer替换为 shared_ptr or weak_ptr 等等 是sb行为
函数的传入传出指针都用raw pointer就行 只要保证这个函数内部没有内存泄露就可
以 函数内部可以用shared_ptr 或者 unique_ptr
例外就是 类的成员变量 如果是其他类的指针 就得用shared_ptr 或者weak_ptr 当用
函数初始化这些成员变量时,函数输入要是 smart pointer
C++ 自动内存管理 靠的就是 函数返回时 清空stack 或者 {}结束 清空局部变量
模仿GC来用smart pointer是行为艺术
b***i
发帖数: 3043
42
Exception不是给你处理编程错误的。指针非法操作是编程错误,最终会在发行版消失
的,或者变少。而exception是预计要发生的异常。Exception的目的是,在出问题的时
候,无法给出函数返回值的时候,提供一个另外的返回方式和返回值.
比如,计算开方。参数为负,算不出来开方,而函数的返回值是double,怎么办?扔出
一个Exception。这样被最近的catch接到,从而不走正常的返回通道。这种情况下,本
来正常通道就凑不通。这样简化了函数调用都要通过某个参数(指针所指向的结构)判
断一个任务是否完成。本来都要进行if, else if这样。改成try catch 就清晰了。方
便在你可以越级返回,即不在本次调用进行catch,而是在外层catch,比如一个类有很
多子类,就不用在每个子类实现的续函数中catch,而是在呼叫这些虚函数的那个函数
里面catch。
try{
p->virtualfun();
}catch(MyException e){
// no need to implement the catch in different virtualfu... 阅读全帖
w*******x
发帖数: 489
43
来自主题: Quant版 - 考个C++题
嗯,大家眼光都很敏锐阿。。我查了好一会才发现问题所在(当然原来程序有几百行,
难找一点)
总结一下:
1.) 把allocate函数的参数改成 指针的引用。 allocate(int * & Y) 就可以了。
2.) 把allocate函数的参数改成 指向指针的指针 allocate(int ** Y), 调用的时候
传递指针的地址 &X
3.) 直接返回指针。
o***s
发帖数: 42149
44
《用身体观察真气和气脉》,很难想象,这是一位中国科学院院士、顶尖大学原校长的讲座题目。朱清时院士这次早就引起争议的讲座,今天就在北京中医药大学如期举行。
根据媒体报道,朱院士在讲座中称,自己已练习《达摩禅经》十余年,从修炼真气中产生“极大的快乐”。他还试图“用现代的科学语言”解释真气,认为真气就是“神经元运行时的队列”,并且“一定有指挥者”。
从媒体透露出来的内容看,朱清时的观点与他今年5月10日发表在个人微博上的同题文章《用身体观察真气和气脉》基本类似。该文提出,真气是意识范畴的东西,并暗示意识不是完全由大脑的物质基础产生的。然而,其核心论述却犯了明显的逻辑错误,他将神经元与意识的关系比喻成水和波浪的关系,声称“波浪是不能作用于水本身的”,让人不明所以。
至少现在看来,贵为中科院院士的朱清时还没有拿出让人信服的科学表述方式。
朱清时讲座现场
“修炼真气让我获得极大的快乐”
据中国青年网报道,6月10日,中科院院士、原中国科学技术大学校长朱清时主讲的《用身体观察真气和气脉》在北京中医药大学开讲。此前,这场讲座的海报在网络上曝光后,引起一片哗然,在某网络问答平台上引发了“真伪科学之争”。... 阅读全帖

发帖数: 1
45
李三水VS.朱清时:量子世界观和佛教世界观是否相似?量子力学是否支持人类灵魂的
存在?
近1年前,《知识分子》曾收到一篇批评朱清时谈“量子意识”的文章,但作者有所顾
虑,不愿意实名。此后,一篇据称是朱清时的《客观世界很有可能并不存在》的文章传
播甚广,今年年初有读者反映称:该文近日在至少波士顿地区流传,产生了一些影响。
希望了解反方观点。然而,科学界对此几乎没有回应。直到日前,《知识分子》收到中
山大学教授李三水的文章,他选择公开对朱清时观点的质疑。与此同时,多位物理学界
同行向《知识分子》表达了对该文观点的支持,但也有清华大学物理系教授王向斌表示
,“认同结论和大多数论据,但是有部分论证细节未定论。”
一场学术讨论势在必行,《知识分子》征得李三水、王向斌两位老师同意,将在4月底
举行一次公开辩论,并全程直播。具体安排,敬请留意《知识分子》微信通知。
撰文 | 李三水(中山大学教授)
● ● ●
一、 缘起
我们生活的这个世界充满了奇迹,我们一生在小小的地球上就会遇上难以计数的美好和
不美好的事物,更不用说整个宇宙了。普通人看到的是五光十色,孩子也许能看到更多
,因为他们的好奇心... 阅读全帖
g***l
发帖数: 2753
46
来自主题: JobHunting版 - 求助:面试题
这个东西有很多方法,取决于你自己的系统。
我前一阵就做过这个东西,几千个文件,方法就是就是查malloc, re-alloc,和free,
把这这三个函数从新包装,每次调用这三个函数的时间,能够打印出指针,分配或者释
放的内存的大小,还有相应的文件,行数信息,就是在什么地方调用这三个函数的。
运行程序直到memory耗尽死机,然后查log文件,就是如果一个指针由malloc分配出来的
,那么他就应该有相应的FREE去释放相同大小的memory,对于re-alloc也是一样的。
到最后,就会发现某处的指针是没有被释放的。
当然,到系统memory耗光的时间,有些内存是没有释放的,但是这些没有释放的内存你
可以分析他为什么没有被释放,当然memory leak就可以很容易的被找出来。
t*****j
发帖数: 1105
47
来自主题: JobHunting版 - 一个C++问题
[9.4] 内联函数如何在安全和速度上取得折衷?
在 C 中,你可以通过在结构中设置一个 void* 来得到“封装的结构”,在这种情况下
,指向实际数据的 void* 指针对于结构的用户来说是未知的。因此结构的用户不知
道如何解释void*指针所指内容,但是存取函数可以将 void* 转换成适当的隐含类
型。这样给出了封装的一种形式。
不幸的是这样做丧失了类型安全,并且即使仅仅是访问结构体中的一个很不重要的字段
也必须进行函数调用。(如果你允许直接存取结构的域,那么任何人都能直接存取该结
构体了,因为他们必须了解如何解释 void* 指针所指内容;这样将使改变底层数据结
构变的困难)。
~~~~~~~~~~~~~~~~~~~~这上面讲的我似懂非懂....哪位能帮我讲
讲清楚些。c里为啥要用void*啊?丧失类型安全这个我是明白的。
m****a
发帖数: 2593
48
来自主题: GunsAndGears版 - 王垠的这篇写的不错 (转载)
【 以下文字转载自 Programming 讨论区 】
发信人: mrmaja (麻家), 信区: Programming
标 题: 王垠的这篇写的不错
发信站: BBS 未名空间站 (Mon Feb 3 01:36:03 2014, 美东)
http://www.yinwang.org/blog-cn/2014/01/25/pl-and/
喜欢这段和AK的比较,
程序语言与武器
前段时间 AK-47 的设计者 Kalashnikov 去世的时候,我从一篇文章了解到他设计 AK-
47 的故事,发现 AK 跟我喜欢的程序语言设计有异曲同工之妙。
AK 简单得就像一把锤子。它身上没有太空时代的材料。大多数汽车修理店都有可
以制造出 AK 的工具。
这篇文章首先提到,AK 的高可靠性最主要来自于它的简单,而其实简单也是程序语言
最重要的东西。程序员需要解决的问题一般都挺复杂,如果他们的工具再被设计得复杂
,那么他们大量的脑力就被浪费在解决这语言的问题,而不是真正需要解决的问题了。
Kalashnikov 开始的时候把任何有可能出问题的设计都排除在外了。
与简单的设计背道... 阅读全帖
m****a
发帖数: 2593
49
来自主题: Programming版 - 王垠的这篇写的不错
http://www.yinwang.org/blog-cn/2014/01/25/pl-and/
喜欢这段和AK的比较,
程序语言与武器
前段时间 AK-47 的设计者 Kalashnikov 去世的时候,我从一篇文章了解到他设计 AK-
47 的故事,发现 AK 跟我喜欢的程序语言设计有异曲同工之妙。
AK 简单得就像一把锤子。它身上没有太空时代的材料。大多数汽车修理店都有可
以制造出 AK 的工具。
这篇文章首先提到,AK 的高可靠性最主要来自于它的简单,而其实简单也是程序语言
最重要的东西。程序员需要解决的问题一般都挺复杂,如果他们的工具再被设计得复杂
,那么他们大量的脑力就被浪费在解决这语言的问题,而不是真正需要解决的问题了。
Kalashnikov 开始的时候把任何有可能出问题的设计都排除在外了。
与简单的设计背道而驰,现在很多程序语言为了赶潮流或者吸引眼球,喜欢标新立异,
喜欢加入很多“特性”,可是这些特性很有可能不但不解决问题,而且会制造问题。绝
大部分程序员都不理解这个道理,所以有些人听说我在设计自己的语言就问我:“它有
什么新特性吗?”我没法回答他们... 阅读全帖

发帖数: 1
50
来自主题: Programming版 - 为什么C语言很难?
赵岩 http://zhaoyan.website
前两天,有个学校要给高中生开一门编程的课,大家讨论用什么编程语言授课,大部分
人推荐用JAVA, 一部分说用Python,但是几乎所有的人都说:C语言太难了!
作为《C语言点滴》的作者,《C语言新思维》译者,这种语言坑我一般都绕开的,因为
无论我说什么,没私心也显得有私心。但是“C语言太难”这句话太扎心,搞得我有点
伤心。(文章排比对账,我只服自己!)我决定站出来为C语言说两句公道话!首先我
个人必须承认,大家认为的都没错,相比较另外两种语言,C语言确实是最难学的。但
是C语言为什么难?我认为锅不能C语言一个人背!背后还有三个主要的原因,那就是:
面对任务难,开发环境难,底层难。
首先是面对任务难。我不认为用{}就比用缩进难!声明一个变量的类型就比不声明一
个类型难!需要编译一遍就比直接运行难!就像你认为英语难,还分he, she;还有a,
the。老外却不这么想。换位思考一下,下面这个牌匾也会让老外抓狂的。
说到底,这种语法级别的难度比较其实没有任何意义,只是一个使用习惯,一个小程序
python用10行,C语言可能用20行,就因为... 阅读全帖
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)