【技术新闻】中国互联网创业环境分析报告

1、互联网在中国易转化人群和发达地区居民中的普及率已经达到较高水平。

截至2012年6月底,中国网民数量达到5.38亿,互联网普及率为39.9%。在普及率达到约四成的同时,中国网民增长速度延续了自2011年以来放缓的趋势,2012年上半年网民增量为2450万,普及率提升1.6个百分点。

2、移动互联网创业项目受到资金持续追捧。

中国移动互联网产业披露的投资事件达30起,其中,披露投资金额的投资案例数为17起,披露投资金额总额约为3.78亿美金,平均单笔投资金额约为2225万美金。

3、云计算近两年在国内取得了实质性的发展,降低了创业初期成本投入。

云服务已经成为互联网最热的话题之一,其便利和优势不必多说。创业公司人才、资金短缺,都将会成为创业路途中主要的问题。云服务的面世和普及恰恰可以帮助创业公司克服这些问题。创业公司可以在付出较少成本后,就可以得到便捷、高效、安全的云服务。

4、开放平台成为适应当今互联网产业竞合的新模式,为创业者提供了发展平台。

通过携手第三方开发者,互联网开放平台商可以协调多方资源来应对用户多元化需求,提升应用开发与服务能力;开放平台为第三方开发者提供了产品推广的运营平台,从而降低创业与独立经营的各项成本。

5、互联网创业热点领域分析。

移动互联网刚刚起步。参考2011年第二季度数据显示,全球3G用户数同比增长35%,该季度手机用户有56亿,而智能手机用户才8亿多,发展空间巨大。
音频将是一个热点。随着智能移动设备的普及,人机交流不再限于目前流行的点击与触摸模式。

电子商务与移动商务将持续发展。移动技术还让四类本地商业服务重获发展:折扣服务、支付服务、点评服务、签到服务。

注:

来源于:51cto

【下载】Visual Studio 6/2005/2008/2010 各版本编译器

Microsoft Visual Studio 6.0

英文版:http://yunpan.cn/lk/743nxa0hvu

Microsoft Visual Studio 6.0 Service Pack 6 补丁:
英文版:http://download.microsoft.com/do … c22eed74/Vs6sp6.exe
中文版:http://download.microsoft.com/do … 2f497309/Vs6sp6.exe

Microsoft Visual Studio 2005 下载: 
Visual Studio 2005 Professional 官方90天试用版
英文版:http://download.microsoft.com/do … 05_Pro_90_Trial.img
中文版:http://download.microsoft.com/do … 05_Pro_90_Trial.img

Visual Studio Team System 2005 Team Suite 官方90天试用版
英文版:http://download.microsoft.com/do … _vsts_180_Trial.img
中文版:http://download.microsoft.com/do … _VSTS_180_Trial.img

Microsoft Visual Studio 2008 下载: 
Visual Studio 2008 Professional 官方90天试用版
英文版:http://download.microsoft.com/do … rialENUX1435622.iso
中文版:http://download.microsoft.com/do … rialCHSX1435983.iso

Visual Studio Team System 2008 Team Suite 官方90天试用版
英文版:http://download.microsoft.com/do … ayTrialX1429235.iso
中文版:http://www.microsoft.com/downloa … 4-82e3-81570c5384cb

Microsoft Visual Studio 2008 Sp1 补丁微软官网下载地址: 
英文版:http://download.microsoft.com/do … 8SP1ENUX1512962.iso
中文版:http://download.microsoft.com/do … 8SP1CHSX1512981.iso

Microsoft Visual Studio 2010 下载

Visual Studio 2010 Professional 试用版:
中文版:http://download.microsoft.com/do … 2010ProTrialCHS.iso
英文版:http://download.microsoft.com/do … VS2010ProTrial1.iso

Visual Studio 2010 Premium 试用版:
中文版:http://download.microsoft.com/do … 010PremTrialCHS.iso
英文版:http://download.microsoft.com/do … S2010PremTrial1.iso

Visual Studio 2010 Ultimate 试用版:
中文版:http://download.microsoft.com/do … 10UltimTrialCHS.iso
英文版:http://download.microsoft.com/do … 2010UltimTrial1.iso

Microsoft Visual Studio 2010 Sp1 补丁微软官网下载地址: 
多语言版ISO直接下载地址:http://download.microsoft.com/do … 0/VS2010SP1dvd1.iso

——————————————————————————

注册方法:

1、Microsoft Visual Studio 6 序列号全输入1即可;

2、Microsoft Visual Studio 2005:进入控制面板,在“添加删除”里面选择删除”Visual Studio 2005″,然后在打开的窗口中选择最后一项“添加注册码升级到正式版”,在里面输入下面的 CD-KEY 然后点升级就OK了! CD-KEY:KYTYH-TQKW6-VWPBQ-DKC8F-HWC4J

3、Microsoft Visual Studio 2008:方法同 Visual Studio 2005,CD-KEY 为:PYHYP-WXB3B-B2CCM-V9DX9-VDY8T

4、Microsoft Visual Studio 2010:方法同 Visual Studio 2005,CD-KEY 为:YCFHQ-9DWCY-DKV88-T2TMH-G7BHP

【php】读取文件的常见方法

1.fread

string fread ( int $handle , int $length )

fread() 从 handle 指向的文件中读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到哪种情况。

fread() 返回所读取的字符串,如果出错返回 FALSE。

<?php
    $filename = "/usr/local/something.txt";
    $handle = fopen($filename, "r");//读取二进制文件时,需要将第二个参数设置成'rb'

    //通过filesize获得文件大小,将整个文件一下子读到一个字符串中
    $contents = fread($handle, filesize ($filename));
    fclose($handle);
?>

 

如果所要读取的文件不是本地普通文件,而是远程文件或者流文件,就不能用这种方法,因为,filesize不能获得这些文件的大小。此时,你需要通过feof()或者fread()的返回值判断是否已经读取到了文件的末尾。

例如:

<?php
    $handle = fopen('http://www.baidu.com', 'r');
    $content = '';
    while(!feof($handle)){
        $content .= fread($handle, 8080);
    }
    echo $content;
    fclose($handle);
?>

或者:

<?php
    $handle = fopen('http://www.baidu.com', 'r');
    $content = '';
    while(false != ($a = fread($handle, 8080))){//返回false表示已经读取到文件末尾
        $content .= $a;
    }
    echo $content;
    fclose($handle);
?>

 

2.fgets

 string fgets ( int $handle [, int $length ] )

  fgets()从 handle 指向的文件中读取一行并返回长度最多为 length – 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length – 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。

