开发工具浅谈

原创 2004年02月24日 10:29:00
开发工具的基本功能就是编译功能,连调试功能都不能算是最基本的模块

发展至今,开发工具从原始的汇编工具到非集成方式的开发环境,到字符状态的集成环境,最后是现在的可视化集成环境

主要模块划分成
编译模块、调试模块、库(包括类库和基本函数库)、编辑器

分析中大部分以编译和调试为主,将库分析作为一个独立部分,而编辑器将在最后分析,因为必须等前面所有模块的需求分析完后,才能得到

一个基本的接口表,这个表是编辑器和各模块交互的接口,如此对编辑器分析将能更全面

而所有接口细节将在按视图角度分析各模块后得到


第一部分 基本功能分析

一、编译器分析

编译器 ——将某种指定语言的源代码翻译成某种指定的目标代码,同时检查源码中的静态逻辑是否符合语言定义

基本包含三大块内容:语言选择、错误检查、翻译

编译器从流程看是一个单纯的数据流处理过程,分析源码,查找语法错误,判断正确后,将源码转化成中间代码,进行优化,最后按硬件的要

求转化成目标代码,这就是编译器的基本运转图

基本结构如下:


源码 —— 词法分析 (词定义规则)
|
|—— 语法分析 (语法定义规则)
|
|—— 语义分析 (语义描述规则)
|
|—— 代码优化 (优化规则)
|
|—— 中间代码生成 (转换规则)
|
|—— 目标代码生成 (转换规则)
|
|—— 可执行文件 (代码连接规则)


1、计算机语言分析


每种语言产生时,都说知己是最好的,至少在某方面,实际情况呢,个人认为,在计算机语言发展到现在,还是强调哪个语言适合哪个方面,

本质上是一种商业操作,而非语言自身的问题

主流开发语言,如:

Ada —— 美国政府强推的号语言,但不能被广泛使用

C —— 被广泛使用,但定义不严格

Pascal —— 定义很严格,长期被用于教学,但几乎被淘汰,幸好有了DELPHI才重新恢复了生机

C++ —— 源自C被广泛使用,但和C一样有许多不严格之处

VB —— 门槛较低的语言,在视窗初期,由于开发工具的种类单调,使其获得了广泛的使用

Java —— 产生于商业竞争,做为网络开发工具前景不错,还不适合底层开发

C# —— 新的品种,存在和JAVA等语言严重等同之处,其应用结构不错,发展如何尚待时间来证明一切


1)从发展趋势看语言的特征

语言的发展趋势是差异逐步缩小,各种语言之间的交流接口是人为制造的商业障碍,正在被标准化渐渐消除,语言使用的一些早期约定,如内

存分配方式、参数排列顺序、对象垃圾回收等等,都是于语言本质上无关的内容,是操作系统和编译器之间的约定

语言 —— 是一种表达规则,让使用者方便的按照一定格式描述自己需要表达的逻辑

而现在经过长期的商业宣传后,使多数人产生了如下的误解,如C++就是VC或C++Builder,Pascal就是DELPHI,把语言和一个完整的开发工具等

同了,使得用某种语言必然是用某种开发工具,是一种商品僵化开发人员思想的体现,属于一种比较成功的商业行为,从一定程度上迫使开发

人员跟着商业产品打转,总是忙于各种各样的语言学习中,而主要是学习各种开发工具的使用

语言发展在面向对象分析推广后,除了原本的关键字差异外,在类上使用的符号基本一致,由于开发中类库的大量使用,使得语言侧重点从基

本语句的表达,转向类库设计中,而类库本身是面向对象的产物,无传统语言的痕迹,所以各开发语言工具的类库相似就不足为奇了
而最近出现的C#,第一眼看上去就是JAVA或DELPHI,和C/C++的形象相差很大了,以明显的方式告诉世人语言的未来是一致的

2)对语言的一些分工考察

早期的语言诞生是为了一些特定的目的,如BASIC是一种解释语言,但语言发展至今,还要说语言分工的话,就是一种商业行为了
BASIC至今仍旧是一种解释型语言,而它一度被广泛使用,原因就是VC较难用或者是使用方式不友好,而当时能竞争一下的BC没能跟上时代,而

被淘汰了,使得VC那种格式保留至今而未有改变,个人认为那是一种严重限制自由的风格

就象当年说的,VB做界面和数据库、VC做底层,说白了是微软的一种商业策略,而和语言自身无关

其实对一般用户来说,是解释还是编译的本质差别根本就不用考虑,他们考虑的是问题的结果,就是是否能得到一个速度满意的可执行文件,

而解释型语言现在也形成了可执行文件了,还不断提高效率,从结果上说和编译型没差别,中间的实现过程和语言无关的,因为并没有法律规

定BASIC就必须是解释型的,同样的代码是以解释方式还是编译方式对语言本身是没有区别的,纯粹是一种商业运作

毕竟市场是垄断的,开发者这样规定了,使用者就只能只能这样认为了

正因为如此,和VB的特点很象的DELPHI和C++builder侧重于可视化编程的工具一出现,就获得很好的口碑,不过奇怪的是C++Builder在市场上

若隐若现,一直来推广不利,这与DELPHI的流行形成强对比,因为两者本质上是一个界面和一个类库及函数库,差别仅在于关键字的叫法不同

