国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 互联网 > 研发周报:Google抛弃C语言,采用Go语言重写Go编译器

研发周报:Google抛弃C语言,采用Go语言重写Go编译器

来源:程序员人生   发布时间:2014-09-15 06:32:28 阅读次数:3431次

在上一周,研发频道最热门的文章当属Google抛弃C语言,采用Go语言重写Go编译器、圣诞节快乐:来自程序员们的问候、Facebook 2013年的9个开源项目、各式各样的极品程序员,你属于哪一种、当程序不工作时,开发者常用的借口。

下面让我们一起来细细品味这些热门文章。

1.Google抛弃C语言,采用Go语言重写Go编译器

Go语言是Google开发的新型编程语言,将动态语言易于编写的特性和静态语言的高效性相结合,具备良好的易用性和极佳的执行效率。目前该语言已经发布了1.2正式版本。

Go语言开发者Russ Cox近日透露,Go 1.3版本之后,该语言的编译器将会使用Go语言重写。

目前的Go编译器

目前Go编译器gc基于C语言,是从Plan 9的C编译器衍生出来的,其中保持了原有的汇编程序、C编译器和链接器,而部分针对Go的编译器(gc/6g/8g/5g)使用C语言进行了重写。

为何要采用Go语言实现

Russ Cox指出,采用Go语言来实现编译器相比C语言的优势在于:

  • 编写正确的Go代码要比编写正确的C代码容易
  • 调试不正确的Go代码要比调试不正确的C代码容易
  • Go编译器必然需要对Go有个很好的了解,而使用C语言实现则增加了一个不必要的二次需求
  • 与C相比,Go语言对并行程序执行得更好
  • 对于模块化、自动重写、单元测试以及分析,Go比C有更好的标准支持
  • 使用Go比使用C更加有趣

详细信息: Go 1.3+ Compiler Overhaul

2.圣诞节快乐:来自程序员们的问候

转眼间,一年一度的圣诞节已来临了。在这个越来越受到国人重视的节日中,每个人有每个人的浪漫方式,当然程序员们也不例外。
下面就来看看一些IT企业和程序员们是如何为这个节日增添不一样的气氛的。

一、来自IT巨头的问候

1. Google的彩蛋

每到节日,Google就会在其搜索引擎中加入一些彩蛋,在用户搜索特定关键词的时候出现特殊的页面效果。临近圣诞,当用户在Google中输入“圣诞节”时,会页面上端出现飘雪的场景和圣诞老人驾驶鹿车飞驰的画面。

2. 百度的小游戏

当用户在百度中搜索“圣诞节”时,就会出现一个小游戏。该游戏基于HTML5制作。

详细信息可查看这个页面的源码。 http://www.baidu.com/ur/show/uhchristmas?from=christmasresult

3. 微软追踪圣诞老人网站

微软今年推出了一个追踪圣诞老人的网站,该主题网站基于HTML5和WebGL技术,首页有圣诞节的倒计时,此外还有许多好玩的在线游戏,最主要的是该网站在触摸设备上也有很好的体验。

网站地址: http://www.noradsanta.org/

二、来自程序员们的问候

1.  代码不到1KB的3D圣诞树

下面这个3D圣诞树只用1021字节的JavaScript代码编写而成,逼真的3D及旋转效果,将JavaScript功能发挥到了极致。

演示: http://js1k.com/2010-xmas/demo/856

code_snippet_id="130806" snippet_file_name="ptcms_1388132970_0.js">M=Math;Q=M.random;J=[];U=16;T=M.sin;E=M.sqrt;for(O=k=0;x=z=j=i=k<200;)with(M[k]=k?c.cloneNode(0):c){width=height=k?32:W=446;with(getContext('2d'))if(k>10|!k)for(font='60px Impact',V='rgba(';I=i*U,fillStyle=k?k==13?V+'205,205,215,.15)':V+(147+I)+','+(k%2?128+I:0)+','+I+',.5)':'#cca',i<7;)beginPath(fill(arc(U-i/3,24-i/2,k==13?4-(i++)/2:8-i++,0,M.PI*2,1)));else for(;x=T(i),y=Q()*2-1,D=x*x+y*y,B=E(D-x/.9-1.5*y+1),R=67*(B+1)*(L=k/9+.8)>>1,i++<W;)if(D<1)beginPath(strokeStyle=V+R+','+(R+B*L>>0)+',40,.1)'),moveTo(U+x*8,U+y*8),lineTo(U+x*U,U+y*U),stroke();for(y=H=k+E(k++)*25,R=Q()*W;P=3,j<H;)J[O++]=[x+=T(R)*P+Q()*6-3,y+=Q()*U-8,z+=T(R-11)*P+Q()*6-3,j/H*20+((j+=U)>H&Q()>.8?Q(P=9)*4:0)>>1]}setInterval(function G(m,l){A=T(D-11);if(l)return(m[2]-l[2])*A+(l[0]-m[0])*T(D);a.clearRect(0,0,W,W);J.sort(G);for(i=0;L=J[i++];a.drawImage(M[L[3]+1],207+L[0]*A+L[2]*T(D)>>0,L[1]>>1)){if(i==2e3)a.fillText('Merry Christmas!',U,345);if(!(i%7))a.drawImage(M[13],((157*(i*i)+T(D*5+i*i)*5)%W)>>0,((113*i+(D*i)/60)%(290+i/99))>>0);}D+=.02},1)
2.使用tree.js库创建圣诞树

