- 浏览: 5171719 次
- 性别:
- 来自: 天津
博客专栏
-
实战 Groovy
浏览量:29396
文章分类
- 全部博客 (639)
- 代码之谜 (6)
- JavaScript quirks (5)
- 程序员 (92)
- Java (93)
- BT编程 (7)
- html/css (64)
- Groovy&Grails (42)
- Android (20)
- C/C++ (5)
- PHP/Perl/Python (46)
- 经典文章 (51)
- CodeIgniter (14)
- JQuery (10)
- 笑话 (4)
- 其他 (32)
- javascript (69)
- 云计算 (0)
- html5 (7)
- 面试 (8)
- google (3)
- nosql (2)
- nodejs (11)
- go (5)
- erlang (1)
- 小常识 (3)
- 冷知识 (5)
- database (4)
- web (12)
- 架构 (12)
- Exception (0)
最新评论
-
jqw1992:
https://www.chromefor.com/libra ...
[福利] 开发者必备的 Chrome 插件——ChromeSnifferPlus -
litjerk:
初步算了一下,目前最最精简的Win98版是5M,他5个小时多敲 ...
让人目瞪口呆的三位世界级电脑大师 -
379855529:
。。似乎重点没说NIO啊,前面基础只是铺垫的很好的,可是我要的 ...
Java NIO与IO的详细区别(通俗篇) -
springmvc_springjpa:
spring mvc demo教程源代码下载,地址:http: ...
一步步开发 Spring MVC 应用 -
匡建武:
Good
四个程序员的一天
此文章的主旨是希望过于专注.NET程序员在做好工作、写好.NET程序的同时,能分拨出一点时间接触一下.NET之外的东西(例如10%-20%的时间),而不是鼓动大家什么都去学最后什么都学不精,更不是说.NET不行或劝大家放弃.NET。恕我愚钝,此主旨在文中表达不够清楚,看评论中很多朋友误解了,特此说明。 另外,本文中的观点并不全部是我个人的想法,相当一部分来自我以前聊过天的某些大牛,他们很多来自微软、百度、腾讯等知名企业,并且很多已经成为技术骨干,我曾经从他们那里受益匪浅,于是我把他们的指教结合自身的经验和理解写成此文。这就是此文的来源。 ------------------------------------------------------------华丽的分割线------------------------------------------------------------ 在给这篇文章起标题的时候,我斟酌了很久,因为我个人是反对使用“.NET程序员”、“C++程序员”或“PHP程序员”这类简单粗暴的方式为程序员做划分的。但是客观确实存在一个现象,就是很多程序员会为自己设置一个无形的界限,将自己与某种语言或平台硬绑定到一起,例如我这里所指的“.NET程序员”。请注意这与“术业有专攻”是不同概念的,有自己专攻的平台或领域这很正常,但是有很多人偏执地将自己与某个语言或平台紧紧捆绑,而忘记了自己首先是一名程序员,然后才使用某种语言,他们偏执于平台并陶醉于自己建立的盒子里,而不愿主动去接触一些盒子外的事物,最终使得自己无法进步。 从我个人的观点看,本文中“.NET程序员”是指具有如下特点的程序员群体: 如果您有超过3项符合上述特征,我想我们可以聊一聊,因为据我的观察,感觉博客园上这类朋友还是挺多的。 有一个事实我想先和大家澄清一下,其实.NET只是我的业余爱好。由于博客园主要偏重于.NET平台,且园子里的朋友对面向对象、架构之类的颇感兴趣,所以我写了很多关于.NET及架构方面的文章(如果您注意观察,会发现我博客里这类文章正减少并趋于消失),其实相对于设计、架构这类东西,我个人更感兴趣的是具体的科学与技术,例如各种编程语言的原理、应用及实现扩展,操作系统原理,网络编程,通信协议,算法与数据结构,数据挖掘,机器学习,分布式等等;语言方面我比较喜欢的是PHP、Python、Lisp等;而编程方面我更推崇Unix下的编程哲学和编程方法;我爱vim胜过VS无数倍。 因此,.NET和C#我一直是作为业余爱好来发展的,希望这没有让任何人觉得沮丧。很多朋友加我QQ或MSN问我关于.NET的问题,我经常答不上来,很多人或许觉得我不近人情,但我其实是真的答不上来。例如我在博客中写过一系列关于ASP.NET MVC的文章,很多人是冲那系列文章加我的,但是其实ASP.NET MVC我只在beta版时摆弄过两个星期,然后就再也没有碰过,所以后来很多朋友问我想关问题我是真的答不上来。 所以,在博客园这个以.NET和架构之类为主的社区,我算是半个旁观者吧,我看到园子里很多朋友都把自己禁锢在自己创造的盒子里,所以我希望以旁观者的身份,给这些朋友提几个建议。 有许多人通常觉得只要把一门语言学会学精就行,这个想法我觉得对了一半。一个程序员应该有一门精通的语言,但是还要不断学习新的语言(当然不能太频繁),倒不是为了以防哪天万一用到这门语言,而是接触学习不同的语言会拓展程序员的视野。 如果你一直用C#,试试Lisp,你会惊叹于还有这样写程序的方式,嗯?看来我得去学学Lamda演算;试试Python,你会惊讶于还有如此小巧优美的东西;试试Lua,你会发现原来语言还能嵌入其它语言,要不要为WOW写个外挂试试?试试Eiffel,你会发现还有契约式编程这种方法,嗯?什么?Java上有iContract,那我要不要为.NET实现一个?随着这种学习过程,你的思维自然就被拓展开了,而不是满脑子的Class、Object、MVC、OO…… 其实学习语言不一定是学习没听说过的,许多您听到耳朵长茧却从来没有深入学习的“老朋友”,如C、PHP,如果您细心学下来,也会得到许多意外的收获。 例如在学C的过程中,你会发现不可能脱离Unix环境而把C学好,你会接触POSIX和System V,你会主动深入学习进程、线程、信号、I/O、IPC,你会接触TCP/IP协议。你会发现要学好C还要理解计算机组成原理,你还会发现原来还有大小端这个东西。 深入学习PHP,你会发现PHP远不仅仅是一个做Web的脚本语言那么简单,你会了解到它SAPI、PHP Compiler和Zend Engine的优美结构,你会发现有opcode,你会发现PHP浑身都是扩展点,你可以扩展功能,扩展Compiler和Zend Engine,甚至可以完全实现自己的编译和运行逻辑。你会了解APC是如何缓存opcode,APD是如何跟踪PHP的运行。 每次学习一门语言,你会发现这不是一门语言,而是一个崭新的新大陆,里面有太多让人兴奋和新奇的东西,而如果你执意禁锢在“.NET盒子”里,你就永远不会知道这些。 如果什么东西都是用到才学,代码都是有用才写,那我只能非常抱歉的说你还不是个程序员,而只是个代码工人。程序员应该有主动出击的意识,应该对自己未接触的领域有无限向往。幸运的是,互联网上的财富实在太多了,你应该尽其所能去接触学习未知的东西,而不要总想我学习这个东西能不能换来钱给孩子买尿布和奶粉。你可以有很多借口,但是我想说,借口想找总是有的,时间想找也总是有的,还是看自己到底要什么。不要一边躺在盒子里一边又抱怨自己没有进步。 例如Google Publication,这里有世界最优秀的Google工程师们理论和实践的总结,来读读这些伟大的论文吧,看看这个伟大的公司和一群伟大的人都干了些什么,了解一下Map Reduce是怎么回事,如果了解了你自然想去试试Hadoop,还有Bigtable和GFS,哦!太震撼了,原来存储数据也有这么多讲究,不是放硬盘里或通过Insert插入数据库就行了。也许这些英文论文读起来很困难,但是我想一周一篇的要求并不高(我现在仍然保持着一周读两篇论文的习惯)。要知道,最新、最严谨的东西都在论文里,如果你只是通过书本或社区学习,那么你永远不会知道今天在计算机科学与技术的领域又发生了哪些令人震撼的事情,出现了哪些新奇的东西。 不要太懒惰,你写增删改查写累了吗?Come on!有没有想过自己写一个小型的httpd?当然你需要先去学习HTTP协议(rfc2612),试试能不能写一个PHP的SAPI扩展令你的httpd处理PHP脚本。有没有想过自己用lex和yacc实现一个自己的小语言,也不是完全没用,也许你已经对你的领域业务逻辑烂熟于胸,那么去实现一个自己的领域语言吧。啊!我要去学习编译原理、形式语言与自动机……咦,这东西还挺有意思的,去看看计算理论去……如果到了这里,你已经开始接触计算机的数学本质了,而你的层次将会得到升华。 学习就是这样,主动突破自己,给自己一些挑战性的任务,生活才有趣。成天困在.NET的盒子里,我们还有脸称自己为程序员吗? 从没用过IDE的程序员可能是悲剧,但从没脱离过IDE的程序员绝对是悲剧! 你有没有觉得自己越来越不像个“编程序”的而越来越像“堆程序”的。好的,即使在工作时你离不开IDE,那么业余时间让你的IDE滚蛋,等等,你改用Notepad?气死我了你!试试vim或Emacs,体验一下用纯文本写程序,用gcc编译连接的乐趣。你会发现“yyp”比“选中一行,Ctrl+C,点击下一行起始位置,Ctrl+V”简单的多,你会发现按一下“0”比按20次“左箭头”省事的多。等源程序多了,也许你会想去学习Makefile的写法。你会莫名其妙地发现自己更懂编译和连接过程了。 相信我,用纯文本和shell写程序比用IDE酷多了,想吸引女孩子吗?你去问问你们班或你们公司最漂亮的女生,她也会这么想。重要的是,这种酷不是“装B”的酷,而是有效率的酷。什么?你已经受不了IDE了…… 注意我是用的“接受”而不是用“改变”,你不需要改变什么,写.NET程序很好,不过你可以适当吸取一下其它领域的编程哲学与学习方式。可以说Windows(特别是.NET)程序员和Unix程序员思考问题的方式大不相同,如果现在需要一辆汽车,Windows程序员会建立一个从冶铁到装配的“All in one”汽车制造基地;而Unix程序员会去分别建立采矿场、冶铁厂、设计公司、材料制造厂、机械制造厂和装配厂。我不想讨论他们各自的优缺点(因为很容易陷入无谓的宗教纷争),但是对于你来说,了解一些其它的编程哲学对你没有坏处。 另外就是学习方式,例如你要学习PHP,请千万不要去书店购买各种《21天精通PHP》或《PHP编程宝典》,你应该首先打开Google,找到PHP官网,然后去官方文档哪里寻找学习资源。网上还有各种wiki,mailing lists和社区,请不要放弃这些资源。然后同时你可以去Amazon看书评,然后小心而谨慎地选择一本相关的书籍(影印版最优,翻译版其次)。 一个人想突破自己不容易,关键在于自己有没有突破的意愿。衷心希望有一天,您的脑中不再被ASP.NET,ASP.NET MVC,WCF,WPF,ADO.NET,Silverlight,EF……而占满,如果到了那一天,你会发现,咦?!我.NET的水平也大幅提升了!
希望我能做到旁观者清
每半年接触并学习一门语言
主动突破自己 接受更多挑战
脱离IDE 玩玩纯文本与shell
接受更多的编程哲学与学习方式
评论
所以楼主跟现在的我想法是一个方向的.
以前的我也只是向一门心思的学好语法.那都是外表....还好现在顿悟了..
有时候天天写程序累得要死.哪会有那么多事哦
下半年我打算自称java高级工程师
明年我打算称自己是java架构师
以后,我希望介绍自己是java艺术家,java诗人,java哲学家。
其实,真正的程序员,的确应该如文中所述
为什么生存,有时候是要放弃自己的想法
其实,真正的程序员,的确应该如文中所述
这是你的学习方式, 拓宽视野,脱离IDE去了解底层的实现,了解更多的编程哲学。 现在的人爱XX 不要把自己的看法说的像真理一样。 其实你这种效率很低下···
绝对不仅是 .net 程序员,java 里无数的框架同样也让无数java程序员困在堆代码的圈子里,
:idea: 学习了 ~~~
发表评论
-
计算机端口详细介绍(整理版)
2012-08-23 09:47 1416我们常常会在各类的网络或者网站方面的技术文章中见到诸如135、 ... -
六分钟八法则塑造优秀程序员
2012-03-31 17:21 1500还记得那个叫做 Justice Gray 的人么?他曾经试图在 ... -
数字签名是什么?
2011-11-29 17:32 57786今天,我读到一篇好文章。 它用图片通俗易 ... -
人民币的符号的正确表示法?一杠?两杠?¥还是¥呢?
2010-09-01 17:17 3103因为做的项目会跟钱打了交道,所以被研究了。 那是一杠还是 ... -
从HTTP GET和POST的区别说起
2010-09-01 17:13 1507面试时得到的回答大多是:POST是安全的,因为被提交的数据 ... -
饭后做这6件事等于慢性自杀。。。
2010-07-05 18:09 2548一般饭后你会做什么呢?是吸烟,吃水果,喝 ... -
99%的人都不知道手机的隐藏功能
2010-06-28 10:31 313221、伪关机 当不喜 ... -
做网站用UTF-8还是GB2312?
2010-06-20 22:25 2091经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的 ... -
得体说话35招
2010-06-20 19:48 1144赞美时,你该说……1.赞美行为而非个人。举例来说,如果对方是厨 ... -
我们真的需要那么多功能吗? - 国外主流开源 CMS 功能评点
2010-06-19 08:55 2706世界上最好用的工具 ... -
OpenID资源大全
2010-06-18 16:23 2244OpenID 是一个在网络上对用户进行验证的分散式框架,O ... -
SOA十大原则
2010-06-15 20:08 1487原文:http://www.infoq.com/c ... -
像设计师一样思考
2010-06-15 20:07 1342原文:http://www.dapenti.c ... -
用户不上你的网站的50个原因
2010-06-13 14:12 1171原因如下: 1 他们不想生产内容,他们期望的是更好的生活 ... -
http状态查询 http 状态代码解释 http状态码查询
2010-06-12 17:29 2006HTTP状态码(HTTP Status Cod ... -
危地马拉惊现“地狱之门”
2010-06-03 13:49 4347我的第一个念头是“这不是真的吧?!”。然后我检查了来源 ... -
【论】Windows操作系统让我们养成了什么臭毛病
2010-05-10 10:03 28071,疯狂刷新 相信很多人跟我以前一样,一进入Wind ... -
Windows操作系统让我们养成了什么臭毛病
2010-05-10 08:45 17301,疯狂刷新 相信很多人跟我以前一样,一进入Windows桌面 ... -
什么是算法 如何寻找稳定的婚姻搭配
2010-05-08 11:42 2613据说,一本书开篇就直言不讳地谈起两性的话题,这本书 ... -
交易员的胖手指导致美股暴跌
2010-05-08 00:10 1604周四,在不到一小时内,华尔街道琼斯指数暴跌了9%(约1000点 ...
相关推荐
《盒子结构多层住宅楼工程施工组织设计方案》是一个深入探讨土木工程建造设计的重要文档,它涵盖了从项目规划到施工实施的全过程。这份方案是针对盒子结构的多层住宅楼,这种结构在现代建筑中广泛应用,因其高效的...
总之,建造者模式是一种强大的工具,它帮助我们在面对复杂对象构建时保持代码的清晰性和可维护性。通过分离对象的构建过程,我们可以更方便地控制构建逻辑,同时支持未来的扩展。在Java开发中,理解和应用建造者模式...
在C++中实现建造者模式,我们可以遵循以下步骤: 首先,我们需要定义一个抽象建造者(Builder)类,它声明了一系列创建产品部分的接口。这个抽象类通常不包含具体构建逻辑,而是作为子类实现的模板。例如: ```cpp...
在Java编程中,建造者模式通常包括四个主要角色: 1. **产品类(Product)**:这是要创建的对象,通常具有多个属性,如复杂的对象结构。 2. **具体产品类(Concrete Product)**:实现产品类接口或抽象类的具体产品...
但是如果HR给他一张白纸,然后口头告诉他应该填什么什么,让他自己在白纸上 一项项的填上,这样就很容易出问题,首先他可能记不全所有的内容,其次填写的规范很难统一。再输入电脑肯定就是错误的数据。 所以HR应该...
这个故事寓意着我们对待生活的态度和投入,就像木匠建造房子一样,如果我们不用心去“建造”自己的生活,最终可能会困在自己制造的“粗糙房子”里。 这个故事向我们揭示了几个重要的知识点: 1. **生活态度决定...
- 封装性:建造过程被封装在建造者类中,客户端只需要知道如何组合建造者,而不需要关心具体的构建过程。 - 可扩展性:添加新的产品类型或建造过程只需要增加新的具体建造者,原有代码无需修改,符合开闭原则。 - ...
文件`BuilderPattern1`和`BuilderPattern`可能是示例代码或者进一步的解释,它们可能包含一个完整的建造者模式实现,包括产品类、抽象建造者、具体建造者和导演类的代码,以及如何在客户端使用这些类的例子。...
在"建造模式(代码)"的项目中,我们可以期待看到一个典型的建造者模式的实现。这个项目可能包含以下几个部分: 1. **产品类(Product)**:这是要构建的对象,通常具有多个组成部分或属性。在代码中,可能会有一个类...
《盒子结构多层住宅楼工程施工组织设计》是一个深入探讨土木工程建造设计的文档,它主要涵盖了在实际建设过程中如何高效、科学地进行施工规划和管理。这份文档是针对建筑行业的专业人士,特别是对于高等教育阶段的...
Java建造者模式是一种设计模式,属于创建型模式,它的主要目的是通过隔离对象的构建过程和其表示,使得构造复杂对象的过程更加...无论是标准的建造者模式还是在实际项目中的变体,都能在创建复杂对象时发挥重要作用。
在分析和设计阶段,合理地运用建造者模式可以避免在后期修改时对代码造成大面积的影响,从而降低维护成本。 在提供的压缩包文件“jianzaozhemoshi”中,可能包含了关于建造者模式的实例代码、讲解文档或者是相关的...
在Java编程中,这种模式经常用于生成对象,特别是当对象的创建过程较为复杂时,建造者模式能够提供一种更加灵活的方式来构造对象。 首先,我们来看一下建造者模式的基本结构。它通常包含四个角色:产品角色...
- 在 `Director` 类中,调用建造者的构建方法,按顺序组织构建过程,而不直接与产品交互。 - 客户端通过调用 `Director` 的方法,指定建造者并获取构建好的产品。 5. **优点**: - 封装性好,建造过程和表示分离...
### 建造者模式详解 #### 模式介绍 建造者模式(Builder Pattern)是设计模式中的一种,主要用于创建复杂对象。此模式的核心在于将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。简单...
建造者模式(Builder Pattern)是设计模式中的一种结构型模式,它在Java中广泛应用,用于创建复杂的对象。这种模式的主要思想是将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示形式。这...
在Java中,建造者模式通常包含以下几个角色: 1. **产品角色(Product)**:这是被构建的复杂对象,包含了多个部分或属性。 2. **建造者角色(Builder)**:定义了产品的构建接口,规定了构建各个部分的顺序,并负责...
建造者模式是一种设计模式,属于创建型模式,它在软件工程中被广泛应用,尤其是在复杂的对象构建过程中。在安卓项目中,使用Java语言实现建造者模式,可以极大地提高代码的可读性和可维护性,同时也方便对对象的构建...
在建造日光温室时,需要严格按照上述规范执行,从场地的选择到墙体的建造,再到结构的细节处理,都有一系列的技术参数和施工要求。这些规定有助于确保温室能够达到预期的性能指标,如温室内的温度和光照条件,并保证...
产品类通常包含多个组成部分,这些部分可以在建造过程中逐步添加。 2. **建造者接口(Builder)**: 定义了构建产品的抽象接口,比如`ActorBuilder`,它规定了如何构建产品的各个部分,但不直接创建产品对象。 3. *...