,或许是不愿意和微软VC过于正面冲突,采取了低姿态

3)近来语言的发展
从DELPHI、C++Builder和Kylix可以看出Borland正是充分地利用了语言无差别性,轻松的扩展其产品线,而能保证他们地统一界面,基本一致

的类库,和一样的调试方式,可以看出它的良苦用心,以传统语言方式和微软抗衡

而微软的以C#核心的.NET计划,同样是试图统一开发平台的计划,只是它建立在新语言上,这本身是一种风险,幸好微软的实力大,有强制推

广新语言的能力,而且它是以一种语言为根基,从中间代码上下功夫,以的中间代码转化方式来适应各种硬件平台,实质和GCC能适应各种平台

的本质是一样的(是否算抄袭呢)

Java经历了跨世纪的发展,到现在已经成为一种标准,面对微软C#的挑战,加上编译形式限制了速度,可以说今后的路难走,毕竟模仿它的新

语言还会出现,而Java由于兼容性,必然会越来越显老化,看其自身变化是否能跟上时代了
这也是传统语言共同面对的问题,不进则退

总结:
1)语言趋向一致
2)开发新语言成本与风险高,周期太长
结论:

1)不开发新的语言种类
2)改变编译器的结构,使其不再受限制于特定语言

采用统一界面,以界面不变微基础,吸收各种语言形式,做到以不变应万变,再好的语言都能直接使用,省去推广新语言的风险,比较适合国

内的形式,而单纯的算法突破不足以改变现有编译结构,除非编译理论有重大突破,即使真的这样了,也只需要改变编译器的前半部分的功能

,毕竟所产生的目标代码还是机器代码,而后半部分的大改变是要计算机结构有本质变化时才可能,而那也只是改变编译器的后一半,与语言

本身是无关的

所以重点放在编译器的结构上

游戏开发工具浅谈

 业界标准的游戏制作团队包括设计师(策划)、艺术家(美术)、架构师(程序)三部分,同时也要加上QC(测试)小组以保证迭代开发中的快速验证、除bug与模块稳健度。那么这次就主要介绍各个工作岗位的开发人员...
  • changbaohua
  • changbaohua
  • 2009年02月03日 16:57
  • 768

浅谈人工智能

历史      各个文明中都有杰出的工匠发明了自动机器来代替人类劳动,早在春秋时期鲁班就发明了世界上第一个机器人,可在空中飞翔‘三日不下’;三国时期蜀汉的诸葛亮发明了‘木牛流马’来运送战备物资,称得上...
  • oba_gaga
  • oba_gaga
  • 2016年10月09日 20:57
  • 4221

小白学《神经网络与深度学习》笔记之一-计算机的潜意识:浅谈神经网络-从神经元到深度学习

转载:http://www.cnblogs.com/subconscious/p/5058741.html 神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向--深度学习的基础。学习神经网...
  • yingwei13mei
  • yingwei13mei
  • 2016年12月15日 21:35
  • 513

软件工程之浅谈

      发展至今,软件生产的发展经过了程序设计、程序系统、软件工程三个阶段;其中软件工程研究的主要内容是软件开发技术和软件开发管理两个方面。在软件开发技术方面,主要是研究软件开发方法、软件开发过程...
  • sunny19890816
  • sunny19890816
  • 2010年07月01日 23:18
  • 310

浅谈人工智能:现状、任务、构架与统一 | 正本清源

朱松纯   加州大学洛杉矶分校UCLA 统计学和计算机科学教授 视觉、认知、学习与自主机器人中心主任 VCLA@UCLA   2017年11月02日 刊登于 《视觉求索》微信公众号 目...
  • x32sky
  • x32sky
  • 2017年11月03日 17:37
  • 1678

林建:计算机专业学习浅谈

一、广泛了解,从科普书籍开始 选择计算机专业的同学,也许是因为原先有一定的基础,也许是因为一时的激情,但更多的人,可能对自己的选择没有深刻的认识,或多或少对计算机专 业有一些神秘的感觉。自己究竟...
  • yang_yulei
  • yang_yulei
  • 2014年10月13日 23:19
  • 1003

nodejs开发入门——开发工具介绍

JavaScript是一门非常优秀而又简单易学的语言,首先JavaScript是作为一门脚本语言存在的,目前已经可以用来成熟的编写后台。该篇博客将首先来介绍开发nodejs中使用的开发工具。IDE  ...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2017年01月31日 19:08
  • 4359

浅谈JavaScript中创建对象的几种方式

js中没有类的概念,那么怎么创建对象呢?下面一一来细说! 1、创建Object的实例 var person = new Object(); person.name = "Alice"; person...
  • zhouziyu2011
  • zhouziyu2011
  • 2016年10月14日 09:05
  • 263

JavaScript开发工具

0. MicroJS 需要够快的代码吗? MicroJS是一个全新的网站,旨在提供常用的JavaScript代码片段:AJAX、JSON、DOM,OO JavaScript等等。 ...
  • qbg19881206
  • qbg19881206
  • 2013年07月21日 10:10
  • 1266

浅谈在XXX公司的职业经历

个人职业经历的分享
  • lcy4599
  • lcy4599
  • 2017年08月26日 21:10
  • 296
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开发工具浅谈
举报原因:
原因补充:

(最多只允许输入30个字)