编程语言的异同及选择

putongren 2003-08-28 01:04:39
我对编程语言的异同及选择形成一些简单认识,写出来大家一块说说。

一、各种语言编程的共同点

1. 基本单位都是函数

绝大多数语言的基本单位都是函数。运行环境提供给我们的是函数入口,我们编程序时写的主要内容也是函数。
运行时,我们编写的程序内的函数或者直接调用操作系统的函数,或调用组件的接口内的函数,或调用虚拟机的函数,或调用运行环境的其他函数。

2. 函数内算法的实现差别不大

真正的价值是函数实现的算法(这里把功能或业务流程的实现也都算做算法)。单就一个函数内(或几个相关的函数)的算法实现的程序流程(注意不是功能业务流程)来看,各种语言间的差别不是很大。

二、各种语言的不同点

1. 运行环境的函数接口不同

这一点不用多说了。词法、语法的差别也不用说了。

2. 函数的组织方法不同

在传统的汇编、C、Basic、Pascal、Script等等语言中,函数是独立的,可以以代码文件或模块文件进行组织管理。

在OOP的C++、Java、C#等等语言中,函数组织成类或组件,以类或组件的形式进行组织管理。

3. 函数的规划设计方法不同

非OOP的项目中函数的规划设计完全没有统一模式,根据实际情况变化非常大。

OOP的项目中的函数规划设计以类为基本设计单位,确定了类之后再确定函数。现在已经有很多理论与工具来支持以类为基本单位的设计。

4. 函数的积累沉淀与重复利用

程序员、开发团队、软件公司在运行多年后,非OOP的函数积累成函数库,OOP的函数积累成类库或组件库。
非OOP的函数库内的函数可能部分依赖于OOP的函数库,反之亦然。

5. 函数的实现的编码、测试工作量

不管用那种语言,如果没有特别的运行环境函数支持或类库支持或组件支持的话,每个函数的编码与测试工作量没太大差别——前提是针对熟手,例如写一个特定的排序函数,汇编与 VB 的工作量差别不大。

但实际上针对不同的语言,运行环境提供的支持是不同的。

三、选择编程语言时的考虑

1. 操作系统或虚拟机的选择

操作系统或虚拟机的 API(包括越来越多的组件)非常重要的,这是基础,选择时最重要的考虑因素。

Linux 的优势在于源码公开。Java 的跨平台是指跨操作系统,不是跨虚拟机——说实话本人不知道有多少厂家实现了多少种 Java 的虚拟机,并且它们的 API 的定义是完全相同的。

2. 编程语言的运行环境的选择

一种编程语言可能有若干种开发、运行环境支持。打个比方,Basic 语言有 QBasic、VB6、VB.Net 等。开发、运行环境的支持也是非常重要的,它很可能提供了操作系统或虚拟机之上的更多的函数(如Delphi),同时也规定了词法与语法。

编程语言的运行环境的长期生命力也是很重要的。

编程语言的跨平台只能说是在不同的操作系统的上的开发、运行环境的函数保证一样,但不能保证操作系统的API一样——除非不调用操作系统的API。

3. 文档是否详细、源代码是否丰富

没有好的文档,再好的基础 API(或类库、组件)我们都找不见。
源代码是指 API 应用的源代码。没有丰富的源代码,再好的基础 API(或类库、组件)我们都不会用。
其实某种语言发展多年之后,几乎所有的 API(或类库、组件)的应用的源代码都可以搜索到,我们抄过来改一改就是了。

抄不来的是复杂算法(包括功能或业务流程)的源代码——抄过来我们也看不懂,更不敢简单改一下就卖给客户。

4. 第三方函数库、类库或组件库是否丰富

在操作系统或虚拟机的 API 之外,在开发、运行环境的 API(包括类或组件) 之外,还有多少已经写好的函数我们可以使用。但是实际上,对第三方的 API 的学习、适应、使用的工作量很大,风险非常高,所以这一条不用太重视。

5. 语法与词法的选择

在考虑了上述的因素后,我的做法是最后考虑词法与语法。原因很简单,我懒。哪个语言的 API 多、词法及语法简单,我就用哪个——我说的是给老板给客户干活。如果是我有一段时间突然对某一个语言或技术有了兴趣而要自学一把,那另当别论。

我也见过有的人对某种语法有狂热的爱好,就像老夫子们出口必之乎者也,我觉得也挺让人佩服的。任何一种语言学精了用烂了都很了不起,贵在恒心。

6. 必须要会的语言

SQL 不用多说。在现在这个年代,Javascript + HTML 好像也必须学。
...全文
24 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohyy 2003-09-11
  • 打赏
  • 举报
回复
hehe
putongren 2003-09-11
  • 打赏
  • 举报
回复
自己up
思危 2003-09-11
  • 打赏
  • 举报
回复
数据库用delphi
putongren 2003-09-06
  • 打赏
  • 举报
回复
自己up
putongren 2003-09-01
  • 打赏
  • 举报
回复
自己up
wangjidh 2003-08-30
  • 打赏
  • 举报
回复
程序都是那样执行的,问题是执行方法不一样,嘿
没见过倒着执行的
紫郢剑侠 2003-08-30
  • 打赏
  • 举报
回复
I like C/C++ & ASM.
putongren 2003-08-30
  • 打赏
  • 举报
回复
自己up
poplv 2003-08-29
  • 打赏
  • 举报
回复
哦.
wj59 2003-08-29
  • 打赏
  • 举报
回复
mark
__________________ 2003-08-29
  • 打赏
  • 举报
回复
c++类中成员变量是变量,类没有属性,很不方便!(最近遇到该问题。内部数据要求只读,只能再写一大堆get之类的函数
dhyuser10 2003-08-29
  • 打赏
  • 举报
回复
i like vc!
putongren 2003-08-29
  • 打赏
  • 举报
回复
自己up
gzshd 2003-08-28
  • 打赏
  • 举报
回复
C\C++,就这点看家本领
rockersz 2003-08-28
  • 打赏
  • 举报
回复
我喜欢C++,喜欢就是选择

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