目录
  1. 1. 后端
    1. 1.1. Java
    2. 1.2. Python
    3. 1.3. Ruby
    4. 1.4. Nodejs
    5. 1.5. PHP
    6. 1.6. 脚本
  2. 2. 前端
    1. 2.1. Extjs/Dojo
    2. 2.2. jQuery
    3. 2.3. bootstrap
    4. 2.4. angularjs1/2
    5. 2.5. ionic1/2
    6. 2.6. vuejs1/2
    7. 2.7. reactjs/react-native
    8. 2.8. grunt, gulp
    9. 2.9. seajs/requirejs -> browserify/webpack

软件开发语言,体现的是作者软件开发及设计的思想。开发语言派系林立,但是又都自成体系。

语言有很多层次分类,以下仅从前后端角度列举我常用的语言或者框架.

后端

Java

Java是个老兵,但也不断的在冒新芽。强大的工业级开源社区保证了Java体系的健壮,诞生了一大批优良的框架,如Spring, Hadoop。

我经历的项目大概70%以上都有Java的参与。

Java语言在传统后端语言中算是入门比较简单,开发比较省事的类型。但是其强大的虚拟机同时也是资源消耗大户,对于小型、快速开发类型的项目并不一定合适,

Python

Python是门相当强大的小众语言,其支持命令式、面向对象、函数式编程的特点使其应用相当广泛。

Python很多情况可代替shell脚本,自动运维方面不少开源框架都是Python写的。

正式因为以上原因,我主要用Python来做些脚本化程序,如抓数据、做自动化打包、自动化发布、服务器初始化等。

Ruby

Ruby和Python地位类似,但是更强调OOP。著名的Ruby on Rails框架影响了一大批后来者。

由于很多开源Web软件都是Ruby写的,如gitlab,所以搞懂Ruby对这些软件的使用大有裨益。

Nodejs

把JS这种原本设计简陋的前端语言用在后端,之前是没人敢想的事情。然而Chrome的V8引擎出来后有人想到了这个事情,而且效果出人意料。

后端的Nodejs默认还是单进程单线程的事件处理机制,但是类似Nginx的事件机制,处理效率相当高。

目前的Nodejs社区比很多年前的Java社区还要热,不管是前段后端,甚至完全没有经验的人都可以参与进去,发布自已的node组件。

同时Nodejs改变了前几年的发展缓慢做法,新特性、标准的不断引入让其有了更强大的底气。

我用Nodejs写过好几个中小项目,做API服务、渲染网页等。Promise、Generator等异步编程方式的引入让异步代码书写友好很多。

PHP

提到PHP,大概很多人想到的就是WordPress等一众写博客、开网站的开源软件。

虽然多进程模型让PHP处理高并发并不像其他后端语言那么高效,但是对于一般中小网站服务这种场景确实足够了。

当然,像facebook那种从头写个PHP虚拟机来提升PHP能力的案例也有,但并不具有普遍性。

我用PHP也是因为公司用到了一款OC电商软件,甚至最后重写来提升其不足之处。

PHP优点很明显,缺点也很明显。不过没必要太较真,取其精华,去其糟粕就可以了。

脚本

常用的脚本有windows的批处理脚本和linux的shell脚本。

相对来说,shell脚本要强大的多,也是我的最爱。

当然,其实服务端运维、自动化处理等很多场景是必须要编写shell脚本的,所以不爱也不行 ㄟ( ▔, ▔ )ㄏ

前端

Extjs/Dojo

Extjs和Dojo都是很强大的前端JS组件库,适合重逻辑、交互的后台系统。

Extjs是我最早接触的前端JS框架,并用其实现了几个强大的后台管理系统。其组件化、OOP思想在那时候还是比较有特色的。

jQuery

jQuery追求简单高效解决问题。链式写法,统一的作用域,方便的插件书写机制等,无不透露出其设计思想。

由于以上原因,jQuery在前端社区中相当普及。各种开源小插件基本能满足绝大部分网站开发需求。

当然,也是由于jQuery的入门简单,包括插件机制其实也比较简陋,所以容易造成各个插件产生冲突。

bootstrap

前端的UI库相当多,bootstrap是其中的典型代表之一。是快速构原型网站的绝佳库。

angularjs1/2

虽然作为实验项目启动,但是angularjs 1的设计思想确实影响了一堆前端框架。双向绑定相比jQuery等的dom查询、修改做法绝对能实现指数级的效率提升。

但是angularjs1的基础设计造成了其性能一直有问题。

于是angular团队提出了angularjs2的开发计划,优先考虑性能问题,拥抱最新js标准(支持es6/TypeScript),通过webpack高效合并压缩,并解决浏览器兼容性问题。

虽然angular2不兼容angular1,可能导致之前在angular1上的投资打水漂,但是新框架的高起点、高标准肯定会给后续的采用者带来较长期的红利。

ionic1/2

ionic是基于angular基础上开发的移动端UI框架。由于完全采用原生语言开发APP成本高昂,以ionic为代表的高质量框架很瘦欢迎。

ionic2在迁移到angular2上后,配以全新的ionic-native插件生态,以一个更强大的姿态展现给了开发者。

vuejs1/2

vuejs可以看做国内的angularjs/reactjs,其设计思想也基本参考这些国外流行框架。

可能因为是国人打造的,而且质量也不错,所以目前国内还蛮流行。

reactjs/react-native

reactjs推出堪称里程碑式的事件。虚拟dom这种设计真的是很天才。

reactjs作为性能优先的前端框架,加上没有造太多概念,而是拥抱js标准,所以入门很快,目前使用的个人和公司都很多。

react-native是虚拟dom设计之后自然延伸到原生APP开发的产物。

只写JS,但是拥有媲美原生开发的性能,相当美好。

grunt, gulp

两个流行的前端构建工具,可以写自动化的前端处理流程,如压缩,编译less、sass等。

gulp相比grunt,使用了管道的概念来更方便的组织任务流,相对更易编程实现。

seajs/requirejs -> browserify/webpack

seajs/requirejs是前一代前端代码模块化的工具。其CMD/AMD依赖声明方式可以很有效的理清前端模块逻辑。

browserify/webpack的出现带来了更智能的方案,可以实现代码预编译,正式环境只用跑处理过的压缩代码,可以运行得更快更兼容。webpack相对于browserify,可以更好的使用nodejs的资源和规范统一前后端。