前言(Introduction)
前些天写了一篇《程序猿也爱学英语(上),有图有真相》,大概介绍了我学英语的一些基本资料以及心得体会,先后从发音(Pronunciation, 基本常用单词积累(Vocabulary), 新概念英语(New Concept English), 究竟需不需要学语法(English Grammar?), 走遍美国(Family Album U.S.A.), 常用英语(Daily English Situations), 老友记/六人行(Friends),享受英语的乐趣(Enjoy English)等进行了一些论述。
在写作这几篇《程序猿也爱学英语,有图有真相》文章的过程中,发生了两件比较重要的事情:
1. 在我的强烈推荐下,老婆也爱上了看《老友记》。因为是无字幕版的,刚开始的时候,她听不太懂,但是到了第三季的时候就慢慢爱上了它。现在她把一到十季整整看完一遍了,期间整个房间都是她的欢声笑语!借此机会也想对其他有同样问题的朋友说:“坚持就是胜利!”
2. 经过几个月的努力,老婆终于找到自己满意的工作!对于这个Offer,可以说是来之不易,因为老婆没有任何跨国公司的经验且才来新加坡几个月,所以对她来讲是完全在一个不熟悉的英语环境,而且还要面对各种面试,其中的辛酸苦辣我也看在眼里,痛在心底。作为老公,希望她的工作一切顺利!
扯远了,回归正题,《程序猿也爱学英语,有图有真相》实在太长,为了方便读者阅读以及多方面考虑,我把它拆分成了几篇。今天这篇我们就来讲一下社区,博客以及源码。
社区(Forum)
我经常访问的社区网站很多,不同的时期或者根据当时研究的技术的不同,也会有相应的变化。这里我总结了曾经自己使用最多以及对我帮助最大的一些社区和网站(可能大家或多或少都曾使用过他们,主要偏向于.NET方向):
名称:w3schools 地址:http://www.w3schools.com/ 描述:这个网站大家再熟悉不过了,W3Schools是于1999年创立的一个网站开发教程门户。W3Schools由位于挪威提供软件开发、咨询的Refsnes Data公司所成立,提供的免费网页开发教程包括HTML、XML、CSS、JavaScript、PHP、ASP等等。 |
名称:StackOverflow 地址:www.stackoverflow.com 描述:这个就不需要我来做更多的介绍,相信每个朋友或多或少都用过它来找技术答案,Stack Overflow是全球IT界最受欢迎的技术问答网站。 |
名称:MSDN 地址:http://msdn.microsoft.com/en-us/ 描述:这个网站是大家学.Net的初始网站,也是.net方面官方和权威的资料,相信大家都知道或经常访问这个网站。即是初学者的最佳学习资料场地,同时也是中高级开发者的参考资料库。里面还包括很多视频、library、每月技术杂志、社区等。 |
名称:CodeProject 地址:http://www.codeproject.com 描述:分类十分的清晰,同时涵盖了.net技术的方方面面,最关键的是几乎所有文章都带有源码且文章由浅入深、浅显易懂。如果熟悉这个网站, 你可以学到很多有用的知识,同时也能锻炼一下英文。 |
名称:CodePlex 地址:http://www.codeplex.com/ 描述:这个网站相信大家也比较熟悉,里面包含了很多大大小小的开源项目,同时也包含一些官方和非官方的ToolKit,也包含很多成型的开源项目。如果你仔细看,你会发现有很多社区的朋友也上传了自己的开源项目。 |
名称:C# Corner 地址:http://www.c-sharpcorner.com/ 描述:上面有很多.net技术方面的文章,就像学英语有英语角一样,这个网站对.net以及和.net交互的技术都有介绍,文章都比较短小,学习起来也比较容易。 |
名称:Careercup 地址:http://www.careercup.com/ 描述:CareerCup是一个非常好的网站,它主要为从事软件工作的程序猿们提供一些求职面试准备,你可以通过上面的问题来了解包括Microsoft、Google,Yahoo,Amazon等公司的面试流程、常见问题以及注意事项等,同时你可以看到里面有很多求职的指导。 |
名称:TopCoder 地址:http://www.topcoder.com/ 描述:TopCoder,是一家专门组织计算机程序设计竞赛的公司。TopCoder 在线举行算法竞赛(SRMs)、组件设计竞赛和组件开发竞赛。算法竞赛在世界上与ACM、google code jam并称为三大赛。相信众多程序猿们在大学使用过这个网站。 上大学时比较喜欢去做做题,但最近几年因为工作等原因,就没有再使用。 |
名称:About.COM 地址:http://jobsearch.about.com/od/interviewsnetworking/u/jobinterviews.htm 描述:About.com是美国的一个入门网站,创立于1997年,部份内容为付费内容。它主要为网民提供各种各样的生活琐碎问题的解答。随着时间发展,它现时已发展成为一个包含500多个专题的超级指导网站。 我们要关注的是里面关于工作、求职、面试等资料。 |
名称:SourceForge 地址:http://sourceforge.net/ 描述:这个网站提供了软件开发领域的各个行业的开源项目,语言不限,一般只在上面找对开发有帮助的开源项目。 |
名称:InfoQ 地址:http://www.infoq.com/ 描述:是一个时刻关注企业软件开发领域变化与创新的在线独立社区,读者受众群主要为技术架构师、技术团队带头人(高级开发人员)和项目经理等。 通过由各个技术领域专家提供的最新的新闻、技术文章、视频访谈、视频演讲和迷你书等,InfoQ 为Java、.NET、Ruby、SOA、敏捷和架构六大社区提供一流的资讯。 |
名称:GitHub 地址:https://github.com/ 描述:GitHub于2008年上线,目前,除了Git代码仓库托管及基本的Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub的用户活跃度很高,在开源世界里享有深远的声望,形成了所谓的社交化编程文化(Social Coding)。 |
名称:Microsoft Virtual Academy 地址:http://www.microsoftvirtualacademy.com/#fbid=utV2JxtLPDq 描述:Microsoft Virtual Academy (MVA)提供了大量的微软课程,这些课程基本都是由一些专业的讲师讲解,里面的课程包括11种语言。网站的宗旨是帮助开发者、IT从业者和相关学生学习最新微软技术、构建自己的知识库以及更好地完善自己的人生规划。最重要的是里面的课程全部是免费的。 |
名称:Coursera 地址:https://www.coursera.org/courses 描述:Coursera 是由斯坦福大学的计算机科学教授吴恩达和达芙妮·科勒联合创建的一个盈利性的教育科技公司。 Coursera与多家大学合作,给大众带来一些在线免费课堂。 这个是身边的同事介绍的,自己基本没用。 |
名称:ASP.NET/ ASP.NET MVC 地址:http://www.asp.net 描述:ASP.NET/ ASP.NET MVC学习的最佳场所,里面可以看到最新的特性和一些培训的视频,很有帮助。目前比较热的ASP.NET MVC 4和Web API等文章和视频也比较多。 |
名称:Channel 9 地址:http://channel9.msdn.com/ 描述:Channel 9可以说是.NET最好的视频网站,里面除了有大量的技术视频之外,还有我们熟悉的和等。我相信绝大多数.NET程序员并不陌生。 |
名称:Java2s 地址:http://www.java2s.com/ 描述:Java2s 是一个比较不错的技术网站,里面除了包括Java相关的学习资料以及源码外,也包含了诸如C#, ASP.NET, Javascript, C++, Python, Android等,如果你仔细发掘,我相信你会喜欢上这个网站。 |
名称:Youtube 地址:http://www.youtube.com/ 描述:YouTube是世界上最大的视频分享网站,早期公司总部位于加利福尼亚州的圣布里诺。在比萨店和日本餐馆,让用户下载、观看及分享影片或短片。公司于2005年2月15日注册,网站的口号为“Broadcast Yourself”(表现你自己),所以这里面包括了各种各样的视频资料。有了它,你基本不用再去下载你需要的视频。 |
还有很多很多,这里就不一一列出…… |
博客(Blog )
我认为作为程序猿的我们不应该局限在自己的那一分三亩地(工作的内容),应该多注意以下几个方面
- 技术动态:了解自己关注的技术的最新动态。
- 技术广度:扩宽自己的眼界,了解更多的技术。
- 技术深度:更深层次的理解我们当前所使用的技术。
这个时候你订阅的国外大牛的技术博客往往会解决你这几方面的问题或者给我们更多的参考,让我们的知识更加全面化、更加体系化乃至更加专业化。
由于我最近几年一直致力于微软架构、管理、培训和企业解决方案,所以关注的博客也偏向于.NET方向:
博客 | 地址 | 介绍 |
Scott Guthrie | http://weblogs.asp.net/scottgu/ | Scott Guthrie 被称为ASP.NET 之父,他的文章涉及的面也比较广,从ASP.NET ,ASP.NET MVC,Silverlight,Visual Studio,.NET框架以及现在正热的Windows Azure。 |
S. Somasegar | http://blogs.msdn.com/b/somasegar/ | 如果你关注Visual Studio和.NET框架的发展,你肯定对Soma这个名字不陌生。Somasegar是现任微软开发工具事业部全球资深副总裁,负责Visual Studio,Expression系列,.NET框架,Team Foundation Server等一系列产品,同时还负责管理MSDN、TechNet等网站。在他的博客上,可以看到这些产品的最新消息,以及他个人对整个产业的观点与看法。 |
Martin Fowler | http://www.martinfowler.com/ | 《重构—改善既有代码的设计(Refactoring)》《企业应用架构模式(Patterns of Enterprise Application Architecture)》 |
Windows Azure Team Blog | http://blogs.msdn.com/b/windowsazure/ | 如果你关注云计算且关注微软的云计算Windows Azure,那么这里就有你所需要的资料和讯息。 |
SQL Server Blog |
http://blogs.technet.com/b/dataplatforminsider/ | 如果你想了解SQL Server的最新动态以及新版本的特性等,这里可能有你所需要的答案。 |
ASP.NET Weblogs | http://weblogs.asp.net/aspnet-team/ | 这个博客应该对做ASP.NET 或者ASP.NET MVC的同学来说并不陌生,里面有大量ASP.NET 或者ASP.NET MVC的学习资料和最新讯息。 |
Josh Smith | http://joshsmithonwpf.wordpress.com/ | 传说中的MVVM之父,最开始我也是从他这里慢慢开始熟悉这个模式,后来便一发不可收拾。 |
Laurent Bugnion | http://www.galasoft.ch/mvvm/ | 如果大家使用过MVVM Light,那么你一定会认识Laurent Bugnion,这个家伙对技术的热情很令人钦佩。目前MVVM Light支持WPF,Silverlight,Windows Phone以及时Windows 8。 |
还有很多,这里就不一一列出…… |
源码(Source Code)
关于源码的研究,我曾经在《WPF基础到企业应用系列7——深入剖析依赖属性(WPF/Silverlight核心)》以及《WPF企业内训全程实录(中)》有所提及。有时候我们需要挖掘更深入的知识或者学习其代码、规范以及注释书写等,研究源码无疑是一种比较有效的方法,同时也顺带提高了英语。
首先还是研究微软的类库,对我们常见的应用进行研究,可以结合Reflector+VS调试内部代码功能一起研究(IL能帮我们看清楚一些内部原理,但是不推荐细究,因为它会浪费我们很多时间,毕竟是微软搞出来的这么一套东西,说不定微软哪天就换了)。另外微软也公开了一部分源码,如果有感兴趣的同学也可以下载来看看,里面注释都比较详细。
其次就是研究MONO源码(www.mono-project.com),这个是个非常好的东西,对.NET的功能大部分都进行了实现。我之前研究它不是因为它的跨平台,而是感兴趣它的源码,大家也可以在线查看它的源码(地址:www.java2s.com)。这里说到java2s这个网站,它也是我平时去得比较多的地方,因为这里的知识比较全面且浅显易懂。如果你仔细挖掘,你会获得意想不到的收获。
再其次就是研究一些开源的框架和项目,比如
BlogEngine.NET(http://www.dotnetblogengine.net/)、Spring.NET(http://www.springframework.net/)、Castle(http://www.castleproject.org)、
log4net(http://logging.apache.org/log4net/)、NHibernate(http://www.hibernate.org/343.html)、iBATIS.NET(http://ibatis.apache.org)、
Caliburn(http://caliburn.codeplex.com/)、MVVM Light Toolkit(http://mvvmlight.codeplex.com/)、Prism(http://compositewpf.codeplex.com/)等等。
针对框架的研究,自己也总结了几点:
1,首先看框架的相关介绍,了解相关的背景、功能、架构图以及其他一些相关信息——认识了解。
2,根据介绍查看并调试框架所提供的实例——熟悉功能。
3,自己写一些相关的Demo,主要是熟悉该框架。如果说要急于做项目,这里就可以把框架引入到项目当中,然后具体使用之——具体使用。
4,根据该框架提供的详细单元测试研究其源码,这也是我最喜欢研究这些开源框架的原因——原理剖析。
5,通过上面的步骤认真分析其原理及细节——准备重现。
6,自己也根据之前的思路重复开发这个框架,最好能用TDD——框架复原。
7,仔细分析及思考,吸取其中的经验,最好能打造一个自己的框架(当然这一步是可选的)。
这里要注意的是:在研究的过程中一定要先熟悉功能,再研究它内部的源码和实现,然后再创造出自己的框架。这样才能激发我们研究的欲望,才会产生作用与反作用力,才会使我们达到深入浅出、举一反三,进而真正受益的目的!
总结&待续...(Summary & To Be Continued…)
正如我前面所说,《程序猿也爱学英语,有图有真相(中)》实在太长,为了方便读者阅读以及多方面考虑,我把它拆分成了几篇。今天这篇我们讲了社区,博客以及源码,那么下篇我们将接着说其他的几个主题,希望能对大家有帮助。
备注:
-
我不是牛人,只是一枚普普通通在海外漂泊的程序猿。写作本文只是自己一时兴起,或者说是自己的兴趣使然,保持交流和分享的心态发布出来。文中的观点只是自己的学习心得和体会,属一家之言且鉴于本人不是学英语出身,如有不对的地方,也请大家见谅并指正。
-
欢迎转载,但请注明作者、出处及保持内容完整(因为本文只是自己个人的一些粗浅认知,错误在所难免,也希望读者能反馈一些信息,及时纠正和更新以上内容)。
-
最后,如果你觉得文章对你有所帮助,别忘了推荐或者分享,因为有你的支持,才是我续写下篇的动力和源泉!