上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 24 下一页

2018年3月3日

STL 的string类怎么啦?

摘要: 前言 上个周末在和我的同学爬香山闲聊时,同学说到STL中的string类曾经让他备受折磨,几年前他开发一个系统前对string类还比较清楚,然后随着程序的复杂度的加深,到了后期,他几乎对string类失去了信心和信任,他觉得他对string类一头雾水。老实说,我几年前也有同样的痛苦(就是当我写下《标 阅读全文

posted @ 2018-03-03 22:28 AlanTu 阅读(507) 评论(0) 推荐(0)

从语句 char* p="test" 说起

摘要: 我相信,使用C/C++多年的人对下面这个字符串赋值语句都不会陌生吧。 char* p = "test"; 同时,我也相信,各位在使用这种语句后吃过很多苦头也不少吧?只要你想利用指针p来改变字符串的内容,你的程序都会得到一个让你颜面尽失一个内存非法操作。比如,下面的这些语句: p[0] = 's'; 阅读全文

posted @ 2018-03-03 22:27 AlanTu 阅读(1086) 评论(0) 推荐(0)

【转】标准C++类std::string的内存共享和Copy-On-Write技术

摘要: 1、 概念 Scott Meyers在《More Effective C++》中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的样子,其实你在干着别的诸如给班上的某位女生写情书之类的事,而一旦你的父母出来在你房间要 阅读全文

posted @ 2018-03-03 22:26 AlanTu 阅读(1430) 评论(0) 推荐(0)

Inside i++

摘要: i++、++i、i=i+1、效率怎么样?看过一本书上说,i++比i=i+1好的地方是因为i=i+1中的那个1要占用一个寄存器,所以速度没有i++快,于是我想验证一下。另外,以前听说过Java中的“i=i++”得不到正确结论,也就是应该是“先累加再赋值”,但Java经过这种运算后,i值居然没有变化。所 阅读全文

posted @ 2018-03-03 22:23 AlanTu 阅读(218) 评论(0) 推荐(0)

用C写有面向对象特点的程序

摘要: 比如在一个项目中,有大量的数据结构,他们都是双向链表,但又想共用一套对链表的操作算法,这怎么做到呢,C中又没有C++中的继承,不然我可以继承一父(类中只有两个指针,一个向前一个向后),而其算法可以写在你类中的虚函数中,供子类使用。如: class Links{public: Links* back; 阅读全文

posted @ 2018-03-03 22:22 AlanTu 阅读(180) 评论(0) 推荐(0)

哈希表心得

摘要: 最近我在做一个项目,其中要用到一个数据结构——Hash Table(哈希表),以前只有理论知识,现在实却发现很不简单,所以写下来和大家共分享。 我们知道,哈希表是一个固定大小的数组,数组的每个元素是一个链表(单向或双向)的头指针。如果Key一样,则在一起,如果Key不一样,则不在一起。哈希表的查询是 阅读全文

posted @ 2018-03-03 22:21 AlanTu 阅读(514) 评论(0) 推荐(0)

JDK里的设计模式

摘要: 下面是JDK中有关23个经典设计模式的示例,在stakeoverflow也有相应的讨论: http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns Structural(结构模式) Adapter: 把一个接 阅读全文

posted @ 2018-03-03 21:40 AlanTu 阅读(453) 评论(0) 推荐(0)

C/C++返回内部静态成员的陷阱

摘要: 在我们用C/C++开发的过程中,总是有一个问题会给我们带来苦恼。这个问题就是函数内和函数外代码需要通过一块内存来交互(比如,函数返回字符串),这个问题困扰和很多开发人员。如果你的内存是在函数内栈上分配的,那么这个内存会随着函数的返回而被弹栈释放,所以,你一定要返回一块函数外部还有效的内存。 这是一个 阅读全文

posted @ 2018-03-03 21:38 AlanTu 阅读(216) 评论(0) 推荐(0)

如何学好C、C++语言

摘要: 如何学好C语言 有人在酷壳的留言版上询问下面的问题 keep_walker : 今天晚上我看到这篇文章。 http://programmers.stackexchange.com/questions/62502/small-c-projects 我也遇到了和提问的老外一样的问题。。能给像遇到这样烦恼 阅读全文

posted @ 2018-03-03 21:26 AlanTu 阅读(254) 评论(0) 推荐(0)

“21天教你学会C++”

摘要: 下面是一个《Teach Yourself C++ in 21 Days》的流程图,请各位程序员同仁认真领会。如果有必要,你可以查看这个图书以作参照:http://www.china-pub.com/27043 看完上面这个图片,我在想,我学习C++有12年了,好像C++也没有学得特别懂,看到STL和 阅读全文

posted @ 2018-03-03 21:23 AlanTu 阅读(565) 评论(0) 推荐(0)

编程修养(三)

摘要: 23、static的使用————————static关键字,表示了“静态”,一般来说,他会被经常用于变量和函数。一个static的变量,其实就是全局变量,只不过他是有作用域的全局变量。比如一个函数中的static变量: char*getConsumerName(){ static int cnt = 阅读全文

posted @ 2018-03-03 21:20 AlanTu 阅读(158) 评论(0) 推荐(0)

编程修养(二)

摘要: 11、出错信息的处理—————————你会处理出错信息吗?哦,它并不是简单的输出。看下面的示例: if ( p == NULL ){ printf ( "ERR: The pointer is NULL/n" ); } 告别学生时代的编程吧。这种编程很不利于维护和管理,出错信息或是提示信息,应该统一 阅读全文

posted @ 2018-03-03 21:19 AlanTu 阅读(188) 评论(0) 推荐(0)

编程修养(一)

摘要: 什么是好的程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快?我觉得都不是。对于一些技术细节来说和底层的技术,只要看帮助,查资料就能找到,对于速度快,只要编得多也就熟能生巧了。 我认为好的程序员应该有以下几方面的素质: 1、有专研精神,勤学善问、举一反三。 2、积极向上的态度,有创造 阅读全文

posted @ 2018-03-03 21:18 AlanTu 阅读(286) 评论(0) 推荐(0)

【转】函数式语言的宗教

摘要: 很早的时候,“函数式语言”对于我来说就是 Lisp,因为 Lisp 可以在程序的几乎任意位置定义函数,并且把它们作为值来传递(这叫做 first-class function)。可是到后来有人告诉我,Lisp 其实不算“函数式语言”,因为 Lisp 的函数不“纯”(pure)。 所谓“纯函数”,就是 阅读全文

posted @ 2018-03-03 15:29 AlanTu 阅读(236) 评论(0) 推荐(0)

【转】为什么说面向对象编程和函数式编程都有问题

摘要: 我不理解为什么人们会对面向对象编程和函数式编程做无休无止的争论。就好象这类问题已经超越了人类智力极限,所以你可以几个世纪的这样讨论下去。经过这些年对编程语言的研究,我已经清楚的看到了问题的答案,所以,我经常的发现,人们对这些问题做的都是一些抓不住要领、无意义的争论。 简言之,不论是面向对象编程还是函 阅读全文

posted @ 2018-03-03 15:24 AlanTu 阅读(1955) 评论(0) 推荐(0)

【转】对博士学位说永别

摘要: 对博士学位说永别 经过深思熟虑之后,我决定再次“抛弃”我的博士学位。这是我第三次决定离开博士学位,也应该是最后一次了。这应该不是什么惊人的消息,因为我虽然读博士10年了,可是我的目标从来就不是博士学位。我在寻找更重要的东西,而且那个东西已经被我找到了。所以我的“博士生涯”其实完成了它的使命,基本上可 阅读全文

posted @ 2018-03-03 15:18 AlanTu 阅读(240) 评论(0) 推荐(0)

【转】写给支持和反对《完全用Linux工作》的人们

摘要: 早就有人问起我的学习情况,问我有没有找到理想的研究环境。我却总是弄一些小动物,要不就是好玩的内容在这上面。真是惭愧,因为一直觉得自己还没有什么发言权,一直觉得是不是自己搞错了。不过来了 Cornell 已经一年半,也可以说一下对美国教育的感想了。我的感觉可能是错的,或者局限于我的专业或者学院。不过总 阅读全文

posted @ 2018-03-03 15:16 AlanTu 阅读(590) 评论(0) 推荐(0)

【转】人体工学

摘要: 人体工学 长时间用电脑工作的人,都会开始关注自己的健康。很多人出现腰肌劳损,颈椎病,肌腱炎之类的烦人问题。其他人呢,因为看到身边的同事朋友得了那些疾患,也开始小心起来。通常人们的解决方案,是求助于“人体工学”(ergonomics)。很多公司请来专业的人体工学专家,为员工咨询和调整他们的座位,姿势和 阅读全文

posted @ 2018-03-03 15:01 AlanTu 阅读(911) 评论(0) 推荐(0)

【转】如何掌握所有的程序语言

摘要: 对的,我这里要讲的不是如何掌握一种程序语言,而是所有的…… 很多编程初学者至今还在给我写信请教,问我该学习什么程序语言,怎么学习。由于我知道如何掌握“所有”的程序语言,总是感觉这种该学“一种”什么语言的问题比较低级,所以一直没来得及回复他们 :P 可是逐渐的,我发现原来不只是小白们有这个问题,就连美 阅读全文

posted @ 2018-03-03 14:59 AlanTu 阅读(183) 评论(0) 推荐(0)

【转】Kotlin 和 Checked Exception

摘要: 最近 JetBrains 的 Kotlin 语言忽然成了热门话题。国内小编们传言说,Kotlin 取代了 Java,成为了 Android 的“钦定语言”,很多人听了之后热血沸腾。初学者们也开始注意到 Kotlin,问出各种“傻问题”,很“功利”的问题,比如“现在学 Kotlin 是不是太早了一点? 阅读全文

posted @ 2018-03-03 14:57 AlanTu 阅读(158) 评论(0) 推荐(0)

【转】什么是现实理想主义者

摘要: 曾经有人看了我的文章,以为我是一个“理想主义者”,来找我聊天。他说:“你知道吗,我跟你一样喜欢简单优雅的代码。上次我在某公司工作,看到他们的代码乱得不成样子,二话没说给他们重写了,结果有几个小地方跟原来的代码不大一样,后来系统因此当掉了。老板对我说,明天你不用再来上班了!你说我是不是好心没好报啊?” 阅读全文

posted @ 2018-03-03 14:56 AlanTu 阅读(471) 评论(0) 推荐(0)

【转】经验和洞察力

摘要: 过去的事情,就让它已成云烟吧…… 很多人很在乎“经验”,比如号称自己在某领域有 30 年的经验,会用这样那样的技术。我觉得经验是有价值的,我也有经验,各个领域的都有点。然而我并不把经验放在很重要的位置,因为我拥有大部分人都缺乏而且忽视的一种东西:洞察力(insight)。 每进入一个新的公司,我进入 阅读全文

posted @ 2018-03-03 14:49 AlanTu 阅读(222) 评论(0) 推荐(0)

【转】C 编译器优化过程中的 Bug

摘要: 一个朋友向我指出一个最近他们发现的 GCC 编译器优化过程(加上 -O3 选项)里的 bug,导致他们的产品出现非常诡异的行为。这使我想起以前见过的一个 GCC bug。当时很多人死活认为那种做法是正确的,跟他们说不清楚。简言之,这种有问题的优化,喜欢利用 C 语言的“未定义行为”(undefine 阅读全文

posted @ 2018-03-03 14:47 AlanTu 阅读(1023) 评论(0) 推荐(0)

【转】AlphaGo与人工智能

摘要: AlphaGo与人工智能 在之前的一篇文章中我指出,自动驾驶所需要的“视觉识别能力”和“常识判断能力”,对于机器来说是非常困难的问题。至今没有任何机器可以在视觉方面达到驴的水平,更不要说和人比。可是最近Google的AlphaGo战胜了围棋世界冠军,挺闹腾的,以至于对AI的误解又加深了。 本来玩个游 阅读全文

posted @ 2018-03-03 14:21 AlanTu 阅读(456) 评论(0) 推荐(0)

【转】给Java说句公道话

摘要: 有些人问我,在现有的语言里面,有什么好的推荐?我说:“Java。” 他们很惊讶:“什么?Java!” 所以我现在来解释一下。 Java超越了所有咒骂它的“动态语言” 也许是因为年轻人的逆反心理,人们都不把自己的入门语言当回事。很早的时候,计算机系的学生用Scheme或者Pascal入门,现在大部分学 阅读全文

posted @ 2018-03-03 14:20 AlanTu 阅读(177) 评论(0) 推荐(0)

【转】图灵的光环

摘要: 图灵的光环 仿佛全世界的人都知道,图灵(Alan Turing)是个天才,是他创造了计算机科学,是他破解了德国纳粹的Enigma密码。由于他的杰出贡献,计算机科学的最高荣誉,被叫做“图灵奖”。然而根据自己一直以来对图灵机等计算模型的看法,加上一些历史资料,我发现图灵本人的实际成就,相对于他所受到的崇 阅读全文

posted @ 2018-03-03 14:15 AlanTu 阅读(438) 评论(0) 推荐(0)

【转】对 Parser 的误解

摘要: 一直很了解人们对于parser的误解,可是一直都提不起兴趣来阐述对它的观点。然而我觉得是有必要解释一下这个问题的时候了。我感觉得到大部分人对于parser的误解之深,再不澄清一下,恐怕这些谬误就要写进歪曲的历史教科书,到时候就没有人知道真相了。 什么是 Parser 首先来科普一下。所谓parser 阅读全文

posted @ 2018-03-03 14:14 AlanTu 阅读(595) 评论(0) 推荐(0)

【转】数学和编程

摘要: 好些人来信问我,要成为一个好的程序员,数学基础要达到什么样的程度?十八年前,当我成为大学计算机系新生的时候,也为同样的问题所困扰。面对学数学,物理等学科的同学,我感到自卑。经常有人说那些专业的知识更加精华一些,难度更高一些,那些专业的人毕业之后如果做编程工作,水平其实比计算机系毕业的还要高。直到几年 阅读全文

posted @ 2018-03-03 14:11 AlanTu 阅读(198) 评论(0) 推荐(0)

【转】DRY原则的误区

摘要: 很多编程的人,喜欢鼓吹各种各样的“原则”,比如KISS原则,DRY原则…… 总有人把这些所谓原则奉为教条或者秘方,以为兢兢业业地遵循这些,空喊几个口号,就可以写出好的代码。同时,他们对违反这些原则的人嗤之以鼻——你不知道,不遵循或者藐视这些原则,那么你就是菜鸟。所谓“DRY原则”(Don’t Rep 阅读全文

posted @ 2018-03-03 14:06 AlanTu 阅读(159) 评论(0) 推荐(0)

【转】编程的宗派

摘要: 总是有人喜欢争论这类问题,到底是“函数式编程”(FP)好,还是“面向对象编程”(OOP)好。既然出了两个帮派,就有人积极地做它们的帮众,互相唾骂和鄙视。然后呢又出了一个“好好先生帮”,这个帮的人喜欢说,管它什么范式呢,能解决问题的工具就是好工具!我个人其实不属于这三帮人中的任何一个。 面向对象编程( 阅读全文

posted @ 2018-03-03 14:03 AlanTu 阅读(157) 评论(0) 推荐(0)

【转】谈语法

摘要: 谈语法 使用和研究过这么多程序语言之后,我觉得几乎不包含多余功能的语言,只有一个:Scheme。所以我觉得它是学习程序设计最好的入手点和进阶工具。当然 Scheme 也有少数的问题,而且缺少一些我想要的功能,但这些都瑕不掩瑜。在用了很多其它的语言之后,我觉得 Scheme 真的是非常优美的语言。 要 阅读全文

posted @ 2018-03-03 12:18 AlanTu 阅读(244) 评论(0) 推荐(0)

【转】Braid - 一个发人深思的游戏

摘要: Braid - 一个发人深思的游戏 我已经很久很久没有打游戏了(如果不算 Angry Birds 之类用来打发时间的游戏的话)。我的最后一个真正意义上的游戏机,是 PlayStation 1。在那上面,我真正欣赏的最后一个游戏,是 [Metal Gear Solid (1)]。 我曾经是一个游戏迷, 阅读全文

posted @ 2018-03-03 12:17 AlanTu 阅读(481) 评论(0) 推荐(0)

【转】TeXmacs:一个真正“所见即所得”的排版系统

摘要: TeXmacs:一个真正“所见即所得”的排版系统 好久没有推荐过自己喜欢的软件了,现在推荐一款我在美国做数学作业的私家法宝:TeXmacs。我恐怕不可能跟以前那么有闲心写个长篇的 TeXmacs 说明文档了,不过这东西如此的简单好用,所以基本上不用我写什么文档了。鉴于知道的人很少,不理解它的人很多, 阅读全文

posted @ 2018-03-03 12:15 AlanTu 阅读(2227) 评论(0) 推荐(0)

【转】怎样写一个解释器

摘要: 写一个解释器,通常是设计和实现程序语言的第一步。解释器是简单却又深奥的东西,以至于好多人都不会写,所以我决定写一篇这方面的入门读物。 虽然我试图从最基本的原理讲起,尽量不依赖于其它知识,但这并不是一本编程入门教材。我假设你已经理解 Scheme 语言,以及基本的编程技巧(比如递归)。如果你完全不了解 阅读全文

posted @ 2018-03-03 12:12 AlanTu 阅读(315) 评论(0) 推荐(0)

【转】什么是语义学

摘要: 什么是语义学 很多人问我如何在掌握基本的程序语言技能之后进入“语义学”的学习。现在我就简单介绍一下什么是“语义”,然后推荐一本入门的书。这里我说的“语义”主要是针对程序语言,不过自然语言里的语义,其实本质上也是一样的。 一个程序的“语义”通常是由另一个程序决定的,这另一个程序叫做“解释器”(inte 阅读全文

posted @ 2018-03-03 12:11 AlanTu 阅读(675) 评论(0) 推荐(0)

【转】设计的重要性

摘要: 我曾经在一篇文章里谈过关于设计的问题,然而那篇文章由于标题不够醒目,可能很多人没有注意看。我觉得现在有必要把里面的内容专门提出来讲一下,因为设计在我的心目中具有至关重要的地位,却被很多计算机科学家和程序员所轻视。 我觉得自己不但是一个计算机科学家和程序员,在很大程度上我还是一个设计师。我不但是一个程 阅读全文

posted @ 2018-03-03 12:10 AlanTu 阅读(535) 评论(0) 推荐(0)

【转】什么是“对用户友好”

摘要: 什么是“对用户友好” 当我提到一个工具“对用户不友好”(user-unfriendly)的时候,我总是被人“鄙视”。难道这就叫“以其人之道还治其人之身”?想当年有人对我抱怨 Linux 或者 TeX 对用户不友好的时候,我貌似也差不多的态度吧。现在当我指出 TeX 的各种缺点,提出新的解决方案的时候 阅读全文

posted @ 2018-03-03 12:10 AlanTu 阅读(248) 评论(0) 推荐(0)

【转】怎样尊重一个程序员

摘要: 得知一位久违的同学来到了旧金山湾区,然而我见到他时,这人正处于一生中最痛苦的时期。他告诉我,自己任职的公司在他加入之前和之后,判若两人。录取的时候公司对他说,我们对你在实习期间的表现和学术背景非常满意,你不用面试,甚至不用毕业拿学位,直接就可以加入我们公司成为正式员工。然而短短一年后的今天,这位同学 阅读全文

posted @ 2018-03-03 12:08 AlanTu 阅读(225) 评论(0) 推荐(0)

【转】其他人的BUG

摘要: 在软件行业,经常看到有的公司管理让一个人修补另一个人代码里的BUG。有时候有人写了一段代码,扔出来不管了,然后公司管理让其他工程师来修复它。我想告诉你们,这种方法会很失败。 首先,让一个人修复另一个人的BUG,是不尊重工程师个人技术的表现。久而久之会降低工程师的工作积极性,以至于失去有价值的员工。代 阅读全文

posted @ 2018-03-03 12:00 AlanTu 阅读(210) 评论(1) 推荐(1)

【转】牛校综合征

摘要: 我在牛校待过(清华,Cornell),也在非牛校待过(川大,Indiana)。我见过许多的牛校与非牛校学生,我感觉牛校的学生确实不一样,他们的脑子貌似有一种病。经过很长一段时间,我终于总结出了这病的基本特征,这些症状被我统称为“牛校综合症”。牛校综合症萌芽于进牛校之前的“奋斗”过程,在牛校的人群中互 阅读全文

posted @ 2018-03-03 11:56 AlanTu 阅读(202) 评论(0) 推荐(0)

上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 24 下一页

导航