<?php
    $handle = fopen('./file.txt', 'r');
    while(!feof($handle)){
        echo fgets($handle, 1024);
    }
    fclose($handle);
?>

length 参数从 PHP 4.2.0 起成为可选项,如果忽略,则行的长度被假定为 1024。从 PHP 4.3 开始,忽略掉 length 将继续从流中读取数据直到行结束。如果文件中的大多数行都大于 8KB,则在脚本中指定最大行的长度在利用资源上更为有效。从 PHP 4.3 开始本函数可以安全用于二进制文件。早期的版本则不行。

3.fgetss

string fgetss ( resource $handle [, int $length [, string $allowable_tags ]] )

跟fgets功能一样,但是fgetss会尝试从读取的文本中去掉任何 HTML 和 PHP 标记,可以用可选的第三个参数指定哪些标记不被去掉。

<?php
    $handle = fopen('./file.txt', 'r');
    while(!feof($handle)){
        echo fgetss($handle, 1024, '<br>');
    }
    fclose($handle);
?>

 

4.file

array file ( string $filename [, int $use_include_path [, resource $context ]] )
将文件内容读入一个数组中,数组的每一项对应文件中的一行,包括换行符在内。不需要行结束符时可以使用 rtrim() 函数过滤换行符。

<?php
    $a = file('./file.txt');
    foreach($a as $line => $content){
        echo 'line '.($line + 1).':'.$content;
    }
?>

 

5.readfile

int readfile ( string $filename [, bool $use_include_path [, resource $context ]] )

读入一个文件并写入到输出缓冲。返回从文件中读入的字节数。如果出错返回 FALSE 并且除非是以 @readfile() 形式调用,否则会显示错误信息。

<?php
    $size = readfile('./file.txt');
    echo $size;
?>

 

6.file_get_contents

string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen ]]]] )

将文件读入一个字符串。第三个参数$context可以用来设置一些参数,比如访问远程文件时,设置超时等等。

另外,file_get_contents相对于以上几个函数,性能要好得多,所以应该优先考虑使用file_get_contents。但是readfile貌似比file_get_contents性能好一点(?),因为它不需要调用fopen。

<?php 
    $ctx = stream_context_create(array( 
        'http' => array( 
            'timeout' => 1    //设置超时
            ) 
        ) 
    ); 
    echo file_get_contents("http://www.baidu.com/", 0, $ctx); 
?>

 

7.fpassthru

int fpassthru ( resource $handle )

将给定的文件指针从当前的位置读取到 EOF 并把结果写到输出缓冲区。

<?php 
    header("Content-Type:text/html;charset=utf-8"); 
    $handle = fopen('./test2.php', 'r');
    fseek($handle, 1024);//将指针定位到1024字节处
    fpassthru($handle);
?>

 

8.parse_ini_file

array parse_ini_file ( string $filename [, bool $process_sections ] )

parse_ini_file() 载入一个由 filename 指定的 ini 文件,并将其中的设置作为一个联合数组返回。如果将最后的 process_sections 参数设为 TRUE,将得到一个多维数组,包括了配置文件中每一节的名称和设置。process_sections 的默认值是 FALSE。

注意:

1. 如果 ini 文件中的值包含任何非字母数字的字符,需要将其括在双引号中(”)。
2. 有些保留字不能作为 ini 文件中的键名,包括:null,yes,no,true 和 false。值为 null,no 和 false 等效于 “”,值为 yes 和 true 等效于 “1”。字符 {}|&~![()” 也不能用在键名的任何地方,而且这些字符在选项值中有着特殊的意义。

test.ini文件内容:

; This is a sample configuration file
; Comments start with ';', as in php.ini

[first_section]
one = 1
five = 5
animal = BIRD

[second_section]
path = "/usr/local/bin"
URL = "http://www.example.com/~username

test.php内容:

<?php 
    $config = parse_ini_file('./test.ini', ture);
    print_r($config);
?>

输出内容:

Array
(
    [first_section] => Array
        (
            [one] => 1
            [five] => 5
            [animal] => BIRD
        )

    [second_section] => Array
        (
            [path] => /usr/local/bin
            [URL] => http://www.example.com/~username
        )

)

 

几个注意事项:

1. 鼓励在处理二进制文件时使用 b 标志,即使系统并不需要,这样可以使脚本的移植性更好。

2. allow_url_fopen选项激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象例如文件。默认的封装协议提供用 ftp 和 http 协议来访问远程文件,一些扩展库例如 zlib 可能会注册更多的封装协议。出于安全性考虑,此选项只能在 php.ini 中设置。

3. 如果要打开有特殊字符的 URL (比如说有空格),就需要使用 urlencode() 进行 URL 编码。

来源于网络,以便自己以后所查看。

【php】serialize函数和unserialize函数

serialize函数是将数组转换成字符串,用于将数组的数值以字符串的形式存储。

而unserialize函数刚好是一个逆方向,将已经转换成的字符串恢复成数组。

看如下例子:


$a=array('data'=>"hi", 123);
$b=serialize($a);
echo $b; //这个就是描述过的数组但在这里是一个字符串而已
$c=unserialize($b); //把描述过的数据恢复
print_r($c); //还原成为 $a ,数组结构并没有丢失。

 

【php】phpmail在本地测试成功,而在服务器上失败?

因为需要发送email服务,所以就选择用phpmail类,但是出现一个问题:在本地测试的时候发送email成功,但是一上传到服务器,提示提供的邮箱账号有问题。就这个原因,纠结了几天,在百度上查资料得知:用phpmail类发送邮件时,服务器要支持sockets服务。根据这个说法,去服务器上修改,但是还是提示邮箱账号有问题。最后没办法,重新看代码,不过还是发现了问题之所在,在初始化phpmail类的时候,忘了给端口赋值,而默认就为25.请看如下代码:

		$mail = new PHPMailer();

		$mail->IsSMTP();

		$mail->Host = "smtpout.secureserver.net";

		$mail->Port = 80;

		$mail->SMTPAuth = true;

		$mail->Username = "jhonse@jhonse.com";

                ...........

结果是邮件服务器提供的端口改了…

【discuz】对活动版块的报名人数进行修改

discuz x2论坛的活动版块,虽然有一个报名人数统计功能,但是不能详细分出某个人报名的时候是一个人报名,还是代表多个人报名。针对于这个问题,于是在活动版块又添加了一个用户栏目(参加人数),也就是说在报名的时候需要填写是否是一个人还是多个人。

先展示修改完成之后的效果图:

 

修改第一步:在列表中添加参加人数

修改文件:.\template\default\forum\viewthread_activity.htm

<!--{if $applylist}-->
	<div class="ptm pbm xs1" id="applylist_$_G[tid]">
		<h2>{lang activity_new_join} ($applynumbers {lang activity_member_unit})</h2>
		<table class="dt">
			<tr>
				<th width="140">&nbsp;</th>
				<th>{lang leaveword}</th>
				<!--{if $activity['cost']}-->
				<th width="60">{lang activity_payment}</th>
				<!--{/if}-->
				<th width="60">参加人数</th>
				<th width="110">{lang activity_jointime}</th>
			</tr>
			<!--{loop $applylist $apply}-->
				<tr>
					<td>
						<a target="_blank" href="home.php?mod=space&uid=$apply[uid]" class="ratl vm"><!--{echo avatar($apply[uid], 'small')}--></a>
						<a target="_blank" href="home.php?mod=space&uid=$apply[uid]">$apply[username]</a>
					</td>
					<td><!--{if $apply[message]}--><p>$apply[message]</p><!--{/if}--></td>
					<!--{if $activity['cost']}-->
					<td><!--{if $apply[payment] >= 0}-->$apply[payment] {lang payment_unit}<!--{else}-->{lang activity_self}<!--{/if}--></td>
					<!--{/if}-->
					<td><!--{if $apply[ufielddata]}-->
								<!--{loop $apply[ufielddata] $applyIInfo}--> $applyIInfo[field1] <!--{/loop}-->
							<!--{else}-->
								{lang no_informations}
							<!--{/if}-->
					</td>
					<td>$apply[dateline]</td>
				</tr>
			<!--{/loop}-->
		</table>
		<!--{if $applynumbers > $_G['setting']['activitypp']}-->
		<br \>
		<div class="pgs mbm cl">
			<div class="pg">
				<a onclick="ajaxget('forum.php?mod=misc&amp;action=getactivityapplylist&amp;tid=$_G[tid]&amp;page=2', 'applylist_$_G[tid]')" class="nxt" href="javascript:;">{lang next_page}</a>
			</div>
		</div>
		<!--{/if}-->
	</div>
<!--{/if}-->

第二步: 对报名数目进行调整

对于活动版块,牵扯到discuz数据库中的两个表: pre_forum_activity 和 pre_forum_activityapply

根据报名按钮的响应函数得知:forum.php?mod=misc&amp;action=activityapplies&amp;fid=2&amp;tid=25&amp;pid=26

找到要修改的文件:.\source\module\forum\forum_misc.php

然后在此文件中找到报名处理函数以及取消报名处理函数

if(submitcheck(‘activitysubmit’)) {

********

}elseif(submitcheck(‘activitycancel’)) {

********

}

找到更新数据库中表的代码:

DB::update('forum_activity', array('applynumber' => $ApplyNum_Jhonse), "tid='$_G[tid]'");

如何更新报名人数数据:只要把每个人的报名人数相加即可。(也就是说不管报名还是取消报名,只要重新从pre_forum_activityapply这个表中得到每个人的报名人数就可以了。

所以以上两处都调用一个更新方法就可以了。看如下代码:

 

/********数目更新位置-jhonse*************/
		//数目减少
		$ApplyNum_Jhonse = 0;

		$query_Jhonse_01 = DB::query("(选择语句Sele...) * FROM ".DB::table('forum_activityapply')." WHERE tid='$_G[tid]' ");

		while($Jhonse_query_01 = DB::fetch($query_Jhonse_01)){

			$ufielddata = array();

			$ufielddata = unserialize($Jhonse_query_01['ufielddata']);

			$ApplyNum_Jhonse += intval($ufielddata['userfield']['field1']);

		}

		/////////////////////////////////////////

修改完毕!!!

【discuz】活动版块设置为不审核状态

最近在修改discuz x2的活动主题版块的布局,请看如下截图:

方法一:

布局修改文件:.\template\default\forum\viewthread_activity.htm

修改当中遇到了一个问题,就是每次有人报名的时候,都需要自己手动审核,本以为discuz x2后台有对应的设置,但是翻来覆去也找不到对应的设置,自己只好看源代码了。

在discuz x2数据库中查看了下pre_forum_activityapply表,发现一个字段(verified)的值有1和0的区别,于是就修改其对应的值,结果证明确实是根据verified这个字段来判断是否要审核。请看一下截图:

注: 0代表要审核,1代表已经审核

于是只要对其表所有的verified字段的值都设置为1就可以了。看如下代码:

DB::query(“UPDATE  “.DB::table(‘forum_activityapply’).” SET verified=1 “);

这代码放到哪个文件好呢?

然后又找代码查看:

看到:./source/include/thread/thread_activity.php文件

修改即可。

方法二: 直接修改响应数据库的函数,将其值改为1.

修改文件: ./source/module/forum/forum_misc.php

至于为什么是这个函数:

请看按钮响应的链接:

forum.php?mod=misc&amp;action=activityapplies&amp;fid=2&amp;tid=25&amp;pid=26

修改位置:

$verified = $thread[‘authorid’] == $_G[‘uid’] ? 1 : 0;

将其值修改为 $verified = 1;

即可。

【技术新闻】老调重弹:年龄大了,码农何去何从

前言

岁月是把杀猪刀,老了码农,白了头发,残了身体,消磨了意志。

码农老矣,尚能码否?

这是一个老话题了,按照一些人的说法,这是月经贴,最近才在博客园上看见这样的帖子。

今天在cnBeta上看见了这个帖子:年过50,还能继续当码农吗,本来只是在闪存发发牢骚,后来想想,干脆写个帖子,写得长点,打发一下时间也好。

我主要谈谈我的经历。

背景

对那些不知道我的情况的同学,我简单说说我的背景,1993年开始学编程,大学读的不是计算机,而是英语高级翻译,毕业10年,2年前移民澳洲,现在33岁,仍然在做码农。

国内

现实是非常残酷的,无论你是否接受!

在中国,软件开发这行太固执于年龄了,主要有3个观点

年纪大了,思维跟不上,不能学习新技术
呆久了,老油条,不怎么干活,效率低下
当然是待遇了,呆了那么多年,工资越来越高,公司成本压力越来越大
现在国内的物价飞涨,人员的待遇也被迫提高了很多,相比几年前,甚至以倍数算。现实有点荒谬,老人多年加薪,比不上新人入职薪酬起点,如果关注新闻的,那些或许部分被夸张的某某IT巨头的毕业生入职20/30万起跳。这对老人来说,情何以堪啊!

对开发来说,码农资历越深,经验越丰富,要解决关键问题,还是要靠扎实经验,学习新技术也应该是驾轻就熟。

举个例子,没有实际业务系统开发经验的,遇到技术问题,一般都是上网搜索,如果没找到,就去stackoverflow之类的网站提问。但如果身边有个经验丰富的,能给你解决的情况就比你自己慢慢研究要来得快吧?

再举个例子,刚入门的同学,不都是喜欢拜师,找前辈学习的吗?没有这些前辈,那学习的过程会相当周折。

再举个例子,没有一定的经验的同学,要实现某个功能,譬如excel文件的读写,除了office automation(不建议),更应该去找第三方的组件(相比商业组件,大家都喜欢开源的吧?)。如果平时积累了丰富的经验同学,需要用到某个功能(如之前说的excel文件的读写),直接就知道可以用如NPOI这样的组件。

最后再举个例子,10年前,对.net一窍不通。记得9年前,一个同事,老程序员了,很热衷学习新技术。当时.net出了beta,他买了本书,新建了个winform,拖放了个DataGrid,再用DataAdapter从数据库取了数据库之后绑定到DataGrid,数据显示了,有点RAD的味道,他还演示了master-detail的功能,当时觉得好神奇。当时一起做同事的,还有另外一个老程序员,记忆中超过40岁了,跟我们一起做开发,写起程序来一点都不含糊。

如果我是招聘者,2个应聘者,关键技术要求都符合,撇除非技术考量(譬如个性等),一个28岁,一个40岁,我会选40岁的。

我的学习经历

学习编程,开始于1992年,初一,学校开了计算机课程,当时是novell无盘工作站,后来用上了DOS 3.x。先用的GWBASIC,后来接触了Quick BASIC和pasal。当时跟几个同学在一起研究,有1年暑假,我们约定要写个程序出来,比一下谁写得更好。其中一个同学用Quick BASIC实现了类似x-windows的图形化的界面,带输入法,支持鼠标(当年dos下都是文字界面,要支持鼠标和图形化,要用asm写),可以显示图片,播放音乐和动画,我觉得好牛。

在中国的时候,经常加班,离开中国前的那个公司,我在那里工作了5年,星期六还要上大半天,觉得还挺累的。

写商业软件这10年来,经验是逐点逐点积累的。我9年前开始在sourceforge写开源项目,大约9年前开始在codeproject写开源文章,8年多前开始在博客园上写博客,每天下班后,再花4-5个小时学习,写开源项目,写商业软件。

直到现在,我每天下班,仍然是上技术网站看文章,譬如codeproject,当然也包括博客园。也会去开源项目网站看看,譬如 sourceforge和codeplex,说起codeplex,这应该是当年那个微软为了推广.net而推出的gotdotnet网站的继任者,虽然 codeporoject越来越多的.net文章,但codeplex更纯粹的是微软为了推广.net而架设的,所以从事.net开发的同学,应该会留意到这个网站绝大部分项目都是.net写的。

我喜欢看开源项目的代码,首先了解某个项目的主要功能,然后看代码项目结构,不调试,直接从主类入手,看设计思想和新技巧,基本上半个小时可以看几千行吧。

我更喜欢通过写开源项目来学习新技术,譬如之前写的那个SQL Monitor,就用了C#4。

最近去了新公司,做新项目的开发,因为老系统的设计有严重缺陷,无法应付大访问量的情况,所以和技术总监研究分析后,决定采用ASP.NET MVC 4 + Knockout + bootstrap。

国外

围城,外面看里面好,里面看外面好。那我们看看外国多少50岁+的程序员吧,为什么我们要对那些大牛致以崇高的敬意,因为他们经过多年的技术钻研,在某个领域达到一个高度,可以给后来者各种帮助、影响,可以指出技术发展路线。举个例子,pascal/delphi/c#之父Anders Hejlsberg,没有他,估计也就没pascal/delphi/c#,那软件开发领域少了多少色彩。

正是由于这个不可改变的国内大环境,我选择了移民。在外国,对工作人员的年龄没多少要求和“歧视”。应聘的那些公司,从来不会问你年龄,只会纯粹地要求你多少年的xx技术经验。

p.s.外国的待遇比中国好很多,码农的待遇还是可以过上不错的日子的。

何去何从

对大龄码农来说,出路主要有以下几条:

继续开发生涯,做资深码农,从senior、team lead、tech lead到principal,如果你无欲无求,可以安心做个普通的码农,跟少林的扫地僧那样,隐藏得很深,很深。。。
转做设计和架构,譬如architect
转型做咨询,譬如consultant,这个在外国很流行,收入也比普通开发人员高
转型做管理,譬如project manager,CTO等
转型做测试,遇到过这样的同事,计算机科班,硕士,做了10多年开发,后来转做测试,也相当的成功
转型做业务分析,用丰富的经验,去分析业务,相信可以驾轻就熟
转型做技术支持,相信有丰富开发经验的开发人员,可以解决各种客户提出的技术问题
创业,估计有不少开发人员有这个想法,始终流水的兵,创业可以赚更多,不过风险也高。如果你有很好的创意,相信可以吸引到投资,创一番事业。身边有几个朋友经过多年的开发,现在在搞创业
转行,认识几个人,转行了,就跟当年一些同学,从别的专业转到开发人员一样。至于行业的选择,那是因人而异,有做售前的,也有做售后客服的,当然也有跟开发没有啥关系的,譬如网站管理。更有甚者完全脱离IT行业,譬如去淘宝开网店。。。
出路是因人而异的,没有模式。一些同学蠢蠢欲动,但对前景又没有信心,彷徨,犹豫,随着时间流逝,年龄越来越大,心里越是没底,就跟一个没跟的浮萍,走一步看一步,其实这样是没有办法中的一个办法。当你没有相当的信心,不贸然下决定去改变前途,这是可以理解的。但岁月不能因此而蹉跎啊,今天30 岁,一眨眼,明天就是40岁了。我仍然清晰记得20年刚开始学编程的日子呢,那个时候是纯粹的信徒,对计算机编程,那是比刘姥姥进大观园还要惊讶,觉得写个代码就可以显示这么神奇的东西。

说到出国,这只能算半个出路,因为出国了,你还是从事软件开发的话,那就不是转型了,只是换了个工作环境。

我的选择

我热爱编程,编程是我的第二生命。

从学编程开始到现在,已经20年了,如果说不累,那是不可能的。10年的商业软件开发,每天10多小时在电脑面前写代码,落下了一身的毛病,严重的颈椎病,肩周炎,慢性胃炎,吃止痛药比吃零食还来得频繁。

码农,牺牲太多了,过度的加班不提也罢,长期在电脑面前,脸部油脂分泌也多,皮肤干燥,容貌憔悴,尤其显得比同龄人苍老。不知道我真实年龄的,都猜我40来岁。而且IT圈子还流行一个段子,说码农因为接受的辐射太多,所以生女儿的几率很高,那些还幻想子承父业的,估计要崩溃。

说到牺牲,更加别提那些暴毙的码农了。

如果我不喜欢编程,我不会弄到现在全身的病痛,我可以活得更舒服,早睡晚起,无需无休止的加班,无需挑灯夜战,更加没有那些无休止的病痛,无需吃那些止痛药,可以有更多时间陪伴家人,可以有更多的时间去看电影,听音乐,休息,过舒坦的生活。

不过,做一行,爱一行,专一行。即便你觉得累,如果你真心喜欢开发,也会继续做下去。如果你不喜欢,纯粹是当年高考计算机专业热门而入了行,那每天也是煎熬。

某样事情,你重复做20年,你总有觉得身心俱疲的时候。你可以连续加班几天,甚至一周,但如果你每天都要加班,你必然有崩溃的一天。

每当这个时候,你应该好好坐下来,休息一下,想想何去何从。软件开发,跟其它工作一样,首先是要养家糊口,一般来说,大家会选择收入可观的行业,幸运的时候,IT相比其它行业,收入还是算不错的。

每当你想放弃的时候,认真想想,软件开发生涯,到底是不是到尽头了。

就目前的情况来说,我还是满意现在的工作内容的,因为可以学到新东西,也可以用自己的经验给同事解决问题。

在未来的几年里,我仍然会选择继续做软件开发。

注:

原文链接:http://www.cnblogs.com/unruledboy/archive/2012/09/20/OldCoder.html

【技术新闻】云与开放是火车订票服务的未来必然趋势

每到五一、国庆、春节等重大公休假日,抢火车票就变成一种时尚活动,无论是六七十岁的大爷太婆,还是十八七的小年轻,都不得不一早去火车站、代售点盯票,看着人龙一步步腾挪心急如焚,就像是上了屠宰场然后引颈受戳的死刑犯。

铁道部体恤大家的辛苦,所以推出了电话订票与网络订票,前者还算公平,线路繁忙谁能够打进去,那都是要拼时间拼运气的。而网络订票由于频繁“拒绝登陆”而受到大家的频繁吐槽,在一年之后,铁道部依然表示“我们有能力解决问题”。

从长期看,在一个地域辽阔的人口大国运输资源必定是稀缺资源。既然总是有人注定买不到票,我们需要考虑怎样更优化购票,而不是让大家在一通尝试过后提示”failed”。

开放 – 专注在核心服务

铁道部可以通过公开招标,来招募符合标准的互联网大公司或传统渠道巨头加入到订票服务中。铁道部的诉求是服务而不是赚钱,所以唯一需要做的是提供的是强壮而稳定的API,所有加入的订票服务商都可以通过API来完成查询、订票、退票的流程。

这样的好处是显而易见的,铁道部可以抛开自己不擅长的纯WEB业务,专注在为消费者提供后端服务支持,也可以不用为额外的WEB流量买单。

同时开放订票服务API,也是能够带动相关行业提升的,引入市场化竞争,有利于消费者的购票体验提升。

云计算 – 弹性可升级

国内目前尚没有面向大型服务的成熟云服务,不过阿里云、盛大云,腾讯已经在做一些尝试,将自己大量的计算资源开放给大家。

借助于云计算服务,铁道部能够支撑更强壮的API服务,支持弹性扩展不用购买昂贵的硬件设备,借助阿里、腾讯这些互联网大公司的资源承载大量突发性访问,确保服务不会宕机。

保障公平性,引入排队系统

你是不是尝试登陆12306网站订票,然后提示访问人数过多?这是12306为了避免过大服务器压力,所以限制了同时登陆用户的数量。

但一个负面的问题是,能否登陆进去就纯靠运气了,因为每一秒都不断有用户在登入登出。也许有人登陆两次就成功买到票,有人从早刷到完也还是无法登陆提示的提示信息。

一个不错的主意是,引入网络游戏的排队机制,按照访问先后顺序予以放行。能够在保证服务稳定性的同时,为用户提供更公平的购票流程。

从长期看,12306目前的方式是无法解决一票难求问题,这些趋势必将得到验证,可能会在3-5年逐渐应用到火车票订票服务。当然这些只是软性改进,改进消费者的使用体验,更多还需要依靠弹性公休假日制度以及铁路网络发展。

注:

原文链接:http://tech2ipo.com/55675

【技术新闻】Stiff对九位卓越程序员的采访(二)

现在上主菜了:

1. 您如何学的编程? 上过什么学校? 有用吗? 还是您根本就不鸟学校的事 :) ?

Steve Yegge:

我自己在一台 HP 计算器上开始编程的, 用他们的 RPN 堆栈语言, 当时 17 岁。 之前也学过几次编程, 但都没有真正去学。 HP 的 28c 和 48g 科学计算器性能强劲, 文档也齐全。 我在 48g 上写了一个 3D 线框查看器 — 我有一本 3D 图形编程的书, Pascal 的, 花了好大力气把书里的例程转成 RPN 堆栈语言。 最后它成功运行了, 真是甜蜜的回忆。 之后我就买了一台 PC 还有 Turbo Pascal, 努力地学习编程。 当我去大学读 CS 时我已经是个象模象样的程序员了。 (注意: CS 不是 Counter-Strike)

后来我去了 University of Washington 并在那里得到 CS 学位。 这是绝对值得努力的, 我建议所有的程序员在条件允许的情况下都要尽力攻读 CS 学位。

Linus Torvalds:

我没在学校里学编程, 大部分是我自己看书然后就动手干了起来(一开始在 Commodore VIC-20 上, 后来在 Sinclair QL 上)。

这么说吧, 我尤其认为大学是非常有用的。 我没有选择上技工学校, 而是上了 Helsinki University, 那里偏重理论, 所以那里的教学并不集中在编程上面(编程只是一小部份, 总之我算是很”不务正业”的), 大部分课程集中在基本概念和诸如复杂度分析上面。

那些东西看起来很闷甚至是在浪费精神, 但我认为很有用, 我非常喜欢它们。 我认为我可能是那方面会做的更好。

David Heinemeier Hansson:

我从建立自己的个人主页开始学习编程。 后来我又想增加一些动态的内容, 就先学了 ASP 再后来学了 PHP。 当我知道怎样编程以后, 我就去攻读一个计算机科学与工商管理的交叉学位。

Peter Norvig:

我在高中和大学里都学过编程, 但总觉得自己是自学的多。

Dave Thomas:

读中学时我在当地一间专科学院上过电脑课。 我整个儿被迷住了: 我爱上了编程, 并四处找开设有软件课程的学校。 后来我上了 Imperial College, London University 的分部。 当时他们才刚开设软件课程第二年, 说起来很难相信: 教职员工和和学生们一起工作, 把那些东西弄好, 大家从中都获益匪浅。 在那里读的本科课程给我打下了强大的软件开发基础。 我本想呆到博士毕业, 但还没等到开始读博士就被人挖走了。

但是问题的重点是”你怎样学的编程?” 真正的答案是”我还在学编程。” 我想优秀的开发者整个生涯都不断在学习。 这可不仅是学习新语言和新库的问题: 优秀的开发者经年不断的磨练自己的技术, 提升自己的体验。

Guido Van Rossum:

我上了大学, 那里有一台大型主机, 很多计算机课程。 这(上学校)很重要。

James Gosling:

最初我是自学的。 上大学之前我就得到第一份编程工作了。 但我很高兴我上了(大学)。 其乐无穷。 我一直读到拿到了博士学位。

Bjarne Stroustrup

现在?Aarhus ,后去了剑桥大学。学校教给我很多实用的东西,包括我未来工作中用到的基础。此外,我也从为钱而编程中学到东东,理解了现实世界中的问题,正确性、可维护性、实时交付等等。

Tim Bray:

我原来想当数学教师来着。 数学教学大纲里要求学生研修几门计算机课程。 (结果就糊里糊涂成了计算机科学家?)

2. 您认为程序员最应该拥有什么样的技能?

Steve Yegge:

笔头和口头沟通的技能。 除非你事先把自己的意见清楚地传达给每一个人, 否则当程序员们开始工作时, 你说什么他们都听不见。 程序员应该不倦阅读, 赋诸文字, 上写作课, 甚至学会公开演讲。

Linus Torvalds:

是那种我称之为”品味”的东西。

我向来不以”有多专业”为标准来评价与我共事的人: 有的人很会写代码, 一下就能弄出一大坨, 但他们给别人代码造成的影响则还要大坨, 而这显然是由他们自己的代码风格, 和他们选择的解决方法所造成的。 这就能告诉我他们有没有”品味”, 而真相就是, 没”品味”的人通常也不太好让他去判断别人代码的好坏, 而他自己的代码到最后也不会是十分的好。

但是, 还有。 有一件事非常重要, 特别是在开源的项目里, 那就是沟通好你想干什么, 怎么干的能力。 向别人解释清楚你为什么非要用某种方式干某些事情的能力十分重要, 并非人人有这个能力。

这么说吧, 到最后也会有人搞出好的代码来。 他们可能解释能力不行, 也没什么品味, 但是代码是可以正常工作的。 这是你往往会需要另一个人(一个”品味”特殊的人)去整理那些代码, 使它的适用范围更广, 而仅仅是写出干净的代码, 解决难题不过是作为程序员必需有的最基本的能力而已。

David Heinemeier Hansson:

强烈的价值观。 有能力问自己: 我做的事情有价值吗? 太多太多的程序员把太多太多的精力浪费在无关痛痒的事情上面。 却忽略了那些真正重要的事情。

Peter Norvig:

我觉得没有, 专注算是吧。

Dave Thomas:

激情。

Guido Van Rossum:

你的问题问得太泛, 无法回答。 :-) 我想有能力煮个鸡蛋当早餐就是无价。

