GNU/Linux 开发环境 (2)
继续谈谈其它语言的开发。
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标准,同时这也是跨平台的重要保证。
程序库的设计则相当不同,因为同一个程序库可以被不同的进程独立的使用,所以要考虑更多的进程安全,同时减少内部线程的使用,特别是全局变量会相当危险,因为同一个全局变量在不同进程
相关文档:
前 言
随着各种便携嵌入式设备性能的日益提高,功能日益丰富,其电源紧张的问题也日益突出,国内新推出的某些具有PDA等多种功能的智能电话在密集使用下只能维持半天,多数摄像机
和数码相机
在
一次充电后都只有一个小时左右的累积工作时间。Linux作为一个开放源代码的操作系统,拥有非常丰富的软件 ......
Linux 内核启动分析
1. 内核启动地址
1.1. 名词解释
ZTEXTADDR
解压代码运行的开始地址。没有物理地址和虚拟地址之分,因为此时MMU处于关闭状态。这个地址不一定时RAM的地址,可以是支持读写寻址的flash等存储中介。
Start address of decompressor. here's no point ......
Linux 2.6内核的一个重要特色是提供了统一的内核设备模型。随着技术的不断进步,系统的拓扑结构越来越复杂,对智能电源管理、热插拔以及plug and play的支持要求也越来越高,2.4内核已经难以满足这些需求。为适应这种形势的需要,2.6内核开发了全新的设备模型。
2.6 ......
原文网址: http://www.dbanotes.net/arch/unix_linux_load.html
几乎每个接触类 Unix 操作系统的工程师都知道如何查看系统负载。但这东西的工作机理到底是怎样的,可能没有多少能说清楚。对比了一些相关信息,加上自己的理解,做一下笔记。
什么是 Load ? 什么是 Load Average ......