编程将死,程序员永存

多年来我一直想学VBA——微软Visual Basic的改造版、用来编写excel宏的编程语言,但由于各种原因一直拖延着没学。它并不是一种很难学的语言,只是因为它不是我的主要工作内容,我一直没腾出时间来学它。昨晚,我跟随着Twitter上的一个链接发现了 DataNitro,五分钟后我学会了VBA。

DataNitro是个excel插件,能够让你在Excel里运行Python脚本,因为我在某种程度上算是擅长Python,我根本不需要使用VBA。也许这并不是在5分钟内学会了VBA,而是成功的完全绕过了它。对于我来说,这跟学会了它一样有效。

大家是否还记得在《骇客帝国》里的那个DVD播放器?它能连接到你的大脑来教会你功夫。DataNitro就像那个东西,只是它是给Excel笨蛋准备的。它很可能帮我节省了数百小时在VBA里面挣扎、自学、尝试、纠错的时间。

骇客帝国 学功夫

我写这篇文章不是来为DataNitro做广告的,而是想谈谈对编程这种工作发展方向的思考。几天前,Brooklyn Bridge Ventures的Charlie O’Donnell写了一篇非常好的博客叫做“最后一个程序员”,文章里他预测前端开发平台终有一天会致使整个软件开发部门废弃。当这些平台不断的增多不断的传播后,强大的软件开发需要的编码工作越来越少,越来越多的人能够参与进来。

程序员因此会消失吗?

这要看你如何定义程序员。如果这样说,那些每天花15小时在黑屋子里堆砌0和1的人才算是程序员,那我支持Charlie的论断,这种职业最终会被一点点的侵蚀掉,因为越来越优秀的“前端”平台会排挤掉众多的编码工程。

但从另外一个视角来看,我是一个“程序员”,因为这些平台能使我更快的开发出软件,而且不需要经过正规的培训,我想程序员的数量在很长的一段时间里都会不断的增加。

曾经有个时期,即使在MD-DOS上开发一个很简单的程序也要经过相当漫长陡峭的学习曲线过程。这越来越平坦的学习曲线归功于Apple和 Windows开放的个人电脑走向大众。类似的,当各种平台使开发工作越来越容易后,越来越多的人能轻松的上手编程,而不需要花3或6个月的时间去学 VBA。

除此以外,具有相同道理的是,科学家不会因为科学的进步而丢掉他们的工作,软件开发平台的进步会使人成为“真正的编程者”——他们不想要去码字符,他们能更多的专注于复杂的、富有挑战的、能产生重大影响的工程项目上。如果你是一个专业的程序员,这不正是你所期望的吗?

DataNitro只是成千上万的推进这种趋势前进的平台中的一个。粗略的想了一下,这里还有四个年轻的公司充当着这种“更少代码”的接口服务,它们使众多的项目避免了开发的痛苦:

  • FRAPI – 即时生成API
  • Monetate – 轻松A-B测试和 MVT网站测试(an OpenView portfolio company)
  • IFTTT – Instant mashups of your favorite personal programs
  • Zapier – 企业版IFTTT

[本文英文原文链接:Coding is Dead. Long Live the Coders ]

20 个很棒的 jQuery Mobile 教程

构建一个餐馆选择的 Web 应用

Creating a Restaurant Picker Web App

How to build a jQuery Mobile app for choosing a restaurant based on what the user want to eat tonight, the town where they want to eat and other user’s ratings of the restaurants.

创建一个良好移动体验应用

Create a great mobile experience for your website today

For larger data-focused sites, or sites that are "almost applications" you will want to consider a custom mobile version of your site. This is often done with the help of a mobile framework like jQuery Mobile.

使用 jQuery Mobile 的自定义主题

Custom Themes with jQuery Mobile

jQuery Mobile isn’t just a scripting library, but an entire framework to build upon and produce efficient mobile templates. Thus, the process of constructing a mobile template from scratch has been significantly improved.

创建一个移动网站

Create a mobile website with jQuery Mobile

The basic techniques for creating the pages of a mobile website, That will include the use of dialog boxes, buttons, and navigation bars.

jQuery Mobile 开发指南

jQuery Mobile Development Guide

Collection of video tutorials to help you learn jQuery Mobile and all the possibilities.

jQuery Mobile 最佳实践

jQuery Mobile Best Practices

After working with JQM in a corporate and small business settings, these are some of the lessons I’ve learned. If you take these to heart, hopefully I can save you some of the same headaches.

jQuery Mobile v1.1: 更平滑、更快速、更友好

jQuery Mobile 1.1: Smoother, Faster and Nicer

Detailed descriptions and demos to explain what’s new and improved in the jQuery Mobile 1.1 mobile web framework.

