免费电子书列表
在StackOverflow上,有人要打算收集个免费电子书的列表,结果很快就有人分享了一个列表。很不错,我就转过来了。原帖的地址在http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books (注意:有些连接可能会被墙掉)
List of Free Programming books (compiled): Meta-List
How to Design Programs: An Introduction to Computing and Programming
25 Free Computer Science Ebooks
Free Tech Books
MindView Inc (List of Free Books)
Wikibooks: Programming
Cheat Sheets (Free)
CodePlex List of Free E-Books
Book Training – On Video!
Sofware Program Mana ...
最佳编程语录
以前本站发布过《22条经典的编程引言》、《编程引言补充》、《Linus Torvalds 语录》还有《十条不错的编程观点》。今天向大家介绍“最佳编程语录”,条条都是很不错的语录,如同我们的太阳,照亮了我们的方向(所以我们选用了一个红色的图片,希望能够通过五毛们的网络审查)。其中只有一两条在以前本站发布过的文章中出现过。这篇文章的出处在这里,下面是“Neo”和“陈皓”的翻译,我们的翻译水平有限,所以,我们提供了中英文对照,有不当之处,还请各位指正。
A good programmer is someone who looks both ways before crossing a one-way street. — Doug Linder, systems administrator
好的程序员这样一类人,这类人在横穿一条单行道前都要先看一下路两边。– Doug Linder, 系统管理员
A most important, but also most elusive, aspect of any tool is its influence on the habits of ...
参透软件开发的本质 – Uncle Bob Martin 推荐的经典书籍
数量级25(10^25)是 Uncle Bob 在 RailsConf 演讲的主题。如果你用一台 PDP 8( 1960年代的计算机)和 Mac PowerBook 做比较的话,你会发现 Mac PowerBook 比 PDP 8 快8000倍,有6百万倍大的内存,11000倍的耗能,1500倍的容量等等。如果将这些0累加起来,很容易达到10^25。在过去40年里,我们的硬件计算能力获得了10^25倍的提升,而作为软件开发人员的我们并没有利用这些计算能力来提升多少我们的软件开发能力。没错,我们是写了不少的代码,但是它们基本上都是一些顺序语句,if 语句,和 while 循环等,没有什么新鲜的东西。你可能会说面向对象是新东西呀,但是那只是另外一种组织顺序、选择和迭代等语句的方法而已。除我们现有的编程语言之外,如果有新的编程语言能够产生并创造新的“微积分学”,从而将软件开发提高到一个新的高度,将会是一件非常令人期待的事情,因为顺序语句,选择语句和迭代等最终将成为历史。
Uncle Bob 认为以下四本书是软件开发人员必须阅读的,并由他自己来排名。
1. The Structure &am ...
编程语言时间地理图
有人使用Google Map做了一个网页,把所有编程语言的时间线和地理位置,如下图,上面是一个编程语言的时间轴,下面是Google Map地图,点击编程语言,你可以查看该编程语言的发明者,发明地,和其Hello World示例(点击这里查看更多的Hello World)
http://www.geospat.com/hoprola/
(点击小星,可以看到语言的发明者和示例)
程序语言性能比拼
下面这个网页,你可以比较各种程序语言的性能:
http://shootout.alioth.debian.org/u64/index.php
这个页面,安装的是x64 Ubuntu,CPU是Intel® Q6600® 单核。这个网页支持的语言很多,什么C,C++,Java,python,PHP,Erlang,C#,Ruby,……,还有最新的G0语言。
在主页上,你可以选择一个语言。比如,我们选择Google的Go语言——Go 6g8g,然后,点击Show按钮,于是,你会看到下面这个界面:
在这个界面上方,你可以选择两种语言,我们选择的是,上面的是Go 6g8g,而下面是的GNU C,于是下面的图表,是这两个语言各种参数和算法的比较图表。
在这个图表中,其实就是“Go的性能” 除以 “C的性能”,所以,
如果柱状图是大于1的(也就是基线以上的)则说明Go的性能不如C。
如果柱状图小于1的(也就是基线以下的),说明Go的性能超过了C。
再往下,是用来做比较的算法的图表,如下所示。在这个表中,我们可以看到很多算法 ...
(免费在线)新书推荐:搜索的用户界面
题外话:剑桥大学出版社很有意思,允许作者把书的全部内容放在网上,例如:Christopher D. Manning, Prabhakar Raghavan and Hinrich Schütze, Introduction to Information Retrieval, Cambridge University Press. 2008.
《搜索的用户界面》的作者Marti Hearst是加州大学伯克利分校研究信息可视化的一位大儒,她有很多带有认知心理学加设计的尝试,在信息检索这门学科里的信息可视化领域很有地位。我斗胆把她的新书的梗概在这里描述一下,习惯看英文的朋友们可以点击链接去看英文原文,不喜欢看英文的朋友们可以有选择的看看我这里的总结,然后硬硬头皮,跳进去啃一些具体章节吧。本书可能收益的人有:对搜索有兴趣的学生,工业界做设计和评估的专业人士,对技术中的人本主义感兴趣的人,书痴。
译文:本书综述
本书概括了信息寻找过程中人的方面,并专注于其中被用户界面可以支持的方面。本书描述一些用户界面的一般方法论,尤其是搜索的用户界面以及如何评估好的搜索界面。本书 ...
编程语言的评测
摘要:这篇文章的原文出处在这里 我意译了整篇文章。结合计算机语言评测基准这个网站来读此文还是比较有意思。当然也不能以这个评测结果就贸然断定什么语言最好,什么语言不好。没有好不好的语言,只有适不适用于你解决问题域的语言。就文章而言请大家还是不必太过认真,就当从另一个方面来了解一下这33种编程语言吧。
计算机语言评测基准是一个由429个程序组成的集合,它评测了33个程序语言的13的重复实现的基准程序。如果你想量化的比较不同语言,那么这个是一个非常不错的资源。
在计算机评测基准中,评测者为了尽量让评测准确,非常谨慎的选择了13个基准程序,这13个基准程序并不针对某以特定语言有特殊的优化。对于评测选择33中语言都实现了13个基准程序。当然,除了速度这个指标外,程序基准评测同时也为每一个基准测试程序发布一个编码大小指标。非常感谢基准评测让我们看到程序设计中非常重要的一个方面:程序语言的性能和程序语言灵活性之间的矛盾。正是这个矛盾给所谓“高级编程语言”带上一个含蓄的轻蔑的意思。即,当你在使用这些高级语言编码时,你也许可以编写出漂亮的代码,但是你是如此的远离了硬件,你不可能获得更好的性能,是这样的 ...
Glassfish ESB 的教程
OpenESB项目实现了一个运行期企业服务总线(Enterprise Service Bus:ESB)使用JBI(Java业务集成)作为核心基础。OpenESB可以让你集成企业应用与Web Service松散地连接成复合的应用程序。这使得你可以无缝地组合与拆解该复合应用程序,并认识到一个真正面向服务架构(SOA)的优点。
BPEL是一种编程语言,它明确定义了基于Web服务的业务流程。BPEL在支持业务伙伴间的长时间会话方面表现尤为卓越。BPEL将成为基于Web服务的业务流程最广泛采用的标准,这一趋势早在该标准正式发布前就已经非常明显。
BPEL适用于支持业务流程逻辑的“宏观编程”。这些业务流程均是完整而独立的应用,它们将Web服务作为实现其业务功能的“活动”。BPEL不致力于成为通用的编程语言,相反,它的应用设想就是与其他实现业务功能(“微观编程”)的编程语言结合使用。
OpenESB上有一些BPEL教程都是非常有趣的,下面一些教程的例子:
http://wiki.open-esb.java.net/attach/OpenESBIntroductionTutorial/openes ...
编程语言流行度排名
下面的这些排名并不是非常科学的,它们只是从某种方面表现出了编程语言的流行程度。仅供参考。
Yahoo Search
这里,我们使用了Yahoo Search API,简单地搜索了一下相关的编程语言。收搜字样是”language programming”,下面是搜索到的页面结果。也许这能够说明语言的流行程度。
工作相关
接下来,我们来看看与工作相关的页面。也是从Yahoo Search API中从Craigslist.org网站中取得这些数据。搜索模型如下:language programmer -“job wanted” site:craigslist.org。这个结果可以看到全球的雇主在雇佣技术人员的时候所要求的编程语言的数量分布。
技术书籍
下面是由Amason所提供的搜索API中得到的目前出版物中的编程语言相关的统计数据,一般来说,越流行的语言通常会有更多的书籍。我们来看看书籍方面的各语言的书籍数量的排行榜。
Google Code 开源项目
下面的结果取自Googel Code (http://www ...
未来五年程序员需要掌握的10项技能
由于最近经济形势的变化,很多开发人员只关注他们短期的工作前景。与此同时,把时间和精力花在学习最能带来回报的新技术上是件非常重要的事情。这里是我们列举的10种你需要马上开始学习的技术,让你的简历在未来5年不会落伍。这个列表并不完全,有很多业界的领域(比如大型机开发人员)没有涉及。尽管如此,对通常的主流开发来说,学习其中至少7项技能肯定不会错 ——不但要达到能在面试时侃侃而谈的程度,还得能在工作中运用自如。
1) 编程语言三选一 (.NET, Java, PHP)
除非开发世界有根本的改变(类似小行星击中雷德蒙),在不远的将来,大部分开发人员将需要了解三大开发平台——.NET (VB.NET或者C#), Java, 或者PHP——中的至少一个。并且只了解核心语言也是不够的。因为项目会包含越来越多不同的功能,你需要对相关框架和库有深入的了解。(本人以为C/C++可能比这三个语言更有竞争力)
2) 互联网Rich Application (RIAs)
不管爱她还是恨她,最近几年,Flash的用途突然间不仅仅是制作政治人物弱智歌曲演唱动画而已了。Flash也萌生出了以Fle ...
幽默:程序员的进化
高中时期
10 PRINT "HELLO WORLD"
20 END
大学新生
program Hello(input, output)
begin
writeln(\'Hello World\')
end.
高年级大学生
#include
int main(void)
{
printf("Hello, world!\\n");
return 0;
}
职业新手
#include
void main(void)
{
char *message[] = {"Hello ", "World"};
int i;
for(i = 0; i < 2; ++i)
printf("%s", message[i]);
printf("\\n");
}
职业老手
#include
#include
using namespace std;
class string
{
private:
int size;
cha ...