James Gosling:

会自我鞭策。 想真正做得好, 你得热爱你所做的东西。

Bjarne Stroustrup

清晰思考的能力:一个程序员必须理解问题并表述解决方案。

Tim Bray:

以事实为依据, 不跟着感觉走。

3. 您觉得数学和物理对程序员重要吗? 为什么?

Steve Yegge

数学上有一个分支对程序员非常重要, 它叫”离散数学”或”具体数学”。 包括概率学, 组合学, 图论, 归纳证明和其它有用的东西。 我会鼓励所有程序员去学离散数学, 无论他们能学多少。 即使一点点也比完全不会强。

至于传统数学, 我倒不常用到, 但当我需要用到它就会很方便。 举例来说, 之前我只在工作中用到过一次微积分。 我必需为某个服务从象正弦波那样的曲线图中计算出每日交通高峰期负载。 最简单的方法就是求出特定时间内 1/24 曲线的积分。 如果我不懂微积分, 我就做不出合理正确的估算。

在我写 Wyvern 游戏的时候, 我扎实的平面几何知识作用极大。 日常基本工作中用得更多的是代数和线性代数。 但是很少用到三角学和微分方程, 微积分也很少用。

我会说我的数学基础带给我 5% 至 10% 的进步。 如果我懂的更多, 毫无疑问我会变得更好, 所以每个星期我都抽出几个钟头来学习数学。