jQuery Mobile 可视化构建器

HTML5, jQuery Mobile Visual Builder

Tiggzi is a cloud-based mobile app builder. It comes with a very powerful and easy to use visual, drag-and-drop builder for HTML5 and jQuery Mobile.

ASP.NET MVC 4 和 SignalR 应用

ASP.NET MVC 4 and SignalR Application

ASP.NET MVC 4 beta offers enhanced mobile support through the introduction of new APIs. In this article, we will explore how jQuery.Mobile.MVC package, that is a part of MVC4, leverages jQuery.mobile and HTML5 to create targeted views for each device.

使用 Fireworks 创建主题

Creating jQuery Mobile website themes in Fireworks

How to use Adobe Fireworks CS6 to create custom jQuery mobile skins and use them in mobile websites based.

高级设计模板

Advanced design template for jQuery Mobile

Adobe Dreamweaver CS6 features a streamlined workflow for creating a jQuery Mobile project. So, in this article, you will create a simple Mobile application with Dreamweaver CS6.

构建基于 Web 的幻灯展示

Building Web Presentations with jQuery Mobile

jQuery mobile framework provides easily themeable, HTML5-based interface with support for pages transitions, therefore it would be very easy to create simple web presentations that will work on all popular smartphone and desktop platforms.

MVC 和 Netduino 用于家居自动化

Using jQuery Mobile with MVC and Netduino for Home Automation

This article is great for anybody learning jQuery Mobile or building mobile applications with MVC3. I built a remote control for my phone to control a squirt gun for my pool, open my garage door, water the garden and control for my gas fireplace using jQuery Mobile with MVC and a Netduino.

创建自定义主题

Create a custom theme in jQuery Mobile

An excerpt from jQuery Mobile Web Development Essentials, on the basics of theming and building a custom theme for your app.

移动 App 的入门指南

Beginner guide to a mobile app using the jQuery Mobile

A short tutorial to show you how easy it is to create a list based app with the jQuery Mobile framework and hopefully encourage you to give it a try.

为 Force.com 构建一个移动应用

How to build a mobile app for Salesforce Chatter using Trigger.io and the Force.com APIs with mobile features such as push notifications, geolocation and camera.

集成 Rails 和 jQuery Mobile

Integrating Rails and jQuery Mobile

Highlighting then smoothing over the rough edges of the integration between jQuery Mobile and Rails.

使用 jQuery Mobile 和 CSS3 的响应式设计

 responsive design with jQuery Mobile and CSS3

On its own, jQuery Mobile is a great for creating mobile website. When paired with CSS3, it becomes possible to create web page layouts that respond to device screen resolution.

动态页面生成

 Dynamic Page Generation in jQuery Mobile

How to create a Bible viewer as an example of loading content from XML and dynamically generating pages with jQuery Mobile.

新手指南

New Kicks and Tricks

Book excerpt from "jQuery: Novice to Ninja", 2nd edition.

把“hello”打印10次

今天上网看到一篇老博文《Coder or Clown?》, 文章作者主要想表达的意思是他作为面试官,面试了很多程序员,他发现很多程序员就是小丑,并把他们分类列举。这篇去年发表的文章被很多人转载翻译,作为茶 余饭后调侃程序员的佳品。我看了也是一笑而过,但是其中作者说的第一个事例却引起了我的兴趣,虽然很搞笑,但是这其中似乎隐藏着一些coder的情怀。

这个故事是这样的,作者面试了一个叫做Ada的毕业生,她是一位程序新手。作者给他出了一道题目,让她在纸上写下一段程序,目的是打印“hello”10次,无论用什么语言写都可以。于是这位可爱的学生在纸上写下了10句print “hello”。

作者给出的评语是:“无论如何,拼写都是正确的”。这本身是一件很搞笑的事情,我当时也很欢乐,虽然不知道是不是真有其人。我也就开开心心的把整片文章看完,作者的语言很幽默。评论很多,我稍稍看了一下发现许多人对Ada这件事耿耿于怀,甚至还有人说那是最佳答案。

Ada的做法很好, 但更好的做法应该是如下:
print “hello hello hello hello hello hello hello hello hello hello”
优点:
1. 代码清晰易读
2. 避免了循环,不会破坏CPU流水线,提升了效率
3. 改多次I/O函数调用为一次调用,提升了效率

看 到这个评论的时候我笑了半天^ ^,不过这位朋友说的挺有道理。我仔细想了一下,觉得打印这个单词10次,也许这真是一个比循环更好的办法。我记得还在上学的时候,老师曾今说到在什么情 况下使用循环,好像是说某一个操作要重复执行大于3次,那么就应该用循环结构。当然,现在看来这个说法也很搞笑,为什么要3次以上,为什么不是4次?我们 再回来看这个问题,首先要写10次hello并不费力,而且他人也一眼就能看条语句的目的是输出10个hello这串文字,而用循环的话就没有这么直观 了。