three.js是一款开源的JavaScript 3D框架,也可以说是一款WebGL框架,几乎可以实现所有的3D场景。本文所提到的圣诞树就是用three.js和HTML5技术实现的。

演示: http://www.script-tutorials.com/demos/372/index.html

源码: http://www.script-tutorials.com/christmas-tree-with-threejs/

three.js托管地址: https://github.com/mrdoob/three.js/

3. 【开源专访】Linux Deepin:做更好用的Linux桌面系统

Linux Deepin 是一个优秀的国产 Linux 桌面操作系统项目,主要目标是为了解决 Linux 桌面体验的问题,让更多的人可以更加轻松容易地使用 Linux。2011 年 9 月份,他们成立了公司专注于该操作系统的研发。目前,整个团队人数已经成长到 30 多个人。在这 2 年多的时间里,他们不断在 Linux 桌面本地化上发力,做出了很多体验良好的桌面产品。

Linux Deepin 项目官网: http://www.linuxdeepin.com

Linux Deepin 代码托管:  https://code.csdn.net/Linux-Deepin 

本期,我们对 Linux Deepin 团队项目负责人王勇进行了采访,请他来谈谈 Linux Deepin 项目的一些情况。

Linux Deepin 团队项目负责人:王勇

CSDN:请介绍下Linux Deepin团队和成员的概况?

王勇:Linux Deepin 是一个立足于中国、面向国际的 Linux 桌面操作系统,致力于给全世界带来最人性化的操作体验。我们从 2011 年正式成立武汉深之度公司以来,现在已经发展成为一个 30+ 的操作系统研发团队。

Linux Deepin团队的成员大部分都不是学计算机出生,大家都是为了同一个梦想走到一起的,其中有Linux怪才、编程高手、漫画家和油画家、商业人才等。

在 Linux Deepin 团队里,没有传统商业公司的条条框框和官僚主义,这里只有自由、开放、分享的人文环境,大家每天都为了梦想共同努力。

CSDN:发起Linux Deepin项目的初衷是什么?请简单介绍一下发起的过程。

王勇:Linux Deepin 项目的初衷很简单也很单纯,就是几个创始人的操作系统梦想,大家希望通过努力给全世界带来更自由、更佳体验的操作系统。

我记得那还是 2011 年春,Deepin、Hiweed、21wmd 和我大家坐在一起讨论怎么做 Linux Deepin 11.06,那时候整个团队就我们 4 个人,大家的想法也很简单,先做一个版本出来看看。半年后我们做了第一个原创的产品:深度软件中心,深度软件中心极大地改善了 Linux 装软件难的问题,用户只需要一键就可以轻松安装自己喜爱的软件。随后的 Linux Deepin 11.06 在国内以及国际上的反响非常不错,我们的努力得到了全世界用户的认可和鼓励,所以我们决定于 2011 年 9 月份成立公司来专注于操作系统研发。

Linux Deepin 这个团队的发展速度远远超过我们当初的预想,刚开始我们就几个人,但是每年我们的团队规模都会翻倍,我们几乎每年都会因为团队规模而搬到一个更大的办公场所,到目前为止已经发展到 30+ 的成员规模。

更多采访内容,欢迎访问原文。

4.各式各样的极品程序员,你属于哪一种

在日常工作里肯定会发现很多有趣的事情,极品程序员所做的事就是很有意思的。事实上,现在所讨论的极品程序员主要是从他们的判断力、行为举止、个人态度和匪夷所思的工作方式上来判断的,有的时候这些程序员一味的只是追求文档上的内容,而不擅于用分析方式来解决问题。

