您的位置:首页 > 运维架构 > Linux

GNU/Linux 开发环境 (2)

2010-05-30 10:42 387 查看
 

继续谈谈其它语言的开发。

 

3.2) 动态语言

 

这里指的是包括脚本语言,解释型语言在内的编程语言,例如Java,Perl,Python,PHP,JavaScript,Ruby,Shell Script,等等。

 

从开发环境角度看,动态语言都有自己的运行环境,而且通常都是跨平台的。因此,编写代码,调试运行则完全可以在自己的环境中完成,只是大多是命令行的方式。Java是个例外,因为它最初是作为系统编程语言设计的,因此有着和C一样的编译过程,只是不需要链接(这也使它有了成为动态语言的可能:-)) 

 

动态语言的IDE也相对多的多,而且很多都是开源的,同时由于支持动态语言相对容易,通用的IDE往往也通过插件(plugin)的方式扩展对动态语言的支持,这也使IDE的选择容易一些:可以选择插件丰富的通用IDE,在这方面,Eclipse有着相当的优势。

 

需要注意的是,这些语言通常都没有专门的UI库,因此常见的UI工具都会有相应的绑定(binding),可是IDE就不一定支持了。Java又是个例外,不过我自己已经不再继续Java的开发了,最近基本没花什么时间在上面。

 

我常常用Shell script 完成一些简单的重复性工作,而Python则被用来作原型(prototype),不过最近一直考虑可以把它作为主要的语言编写应用程序。Javascript会慢慢的在基于Web的应用中起到重要的作用,只是我没时间学习。至于网络服务和服务器端的开发则不是我感兴趣的。

 

这些称之为高级语言的编程语言其实的发展趋势是越来越接近自然语言,可惜的是英语,加上好的资料往往是英语的,学习英语就会成为另一项任务。

 

4) 系统开发和中间件

这个其实是个题外话,因为系统开发和中间件的开发往往是用C/C++完成的,前面的介绍是完全适用的。不过想聊聊一些特殊的的地方。

 

系统组件或中间件常常是由一些程序库和守护进程(daemon)组成的。守护进程开发有一些近似于服务器端的开发,主要是服务的响应,需要注意的是要记住服务的需求是来自不同的进程而且需要认真设计进程间通信的细节比如信号量(semaphere)。在Linux/Unix平台上,管道(pipe),套接字(socke)包括本地(Unix)和TCP/IP套接字,还有消息队列(message queue),内存映射(mmap)和共享內存(shared memory)等等的接口都遵循POSIX标准,同时这也是跨平台的重要保证。

 

程序库的设计则相当不同,因为同一个程序库可以被不同的进程独立的使用,所以要考虑更多的进程安全,同时减少内部线程的使用,特别是全局变量会相当危险,因为同一个全局变量在不同进程中是相互独立的。可以说,好的程序库的设计是比较复杂的。

 

中间件则对应的是一个框架(framework)。其实大多数应用程序都或多或少基于中间件的,也正式由于这个原因,中间件也是应用跨平台的关键。

 

精力有限,先谈这些吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息