我喜欢物理, 毕生都在探索尝试掌握量子力学的基本结构。 但我没觉得物理对我作为一个程序员的工作有任何帮助。 当然了, 如果我在物理领域工作, 象 3D 游戏编程, 或某种类型的模拟, 那就不同了。

Linus Torvalds:

我个人认为扎实的数学基础是好事情。 我不大清楚物理会如何, 但我深信懂数学, 有良好的数学基础有助于使你成为更好的程序员。 如果只是因为它们的思维模式相近似 — 你可以建立起自己想要的法则, 但它必须和自我一致。

David Heinemeier Hansson:

一点用都没有。 至少在商业目的的 web 编程上。 我考虑一个人的笔头功夫好会比这重要的多。

Peter Norvig:

是的, 电脑的很多方面来自数学: 归纳, 递归, 逻辑等。

Dave Thomas:

也许吧。 但是老实说, 我没见到他们之间有多大的关联。

然而, 我的的确确发现一个人的音乐才华与他的编程技能有很大的关联。 我也不知道为什么, 我怀疑大脑的某个区域在提升你音乐才能的同时也会提升你的软件开发技巧。

Guido Van Rossum:

数学, 是的(是一部分; 我不管微分方程, 但是代数和逻辑就很重要)。 物理嘛, 我认为没有, 但保持对不同事物的兴趣是一件好事。

James Gosling:

是的! 它们教会你逻辑和推理。。。 。 拥有火眼金睛。 在分析算法时数学无物可替。

Bjarne Stroustrup

这取决于程序员和编程工作。某些形式的数学分类还是非常有用,物理用的少,但学习物理是学习实用数学的最佳方法之一。

Tim Bray:

就我个人来说, 我几乎从没用过我大学学到的数学知识。

4. 您认为计算机编程的下一个热点是什么? 面向 X 编程, y 语言, 量子计算机, 还是?

Steve Yegge:

我认为 web 应用正逐渐在变成最重要的客户端形式。 它将会逐步淘汰其它的客户端技术: GTK, Java Swing/SWT, Qt, 当然还有 Cocoa 和 Win32/MFC/等那些依赖平台的技术。

这不会在一夜之间发生。 它会在今后十年里慢慢地朝那个方向前进, 可能到 web 应用完全”取得胜利”之前还需要另一个十年。 工具, 语言, API, 协议, 浏览器技术的发展会远远超过今天你所用到的。 这个差距每年都在缩小, 而我则决定从现在起把我所有的开发工作转移到浏览器上来。

Microsoft 和 Apple 当然不愿意看到这些了, 所以至关重要的第一步就是要使一个象 Firefox 那样的开源浏览器取得统治性的市场份额, 然后还需要一些 Firefox-only 的杀手级应用。 (杀手级应用会象 iTunes, 人人都想用它, 会为了它去下载 Firefox。)

