主题:人人皆可编程 -- 阅读者
最近把邓侃等老大们的文章,看了一些,才发现:软件以及发生了变化,最早,软件是计算,后来,软件是控制,再后来,软件是工程,到现在,软件要变成哲学啦!
现如今,程序员还是一个被仰视的行当,自己的“我的电脑”啦,“声音”啦,“图像”啦,不仅是由许许多多程序员给搭建的,出了问题,还得找离程序员们比较近的准专业人士来解决。你每天一开机,就在跟一大堆的程序员在对话,有的比较耐心,有求必应,有的比较烦燥,怎么都不搭理你,反正,一般来说,你必须按照程序员划好的道道来...
听说,最近WEB要变成OS啦,基本上,我只需要知道我需要什么内容,用HTML告诉他们,我还有点自己的美学偏好,用CSS告诉他们,如果我还挺有进取心,想把我的逻辑和想法放在上面,假装我是一台机器,我就用Javascript告诉他们,“他们程序员”就按照我的命令翻译给机器,至于他们跟机器之间旷日持久不得不说不可多说的故事,我们就不需要知道啦...
这个软件哲学是:人人皆可编程!
“终端用户编程”(End-User Programming)
比如 Web2.0 + SNS + 忽悠
今天看了一个《21世纪经济报道》的关于iphone的文章,主要着力点在那个iphone shop上,这个应该也是SNS模式的吧?
我是做手机芯片的,明显感觉到iphone和android给手机行业带来了一股新的希望,也让传统巨头NOKIA备显狼狈。
看了SNS模式,给我的感觉就是,现在软件已经进化到一种模式,就是操作系统已经不再重要,上面的平台已经可以屏蔽掉操作系统,将来单纯的操作系统被边缘化和公益化,我不会觉得奇怪。
而看邓侃老大关于WEBKIT的介绍,比较让我感兴趣的是,美国的计算机软件行业还是那么能想,比起国内的软件行业来说,确实具有创新精神。可能是国内没有创新的土壤,软件工程师们总是着眼于快速的收费模式。
我现在每天看到WINDOWS上我的电脑那个枯燥的小图标以及窗口这种模式,说实话,已经很烦躁了。LINUX的各种发行版也大同小异。我期望着,WEBOS能带给我们千变万化的桌面模式。
国内大多数软件公司接几个外包,或者接几个垃圾信息化的项目,界面搞搞,sql搞搞,累的要死,利润又不高,谁愿意投资研究一个牛逼一点的软件?可能失败,风险高。对老美真是佩服,基础性的,牛逼一点东西都是他们搞出来。
浏览器就是操作系统了。。。。其实是差不多的吧
就算用户会了html, css, js也得去查那些api,还得组织数据结构,还得debug。。。。
我也不指望EUP了,我就指望能多有几个UI玩玩,在windows上体验linux,在linux上体验mac os就ok了,呵呵
现代社会专业化分工, 一小撮人的生产效率足以满足所有人的需求。何必要人人都在自己家里搞生产, 那是时代的退步, 呵呵。
楼下回复里有人提到End user programming。 这个方向搞了十几年了, 基本上是几个大忽悠在嚷嚷。 归根结底“人人皆可编程”是个伪需求。 所以搞来搞去, 无非是弄几个图形化的幼教软件,或是简单的脚本做点重复性的工作,成不了什么气候。
首先,现在编程也不是什么太难的事,另外,众多成熟的框架,可重用部件,搭搭配配就成了。
其次,很多需求,是需要非写代码的人才有可能搞定的。比如众多数学家的需求,比如家庭里的一些个性化需求——这些需求是普遍存在,但千奇百怪,基本不适合大规模软件工程来实施。
最后,经验告诉我,有必要人人都可编程。国内现有很多创业的,都招不到程序员,和这个是有关系的,因为他们采用的东西太新,以至于现有的程序员基本不胜任,或者是培训成本太高,此时还不如自己直接写来得经济——因为都在同一起跑线,而你的需求强烈,学习动机强烈,会更高效学会。同理,现在可能不知道自己需求,但一遭有需求,与其去求无法实现该方案的程序员,还不如以自己的技能,至少搞出个demo来,才更有说服力吧??
至于是不是伪需求,我只能用一句话来回答:站着说话不腰疼,等你有需要的时候,就知道什么叫“书“到用时方恨少。
就像我说没必要人人都学销售,因为销售是个专业化的技能,不是一般人能够学好的,但那一天你独立了,还不照样乖乖学销售。——这不是伪不伪命题的问题,而是生命力的问题。
我帮你总结一下你的回复,有需求的: 众多数学家的要求, 家庭里的一些个性化需求, 国内很多创业的。
众多数学家是因为门槛太高, 一般程序员写不了。 国内创业的, 看来不是不想雇程序员,一是没有钱,二怕效率低。 家里的个性化需求,要编程?
请自问一下,这些情况, 在大众中占了多少比例?是不是就能代表人人了? 说来说去, 大家是思维模式的差别, 我相信社会分工, 相信市场环境下大部分人只是消费者。如果让我开公司,我宁可找个销售专家来当创业伙伴, 也不会自己去学销售。 同样我也不会去开发一个“人人”能编程的软件, 因为难度太高, 收益太少,这样肯定赔的底掉。
Communix操作系统最早是两个德国人Marx和Engles开发的(称为Communix基础版,或Communix 1.0和2.0),遵守GPL,它的早期支持者曾经先后组织过两个国际讨论区。
当时少数先进的国家都使用微软的Windows,其他的绝大多数国家要么用DOS,要么作为受Windows主机控制的远程终端,相比之下, Communix支持的机子很少,但移植Communix的努力一直就没停止过。最早是以法国为主的一些人在巴黎、里昂等地移植过,但失败了。此后 Communix分成两条路发展,一条是删除一些不兼容的代码,把Communix移植到Windows运行;反对微软的另一批人在俄国著名程序员 Lenin的领导下,在俄国移植Communix获得成功(第一次发行时称为俄版Communix beta或Communix 3.0beta),一度做到15个主节点、20多个子节点的大规模并行Cluster,并影响到亚洲、东欧、拉美等一些地方。
一个小插曲:在Lenin之后,俄版Communix项目的两个CEO对Communix 3.0正式版出现了意见分歧。占多数的Stalin重视系统安全和运行效率,认为需要在已有的基础上继续优化俄版Communix代码;占少数的 Trotsky认为要把微软干掉,因此必须支持更多的硬件,提供更多的功能。这次分歧以Trotsky失败告终。Trotsky和他的团队后来开发了自己的Communix(称为托版Communix或Communix 4.0),但除了在斯里兰卡短暂地装过一段时间以外,都是小用户。这些用户又加入了很多自己的东西,且互不统一,Trotsky死后没人整理,因此托版 Communix非常乱。而由Stalin的团队打造的Communix 3.0正式版因为过于注重系统安全和效率,导致界面不够友好,娱乐功能少,不能及时更新一些新功能。Stalin的继任者由一个极端走向另一个极端,他们片面追求漂亮界面和娱乐功能,甚至干脆向微软购买这些功能,放弃了系统安全和效率,更不对代码作任何优化,导致系统经常当机和被黑客入侵,最后不得不改装 Windows(据说负责洽谈这次改装项目的经理Yeltsin还拿了不少回扣)。
在俄国成功移植Communix的消息也鼓舞着中国的Communix爱好者们,但早期的努力都不成功。一个姓毛的人说,俄版Communix光是汉化还不行,因为我们的硬件太旧了,短期内也不可能更新,所以必须为我们自己的硬件改写一部分底层代码。这种办法最后成功了,成为低配置计算机移植 Communix的精典范例而载入史册。毛还反对俄版Communix晚期的一些修改,认为这是向微软投降。为了及时清理Communix队伍内部的微软代理人,他发动广大用户学Communix和写Communix,打造一个“六亿神州皆Hacker”的毛版Communix。他的主张遭到开发团队的反对,最后无果而终,但影响持续至今。如今,一个精通毛版Communix的程序员往往被看作是危险的黑客,而那些拿了很多认证的Communix程序员都在跟微软学接轨。但是,代码要开源,人民要编程是无法扭转的世界潮流。
今天,国内外仍有不少毛版Communix支持者。曾有人说尼泊尔的毛版Communix是“盗版”,这就连GPL的基本常识都不顾,堕落到微软版权的泥坑里去了。
不需要知道存储,只需要一些简单的循环和判断功能,命令很多,每个命令后面有丰富的库支持,用户可以搭积木一样编程。如果一个普适的语言有难度,可以从某个领域单独突破。
我感到,普通用户有编程的需要。比如说,人们对用用Outlook定制日程,这就是一个简单的编程,如果给他加一个判断的功能呢?循环?
Excel就有一个很简单的编程功能,有丰富的函数支持,很方便,如果Excel能有按照时间,顺序执行的能力呢?
Javascript+HTML还是复杂了些,光是HTML的标记可能就有一定门槛,可是不是所有人都需要功能强大的HTML页面,能不能考虑一个缩小版的HTML+JS+CSS?我们看到很多博客页面支持简单的图形化定制页面的功能,如果能有简单的图形化JS支持呢?
身边一堆创业的,有擅长销售的,有擅长技术的,可他们都大部分单干了。你认为他们不是和你想法一样,找个能互补的??
但找到了么?找人的难度,你自己没经历过,认为很容易,而我是有切身体会的,找人浪费的时间,足够我自己把自己不懂的那个初步学会了,更何况中间消耗的感情和精力的耗费才是主要的。
另外,不知道有没接触过python,这个已经快接近人人都可编程了。为什么人人能编程的软件会难度高,收益少?想当然了吧,国内大批的it民工,你认为他们真的掌握了技术的层次很高么?要真收益少,微软们就不会开发出大量更加语义化的语言,更加图形化的ide了。
我刚毕业时候跟你的想法差不多, 做事情找个人是不容易, 还要适应, 还要沟通。 效率,成本远低于亲自动手。可这么多年经历教育了我, 光靠个人做不了多少事情。为了长远打算,这些提前付出成本是必须的,一开始可能很费劲, 等配合好了,一个队伍做的事,远远超过个人能力, 想做点大事, 这是必由之路。你说你周围的人都愿意自己单干, 我可以下个断言, 这样做事情一定做不大。
这些都是题外话了。主题帖是把人人都可编程当一个哲学思想来提。 在这个高度,自然说的是一般性的东西。就我熟悉的, 我再说两句相关的学术研究和我自己的看法。
楼下也提过这个概念引申到一个研究方向叫EUP(end user programming)。 EUP里面包含两类基础方法, 一类叫(visual programming)即所谓可视化编程, 看到这个名字, 很多人会想到VB, VC, 纯粹从概念上讲, VP是以图形化的方式直观的表示编程逻辑, 也许MATLAB里面得simulink 工具包更能体现这种思想。 另外一类就是script, 要简单,直白,最好类似自然语言。在这两个基础方法之上, 还有一大类方法叫programming by demonstration。 可以类比为你教计算机做事情, 先演示一遍, 让计算学会了,再推而广之。 想深究的, 可以去看两本经典文集, 一本叫 Watch what I do, 另外一本叫做 You wish is my command。 里面囊括了这些方向上林林总总的各类想法。
回头说说我的个人理解,“人人编程” 是句口号。 泛泛的讲这个口号很对! 计算机总要越做越简单, 终极理想是计算机就跟人一样聪明.我们用计算机根本不需要学,想什么,它就做什么。计算机的用户和程序员,再无分别,也自然而然实现了人人编程的理想。 可回到现实, 这个终极理想实在太遥远。 就象“各取所需,各尽其才”的理想社会。谁也不知道怎么实现。 徒让理想的追求者们浪费了大好青春。
我支持开源,但是愿意自己编程的人太少了,呵呵。
这年头流行的是傻瓜化