其实作为程序员最忌讳的就是死板,一成不变循规蹈矩的编程首先就会让自己厌倦。多思考,多实践才是最好的提高手段。那么大家能说说写 10次print “hello”与使用for循环相比有什么不妥吗?难道影响程序可读性?影响执行效率?不会是说占用了更多的磁盘空间吧(笑)。我还看到一个更有意思的评 论:

我相信任何编程语言的for循环都不会简单过vim的yy10p的。

哈哈,真的很有意思。大家可以尝试一下用vim写代码挑战for循环,我相信这个朋友说的没错。PS:这个朋友的评论有个错误我要纠正一下,正确的应该是yy9p,同时这样也少敲了一次键盘。

传谷歌苹果 CEO 正就 Android 专利纠纷秘密会谈

8月31日消息,据路透社报道,知情人士透露,谷歌CEO拉里·佩奇(Larry Page)和苹果CEO蒂姆·库克(Tim Cook)一直就双方公司一系列的知识产权问题进行着不公开谈话。

两家公司的CEO在上周还进行了电话交流,该知情人士指出。而相类似的讨论在两家公司的低级别官员中也有进行。

佩奇和库克预计在接下来的几周内会再次进行谈话,不过确切的日期目前尚未决定。此外,该知情人士还表示,原本两家公司在本周五安排了一个会议,但后来因不明原因会议被推迟了。

苹果在上周赢得了对三星的专利纠纷官司,其被判获得10.5亿美元的巨额赔偿。三星是全球最大的Android智能手机生产商,因此三星产品被判侵权,并被苹果要求禁售,这被视为是代表谷歌和苹果之间的一场“战争”。

谷 歌与苹果保持着在高级别的谈话畅通,这其中的一种猜想便是双方正在就Android手机的一些基本功能探讨“休战”的可能。不过目前尚不清楚佩奇和库克究 竟是在讨论一个关乎两家公司在移动市场所面临的大部分问题的广泛解决方案,或是一个仅涉及两家公司局部问题的小范围解决方案。

谷歌与苹果之 间的竞争随着近年来市场重心由PC转向移动设备而愈发激烈。谷歌推出了Android操作系统,该系统如今成为了全球使用率最高的移动平台。不过苹果创始 人兼前任CEO斯蒂夫·乔布斯(Steve Jobs)却认为该系统是“盗窃之作”。随后苹果向Android阵营发起法律攻势,三星和摩托罗拉移动先后卷入与苹果之间的专利战争。

库克在一年前顶替乔布斯成为了苹果的CEO,而佩奇则在库克上任不久的几个月后,重新担任起谷歌的CEO职务。

截稿时,苹果和谷歌都拒绝就上述传闻内容发表评论。

美程序员走低龄化路线 12 岁少年开发 98 款游戏

据国外媒体报道,在培养高质量工程师方面,美国正在逐渐被印度和中国甩到后面,因此美国正在小学和中学阶段普及计算机编程课程。与此同时,以Lua为代表的入门级编程语言则成为美国青少年未来接触高级编程工具的敲门砖。

以下是文章内容全文:

年仅12岁的美国少年亚历克斯•福伊特(Alex Foyt)已经是在线游戏开发领域的老手了,他在6年时间里开发了98款游戏,其中包括一款躲避从天而降的胡萝卜和小鸡的生存挑战游戏。

福伊特掌握游戏开发的秘诀是:他此前学习了如何使用Lua语言进行编程的方法,而正是这种编程语言使他掌握了更加高级的软件开发工具。

居 住在美国纽约州奥尔巴尼市的福伊特表示:“我特别希望能够成为一名计算机程序员,并且靠编程生活。”他最近长途跋涉到加州的圣克拉拉参加由游戏网站 Roblox Corp.赞助的一个会议。Roblox为用户提供了一个通过僵尸或中世纪堡垒等互动动画开发和操作游戏的平台

在网络游戏和以苹果iPhone为代表的设备程序大行其道的今天,Lua已经成为帮助刚刚涉足软件编程领域青少年的入门视觉编程语言之一。包括Roblox在内的很多网站都在大力宣传这些视觉编程语言。谷歌和思科经常抱怨美国工程人才出现断层现象,而这些编程语言也对解决人才短缺问题具有指导意义。

在美国斯坦福大学教授计算机科学的史蒂夫•库珀(Steve Cooper)指出:“工程人才短缺是美国科技市场增速放缓的一大主因。如果你去大学招聘会看看,就会发现雇主都扯着嗓子喊‘如果你是计算机科学家,快到我们这里来!’”