几乎每一个软件开发者多多少少都会出现头脑短路的现象,也就是说,下面所列举的各种极品程序员类型,总有一款是属于你的。

  1. 宠物专家型程序员:独爱一种技术
  2. 奥术师型程序员:保守主义者,不到万不得已不做修复
  3. 未来派程序员:赶潮人,追求最前沿的技术
  4. 信息囤积者型程序员:小心谨慎,不愿公布代码
  5. 艺术家型程序员:质量?美观?不可兼得
  6. 孤岛型程序员:性格孤僻者,代码就是一切
  7. 敏捷型程序员:急功近利,常常半途而废
  8. 文盲型程序员:编程入门者,功底浅薄

5.当程序不工作时,开发者常用的借口

都说态度决定一切,良好的态度也可以成就一名优秀开发者。但在现实生活中,尤其是遇到问题、功能实现失败或不能正常运行时,大家就会开始抱怨或者寻找一些借口,这些借口完全是没用的或者是阻碍你前进的拦路虎。而真正专业的态度应该着眼于项目和团队的积极结果,关注个人和团队的成长,并且围绕当前的工作积极展开各项任务。

本文作者Rajaraman Raghuraman是一名拥有8年开发经验的软件开发人员,他总结了程序员遇到问题时经常找的借口或理由,大家不妨看下,不知各位中枪了没,如果没有,大家不妨在移步看看“  程序员遇到Bug后的30种常见反应”。 

图片来自:cheatcc.com

  1. 在我机器上还运行好好的
  2. 你这是最新的build吗?
  3. 肯定是配置问题
  4. 先提出一个缺陷,然后我再确认它
  5. 重启一下机器看看
  6. 我不确定它为什么不工作,让我检查一下
  7. 5分钟以后再试试
  8. 我不认为我的代码有错

6.Facebook 2013年的9个开源项目

Facebook是全球最大的社交网站,它的成长背后离不开开源力量。其开源项目负责人James Pearce介绍说,Facebook从写下自己的第一行PHP代码开始,第一次使用MySQL INSERT语句开始,开源就已经融入到公司的工程师文化里面了。

Facebook不仅取之开源,更是不断开源其内部项目,将内部成果反馈给开源社区,可以说,这才是一个伟大公司应有的态度。通过不断开源自己的产品项目,Facebook吸引了大量优秀开发者为其工作。可以通过文章  《后起之秀Facebook凭什么挑战互联网霸主Google?》详细了解Facebook背后的开源力量。 

当然,开源的项目不全是高大上,还有一些小型项目值得一看。下面我们一起了解下2013年Facebook的那些小型开源项目:

  1. xctool
  2. Buck
  3. Rebound
  4. React
  5. Regenerator
  6. Huxley
  7. Presto
  8. RocksDB
  9. Origami

7.初创IT公司里开发者最容易犯的九种错误

本文作者Scott Gerber是一名企业家、专栏作家和电视评论员。在这篇文章里,作者在自己创立的YEC里采访了九位IT企业家,就“初创企业里的开发者最容易犯的错误”进行讨论,而每位受访者也给出了实际意义上的答案,希望这些“常犯的错误”能够给你带来警示。

在今天这个初创公司如雨后春笋般遍地林立的时代,不管做什么事情总是要权衡利弊、优劣、得失,尤其是在眼下的以速度决定成败的服务行业更为明显。软件开发者――这个看起来在整个团队里并不起眼的角色事实上每天的工作量不亚于一个灭火的消防员,时时刻刻追踪、关注着可能存在的问题,而且,一不小心就会给公司造成这样或者是那样的麻烦。

为了找出什么样的错误才是初创IT企业最常见的错误,我问了来自青年企业家协会(YEC)的九个成功的企业家同一个问题:初创IT企业里的开发者所犯的最常见(容易避免的)错误是什么?下面是他们给出的答案:

  1. 在本身错误的基础上进行创建产品
  2. 构建了太多的花里胡哨的内容
  3. 创建的代码太僵硬
  4.  产品发布早期阶段的灵活策略最重要
  5. 太在意代码了
  6. 没有完全涉及到企业业务方面的产品开发
  7. 没有及时解决分身乏术的问题
  8. 并非在代码的基础上制定计划
  9.  部门间混淆协作

8.敏捷开发流程管理须参考的3个要素

Olga Kouzina认为使用敏捷项目管理工具需要遵守三个原则:流程优先,工具次之;开发流程需可复用;正确做法需可复制。因为人们在选择或使用敏捷项目管理工具时,往往会忽略开发流程中的某些关键要素,所以他重点对第一个原则中提到的“流程”进行了介绍,以期帮助大家对开发流程有个更加完整的认识。 

首先,我们可尝试将现有开发流程分解为3个部分:  

 

上图中的框架几乎覆盖了开发流程中的三个关键要素:工作、人、计划,它们也都是在敏捷开发管理工具中要不断复用的要素。

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生