`
ilkds41y
  • 浏览: 13382 次
社区版块
存档分类
最新评论

只学一点点:我的技术学习策略

 
阅读更多

只学一点点:我的技术学习策略
2012年01月16日
  转自(http://www.cnblogs.com/xiaotie/archive/2011/12/10/2283384.html#2288222)
  做技术已多年,该换换思路了~~~~~~~~~~~
  李敖有首诗叫《只爱一点点》 :
  不爱那么多,
  只爱一点点;
  别人的爱情像海深,
  我的爱情浅。
  不爱那么多,
  只爱一点点;
  别人的爱情像天长,
  我的爱情短。
  不爱那么多,
  只爱一点点;
  别人眉来又眼去,
  我只偷看你一眼。
  一点足够。在黄易的大唐双龙传中有个说法叫《遁去的一》,也就是说任何事情在纷杂万象之中都有一个消失的一,把这个消失的一找到,就可以事半功倍。
  在学技术中,很多人纠结于掌握与精通。掌握是能够熟练的使用该技术实现自己的目标,而精通,则是对该技术的常用及半常用的场景都熟悉,能够处理常见或非常见的问题,是广泛的掌握。
  在宅男和腐女眼中,万事万物皆为攻受。学习务必精通,则是绝世小受,学习只求掌握,则是偏向于攻。孙子曰:善攻者动于九天之上,善守(受)者藏于九地之下。下面看看动于九天之上的学习方法。
  作为一个上个世纪就开始写网页的程序员,你如果问我这个css怎么写,这个js怎么写,我的回答一般就是两个字:“不会”。做为一个从.net 1.0就开始写C#程序的程序员,如果你问常见的.net问题,50%情况下我的回答还是“不会”或者“查MSDN”。有不少人加我QQ讨论技术问题,我最多的回答是“不会”,“不知道”,“Google”。时至如今,也就会些用了理所当然就能记住的知识,其它的都不会,IDE的快捷键也记不住几个。当然,也有碰巧那个东西我懂的,这种情况极少。
  技术是来解决问题的,不是增加心智负担的。承担进攻任务的行军不会带太多的累赘。我的开发任务中数据库、查询类的不重要,linq不用学,自从接触代码生成后,ORM的也全部都扔了,因为ORM需要学习,且可控性没有代码生成的好。自从项目主要是图形图像方面的后,asp.net等也都丢了,因为这类项目需求变动大、技术支持困难。直到后来才找到.net对我而言的遁去的一:unsafe + 指针。有了unsafe + 指针,图像程序性能大增,相比C/C++而言,生产力也得到了极大的提高――什么新东西都不用学(指针还没忘记)。
  知识是基于过去经验的总结,而我们面对的是未来,因此,对于过往知识需要谨慎的辨识,对于他人经验需要参考性的采纳。MSDN中明白的说,不鼓励使用unsafe,而在.net图像程序中大量的使用后,才能感觉到它的爽。如果看到MSDN上不推荐用,看见别人也几乎不这么用,自己就给自己设置禁区,那我就找不到这个遁去的一。
  下面是个更深刻的例子。今年应该是我写Flash程序的第三个年头。俺,是一个不会Flash的Flash程序员。你如果让我用Flash CS工具做一个动画,很抱歉,不会。那么看看,我会哪些?我学了哪些?我能做什么?做这些我相对于别人有哪些优势?从这个例子看看什么是进攻式学习。
  普遍看来,Flash是一个动画工具。全球数百万Flash动画设计师。好吧,俺美工差,如果它是个动画工具,俺就不玩了。
  在我最初看来,Flash是一个运行在绝大多数PC机上的虚拟机平台,擅长处理图形图像,可以用它来快速开发程序。这样看,就可以玩玩它。为什么?图形图像类应用是我给自己确立的方向,而Flash是一个适合的平台。
  这样的认识还没有触及遁去的一。随着开发经验的增加,一个遁去的一开始浮现:
  Flash是一个最简单的虚拟机,它只封装了最基本的操作(图形图像、声音、视频、XML以及现在的3D),连Button控件都没有,凡是可有可没有的都没有。
  用普通的眼光看,这个虚拟机简单、弱小。换一种方式看:尺寸小,平台小,容易移植。用html5/js来写一套Flash的基本API也没多少代码。因此,Flash/AIR才这么容易的打入iOS之中,且各类平台间Flash代码保持非常好的兼容性。
  Flash提供了一套简洁的API,跨各种平台。Flash以库的形式扩展(这一点与.Net很大不同),Flash CS工具里自带了一套简单、开源的UI控件库,Flex则提供了一套复杂的、全功能的UI库,这些都是Flash平台外部的(这也与.Net不同,WPF是在SDK里面的,而不是外面)。在平台外部,就拥有了很好的灵活性。
  这个简单的弱小的小玩意怎么能算遁去的一呢?
  算不上!
  它充其量就是一个灰尘大小的卵细胞。
  下面,一个微不足道的、看似毫无关联的玩意出场了:数据绑定。它就像一个小蝌蚪一样,向卵细胞游啊游,在两者接触的瞬间,一个生命诞生了!
  Flash开发遁去的一就是Flash的底层API + 数据绑定。
  Flash底层API很简单很少,各大平台都支持(Web,桌面,移动)。它就是中国移动全球通,什么地方都有它――我能!
  光能还不行,直接用Flash底层API开发,就像用GDI+一笔笔绘制一样,麻烦的要命,直到数据绑定出现,数据绑定让基于Flash API的开发有了质的飞跃――它好我也好!
  因此,掌握Flash只需要掌握两个东西:底层API和数据绑定,剩下的都是细枝末节的,用的时候查文档和搜索引擎就可以了。我们需要学的东西是多么的少,而我们能做的事情是多么的多!
  首先,得学习开发语言。Flash平台的官方开发语言是actionscript3,简称as3,每当说起as3时,人们总会谈起as2,你就当as2从没出现过,了解as2一点用都没有,不闻、不问、不看。
  as3和主流开发语言很类似。package 机制、类机制和java相似,继承是extends,实现接口是implements。区别:
  (1)变量声明是var i:int;函数声明是:function foo(i:int):int; 不支持方法重载,支持默认参数。函数可以作为参数传递。支持闭包。
  (2)Getter和Setter分别为:function get foo():int; 和function set foo(i:int):int;
  (3)抛出事件:dispatchEvent;监听事件addEventListeneraddEventListener。事件支持弱引用。
  (4)for each可以遍历集合;
  (5)支持动态类,Object是动态类,for可以遍历Object
  (6)[  ]里写元数据。常用的有三个:事件申明,嵌入资源和数据绑定:
  数据绑定是 [Bindable],这个在后面会详述。
  嵌入资源的例子一看就明白:
  [Embed(source="assets/blackStyle/iconPlayStart36.png")]
  private var buttonForwardPlay36:Class;
  事件申明用在类中,申明之后,IDE会对该类给出对应事件的智能提示,例子:
  [Event(name="inited", type="flash.events.Event")]
  as3很快就学会了,拿本语法书,扫一眼就行了。不用Flash CS工具的话,主流IDE就是Flash Builder,它是基于Eclipse开发的,用过Eclipse的拿过来就会用。
  下面进入主题:Flash API和数据绑定。需要掌握的Flash API:
  (1)绘制的API:绘制线、绘制曲线、填充/梯度填充、蒙版、混合模式(貌似除了蒙版外,Html5都有!)
  (2)滤镜和变换
  (3)文本处理:TextField
  (4)核心UI类:Sprite、它的生命周期及对交互的响应
  上面这些是我们的钢筋水泥,下面,就用这些钢筋水泥来搭建我们自己的应用。有人可能会问:控件呢?有了数据绑定,我们并不需要控件,或者换句话说,有了数据绑定,我们可以很容易由底层API搭建自己需要的控件。
  数据绑定非常容易!
  数据绑定是Flex的mxml(Flex描述界面的语言)编译器提供的一个功能。下面,我们只用Flex的 mxml编译器,而不用Flex的任何控件,来从Flash API搭建我们自己的控件或其它应用。Mxml就不介绍了,看一眼就会了。下面是一个mxml中数据绑定的例子:
  
  很简单、很容易理解、理解了就再也忘不了:大括号{}中的就是数据绑定内容,{}中的所有可绑定的变量构成绑定链,绑定链上的绑定源出现了任何变化,都会激发运算,将运算结果付给被绑定的字段。
  如果给一个类加了元数据[Bindable],则该类实例的字段和getter/setter就成了绑定源。如果不想把全部字段和getter/setter弄成绑定源,可对字段或setter单独增加元数据[Bindable]。
  这个数据绑定比WPF/SL的数据绑定简洁多了、易用多了。
  下面,就靠这些开始征程。
  (略,参考原文)
  as3有个叫haXe的兄弟语言,haXe写的代码可以在Flash平台运行,可以在js环境运行,铺平了向html5的过渡之途。
  下面,回答前面提出的四个问题:我会哪些?我学了哪些?我能做什么?做这些我相对于别人有哪些优势?
  我会哪些?我学了哪些?
  Flash CS系列工具会吗?不会!
  Flex会吗,会一点点而已。
  还就只懂几个API和数据绑定和几个Flash基本类。其实这就够了。有基本类、有几个API,有数据绑定,组合起来就是非常强大的工具,我们不需要学习多少东西,却可以非常高效率的开发很多应用,且开发的这些应用可以分发到各大平台。不需要学习多少控件,有学习的时间,就够写一个自己的了。自己写的控件没有冗余,性能高,编译后的尺寸小,且修改方便。
  我能做什么?
  通常的,对特效要求不是特别高的Flash App都能做,这意味着,某些桌面软件,某些Web应用,某些ios应用和某些android应用。额,Html5也算顺便能做,今年顺手用haXe做了个html5的项目。
  我相对于别人有哪些优势?
  那些用Flash CS开发的,开发效率低,代码可维护性差。那些用Flex开发的,代码尺寸大,程序性能差。俺这样的优势就是Flex般的开发效率和灵活性,Flash般的性能和代码尺寸,且什么都是自己写的,出了问题自己也好弄,不像Flex那样是代码迷宫。
  学的少,可做的多,相对别人还有优势,这是不是就是遁去的一呢?要是按照书本学,按照别人的建议学,东西学了一大堆,能做多少还是个问题,能以什么效率做也是个问题,更可怕的是,学完了还不知道自己学习的是什么。
  只学一点点,不累!剩下的,交给狗爹度娘吧。
    注:本文代码只有主要代码,那些不影响阅读的代码就没贴出来,不然太长了。又由于和业务代码在一个项目里,也不方便打包放出。见谅!
分享到:
评论

相关推荐

    【代码分享】手把手教你:基于深度学习的滚动轴承故障诊断

    本文主要介绍如何使用python搭建:一个基于深度学习的**滚动轴承故障诊断**系统

    网上学习确定自动点击工具

    网上学习确定自动点击工具 网上学习时过一个随机时间弹出一个确认菜单,要点确定后才继续记时,这个就是自动点确定的工具,只要运行隐藏后就可以自动工作了。不要启用屏保功能,关了显示器就好了

    爱学习广东学习网专用浏览器

    快学简介:学习专用浏览器专为【广东学习网】学习者开发,主要功能有 1、 一键登录到我的学习中心,能记住密码,不必每次都输入用户名,密码,验证码 2、 进入学习中心后,打开没有学习的课程,可以一键学习完,不...

    android一年学习资料

    android一年详细学习资料,把我参加的android培训的为期3个月已经自己学习android一年的资料经验共享给大家分享

    Liunx C编程一站式学习.chm

    很好的linux 系统上c语言的入门教程,而且是chm版的

    java学习之路

    教java学习新手如何步入java殿堂,教您一条好走的路,让java学习不走弯路,看清方向。

    操作系统学习与考试系统(XOSCATS)

    XOSCATS(X Operating System Computer Aided Teaching System, XOSCATS)是一款通用操作系统计算机辅助教学系统,简称CATS。CATS是基于Windows环境下操作系统(Operating System,OS)课程学习和考试的辅助工具。①学生...

    Oracle完全学习手册电子书.part1.rar

    《Oracle完全学习手册》作为世界范围内性能最优异的数据库系统之一,它在国内数据库市场的占有率远远超过其对手,始终处于数据库领域的领先地位。《Oracle完全学习手册》以Oracle 11g for Windows XP为平台,...

    spring学习视频(传智播客)

    我最近在学习spring框架,找了好久都没有找到一个好的视频。最后我看了传智播客的感觉还不错,所以分享给大家。

    科学计算中的蒙特卡罗策略(中文版).pdf

    科学计算中的蒙特卡罗策略.pdf,自己一页页合并的,呵呵。

    编程入门:SQL语言一小时看懂_适于不会SQL的学习

    编程入门:SQL语言简介,这本书可以留着查查sql的简单用法。适于不会sql的人学习使用。最好边看边安装个mysql试试。

    Android正式版学习手册破解版

    Android学习手册破解版的APK,有现在学习Android的同学可以下载安装看一看

    Python学习手册

     《Programming Python》,另外一本书,介绍在学习了Python之后可以用它来做什么。  也就是说,《Programming Python》这本基于应用的图书选择了本书所省略的话题,介绍了Python在Web、图形用户界面(GUI)和...

    学习嵌入式,该学习什么基本的知识

    关于学习嵌入式,该学习什么基本的知识!使学习者能有一个总体的把握!

    嵌入式Linux学习七步曲

    嵌入式Linux的学习涵盖的范围比较广,下从bootloader,到内核移植、文件系统,中间的驱动开发,到上层的应用程序调试、开发环境等,变化莫测,经常是别人的能用自己的就有问题。 由于缺乏他人适当指点,自己在学习...

    计算机组成原理学习指导与习题解答

    《计算机组成原理:学习指导与习题解答》是与高等教育出版社出版的面向21世纪课程教材《计算机组成原理》(唐朔飞编著)配套的辅助教材。《计算机组成原理:学习指导与习题解答》给出了主教材中各章的重点难点以及...

    实例解读51单片机完全学习与应用

    2.1.3 硬件工具之一:面包板 2.1.4 硬件工具之二:万用板和 印制电路板 2.1.5 焊接工具 2.1.6 焊接方法 2.2 ■单片机系统设计流程 2.2.1 需求分析 2.2.2 电路设计 2.2.3 程序设计 2.2.4 系统调试 2.3 ■应用体验...

    SpringMVC学习指南

    京东畅销书,排名第一,SpringMVC学习首选,奉送全部源代码,全网难得一见! https://github.com/pauldeck/springmvc-2ed

    基于ssm的网上服饰商城毕业论文(关注我还有更多的学习资料)

    伴随着如今计算机技术在各行各业日益广泛和深入的应用,电子商务的概念早已深入人心,电子商务的应用也越来越广泛,对企业的影响也越来越大。现在,电子商务的应用几乎渗透到各行各业。企业可以通过电子商务寻找客源...

Global site tag (gtag.js) - Google Analytics