人才培养差距明显

在培养高质量工程师方面,美国正在逐渐被印度和中国甩到后面,因此让美国青少年早点接触编程十分重要。

经 济合作与发展组织(Organization for Economic Cooperation and Development, 简称OECD)2011年针对在25岁到34岁之间就业的发达国家大学本科毕业生进行了一项调查,结果显示在获得过理科或工程学学位的毕业生比例排名中, 美国仅仅列在全球第23位。

美国信息技术咨询公司Cognizant Technology Solutions Corp.(CTSH)总裁戈登•科伯恩(Gordon Coburn)指出:“这种差距在小学阶段就体现出来了。到他们上大学时,他们根本没有掌握数学知识。因此市场紧缺高质量的编程人员,只要我们发现类似人 才,有多少我们招多少。”

虽然Lua编程语言已经有20年的历史,但直到最近几年才又 重新焕发出了生机,这还要归功于Roblox。这家网站成立于2005年,截至今年7月,该网站的独立访问用户已达1,100万,用户年龄多数都在8到 14岁之间。而且,Roblox用户已经累计开发了超过800万款游戏。

从入门到高级

移动应用程序开发平台Corona Labs Inc.也在使用Lua编程语言。而在与另外两大入门级编程语言Alice和Scratch的竞争中,Lua也表现出了积极的上升势头。

美 国计算机科学教师协会(Computer Science Teachers Association, CSTA)主管克里斯•史蒂芬森(Chris Stephenson)指出:“在过去几年里,我们已经看到吸引学生加入编程队伍并教授他们基本编程知识的趋势呈现爆炸性增长。Alice和 Scratch两种编程语言非常流行,因为学生喜欢它们,而且能够利用这些语言开发出真正有创意的程序。”

居 住在犹他州西班牙福克市(Spanish Fork)的罗伯特•内伊(Robert Nay)在他14岁的时候就使用Corona的社交开发软件套装开发出了一款名为《泡泡球》(Bubble Ball)的游戏。这是一款利用iPhone的位置感应器晃动手机而让小球绕过障碍到达特定位置的游戏,内伊完全是利用课余时间,自学编程、设计开发了这 款游戏。这款游戏在2010年12月29日上架销售,至今的累计下载量超过1,500万。在苹果App Store免费应用下载排行榜上,《泡泡球》在数周内一度超过了全球最热门的游戏《愤怒的小鸟》。

内伊在接受采访时表示:“我只是开发了一款我自己想玩的游戏而已,我认为这款游戏很有趣。对于未来的事业选择,我倾向于从事与计算机有关的行业。”

在掌握了入门级编程语言后,内伊还学习了更加高级的Java编程语言用来建设网站以及开发游戏和程序。

教授解决问题技巧

美 国杜克大学计算机科学学院主任布鲁克•奥斯伯恩(Brook Osborne)表示,基于Alice、Scratch和Lua编程语言的程序开发平台有助于在小学和中学普及编程知识,教会这些学生解决问题的技巧,并 将学生的编程兴趣拓展至包括Python、Java、Ruby和C++等其他编程语言。

奥斯伯恩指出:“当你理解了编程的概念并掌握了程序员的思维结构以后,学习计算机句法就没有任何障碍了。”

一 些年轻的程序员正在通过在线编程课程学习编程技术,包括Udacity Inc.、Codecademy和Coursera Inc.在内的初创企业就提供这样的在线课程。Codecademy的联合创始人扎克•西姆斯(Zach Sims)指出,自从2011年8月推出在线编程课程以来, Codecademy的用户已经超过100万,而且无论是小学教师还是大学教授都在课堂上使用该公司提供的编程资料。西姆斯还指出,学习编程正在成为一种 “新素养”。

适合孩子的编程语言

史蒂芬森表示,在线编程课程和适合孩子使用的编程语言并不足以让众多的青少年加入到软件开发的行列中来。

斯蒂芬森指出:“这一问题的部分原因是,我们真正想要吸引的青少年未必会自己主动寻找这些软件开发工具。我们需要尽可能地为每一个孩子提供普及此类知识的机会。”

CSTA鼓励在小学和中学阶段开设计算机科学课程。根据美国劳工统计局(Bureau of Labor Statistics)的最新统计显示,在2010年到2020年间,美国软件开发者的年均就业增幅将达到30%,而所有职业的年均就业增幅则预计为14%。

斯蒂芬森指出:“我们发现,现在的美国大学毕业生大都背了一身债务,而且还无法找到工作。而计算领域却急需掌握编程技术的专业人才。”