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标准,同时这也是跨平台的重要保证。
程序库的设计则相当不同,因为同一个程序库可以被不同的进程独立的使用,所以要考虑更多的进程安全,同时减少内部线程的使用,特别是全局变量会相当危险,因为同一个全局变量在不同进程
相关文档:
2009 年 4 月 23 日
本文中我们针对 Linux 上多线程编程的主要特性总结出 5 条经验,用以改善 Linux 多线程编程的习惯和避免其中的开发陷阱。在本文中,我们穿插一些 Windows 的编程用例用以对比 Linux 特性,以加深读者印象。
背景
Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微 ......
由于 Linux 良好的用户权限管理体系,病毒往往是 Linux 系统管理员最后才需要考虑的问题。以往,Linux 上的杀毒软件主要是为企业的邮件和文件服务器所设计的。如今,随着 Linux 桌面用户数量的增长,桌面用户在受益于 Linux 系统对病毒较强的天然免疫力的同时,也需要杀毒软件清理从网络或U盘带来的WIndows病毒。尽管那些 ......
1.检查系统是否有open-jdk
[root@localhost Alex] rpm -qa | grep java
tzdata-java-2010c-1.fc12.noarch
java_cup-0.11a-1.fc12.noarch
java-1.5.0-gcj-1.5.0.0-29.fc12.i686
java-1.6.0-openjdk-1.6.0.0-33.b16.fc12.i686
java-1.6.0-openjdk-plugin-1.6.0.0-33.b16.fc12.i686
2.删除open-jdk
[root@localhost Al ......
Linux 内核启动分析
1. 内核启动地址
1.1. 名词解释
ZTEXTADDR
解压代码运行的开始地址。没有物理地址和虚拟地址之分,因为此时MMU处于关闭状态。这个地址不一定时RAM的地址,可以是支持读写寻址的flash等存储中介。
Start address of decompressor. here's no point ......
一、准备工作
首先说明,下面带#号的行都是要输入的命令行,且本文提到的所有命令行都在终端里输入。启动Linux系统,并用根用户登录,进入终端模式下。
1、查看Linux内核版本
# uname -a
如果屏幕显示的是2.6.x,说明你的已经是2.6的内核,也用不着看下文了,该干什么干什么去吧!~~~如果显示的是2.4.x,那恭喜你,闯关 ......