计算机语言知识结构
手头有一大摊书和资料,必须清理一下大脑了。给每本书分一下级,发现每种语言要讲的东西抽象出来都差不多,索性也理出个知识结构来,便于查阅和对比。总共分了六层,层数越高知识难度越大。在每一层,我只是简单地堆积些关键词。其中,每一个关键词里面都包含了丰富和有深度的内容,值得研究研究。
有一些关键词所在的位置也表达了一些我的想法,比如在最顶层的性能调优,牵涉的知识面最广,硬盘IO、网络状况、虚拟机设置、源码编写、软件布署…都可能出现问题。事实证明,这一方面的人才也最短缺和迫切。
在第5层Framework中的J2EE,我更愿意把它看做是一种框架。除了一些超大型银行和企业会用到J2EE高级特性,一般的应用都是用的Hibernate甚至是自行编写的数据持久层,它们发挥的都是相类似的作用。
把IDE放在第4层,也有我的道理。选用一个合适的IDE、合适的插件、工具集成的一起,整个项目组能在这个基础上顺利地进行合作开发,也是很需要深入研究的课题。在一个不成熟的项目组里,如果IDE不断换来换去,或是存在某种致命的缺陷,很容易导致项目的延误。我这里所说的IDE不仅是指Eclipse、Visual Studio这些,还有开发用数据库、代码历史管理工具、代码Review工具、用例测试工具、log日志分析工具、部署工具、项目管理工具等等。
第3层Extension除了考验程序员的知识全面性,也更多反映了某种语言的扩展能力,拥有很强扩展能力的语言也往往越流行。当然,在这一方面更多时候我们只需要在身边放一本参考指南:)
- VM, compiler
- Performance Tuning
——————————————————————————————
5th, High Level: - Algorithms
- DesignPattern(Singleton, Observer, Producer, Consumer, Adapter, MVC, Command, Strategy, Composite)
- Framework(J2EE,Struts,Spring,Hibernate,Zend,CakePHP…)
——————————————————————————————
4th, IDE: - debug
- unittest
- team
- SCM
——————————————————————————————
3rd, Extension: - Log
- Error handle
- Math
- RE
- IO(Stream, Serializing, Buffer, Channel, Compression) -> Filesystem
- Network(Socket,Mail,FTP, News, LDAP)
- MultiMedia(Image,Sound,Movie)
- Serial,Parallel
- GUI(AWT,Swing,2D,3D)
- Internationalization, Localization
- Database(Connection, Query, Result, RowSet, Transaction)
- XML(DOM, SAX, DTD, XPath, XInclude, Validate, XSL/XSLT, WebService[RPC,SOAP], Data Binding, XLink, XPointer, Schema)
- Distributed(RMI)
- Thread(Safe, Priority, Synchrony,Notification, Atomic, ThreadGroup, ThreadPool, Time)
- Invoke Other Language/Native
- CGI(WebServer, AppServer, Cookie, Session, Embed, Authentication, Request, Response, Header, Tag, MVC, ORM, Template)
- Security(Encryption,Decryption,SSL,GPG)
——————————————————————————————
2nd, Feature: - DataStructure(list,map,stack,iterator,tree, queue, vector, dictionary, table, bitset, properties, Enum)
- OO(Polymorphism, Override, Inheritance, Clone) (instanceof, compare, serialize, toString) (Nested, Member, Method, Constructor, Destructor, Finalize, This, Instance, Static, Abstract, Interface, Casting, Final, Anonymous, Reflection, Generics)
——————————————————————————————
1st, Syntax: - Variable
- Operator
- Keyword
- Datatype(number,boolean, character, array,date,string)
- Control Flow(if else, while for, break, continue, case, return, assert)
- Comment, Doc(Annotation)
- Function(Reuse)
- import, include
6th, Top:
