首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序设计语言分类/分类

程序设计语言分类/分类
EN

Software Engineering用户
提问于 2013-01-17 10:37:22
回答 1查看 7.2K关注 0票数 4

是否有严格的方法对编程语言进行分类?

如果是这样的话,能否量化各种“维度”?(纯度)

例如,我刚刚访问了遮荫语言网站(我根本不附属于它),并看到:

  • “半功能”->,但该语言的半功能需要多少?->量化需要多少?
  • “全类型检查”->所以类型检查可以是部分->也可以量化吗?
  • 对象模型/无对象模型..。
EN

回答 1

Software Engineering用户

发布于 2013-01-17 13:26:09

你可以在这里找到很多信息:

http://en.wikipedia.org/wiki/Programming_语言

http://en.wikipedia.org/wiki/Comparison_的_编程_语言

我不打算在这里重写维基百科,只是简单的解释一下,这样你就能更好地理解维基百科的文章想说什么。

一件事是程序是如何构造的。有时它是关于程序员的风格,但编程语言或库可以使样式变得更容易、更难或不可能。可以在同一程序中使用多个样式。

  • 命令式编程--“先做这个,然后做这个,然后再做那个”。你总是写下接下来应该发生的事情。即使有更多的选择,例如基于用户的输入,总是这样:当你想问的时候询问输入,然后根据你收到的答案选择接下来会发生什么。这种编程风格对于简短的非交互式程序是很好的,但是对于大型程序来说,它的阅读和维护变得非常困难。这也是计算机在硬件级别上的工作方式(所有其他编程语言都必须编译或解释到这一点),因此这是许多编程语言所使用的。
  • 基于事件的编程--你不是在做整个程序,而是它的一部分,它必须符合给定的框架。框架告诉您“现在发生了”,您应该对事件做出反应。你不能决定以后会发生什么。当需要您的反应时,框架会调用您,而您只会对此作出反应。(例如,如果你制作一个电脑游戏,你会对“游戏开始”、“鼠标点击”、“按下键”、“屏幕需要显示”和“游戏退出”事件做出反应。例如,您可以记住宇宙飞船的坐标;按下键的反应是改变坐标,对屏幕需要显示的反应是在当前坐标上绘制宇宙飞船。)
  • 面向对象的编程--你把程序分成许多较小的部分,你分别描述每个部分;从内部:它包含什么数据,从外部:它能做什么动作。(例如,你的目标飞船有数据:x坐标,y坐标,生命数。它可以:向上移动,向下移动,向左移动,向右移动,返回生命的数量,删除一个生命。)重要的是多态,这意味着多个对象可以具有相同的接口,即可以执行相同的操作。(例如,宇宙飞船、导弹和小行星都有坐标,可以在屏幕上作画。)所以程序的一部分可以用一种独特的方式来对待所有的人。(例如,重力场可以影响所有MovableObjects的坐标,而不必知道它们的细节。)
  • 面向方面的编程--另一种将程序分割成较小的部分的方法,但这一次,这些部分代表了程序的功能。(对不起,我对这件事不太了解。)
  • 函数式程序设计--最自然的数学计算方法。定义"f(x)“和"g(x,y)”是什么意思,然后请程序计算"g(f(3),f(5))“。每个函数只依赖于它的输入数据,没有其他的;例如,函数"f(x)“只能使用"x”的值,因此,如果您两次调用"f(7)“,则得到相同的结果。此外,函数"f(x)“不能修改"x”的值。如果您想要制作一个数据随时间变化的程序,您必须以某种方式将时间或其他事件作为函数的参数。(例如,宇宙飞船在时间T+1中的位置可以描述为飞船在时间T中的位置和键盘按钮的状态。)这些限制使避免出现错误和使并发编程(多个处理器,甚至计算机运行同一程序的部分)变得容易得多。

另一件事是如何使用数据。您是只使用函数的输入和输出值,还是也可以将这些值存储在访问它们的变量中?如果指定了一个值,以后可以更改它吗?如果你有多种类型的数据(例如文本、数字、坐标、宇宙飞船描述),那么任何类型的数据都能传递给任何类型的变量吗?或者你是否必须指定哪个变量包含哪种数据?--通常,你在这里的自由度越大,你就越有机会制造错误。

但我想,要完全理解这一点,就必须熟悉几种代表各种风格的编程语言,了解每种语言的优缺点,以及每种语言如何设法克服其特定的问题。有些语言给你更多的选择。(例如,在Java中,您可以编写命令式、基于事件的、面向对象的、甚至是类型的函数程序。语言本身是面向对象的,一些对象使用事件,没有什么可以阻止您将所有代码放在一个函数中。如果您使用不可变对象并避免副作用,则可以获得函数式编程的一些优势。)

票数 4
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/183933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档