为什么会有这么多种程序设计语言
- 格式:docx
- 大小:227.25 KB
- 文档页数:6
为什么会有那么多编程语言?不能统一成一种吗
有很多编程语言的存在是由于不同的需求、应用场景和设计哲学。
每种编程语言都有其独特的优势和适用范围,因此它们被开发和采用来解决特定类型的问题。
以下是一些导致多样性的原因:
1. 用途多样性:不同的编程语言适用于不同的应用领域。
例如,C和C++通常用于系统级编程,Java常用于大型企业应用,Python适用于科学计算、数据分析和人工智能等。
每种语言都有其擅长的领域,因此没有一种语言可以完美适应所有需求。
2. 设计哲学:编程语言的设计哲学和范式差异很大。
一些语言注重性能和底层控制,而其他语言则注重可读性和开发效率。
例如,函数式编程语言强调不可变性和纯函数,而面向对象编程语言则关注对象的状态和行为。
这些不同的设计原则导致了语言之间的差异。
3. 历史和遗产:一些编程语言是为了满足特定时期或特定需求而创建的。
随着时间的推移,这些语言可能发展出更多的变体和衍生版本。
旧的编程语言仍然被使用,因为它们在一些领域仍然非常有效。
4. 创新和实验:编程社区不断创新,试图提出新的概念和技术来解决不断变化的问题。
新的编程语言可能是为了试验新的理念、范式或方法而创建的。
一些语言可能会在某些领域表现出色,促使开发人员继续尝试和采用它们。
尽管有一些通用的编程语言,如C、Java和Python,但在不同的情境下,不同的语言仍然具有独特的优势。
统一成一种编程语言可能会削弱适用性,降低开发效率,因此,多样性在编程语言领域是合理存在的。
编程语言是一种表达工具,包含了两个方面:向其他程序员表达想法,这样别人就可以了解你写的代码,并一起参与代码维护。
把你的想法传达给计算机(通过编译器或者解释器),让计算机执行你的指令。
所以,代码实际上就是你传达给人类和计算机的“消息”。
这也是在设计和实现编程语言时需要考虑的权衡点。
因为:硬件和计算机语言在发展演化。
一般来说,编程语言应该越来越容易使用,在表达想法方面越来越强大。
随着计算机应用越来越广泛,越来越多的领域需要使用计算机,于是不同的编程语言被发明出来,用于解决不同领域的问题。
不同的编程语言代表了不同的思维风格。
不同的编程语言有不同的语法和特性,但它们都是图灵完备的。
通俗地说就是:所有的编程语言都可以用来实现任意一种算法。
当然,你不需要学会所有的编程语言,但学会的编程语言越多,就越容易为要完成的任务选择合适的语言。
编程语言基础几乎所有的编程语言都包含了几类元素,它们都与“抽象”有关:数据类型和数据抽象;控制流程和控制抽象;底层抽象;对特定领域的补充和抽象。
编程语言有很多公共特性,因此,我们能够学会所有编程语言的主要原因是:编程语言的概念其实是很有限的。
编程语言的概念基本上是不怎么变的,就像设计原则一样。
编程语言的作者们相互借鉴想法,只是实现不一样罢了。
有时候,我们可以说语言C 是语言A 和B 的儿子,那么整个编程语言的家谱可能像这样:理解好这些概念,不仅可以帮你快速学会编程语言,还会让你写出更好的代码。
例如,函数式编程语言和过程式编程语言的代码风格和抽象方式是非常不一样的,如果没有领会到它的重点,可能就写不好代码。
PLC 常用程序设计语言简介可编程控制器程序设计语言:在可编程控制器中有多种程序设计语言, 它们是梯形图语言、布尔助记符语言、功能表图语言、功能模块图语言及结构化语句描述语言等。
梯形图语言和布尔助记符语言是根本程序设计语言,它平时由一系列指令组成,用这些指令可以完成大多数简单的控制功能,比方,代替继电器、计数器、计时器完成序次控制和逻辑控制等,经过扩展或增强指令集,它们也能执行其他的根本操作。
功能表图语言和语句描述语言是高级的程序设计语言,它可依照需要去执行更有效的操作,比方,模拟量的控制,数据的控制,报表的报印和其他根本程序设计语言无法完成的功能。
功能模块图语言采用功能模块图的形式,经过软连接的方式完成所要求的控制功能,它不但在可编程序控制器中获取了广泛的应用,在集散控制系统的编程和组态时也常常被采用,由于它拥有连接方便、操作简单、易于掌握等特点,为广阔工程设计和应用人员所喜爱。
依照可编程器应用范围,程序设计语言可以组合使用,常用的程序设计语言是:梯形图程序设计语言布尔助记符程序设计语言〔语句表〕功能表图程序设计语言功能模块图程序设计语言结构化语句描述程序设计语言梯形图与结构化语句描述程序设计语言布尔助记符与功能表图程序设计语言布尔助记符与结构化语句描述程序设计语言1、梯形图〔 Ladder Diagram 〕程序设计语言梯形图程序设计语言是用梯形图的图形符号来描述程序的一种程序设计语言。
采用梯形图程序设计语言,程序采用梯形图的形式描述。
这种程序设计语言采用因果关系来描述事件发生的条件和结果。
每个梯级是一个因果关系。
在梯级中,描述事件发生的条件表示在左面,事件发生的结果表示在后边。
梯形图程序设计语言是最常用的一种程序设计语言。
它本源于继电器逻辑控制系统的描述。
在工业过程控制领域,电气技术人员对继电器逻辑控制技术较为熟悉,因此,由这种逻辑控制技术睁开而来的梯形图碰到了欢送,并获取了广泛的应用。
梯形图程序设计语言的特点是:〔1〕与电气操作原理图相对应,拥有直观性和对应性;〔2〕与原有继电器逻辑控制技术相一致,对电气技术人员来说,易于撑握和学习;〔3〕与原有的继电器逻辑控制技术的不同样点是,梯形图中的能流〔 Power FLow〕不是实质意义的电流,内部的继电器也不是实际存在的继电器,因此,应用时,需与原有继电器逻辑控制技术的有关看法差异对待;〔4〕与布尔助记符程序设计语言有一一对应关系,便于相互的变换和程序的检查。
1.概论自从世界上第一台电子计算机ENIAC于1946年问世以来,伴随着计算机硬件的不断更新换代,计算机程序设计语吉也有了很大的发展.至今已有四代语言问世。
在过去的几十年间,大量的程序设计语言被发明、被取代、被修改或组合在一起。
尽管人们多次试图创造一种通用的程序设计语言,却没有一次尝试是成功的。
程序设计语言正在与现代科技日益飞跃,人类的智慧在日益彰显。
1.机器语言电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础。
计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种语言,就是机器语言。
使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。
而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。
但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。
机器语言,是第一代计算机语言。
2.汇编语言为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“ADD”代表加法,“MOV”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。
然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。
汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。
3.高级语言从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。
程序设计语言的分类及区别程序设计语言是计算机与人进行交互的工具,也是实现计算机程序的一种工具。
根据不同的特点和用途,可以将程序设计语言分为不同的类别。
下面将介绍几种常见的程序设计语言以及它们之间的区别。
一、机器语言机器语言是计算机硬件能够直接识别和执行的语言,它是由0和1组成的二进制代码。
机器语言非常底层,直接操作计算机的硬件。
由于机器语言的编写和阅读都非常困难,所以通常不直接使用机器语言来编写程序。
二、汇编语言汇编语言是机器语言的一个抽象层次,使用助记符来表示机器语言的指令。
汇编语言与机器语言之间存在一一对应的关系,每条汇编语言指令都对应着一条机器语言指令。
相比于机器语言,汇编语言更容易阅读和编写,但仍然需要了解底层的计算机结构。
三、高级语言高级语言是相对于机器语言和汇编语言而言的,它使用更接近人类自然语言的语法和结构。
高级语言可以更方便地编写和阅读程序,提供了更多的抽象和封装,使得程序的开发效率大大提高。
常见的高级语言有C、C++、Java、Python等。
1. C语言C语言是一种通用的高级编程语言,由贝尔实验室的Dennis M. Ritchie在20世纪70年代开发。
C语言具有高效、灵活、可移植等特点,广泛应用于系统软件、嵌入式系统、游戏开发等领域。
C 语言的语法简洁而严谨,可以直接操作内存和硬件,是学习计算机原理和底层编程的重要基础。
2. C++语言C++语言是在C语言的基础上发展起来的一种面向对象的程序设计语言。
C++语言继承了C语言的高效和灵活,同时引入了面向对象的特性,如类、继承、多态等。
C++语言广泛应用于桌面应用程序、游戏开发、图形图像处理等领域,是一种功能强大的编程语言。
3. Java语言Java语言是一种跨平台的高级编程语言,由Sun Microsystems (现在是Oracle)公司于20世纪90年代开发。
Java语言具有简单、面向对象、安全、可移植等特点,被广泛应用于企业级应用、移动应用开发、云计算等领域。
简述程序设计语言的分类随着计算机技术的不断发展,程序设计语言也在不断地发展和演变。
程序设计语言是计算机能够理解和执行的语言,它们可以用来编写各种类型的应用程序和系统软件。
目前,程序设计语言可以分为多种类型,每种类型都有其特点和应用场景。
本文将简要介绍程序设计语言的分类。
一、低级语言低级语言是最早出现的编程语言。
它们是直接面向计算机硬件的语言,与计算机的指令集密切相关。
低级语言通常分为机器语言和汇编语言两种。
1.机器语言机器语言是计算机能够识别和执行的最基本的语言。
它是由二进制代码组成的,每个指令都是由一串0和1的二进制数表示的。
由于机器语言过于繁琐和难以理解,因此很少有人使用它来编写程序。
2.汇编语言汇编语言是机器语言的一种高级表示形式。
它使用助记符来代替二进制代码,使程序员更容易理解和编写程序。
汇编语言通常包含了一些指令和宏定义,可以简化程序的编写和维护工作。
但是,汇编语言仍然比较底层,需要程序员对计算机的硬件结构有较深入的了解。
二、高级语言高级语言是相对于低级语言而言的。
它们是为了让程序员更容易地编写程序而设计的。
高级语言通常使用英语单词和符号来描述程序的逻辑结构和功能。
高级语言可以分为编译型语言和解释型语言两种。
1.编译型语言编译型语言是需要编译器将源代码翻译成机器语言,才能在计算机上运行的语言。
编译型语言的代码通常比较复杂,但是运行速度很快。
C++、Java和Pascal都是编译型语言。
2.解释型语言解释型语言是不需要编译器将源代码翻译成机器语言,而是直接由解释器解释执行的语言。
解释型语言的代码通常比较简单,但是运行速度比编译型语言慢。
Python、Perl和Ruby都是解释型语言。
三、面向对象语言面向对象语言是一种特殊的高级语言,它的基本思想是将程序中的数据和操作封装成对象,使程序更易于理解和维护。
面向对象语言有三个基本特征:封装、继承和多态。
面向对象语言可以分为类语言和原型语言两种。
一、程序设计语言如何分类?你了解哪几种高级程序设计语言?各有什么特点?分类很多,也没有统一的标准。
第一种:分两大类:命令式语言;说明式语言命令式语言有两类:结构化编程语言(C、Basic、Pascal很多)面向对象编程语言(C++、C#、java很多)说明式语言:也称函数式语言(Lisp、javascript很少)第二种:分两大类:静态语言(目前流行的语言大都是);动态语言(可以说是函数式语言)第三种:按语言发展分五大类:机器语言;汇编语言;高级语言;数据库开发语言;图形化程序设计语言;二、概念结构化程序设计(structured programming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。
其概念最早由E.W.Dijikstra在1965年提出的,是软件发展的一个重要的里程碑。
它的主要观点是采用自顶向下、逐步求精及模块化的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。
结构化程序设计主要强调的是程序的易读性。
内容详细描述处理过程常用三种工具:图形、表格和语言。
图形:程序流程图、N-S图、PAD图表格:判定表语言:过程设计语言(PDL)结构化程序设计曾被称为软件发展中的第三个里程碑。
该方法的要点是:(1) 主张使用顺序、选择、循环三种基本结构来嵌套连结成具有复杂层次的“结构化程序”,严格控制GOTO语句的使用。
用这样的方法编出的程序在结构上具有以下效果:a. 以控制结构为单位,只有一个入口,一个出口,所以能独立地理解这一部分。
b. 能够以控制结构为单位,从上到下顺序地阅读程序文本。
c.由于程序的静态描述与执行时的控制流程容易对应,所以能够方便正确地理解程序的动作。
(2)“自顶而下,逐步求精”的设计思想,其出发点是从问题的总体目标开始,抽象低层的细节,先专心构造高层的结构,然后再一层一层地分解和细化。
这使设计者能把握主题,高屋建瓴,避免一开始就陷入复杂的细节中,使复杂的设计过程变得简单明了,过程的结果也容易做到正确可靠。
第一章计算工具1、现代计算机有哪些特点?答案:1.运算速度快、精度高2.具有储存与记忆能力2.具有逻辑判断能力3.自动化程度高2、计算机技术有哪些最基本的特征?答案:1.计算机硬件高速运算的特点2.计算机软件全面渗透的特点3、摩尔定律在计算机产业中引起了哪些效应?答案:1.引发了计算机系统软件规模不断增加、软件功能不断增强的同时,也导致了软件复杂性的增长速度甚至超过了摩尔定律2.引发了半导体工艺危机4、举例说明计算机硬件设备的主要技术指标?答案:1.性能指标2.功能指标3.可靠性指标4.兼容性指标第二章程序语言1、为什么有这么多程序语言?答案:1.计算机应用领域越来越广泛,程序语言需要解决的问题各不相同,但是没有一种程序语言可以姐居然所有问题2.程序语言与它们所要解决问题的领域相关,当问题随着环境而变化时,就需要创造语言来适用它3.编程新手与高手之间的技术差距非常大,许多程序语言对新手来说太抽象难学,但是对编程高手来说又是显得抽象不够4.不同程序语言之间的运行效率和开发成本各不相同2、程序语言有哪些基本数据类型?答案:1.整型2.浮点型(实数)3.字符型4.布尔型(逻辑型)3、简要说明软件周期的6个阶段。
答案:1.问题的定义及规划2.需求分析3.软件设计4.程序编码5.软件测试6.运行维护4、简要说明程序模块化设计的基本原则。
答案:1.把一个较大的程序划分为若干子程序,每一个程序是一个独立模块2.每一个模块又可划分为更小的子模块3.使软件具有一种层次性结构第三章计算思维1、简要说明什么是计算思维。
答案:计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类行为,它涵盖了计算机科学的一系列思维活动2、简要说明计算机解决问题的主要步骤。
答案:1.理解问题,寻找解决问题的条件2.对一些具有连续性质的现实问题,进行离散化处理3.从问题抽象出一个适当的数学模型,然后设计或选择解决这个数学模型的算法4.按照算法编写程序,并且对程序进行调试和测试,最后运行程序,直至得到最终的解答第四章算法基础1、简要说明算法的定义。
简述计算机程序设计语言的分类和各类的特点计算机程序设计语言是计算机能够理解和执行的指令集合,它是人与计算机之间进行信息交流的重要工具。
不同的程序设计语言有不同的特点和用途,根据其特点可以将这些语言分为以下几类:1.机器语言:机器语言是计算机直接能够识别和执行的指令代码,它是由二进制码表示的。
机器语言编程需要了解计算机底层硬件结构,编写工作量大且容易出错,理解困难。
机器语言程序执行效率高,但可读性差,难以维护和移植。
2.汇编语言:汇编语言是机器语言的助记符表示,使用助记符代替了机器语言的二进制码,使得程序的可读性得到提高。
汇编语言是一种低级语言,一条汇编语言指令通常对应于一条机器指令。
汇编语言编写相对简单,但需要了解计算机底层硬件架构。
汇编语言程序执行效率高,适用于对性能要求较高的场景。
3.高级语言:高级语言是相对于机器语言和汇编语言而言的,它采用更接近人类自然语言的形式。
高级语言的程序员更关注算法和逻辑,而非底层硬件。
高级语言屏蔽了底层细节,提供了更高的抽象级别和更易于理解的语法。
高级语言编译成机器语言或解释执行。
根据编译方式和执行方式的不同,高级语言可以分为以下两类:-编译型语言:编译型语言的源代码需要通过编译器转换为目标机器平台的机器代码,生成可执行文件。
在执行时,操作系统直接执行目标代码,无需再次编译。
编译型语言的优点是执行效率高,但需要不同平台编译生成不同的可执行文件。
-解释型语言:解释型语言的源代码在执行时通过解释器一行一行地被解释执行,无需编译成可执行文件。
解释型语言的优点是跨平台,源代码不依赖于特定的硬件或操作系统,可移植性强。
但解释型语言的执行效率相对较低。
根据语言特性和用途的不同,高级语言可以分为以下几类:-面向过程语言:面向过程语言侧重于算法和过程的设计,以过程为基本思维单元。
它强调数据和功能的结合,对数据的处理是通过函数或者函数调用来实现。
面向过程语言的特点是效率较高,可读性强,适用于对执行效率要求较高的场景。
程序设计语言的分类程序设计语言是计算机程序编写和运行的工具,根据不同的特点和用途,可以将其分为多种类型。
本文将介绍主要的程序设计语言分类,并对各个分类进行简要的概述和应用场景的举例。
一、机器语言机器语言是最底层的一种程序设计语言,直接使用二进制代码表示指令和数据。
它与计算机硬件的结构密切相关,能够直接被计算机执行。
机器语言的编写非常繁琐,需要精确地指定操作码和内存地址。
常见的机器语言有汇编语言。
在一些特定场景下,需要直接与硬件进行交互或者进行底层开发时,使用机器语言会更加高效。
例如,嵌入式系统、驱动程序开发等领域常常需要使用机器语言。
二、汇编语言汇编语言是在机器语言的基础上发展起来的,通过使用助记符(mnemonic)来代替二进制代码,使得程序代码更易于理解和编写。
汇编语言与机器语言之间有一一对应的关系,使用汇编语言编写的程序需要通过汇编器进行转换为二进制机器码。
常见的汇编语言有x86汇编、ARM汇编等。
尽管汇编语言相对于机器语言来说已经提供了更高的抽象层次,但仍然需要了解底层硬件的细节,并且编写的代码可读性较低。
汇编语言主要用于编写对性能要求较高、对硬件直接控制的程序。
三、高级语言高级语言是相对于机器语言和汇编语言而言的,提供更高层次的抽象。
高级语言的代码可读性更强,编写更加方便,能够更好地表达算法和逻辑。
高级语言需要通过编译器或解释器将代码转换为机器语言,以便计算机执行。
1. 面向过程的语言面向过程的编程语言将程序看作是一系列的过程或函数,通过顺序执行这些过程实现计算。
代表性的面向过程语言有C和Pascal。
这类语言适用于编写较底层、对性能要求较高的程序。
2. 面向对象的语言面向对象的编程语言将程序看作是一组对象的集合,这些对象拥有自己的状态和行为,并且可以通过消息传递来相互通信。
代表性的面向对象语言有Java、C++和Python。
这类语言适用于构建复杂的应用程序和大规模软件项目。
3. 声明式语言声明式语言强调“做什么”,而不是“如何做”。
计算机国外编程语言
计算机国外编程语言有很多,以下是一些比较常见的国外
编程语言:
1. JavaScript:用于开发网页前端和后端的脚本语言,广泛应用于Web开发。
2. Python:一种功能强大的通用编程语言,广泛用于数据
分析、人工智能、Web开发等领域。
3. Java:一种面向对象的编程语言,被广泛应用于企业级
应用开发和Android应用开发。
4. C++:一种高级程序设计语言,用于开发高性能和系统
级的应用程序。
5. C#:由微软开发的面向对象编程语言,主要用于Windows应用程序开发、游戏开发和企业应用开发。
6. Ruby:一种简单而富有表现力的编程语言,广泛应用于Web开发和脚本编写。
7. Swift:由苹果开发的编程语言,用于iOS和macOS应
用程序的开发。
8. Go:由Google推出的编程语言,被设计为简洁、快速、安全和并发的语言。
9. Rust:一种系统级编程语言,注重安全性、并发性和性能。
10. TypeScript:一种基于JavaScript的编程语言,添加了静态类型检查和其他新特性,用于大型Web应用程序的开发。
这只是一小部分国外编程语言的例子,还有很多其他编程语言可供选择。
选择使用哪种编程语言取决于项目需求、开发环境和个人偏好等因素。
C程序设计之四书五经引言自从Dennis M.Ritchie于1973年设计并实现C语言以来,计算机程序设计领域已经发生了巨大的变化。
以C语言为根基的C++、Java和C#等面向对象语言相继诞生,并在各自领域大获成功。
今天,C及其后裔几乎统治了计算机程序设计世界。
可以这么说,C语言的诞生是现代程序语言革命的起点,它改变了程序设计语言发展的轨迹,是程序设计语言发展史中的一个里程碑。
然而,C并不仅仅是其他语言的起点和基础,否则它早已成为程序设计语言发展过程中又一个被遗弃者。
和当初发明时一样,C语言今天依然至关重要。
它的表达力、效率、简练、紧凑、对机器的最终控制以及跨平台的高度移植性,使其在系统编程、嵌入式编程等领域一直占据着统治地位,而C99标准的制订则再一次使C语言焕发出新的活力。
下文介绍C程序设计领域中的几本好书,其中一些堪称经典。
1. Brian W.Kernighan, Dennis M.Ritchie,《C程序设计语言》,机械工业出版社这是迄今为止在所有程序设计语言书籍中最广受尊敬的一部经典,是任何一名C程序员的必读之作。
因为出自C语言的设计者Dennis M.Ritchie和著名的计算机科学家Brian W.Kernighan之手,它被昵称为“K&R C”。
是它首先引入了“Hello World!”程序,这个程序几乎成了后来任何一本入门性程序设计语言书籍中的第一个例子。
如同C语言本身简洁紧凑而极具威力一样,这本书轻薄短小而极富张力。
通过简洁的描述和典型的示例,它全面、系统、准确地讲述了C语言的各个特性以及C程序设计的基本方法,内容涵盖基本概念、类型和表达式、控制流、函数与程序结构、指针与数组、结构、输入与输出、UNIX系统接口以及标准库等内容。
简洁清晰是这本书最大的特色。
这本小书可以教给你许多比它厚几倍的“大部头”的知识。
我认为那些动辄洋洋洒洒拼凑出好几百页乃至上千页的技术作者应该好好向K&R学一学。
本文由yiyexuanchuang贡献 浅谈MAYA,mel c python到底是啥2009年03月20日 11:54 P.M.MEL:MAYA E…… L…… maya内置角本语言,是开发方面给你提供的一种算法组合平台,有很多内嵌的函数和命令,供你调用和组合,因为是上层语言,优点是没有库和指针,有全面函数讲解帮助,开发过程允许你出错,并不拒绝执行错误,开发速度很快,用来解绝大量的繁重重复劳动,有些还可以优化场景,缺点大量的数据处理会很慢,十分慢,贼***慢,要过API到底下还回来的话还要走一次,其实它是MAYA很重要的一个特点,它没有限制,不用MEL,那MAYA和MAX比MAX很牛比,用了MEL,MAX 就很多做不了,相对的,MAYA的MEL就是和MAX强大的客户群体,强大的资源,强大的速度,强大的很多抗衡的法宝.很多小的重复工作用MEL. FOR C的开放,速度是绝对地快,因为可以用库和指针,可以绕过MEL或命令或工具,贼快,但!是相对地,开发很累,有些时候没MEL快,有些时候不稳定,有些时候很多余,但!可以自己刷新算法,可对你的算法保密,可以卖点小钱,用C就不叫脚本,就叫插件.但可以自几写功能,挺好玩. 无论是调用工具,命令,结点,函数,算法,在一个功能完成的过程里C也要调用MEL因为很快,MEL的过程会用到C,很少,但很关键,就是说,都得会,要不都用不好,汗,不写点用MAYA就得用浪费,搞美术,MAX梦幻,搞动画特效MAYA是老二,老大是HUDINI,也许并列第一. 以上,都是一堆费话,看了就忘了吧,要不头痛. 蟒蛇的和MEL差不多,就是很多软件都支持,会蟒蛇很多软件都能写插件,就是命令和函数写法不一样,Python (发音:[ 'paiθ(?)n; (US) 'paiθ?n ]),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。
可编程序控制器的五种标准编程语言PLC的用户程序是设计人员根据控制系统的工艺控制要求,通过PLC编程语言的编制设计的。
根据国际电工委员会制定的工业控制编程语言标准(IEC1131-3)。
PLC的编程语言包括以下五种:梯形图语言(LD)、指令表语言(IL)、功能模块图语言(FBD)、顺序功能流程图语言(SFC)及结构化文本语言(ST)。
1、梯形图语言(LD)梯形图语言是PLC程序设计中最常用的编程语言。
它是与继电器线路类似的一种编程语言。
由于电气设计人员对继电器控制较为熟悉,因此,梯形图编程语言得到了广泛的欢迎和应用。
梯形图编程语言的特点是:与电气操作原理图相对应,具有直观性和对应性;与原有继电器控制相一致,电气设计人员易于掌握。
梯形图编程语言与原有的继电器控制的不同点是,梯形图中的能流不是实际意义的电流,内部的继电器也不是实际存在的继电器,应用时,需要与原有继电器控制的概念区别对待。
图1是典型的交流异步电动机直接启动控制电路图。
图2是采用PLC控制的程序梯形图。
图1 交流异步电动机直接启动电路图图2 PLC梯形图2、指令表语言(IL)指令表编程语言是与汇编语言类似的一种助记符编程语言,和汇编语言一样由操作码和操作数组成。
在无计算机的情况下,适合采用PLC手持编程器对用户程序进行编制。
同时,指令表编程语言与梯形图编程语言图一一对应,在PLC编程软件下可以相互转换。
图3就是与图2PLC梯形图对应的指令表。
图3 指令表指令表表编程语言的特点是:采用助记符来表示操作功能,具有容易记忆,便于掌握;在手持编程器的键盘上采用助记符表示,便于操作,可在无计算机的场合进行编程设计;与梯形图有一一对应关系。
其特点与梯形图语言基本一致。
3、功能模块图语言(FBD)功能模块图语言是与数字逻辑电路类似的一种PLC编程语言。
采用功能模块图的形式来表示模块所具有的功能,不同的功能模块有不同的功能。
图4是对应图1交流异步电动机直接启动的功能模块图编程语言的表达方式。
第四章1.什么是计算机语言?一般可以分为哪几种?各自的优缺点?答:计算机语言是计算机可以识别、理解的语言。
计算机语言分为三类:机器语言,汇编语言和高级语言。
机器语言(Machine Language)是由0和1二进制代码表示和存储的指令与数据。
它的特点是能被机器直接识别与执行;程序所占内存空间较少。
其缺点是难认、难记、难编、易错。
汇编语言是一种面向物理层操作的计算机语言。
不同的处理器类型,具有不同的汇编语言。
使用汇编语言编写程序能够直接利用硬件系统的特性(如寄存器、标志、中断系统等),可直接对位、字节、字寄存器或存储单元、I/O端口进行处理,同时也能直接使用CPU指令系统提供的各种寻址方式,编制出高质量的程序,这样的程序不但占用内存空间少,而且执行速度快。
缺点:由于汇编语言不直接支持复杂的抽象数据类型,在描述目标系统模型时,需要程序员自己组织各种抽象数据类型的存储方式,使得汇编语言程序设计较高级语言困难的多,需要较多的软件开发时间,也增加了程序设计过程中出错的可能性,程序维护也麻烦。
高级语言(High Level Language)是脱离具体机器(即独立于机器)的通用语言,不依赖于特定计算机的结构与指令系统。
与目标系统的数学模型之间有着良好的对应关系,可在各种机器上通用,具有很好的通用性和可移植性。
缺点:处理器是不能直接执行这种用高级语言编写的源程序,需要先将它翻译成对应的目标程序(即机器语言程序),才能运行。
2.简述ARM汇编语言上机操作过程。
答:⑴设计、编辑汇编语言源程序;⑵汇编、连接、下载到目标系统;⑶调试运行;3.简述编写一个汇编语言源程序的基本步骤。
答:⑴分析目标系统,建立数学模型,确定算法⑵ 根据算法设计流程图⑶合理分配寄存器,存储空间和外设资源⑷ 根据流程图编写源程序⑸ 上机调试程序⑹ 形成文档4.循环程序设计中,循环的基本结构有几种?其循环控制方法有几种?各自的应用特点?答:循环程序的基本结构:⑴初始化部分:建立循环初始值。
为什么会有这么多种程序设计语言?传说人类建造通天塔触怒上帝,上帝施法使人类语言混乱彼此之间无法交流。
这就是说各种各样的语言其实就是祸乱之源——只会导致交流的不便。
可是看看如今的程序设计语言的数量,你会怀疑人类是否又在造“通天塔”了?真的有这么多语言的必要吗?我到底要学习多少种程序设计语言才够用呢?根据维基的资料,可以称得上相对“主流”(有人用、有文档)的程序设计语言至少有600种,还有大量的商业化失败、实用性不高、语言小众(这里的“语言”指的是编码的语言,一般的程序设计语言都习惯用拉丁字母集合或其超集来作为源码的字符集,也有用日文、俄文编程、汉语编程的,比如易语言)就难以统计了(保守估计可以上万种),尽管已经有了这么多种程序设计语言,仍然有大量的人投入了大量的时间来研发新的语言,这难道不是重复通天塔的故事吗?为了解释“为什么会有这么多种程序设计语言”这个问题,想让我们来看一份较新的最流行编程语言流行榜:排行榜上排名前十的依次是:C、Java、Object-C、C++、C#、PHP、Python、JavaScript、Perl 和VB。
下面我会根据这份排行榜来回答我们的问题。
首先阐述一个基本观点:程序设计语言被创造的目的主要有三个——实用目的、学术目的、商业及特殊应用需要。
且听一一分解:一、实用目的可以看见在排行榜中,C,Java,C++这样的语言几乎是年年稳居前五。
这些语言的实用性都是非常高的。
让我们回顾一下C语言的历史:1973年AT&T的Ken Thompson因为研发和维护操作系统的需要,要求一种高效简洁的程序设计语言,于是在BCPL语言的基础上创造了C语言。
Java、C++等语言也都是在有着类似的高要求的任务下临时创造出来,然后再不断发布标准进行改进的(C语言是为了操作系统,Java是为了嵌入式应用和网络开发……)如果现有的轮子不够好,那么就去自己造一个轮子,也正是因为这个特殊的原因,所有这些以实用为目的的语言都很高效,语法构造方法、编程逻辑和配套的编译技术都很成功,所以能够切切实实地解决工程上的问题。
另外,这些实用目的语言的语法都很自由(Python因为“明确”、“简单”的哲学所以算个例外),正好符合了不同性格的程序员的需要。
另外非常重要的一点是:“决定一种程序设计语言是否强大的是这个语言的库(标准程序库、类库、包、组件、单元、模块……每种语言都有自己的叫法)而不是程序设计语言本身”;这可能会让很多人不高兴:说实话,C语言在语言的优雅性和友好性上(比如==和=)完全和Ada、Pascal比不了(Ada是军方人员设计的,Pascal是数学家设计的),但是C语言依然非常流行,这是因为你想要写一个含有系统调用的程序,用C语言是最佳选择,Ada和Pascal这样的语言想要直接和内核交流是很麻烦的。
同理也可以解释C++、Java、Perl等语言的流行,你想要写多线程的程序用C++的多线程库和Java的包就行了,你想写正则表达式相关的程序用Perl或者C++ boost库就好了……懂得不要重复造轮子是很重要的,遇到不能解决的问题,先去查查资料看有没有人已经写好了类似的程序,直接把他的函数抄过来就是了——这恐怕是很多人都会做的吧?这些实用性的语言,在长期使用的广泛的使用过程中积累了大量优秀的库(C++的STL、BOOST和有些编译器自带的库,Object-C专门针对Mac OS X的库,Fortran 的便于科学计算的函数等等),而且还有越来越多的程序员在不断增加更好的库,这些都使这些“语言”越来越强大。
这些程序设计语言在发展过程中既有一些公共的库(比如文件的I/O),也有一些特有的库(比如线程库、RE库),这些特有的库往往是某一语言的最大优势,可以说正是这些各自独立的库把不同的语言区别开来,长此以往,解决某些特定问题时程序员就倾向使用某一特定语言。
这并不是说这些特有的库无法移植到其它的语言上,只是由于代码量巨大,移植是在是个不小的工程(况且,在某种语言中表述很方便的语言在另一种中就会难以表示,比如C语言有很多语言都没有的显示指针,在Lazarus项目中,程序员开发了一个程序用以把C头文件自动转换成Pascal单元,即使这样,实现代码的量依旧很大,这种源到源的语言翻译的介绍可以参见龙书的引论部分,不学编译原理的请略过)。
因为有如此多的专用库,这些实用目的语言越来越多也就不稀奇了。
二、学术目的不管什么程序设计语言,在本质上都不过是机器级别的0或1。
所谓的高级语言不过是机器眼中的胡言乱语(这也正是编译技术存在的价值)。
然而,人不是机器,也不可能也没必要成为机器。
创造程序设计语言的目的是为程序员服务的,应该说,一个程序员所用的语言很大程度上决定了他的思维方式——程序设计语言本身就是一种严谨的数学模型、一种高效的思维方式。
为了说明这个道理我以一个物理题为例来解释:一辆汽车做匀速直线运动,以2m/s的速度经过了6m,问汽车用了多少时间?显然t=s/v=6/2=3(s),这也可以列方程来解决:设运动用时t s,则tv=s,即2t=6,解得t=3,这好像多此一举。
如果把问题稍微“复杂”一下:一辆汽车以1m/s的初速度做加速为2m/s2的匀加速直线运动,经过了6m,问汽车用时多少时间?根据运动学公式列方程V0*t+1/2*a*t2=s,即1*t+0.5*2*t2=6,解得t=2,也就是要用2s。
又或者可以这样做:由速度与时间的关系可以得到v(t)=v0+a*t,而解这个等式同样也可以求出t。
这个时候使用方程就很自然了,用定积分却显得多余。
从中我们知道什么?人的思维能力是有限的,面对复杂的新问题,要么用就用原来老方法麻烦地进行计算,要么提出新的高效的模型来解决问题。
不管是算术、方程还是微积分、傅立叶变换或是其它高级的数学方法、模型都只是一个简化问题的抽象层(数学家看到了我说这句话恐怕会很生气的,但这就是事实),作为类比,程序设计语言就好比这里的数学模型,越是复杂的问题、越是大的规模(指问题规模),才越能体现出高级语言的价值(有人用过几十多种语言写”hello world”,这有什么意义呢?我用机器语言都能写hello world)。
知道了语言模型对于思维方式的影响,我们就能解释这么多语言的学术上(或者说是研究上)的目的了:机器语言/汇编语言意味着程序员专注的是寄存器、内存地址、状态、位的打开或关闭,因此思维重在每一条实际的指令;而C、Pascal这样的命令式语言注重每一个“计算过程”,因此思维重在将计算方法、算法、数学模型表达出来;而Java、C++这样的面向对象的程序设计语言,试图用对象、类、属性、方法这些概念来统一的描述算法和数据结构,OO语言的思维因此能够重在算法和数据;还有像Lisp、Haskell、Erlang、Prolog这样的函数式、逻辑式语言,强调的是数学的推演、函数的运算、逻辑的证明,我认为它们才是最接近人的思维的语言;而像SQL这样的语言,强调是“高产出”,它们是对常用的指令进行了简化、“宏化”(Macronize,本人自己造的一个词),它们的思维是“要做什么”而不是“怎么做”;最后,是像HTML这类Markup语言(有人说HTML不是程序设计语言……)个人认为是一种glue(胶水语言,最有名的glue算是Lua了),它对文本(比如网页)的格式进行描述,同时又把JavaScript、Applet等等扩展“连接”在一起,它们的思维是“组合”,是怎样才能协调各个组件、把组件的功能发挥到极致(说起排版不得不提提TeX了,它和HTML的思维类似,各种开发好的宏集就是它的“组件”)。
最后我还想再谈一谈“学术风味”很浓的函数式语言,函数式语言历史悠久,但多年以来一直在学术界活跃,少有能够成功商业化的,多年来一直处于不温不火的的状态。
但随着今年来编译技术的发展,函数式语言的执行效率已经很高了,加上大数据时代对于大量数据处理的需求、机器深度学习的成熟、现代架构计算机的发展,仅仅依靠程序执行的单线程性能提升已经不能够满足实际需求了,只有并发和并发才能满足这样的高负荷计算要求,纯函数语言处理起多线程来十分方便,能够“榨干”处理器的运算潜力,这也是近年来Erlang之类的语言大放异彩的重要原因。
在现代计算机结构和工艺发展难度大的情况下,这些函数式语言可能会成为推动计算力的重要动力,这一点可以参见本人的论文《AACOS:基于编译器和操作系统内核的算法设计与实现》(由于版权的问题,我暂时不能把论文贴出来:-))。
三、商业及特殊应用需要(以下言论仅仅是本人个人观点,没有任何指责的意思)开发一种编程语言是可以赚钱的,你信吗?实际上开发一种新的语言意味着建立自己的“统一标准”(说起标准就不得不谈高通了,高通从“标准”上捞了多少银子?),一方面可以方便维护自己的产品,另一方面可以借助市场地位强迫程序员学习某种语言进而达到自己(至少在某一领域)的霸主地位。
为什么这么多年以来微软对BASIC情有独钟?在DOS时代,QBASIC——一种BASIC的变种,是每台PC 上必装应用,也是当时很多人必学的一种语言,QBASIC无论是从程序执行效率还是语言的思维性上都不好,但是因为是预装的,本着“不够好但够用”的原则,许多用户居然凑合下来了(惭愧本人就是从QBASIC开始接触编程的)!这恐怕和IE用户如此众多的原因是异曲同工的吧?就这样QBASIC居然一时成为了最受欢迎的入门编程语言工具。
到后来,微软推出Visual Basic实际上是为了和Borland(现已被收购)的Delphi竞争入门级编程工具市场(在相当长的一段时间内VB都不是Delphi的对手,可以参见本人的另一片随笔《Borland和Microsoft的对话》,这直接导致了C#的诞生——C#——一种C++、Java、Object Pascal杂交的到的混血儿),凭借自己在BASIC用户上的积累,在RAD领域混得不错了,微软又趁热打铁的推出了VBS/VBE、VBA等等脚本语言,目的就是拉拢自己的VB用户,使这种糟糕的语言能够勉勉强强适应系统GUI编程、办公套件编程、数据库编程,好了现在形成了一个有机的整体。
一个程序员要么学多种语言来完成不同的任务,要么学一种不够好但够用的语言——然后,一招鲜,吃遍天……学习一种语言的成本是很高的(要时间和电费),所以有很多程序员会选择微软指定的这一标准。
还有近几年大红的Object-C、Swift、Go,虽然名义上是开源的,但是谁知道他们的真正目的?除此之外,还有很多DSL(Domain-Specific Language,专业领域语言),比如sed和awk是为了处理文本,PHP是为了处理Web开发、Emacs Lisp 和Vim脚本是为了扩展编辑器功能,PostScript是为了排版,batch和各种shell script是为了shell编程等等。