程序员人生 网站导航

研发周报:编程语言中一些令人抓狂的规则

栏目:互联网时间:2014-08-31 23:25:39

在上一周,最值得程序员关注的某过于Java 8正式版的发布。经过2年半的努力、屡次的延期和9个里程碑版本,甲骨文的Java开发团队终于发布了Java 8正式版本。同时,发布的还有NetBeans IDE 8.0,点击查看发布详情。其次,有关版本更新的语言还有Python,在其官网发布了Python 3.4版本。

Oracle发布Java 8正式版及JDK 8

Oracle公司如期发布了Java 8正式版!你可以通过这里下载Java 8 正式版。新的版本带来诸多新特性,修复许多Bug。详情参见:

  • 安装说明
  • 发行说明
  • JDK 8新特性
  • Known Issues for JDK 8
  • JDK ReadMe
  • JRE ReadMe
此外,同期发布的还有JDK 8,主要特性如下:
  • Lambda表达式,一种新的语言特性,能够使功能作为方法参数或将代码作为数据;
  • 显著增加和修改了Java语言特性,增添了标准库,包括默认方法,新的java.util.stream包以及Date-Time API;
  • Compact Profiles包含 Java SE平台的预定义子集,使应用程序员无需部署在整个平台,并可运行在小型设备上;
  • 安全性包括更新可Java加密体系架构;限制doPrivileged;SSL/TLS Server Name Indication (SNI) Extension以及增强密钥库;
  • JavaFX更新文档;
  • 新的JavaScript引擎Nashorn。
Python 3.4.0正式发布 

Python 3.4.0在经过多个beta版后正式发布。该版本对Python 3.x系列作了大量的改进,数百个小提升和bug修复。

下载地址:https://www.python.org/downloads/release/python-340/

在该版本中,值得关注的新特征及改进有:

  • PEP 428:一个“pathlib”模块,提供面向对象的文件系统路径;
  • PEP 435:一个标准的 "enum" 模块;
  • PEP 436:一个构建增强,有助于为内置命名生成一般的内省信息;
  • PEP 442:完善安全对象;
  • PEP 443:单派遣通用功能
  • PEP 445:一个新C API,用于实现自定义内存分配;
  • PEP 446:使新创建的文件描述符不可继承
  • PEP 450:一个新的 "statistics" 模块;
  • PEP 451:用于Python模块导入系统的标准化模块元数据;
  • PEP 453:pip包管理的打包安装程序;
  • PEP 454:一个新的 "tracemalloc"模块,用来跟踪Python内存分配;
  • PEP 456:一个新的hash算法;
  • PEP 3154:一个新的和改进的协议,用于pickled对象;
  • PEP 3156:一个新的 "asyncio"模块,一个用于异步I/O的新框架。
论程序员的自我修炼


软件开发是个挑战,尤其是对于那些完美主义的程序员。他们需要制定大量的决策以及许多问题的解决方案,这对于有些人来说会感到很难。当然,你可以在线搜索到最佳实践方案或在StackOverflow上提问。但即便你找到了想要的答案,也未必能让你感到满意。你怀疑这个设计是否完美,事实上,真正完美的设计几乎为零。

想彻底解决设计难题是不可能的。这是因为每个需求都会浮现在你的脑海里,你会遇到设计领域里最大的挑战,比如选择数据还是表示层。我是使用MVC还是MVVM?哪种OPM工具适合我?我该如何处理多个数据库?等等。每个问题都会让你不知所措,并且所遇到的设计问题也在日益增长。每走一步都会使你觉得像是有座大山摆在你的面前。不堪负重的感觉让你想要逃避或者拖延解决问题的时间。但拖延并不能解决问题。

Agile已死 Agility长存?

在13年前,Dave Thomas与16位软件专家聚集在犹他州的Snowbird, 一起创建并签署了现在众所周知的敏捷宣言。然而,随着时间的流逝,Dave Thomas发现,“敏捷(agile)"已落入某些顾问/商贩帮他们出售产品的一种工具,并非是用来进行高效开发和保证产品质量的一种方法理念。下面是对原文的摘译:

13年前,我和16名中年白人聚集在犹他州的Snowbird,分享我们在软件开发上的一些共同信仰,我们想知道是否有一种方法能够描述我们的软件开发理念和信仰。

花了不到一天的时间,我们便发表了这些非常有价值的实践列表,即众所周知的 敏捷软件开发宣言:

Individuals and Interactions over Processes and Tools 个体和互动 高于 流程和工具 
Working Software over Comprehensive Documentation 工作的软件 高于 详尽的文档 
Customer Collaboration over Contract Negotiation, and 客户合作 高于 合同谈判 
Responding to Change over Following a Plan 响应变化 高于 遵循计划

我为我们所做的事情感到自豪。我认为,这个宣言的存在已经帮助开发者打破了80、90年代浪费时间和损伤灵魂的开发实践。

然而,除了那次的Snowbird会议,我从未参加过任何与敏捷有关的会议,我也没有担任敏捷顾问。为什么?因为我不认为这些事情与敏捷宣言有任何关系,这些敏捷会议就好比举办芭蕾舞会,在我看来,围绕这四条核心价值观(宣言)的产业小组更像是创建一个贸易联盟。

