Magicshui's Blog

Magicshui on Programming && Life

珍爱生命,远离编程

我一直认为对于问题的考虑无非是O(n)或是T(n)

我一直认为可以通过try catch加上断言来捕捉并弥补错误

我一直认为可以依赖注入让原定的计划产生预想的变更

我一直认为什么都有模式,做事情不是GOF就是anti-GOF

我一直认为就像c和java一样,语言不通但是效用不通

我一直认为通过加入中间层可以解决任何问题

我一直认为契约是需要遵守的

我一直认为开放接口简单到随处可行

我一直认为事情就像REST一样可以简化成几个动词

我一直认为大家对事情的考虑在于更好的实现方式

我一直认为人生有一种通用的哲学

我一直认为简单即为美

我错了,很多时候

珍爱生命、远离编程

我这样想未来

从自己的思考角度想说一下我对于未来的看法,不是所有的东西,主要集中在信息、网络、数据、互联网等相关吧。新标签页

我现在使用的电脑是09年购买的Y430,各个方面的性能在当时不算落后,也是在购买了电脑以后开始了互联网折腾的不归路,从不懂什么叫BIOS到写一些软件框架,电脑在经历了两年半的工作以后已经日渐迟缓,当然设备上的折旧或是损耗是必然的,但是同样不可否认主要原因在于电脑已经跟不上发展的速度了。也许只是运行一个系统,还能够顺畅的运行,但是现在我的需求是安装上则好几G的IDE等软件,同时程序的编译也是相当消耗资源的。当然,对于不编程的童鞋来说,这些都是不会遇到的,但是他们也将遇到问题,就是一堆新推出的应用、软件的推出,显得自己的电脑更加老气。

这个问题的解决方法是更换设备,这就是那些设备厂家盈利的根本,但是,除此之外呢?难道没有其他的方法吗?

我觉得谷歌的Chromebook是一个绝佳的解决方案,也许我们需要的只是一个浏览器。

要知道我们使用计算机做的都是数据的处理、输入、输出、展示。

看电影,就是让播放器将视频数据通过解码器来读取展示;写程序是让计算机来编译执行,给出结果;玩游戏是让数据给出你一系列可以互动的图形图块;

那么,对于我们来说硬件还那么重要吗?

我觉得不再是了,起码对于数据的终端消费者我感觉是这样。举一个例子,Cloud9ide.com,这是一个在线的IDE,基于html,使你能够在web端进行程序的开发、调试,IDE在本地根本就不需要,数据都会在云端让你处理完成。

那么,如果说你其实只是需要一个数据的展示页面,谁来处理?云端。额,算是一个烂透了的概念,不过的确这是解决方案。数据通过高速的网络由集中式的服务端处理,你所需要的就是一个能够显示结果的界面(需要还具有交互、通信能力)。

现在的Chromebook感觉是一个不错的方案,所有的一切都可以在云端完成,但是限制发展的原因依旧很明显,首先是网速,其次是应用的转移。

我们需要的只是这些数据,而所有数据不在本地,那么云端需要传输的数据量是相当惊人的,没有一个快速的网络,这些的实现是不流畅的。

而应用是对于用户来书最简单的数据处理工具,这个很少,但是很必要。

不过,解决了这些问题,我就可以这样畅想未来。

你拿着一个设备,不管是什么,登陆以后,云端推送数据,系统界面的各种东西,甚至是上次离开时打开的文档都给你还原出来。你打开一个图片,他就从云端下载,然后显示,显示的处理是使用设备提供的显示接口,当然,这些都是技术上的说法。

或者你打开一个游戏,在界面上进行交互,设备只是提取所有的信息,传输给云端,再由云端把数据传输回来给设备显示,这个交互过程替代来原来编写游戏中的刷新帧的概念,这里的帧成了和云端交换数据的过程。一切都没有改变,改变的是设备不需要计算能力(或是很少),因此很廉价,很容易改变造型,很容易升级,你需要的只是为数据付费,为流量付费。

这就是我对未来的想法

关于rails,关于一致、约束

以前写过一篇文章关于“python vs ruby”,当然,从语言的政治角度上看更倾向于python,也因此说要选择django作为web开发框架,但是随着使用,发现django让人感到不爽,不知道为什么,因此django一直没有持续学习下去。

现在随着javascript的兴起,这里不得不说微软windows 8的等native client等的发布,让人们更加看到了js的潜力。当然,在js方面开源社区走的更远,比如coffeescript,这个就是我现在所痴迷的。通过coffeescript,我们能够通过简单的几行代码写出复杂的js类,这就是面向对象的简单之处:

class Animal
    constructor: (@name) ->
    say_hello: (name) ->
        @name = name

a = new Animal("doggy")
a.say_hello()

 

如上的coffee-script代码通过编译以后转换为如下的代码:

(function() {
  var Animal, a;
  Animal = (function() {
    function Animal(name) {
      this.name = name;
    }
    Animal.prototype.say_hello = function(name) {
      return this.name = name;
    };
    return Animal;
  })();
  a = new Animal("doggy");
  a.say_hello();
}).call(this);

 

你可以通过我写的这个小程序来实现功能

当然,这里的主题不是说coffee,我们的主题是rails是一致性,我们都知道一个公司37signals,一个高效的公司,他们只有十几个人分布在不同的城市,但是,他们创造了巨大的生产力以及改变世界的东西,比如rails框架。这个框架是十分流行以至于有人曾经发表过言论“所有的网站都应该用rails重写”。

但是,如果你看过rails框架,你会发现这个高效、流行、威力强大是有原因的,其中重要的两点是一致、约束。

关于一致

一致的含义是你只需要一种简单的代码模式写出不一样的东西。比如刚才提到的coffee-script,他们只是一个编译器,将javascript用coffee-script的语法模式实现,算是一种新的语言。但是你不需要花费大量的功夫来学习新的语言,因为这些都是类ruby的。也就是说你不需要改变思考的方式就能连贯的写出不同语种的代码。这就是一种一致。

关于约束

约束是规定该怎么做,用管理学的术语就是“标准行为准则”,在rails 中你的类、成员等的命名也都要按照一定的方式来进行,这样的结果是让代码能够更容易被理解,即使这是别人留下的摊子。还有就是你需要将不同的文件放到不同的文件夹中,他的作用被这样分类。

这就是rails,不是说ruby这门语言怎么强大,而是说创造了rails的人很强大,而强大的背后不是代码而是理念,一致、约束。