Linus Torvalds:

我不认为会有什么”巨大的飞跃”。 我们已经看到很多可以帮助我们减轻日常工作压力的工具 — 高阶语言或者把简单数据库集成到语言里面可能会是主要的一个。 但大部分喋喋不休基本上没起什么作用。

举例来说, 我个人相信 “Visual Basic” 比”面向对象语言”作用更大。 虽然人们嘲笑 VB, 说它是烂语言, 而他们谈论 OO 语言谈了几十年。

是的, VB 不是很好的语言, 但是我认为象 VB 集成的简单 DB 接口基本上比面向对象重要得多。

所以我想会有很多逐步的改进, 硬件性能的提升也会有助于编程, 但我不指望有什么东西会使生产力大幅度提升或者出现什么革命。

至少当真正的 AI 出现时, 我不认为真正的 AI 还需要你去搞什么编程。

David Heinemeier Hansson:

我尽量不去预言未来。 也不怎么相信运气。 预见未来的最好方法就是实现它。

Peter Norvig:

大规模分布式计算。

Dave Thomas:

电脑编程的下一个热点会被下下一个热点吞掉, 周而复始。 我对不停地寻找热点有点反感, 因为当这样会使人们忘记真正的重点: 打好基础。 我们必需更好地和我们的客户交流, 关注所提供的价值, 并为此而自豪。 做到了这些那开发者就能提供更好的软件更好的工具, 而不需要去担心自己是否跟得上潮流。

Guido Van Rossum:

Sorry, 我对水晶球不敏感。 我曾经在 CGI 发明的 5 年后预言了它。 :-)

James Gosling:

我最关心的两件事是并行复制和复杂度。

Bjarne Stroustrup

我不知道,我不喜欢猜测。

Tim Bray:

不知道。

5. 如果您有三个月去学一门新技术, 您会选什么?

Steve Yegge:

我刚好有 3 个月时间(作兼职), 我正在学 Dojo (http://dojotoolkit。org ) 和高级 AJAX 和DHTML。 我在做一个巨 NB 的 web 应用, 边做边学。 Dojo 真的很酷, 它也一定会与时俱进。

Linus Torvalds:

唔,我真的很喜欢 FPGA 的, 就是一直没有时间坐下来好好地学。 我喜欢直接和硬件对话的感觉: 这说明我为什么最后选择了做 OS, 因为那样(和编译器呆在一起)和硬件的距离最近, 就差你不能亲自去设计和制造它了。

David Heinemeier Hansson:

Mac 上的 Cocoa 编程。

Peter Norvig:

我想多学一点 Javascript。 还有 Flash。

Dave Thomas:

如果”新”指的是 Dave Thomas 的新, 我想去上高强度的钢琴课。

如果”新”指那些技术玩意, 我会选择可帮助残疾人的相关技术。

Guido Van Rossum:

滑雪。

James Gosling:

为了乐趣, 我想学最新的 3D 渲染技术。 我可能会写一个照片-地图渲染器。

Bjarne Stroustrup

在三个月之内,很重要值得学习的东西不多。我认为应当考虑好好完善某个领域的训练。

Tim Bray:

安全, 加密, 数字签名, 身份验证等。 麻烦的是这些东东我从来没学过。

6. 您认为是什么使得有的程序员比别人高效 10 倍甚至 100 倍?

Steve Yegge:

我想如果你停下来想一下为什么运动员不是都一样好的话, 你就会知道答案的。 爱迪生关于天才的那段话也会给你启示。

Linus Torvalds:

我真的不知道。 我想有些人就是能够更好地把精力集中在那些有用的事情上, 我想他们天生就是会这样。 我认识的很多程序员从小就这样。

David Heinemeier Hansson:

把难题转化成”易”题的能力。

Peter Norvig:

调整头脑去适应问题的能力。

Dave Thomas:

他们关心自己所做的。

Guido Van Rossum:

遗传性头脑结构差异。

James Gosling:

他们深思熟虑。 他们不会仓促行事, 七拼八凑。 他们对结果胸有成竹。

Bjarne Stroustrup

首先,缺乏专业且足够的训练,导致基础太差。第二,有些人有“智慧”(清晰思考和直达事物本质的能力)、经验和工具知识。编程在这些方面有很大空间,因为编程是理论和实践的结合,二者都离不开领域知识。

Tim Bray:

人类思维的多样性令人惊异。

7. 您最喜爱的工具(操作系统, 编程/脚本语言, 编辑器, 版本控制系统, shell, 数据库引擎, 其它您赖以生存的工具)以及您喜欢它们的理由?

Steve Yegge:

操作系统: Unix! 我用 Linux, cygwin, 现在也用经常用 darwin。 它是无法代替的生产工具。 每个程序员必须学会用 /bin 和 /usr/bin 目录里的所有工具。

脚本语言: Ruby。 我精通所有主流脚本语言: Perl, Python, Tcl, Lua, Awk, Bash, 还有一些已经忘了。 但我是个懒人, 而 Ruby 是目前为止最轻松的, 这是天堂里才有的比赛。

编程语言: 没有我最喜爱的; 它们都不好。 我会选择 Java, 因为它强壮, 可移植, 有好工具和库。 但 Java 不进化就得死; 照现在的样子它不足以长期掌握领导地位。

编辑器: Emacs, 因为当前没用比它更好的。

版本控制: SVN。 Perforce 更好, 但很贵。

Shell: Bash, 因为我实在懒得去学其它的。

数据库引擎: 当然是 MySQL, 没有更合适的了。

其它: 我发现 GIMP 无法评价, 它的不直观也令人抓狂。 我用它多年却总是干不成什么。 但我又离不开它, 真是讽刺。

Firefox 是我工具库阵容中日益重要的一员。 当不得已去用 IE 或 Safari 时我会觉得自己就快死了。

注意这些工具(Unix, Emacs, Firefox, GIMP, MySQL, Bash, SVN, Perforce)都有一个共同点: 它们可以扩展; 也就是, 它们都有 API 可以编程。 优秀的程序员懂得如何给它们的工具编程, 而不仅是用它们。

Linus Torvalds:

实际上我没用那么多工具, 我花了些时间写了我自己的工具。 操作系统这块最大, 还有我自己的版本控制系统(Git), 我用的编辑器(micro-emacs)也是经过我定制和扩展的。

除了那三块, 我最关心的是邮件阅读器。 我一直用 Pine — 不是因为它最好, 而是因为我习惯了, 它也提供了我所需要的一切而且没什么毛病。

David Heinemeier Hansson:

OS X, TextMate, Ruby, Subversion, MySQL。 这就是我当前的组合。 我喜欢那些漂亮而且专注于自己职责的那些工具。

Peter Norvig:

不喜欢全部主流的 OS – Windows, Mac, Linux。 喜欢 Python, Lisp 和 Emacs。

Dave Thomas:

用了 Linux 10 年, 几年前改用 Macs 了。 工具不需要好到特别好, 但不能是需要经常去维护的, 而必须是能让人用的。

我不会永远只用一种工具: 我经常尽可能地切换不同的工具以获得更好的体验。 目前我用的是 OSX, Emacs, TextMate, Rails, Ruby, SVN, CVS, Rake, make, xsltproc, TeX, MySQL, Postgres, 还有一大堆小工具。 谁知道明年我会用什么。

Guido Van Rossum:

Unix/Linux, Python, vi+emacs, Firefox。

James Gosling:

这些天来我住在 NetBeans 里面。 他帮我做了我想要的一切, 非常清晰直接和有效。 这是我住过的最舒服的环境。

Bjarne Stroustrup

Unix、sam(一个极简的文本编辑器),当然还得有一个出色的 C++ 编译器。

Tim Bray:

我喜欢类 Unix 操作系统, 象 Python 和 Ruby 那样的动态语言跟象 Java 那种静态类型语言(特别是 Java 的 API), Emacs, 随便, bash, 随便, NetBeans。

8. 您最喜爱的电脑编程方面的书是哪一本?

Steve Yegge:

老兄, 这问题真要命。 也许是 GEB(《哥德尔、艾舍尔、巴赫书:集异璧之大成》) 吧, 虽然这本书不是严格的编程类书籍。 如果你特指”最喜爱的编程书”, 那也许就是 SICP (mitpress。mit。edu/* sicp*/) 了。

Linus Torvalds:

呃。 我最近喜欢读幻想小说, 或非电脑类的书(旧书一本: Richard Dawkins 的 “The Selfish Gene”)

说到编程方面, 跃然脑海的唯一真正编程书就是 Kernighan 和 Ritchie 经典的 “The C Programming Language”, 因为它实在是太有用了, 而且又薄又耐读。 想想你基本能从这本书中学会我们这个时代最重要的编程语言之一, 而它又是那么薄那么耐读, 这不能不说是一个奇迹。

还有很多我喜爱的书是跟编程本身无关的, 而是关于计算机结构和硬件方面的。 这里面当然有 Patterson 和 Hennessy 关于计算机结构的书, 对我个人而言可能还应该包括 Crawford 和 Gelsinger 的 “Programming the 80386″, 它是我刚开始 Linux 时的工具书。

基于相同的原因, 我还喜欢 Andrew Tanenbaum 的 “Operating Systems: Design and Implementation”。

David Heinemeier Hansson:

我喜欢 《Extreme Programming Explained | 解析极限编程》, 因为它反传统的思想; 《Patterns of Enterprise Application Architecture》, 因为它打破抽象与具体之间的平衡。

Peter Norvig:

《Structure and Interpretation of Computer Programs | 计算机程序的构造和解释

Dave Thomas:

这取决于你如何定义”最喜爱”。 可能这方面我读过的最好的书是 IBM 的 “IBM/360 Principles of Operation”。

Guido Van Rossum:

Neil Stephenson 的 “Quicksilver”。

James Gosling:

Jon Bentley 写的《编程珠玑》。

Bjarne Stroustrup

K&R 的《C程序设计语言

Tim Bray:

Bentley 的《编程珠玑

9. 您最喜爱的非电脑编程类书籍?

Steve Yegge:

只有一本? 这不可能。 太多了, 太难选。

这个月我读过的好书有 “Stardust” (Neil Gaiman) 和 “The Mind’s I” (Hofstadter/Dennet)。

我最喜爱的作家是 Kurt Vonnegut, Jr。 和 Jack Vance。

Linus Torvalds:

嗯, 我已经提到过 Dawkins 的 “The Selfish Gene”。 在幻想小说方面, 我读过很多, 都很好, 但是很少有称得上”最喜爱的”。 我很少再去读读过的书, 选择也会随时间改变。 多数是科幻类的, 象 Heinlein 的 “Stranger in a Strange Land” 就是我少年时期最喜爱的, 但现在也渐渐淡忘了……

David Heinemeier Hansson:

“1984″, George Orwell。

Guido Van Rossum:

Neil Stephenson 的 “Quicksilver”。

James Gosling:

“Guns, Germs & Steel”, Jared Diamond

Bjarne Stroustrup

一直在变化。目前喜欢?O’Brian’s Aubrey/Maturin 系列书

Tim Bray:

Ivan Denisovich 的 “One Day in the Life”

10. 您最喜爱的乐队/歌手/组合?

Steve Yegge:

最喜爱种类: 古典, 动漫音乐, 游戏音乐
最喜爱作曲家: Rachmaninoff, Chopin, Bach
最喜爱歌手/演奏家: David Russell (classical guitar), Sviatoslav Richter(piano)
最喜爱动漫音乐: Last Exile, Haibane Renmei

Linus Torvalds:

我不常听音乐, 要是听的话, 我会听老摇滚歌曲, 范围从 Pink Floyd 到 Beatles 到 Queen 到 The Who。

David Heinemeier Hansson:

种类很多。 Beth Orton, Aimee Mann, Jewel, Lauryn Hill。 其实, 你看看我举的例子她们都是弹吉他的女孩 ;) 。

Guido Van Rossum:

Philip Glass。

James Gosling:

我比较喜欢民谣歌手: Christine Lavin, Woody Guthrie, Pete Seeger…

Bjarne Stroustrup

乐队: The Dixie Chicks;作曲家:贝多芬

Tim Bray:

去看我的博客。

注:

英文原文:http://sztywny.titaniumhosting.com/2006/07/23/stiff-asks-great-programmers-answers/

译文链接:http://blog.csdn.net/flynetcn/article/details/1023278