编程语言中一些令人抓狂的规则

众所周知,软件开发者每天都要做各种各样的决定:如何最好的实现功能、如何修复bug、如何提升应用程序的性能等等。但是他们同样是在别人的劳动成果下面继续做自己的决定的,比如说:他们使用的是别人开发出来的编程语言和操作系统以及各种开发工具。一些语言开发和系统设计行业里的前辈以前所作出的决定在那个时候可能是很有意义的,不过在现在看来可能是多此一举。

举例而言,在2009年的时候,互联网创始人蒂姆・伯纳斯-李就承认,互联网网址中http:后面的两条斜线//其实并无必要,他为这带来的不便致歉。蒂姆以幽默的环保角度道歉说:真不知道这两条斜线浪费了多少时间、打印墨水和纸张。

除此之外,对于每天都要写代码的软件开发者来说,前辈们当时做出的令后人觉得蛋疼的决定还远不止这些。接下来就介绍一下在编程语言和操作系统里的那些让开发者头疼的过时的选择。

  • Unix隐藏dot文件(“.” 文件)
  • JavaScript使用+字符串连接
  • Microsoft选择反斜杠作为路径分隔符
  • Python使用缩进表示块
  • Tony Hoare发明了空引用
  • JavaScript自动插入分号
  • 如何表示日期

借助三大技巧 助你提升API状态页面

利用API创建应用有着巨大的优势,但很多时候你并不了解为何/系统设备会“崩溃”,这也是API各大厂商积极提供可用状态页面的原因。

在上周举办的SXSW的音乐节上,研讨会很大程度上都是依靠Twitter API。与会者在做报告时发生“意外”的错误现象,经盘查是因一个错误API导致的。前段时间,Twitter发生了宕机事件,而联合创始人Biz Stone正在参加德克萨斯州的SXSW大会。Twitter出现大规模服务中断,大量用户无论是通过桌面网页、移动网页或移动应用均无法访问网站。

我承认我不敢看Twitter的状态页面,似乎是性能部分被中断了。从上图中我们可以看到3月11号性能部分没有任何信息。

一个好的API状态页面应该有着明确的目标,让我们来看看一些最受欢迎的API厂商所使用的策略:

  • 提供状态更新
  • 显示当前API的“健康“问题
  • 回顾最近问题或宕机时间

开发者不容错过的10款免费JavaScript游戏引擎

在Github上,JavaScript逐渐成为人们最喜爱的编程语言,而随着HTML5的发展与流行,有些开发者把这两种技术结合在一起,开发了各种各样的游戏引擎,开发者利用这些引擎可以开发出许多非凡的游戏及制造一些轰动的游戏特效,比如3D动画、Canvas等。


下面,我们将介绍目前被开发者们广泛使用的十款免费游戏引擎,大家不妨看看,有没有你钟爱的那一款。

  • JsGameSoup
  • Akihabara
  • LimeJS
  • Enchant.js
  • GMP
  • Gamequery
  • Crafty
  • lycheeJS
  • Quintus
  • The Render Engine

与其它引擎不同,这些引擎目前都有专人维护、更新,因此,开发者可以放心使用。

微信支付 VS 支付宝 微信正式开放第三方应用支付申请

北京时间 3月20日消息,腾讯最新上线的微信开放平台(https://open.weixin.qq.com/)正式开放了第三方移动应用的微信支付申请。在前几天,腾讯刚刚开放公众账号的支付接口,微信支付正式到来。

官方定义中,“微信开放平台”主要是关于微信开发、接口、技术文档相关信息的一个平台,例如iOS、Android和Windows Phone 8的接入指南、开发手册之类的。

新版的“微信开放平台”主要有两个重大更新,一是网站进行了重新设计,使之更符合用户的习惯,希望带来开发者管理应用时的效率提升;另外开放了第三方应用的微信支付申请。

申请微信支付流程

第三方移动应用申请微信支付的流程是:1)申请开通微信支付:进入管理中心,选择一个已审核通过的移动应用来申请开通微信支付功能。2)填写应用和企业资料:申请微信支付时,需要填写应用的微信支付基本经营资料、企业审核资料和财务审核资料。3)签署合同:在资料审核通过后,即可签署合同,完成后,移动应用即可开通微信支付功能。

推荐阅读:

  • 【独家专访】Perl发明者首次来华:将在OSTC大会分享其编程人生
  • 【独家专访】红旗Linux元老:猎猎红旗永飘扬
  • 【OSTC讲师专访】严旭:文艺豆瓣也很开源


2014年3月30日,由CSDN主办的“开源技术大会・2014”将在北京丽亭华苑酒店召开。多位开源界资深人士将出席大会并发表演讲,欢迎大家亲临现场与大牛零距离交流。 CSDN会陆续发布参会讲师的系列采访,谈谈他们将在本次活动分享的内容。

更多精彩内容,欢迎大家关注CSDN研发频道微博或访问CSDN研发频道。

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