精华内容
下载资源
问答
  • 静态、动态相对的,这里动态语言指不需要在编译时确定所有的东西,在运行时还可以动态的添加变量、方法和类 Objective-C 可以通过Runtime 这个运行时机制,在运行时动态的添加变量、方法、类等,所以说...

    什么叫动态静态

    静态、动态是相对的,这里动态语言指的是不需要在编译时确定所有的东西,在运行时还可以动态的添加变量、方法和类

    Objective-C 可以通过Runtime 这个运行时机制,在运行时动态的添加变量、方法、类等,所以说Objective-C 是一门动态的语言

    其他说法

    Objective-C 是C 的超集,在C 语言的基础上添加了面向对象特性,并且利用Runtime 这个运行时机制,为Objective-C 增添了动态的特性。

    Objective-C 使用的是 “消息结构” 并非 “函数调用”:使用消息结构的的语言,其运行时所应执行的代码由运行期决定;而使用函数调用的语言,则由编译器决定

    (1)动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

    (2)静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

    因为在运行期可以继续向类中添加方法,所以编译器在编译时还无法确定类中是否有某个方法的实现。对于类无法处理一个消息就会触发消息转发机制

    消息转发分为两大阶段:

    “动态方法解析”:先征询接收者,所属的类,能否动态添加方法,来处理这个消息,若可以则结束,如不能则继续往下走
    “完整的消息转发机制”:
    请接收者看看有没其他对象能处理这条消息,若有,就把这个消息转发给那个对象然后结束
    运行时系统会把与消息有关细节全部封装到NSInvocation 对象中,再给对象最后一次机会,令其设法解决当前还未处理的这条消息

    Objective-c的动态性

    Objective-C的动态性,让程序在运行时判断其该有的行为,而不是像c等静态语言在编译构建时就确定下来。它的动态性主要体现在3个方面:

    • 1.动态类型:如id类型。实际上静态类型因为其固定性和可预知性而使用的特别广泛。静态类型是强类型,动态类型是弱类型,运行时决定接收者。
    • 2.动态绑定:让代码在运行时判断需要调用什么方法,而不是在编译时。与其他面向对象语言一样,方法调用和代码并没有在编译时连接在一起,而是在消息发送时才进行连接。运行时决定调用哪个方法。
    • 3.动态载入。让程序在运行时添加代码模块以及其他资源。用户可以根据需要执行一些可执行代码和资源,而不是在启动时就加载所有组件。可执行代码中可以含有和程序运行时整合的新类。
    展开全文
  • 什么是动态语言/静态语言

    千次阅读 2017-07-23 10:40:18
    动态语言:动态语言是指在运行期间才去做数据类型检测的语言。在用动态语言编程的时候并不需要给变量指定数据类型,该语言会在第一次将数据赋值给变量的时候在内部将数 据类型记录下来。典型的动态语言如Python,...

    下面简单介绍下什么是静态语言和静态语言:

    动态语言:动态语言是指在运行期间才去做数据类型检测的语言。在用动态语言编程的时候并不需要给变量指定数据类型,该语言会在第一次将数据赋值给变量的时候在内部将数

    据类型记录下来。典型的动态语言如Python,Ruby。

    静态语言:静态语言是指在编译期间对数据类型进行检查的语言。这种语言在编写程序时需要声明所有变量的数据类型。典型的静态语言如C,C++、Java。

    两者各自的优缺点:

    动态语言:

    1. 思维不受束缚,可以任意发挥,把更多的精力放在产品本身上;

    2. 集中思考业务逻辑实现,思考过程即实现过程。

    静态语言:

    1. 由于类型的强制声明,使得IDE有很强的代码感知能力,在实现复杂的业务逻辑、开发大型商业系统、以及那些生命周期很长的应用中,依托IDE对系统的开发很有保障;

    2. 由于静态语言相对比较封闭,使得第三方开发包对代码的侵害性可以降到最低。

    展开全文
  • 确切地说,本教程介绍的C 语言编写实现的 Python,又称为CPython。平时我们所讨论的 Python,的其实就是 CPython。随着编程语言的不断发展,Python 的实现方式也发生了变化,除了用 C 语言实现外,Python ...

    确切地说,本教程介绍的是用 C 语言编写实现的 Python,又称为CPython。平时我们所讨论的 Python,指的其实就是 CPython。

    随着编程语言的不断发展,Python 的实现方式也发生了变化,除了用 C 语言实现外,Python 还有其他的实现方式。例如,用 Java 语言实现的 Python 称为 JPython,用 .net 实现的 Python 称为 IronPython等等。

    Python 的这些实现方式虽然诞生比 CPython 晚,但一直在努力地跟上主流,并在不同的生产环境中不断地使用并推广 Python。

    Python 的实现方式有很多种,Python 官网上介绍了 20 多种语言变体、方言或 C 语言之外的 Python 解释器实现。其中一些只是实现了语言核心语法、功能和内置扩展的一个子集,但至少有几个与 CPython 几乎完全兼容。更重要的是,在这些不同的实现方式中,虽然有些只是玩具项目或实验,但大部分都是为了解决某些实际问题而创建的,这些问题要么使用 CPython 无法解决,要么需要开发人员花费巨大的精力,这里举几个例子:

    在嵌入式系统中运行 Python 代码。

    与运行框架(如 Java 或 .NET)或其他语言做代码集成。

    在 Web 浏览器中运行 Python 代码。

    由于受到篇幅的限制,本节仅给大家介绍几种 Python 开发人员最常用的几种 Python 实现方式。

    Stackless Python

    Stackless Python 自称 Python 增强版。之所以名为 Stackless(无栈),是因为它没有依赖 C 语言的调用栈,实际上就是对 CPython 做了一些修改,添加了一些新的功能。

    在新添加的功能中,最重要就是由解释器管理的微线程,用来替代依赖系统内核上下文切换和任务调度的普通线程,既轻量化又节约资源。

    Stackless Python 最新可用的版本是 2.7.9 和 3.3.5,分别实现的是 Python 2.7 和 3.3。在 Stackless Python 中,所有的额外功能都是内置 stackless 模块内的框架。

    Stackless Python 并不是最有名的 Python 实现,但很值得一提,因为它引入的思想对编程语言社区有很大的影响。例如,将 Stackless Python 中的内核切换功能提取出来并作为一个独立包发布,名为 greenlet,是许多有用的库和框架的基础。

    此外,Stackless Python 的大部分功能都在 PyPy 中重新实现,PyPy 是另一个 Python 实现,我们将稍后介绍。

    JPython

    Jython 是 Python 语言的 Java 实现。它将代码编译为 Java 字节代码,开发人员在 Python 模块中可以无缝使用 Java 类。

    Jython 允许人们在复杂应用系统(例如 J2EE)中使用 Python 作为顶层脚本语言,它还将 Java 应用引入到 Python 中,一个很好的例子就是,在 Python 程序中可以使用 Apache Jackrabbit(这是一个基于 JCR 的文档仓库 API)。

    Jython 最新可用的版本是 Jython 2.7,对应的是 Python 2.7 版。它宣称几乎实现了 Python 所有的核心标准库,并使用相同的回归测试套件。Jython 3.x 版正在开发中。

    Jython 与 CPython 实现的主要区别如下所示:

    真正的 Java 垃圾回收,而不是引用计数。

    没有全局解释器锁(GlobakInterpreter Lock,GIL),在多线程应用中可以充分利用多个内核。

    这一语言实现的主要缺点是缺少对 C/Python 扩展 API 的支持,因此用 C 语言编写的 Python 扩展在 Jython 中无法运行。这种情况未来可能会发生改变,因为 Jython 3.x 计划支持 C/Python 扩展 API。

    某些 Python Web 框架(例如 Pylons)被认为是促进 Jython 的开发,使其可用于 Java 世界。

    IronPython

    IronPython 将 Python 引入 .NET 框架中,这个项目受到微软的支持,因为 IronPython 的主要开发人员都在微软工作。可以这么说,IronPython 是推广语言的一种重要实现。

    除了 Java,.NET社区是最大的开发者社区之一。

    值得一提的是,微软提供了一套免费开发工具,名为 PTVS(Python Tools for Visual Studio,用于Visual Studio 的 Python 工具),可以将 Visual Studio 转换为成熟的 Python IDE。这是作为 Visual Studio 的插件发布的,在 GitHub 可以找到其开源代码。

    IronPython 最新的稳定版本是 2.7.5,与 Python 2.7 兼容。与 Jython 类似,Python 3.x 的实现也在开发中,但还没有可用的稳定版本。

    虽然 .NET 主要在微软 Windows 系统上运行,但是 IronPython 也可以在 Mac OS X 和 Linux 系统上运行,这一点要感谢 Mono,一个跨平台的开源 .NET 实现。

    与 CPython 相比,IronPython 的主要区别或优点如下:

    与 Jython 类似,没有全局解释器锁(Global Interpreter Lock,GIL),在多线程应用中可以充分利用多个内核。

    用 C# 和其他 .NET 语言编写的代码可以轻松集成到 IronPython 中,反之亦然。

    通过 Silverlight,在所有主流 Web 浏览器中都可以运行。

    说到弱点,IronPython 也与 Jython 非常类似,因为它也不支持 C/Python 扩展 API。对于想要使用主要基于 C 扩展的 Python 包(例如 NumPy)的开发人员来说,这一点很重要。

    有一个叫作 ironclad 的项目,其目的是在 IronPython 中无缝使用这些扩展,其最新支持的版本是2.6,开发已经停止。

    PyPy

    PyPy 可能是最令人兴奋的 Python 实现,因为其目标就是将 Python 重写为 Python。在 PyPy 中,Python 解释器本身是用 Python 编写的。

    在 Python 的 CPython 实现中,有一个 C 代码层来实现具体细节。但在 PyPy 实现中,这个 C 代码层用 Python 完全重写。这样,你可以在代码运行期间改变解释器的行为,并实现 CPython 难以实现的代码模式。

    目前 PyPy 的目的是与 Python 2.7 完全兼容,而 PyPy3 则与 Python 3.2.5 版兼容。

    以前对 PyPy 感兴趣主要是理论上的原因,只有喜欢深入钻研语言细节的人才会对它感兴趣。PyPy 通常不用于生产环境,但这些年来这种状况己经发生改变,PyPy 通常比 CPython 实现要快得多。基于这一特性,使得越来越多的开发人员决定在生产环境中切换到 PyPy。

    PyPy 与 CPython 实现的主要区别在于以下几个方面:

    使用垃圾回收,而不是引用计数。

    集成跟踪 JIT 编译器,可以显著提高性能。

    借鉴 Stackless Python 在应用层的无栈特性。

    与几乎所有其他的 Python 实现类似,PyPy 也缺乏对 C/Python 扩展 API 的完全官方支持。但它至少通过 CPyExt 子系统为 C 扩展提供了某种程度的支持,虽然文档不完整,功能也尚未完善。此外,社区正在努力将 NumPy 迁移到 PyPy 中,因为这是最需要的功能。

    展开全文
  • #讨论这个有意义吗? 这个在知乎上看到的一个问题,评论挺多的。其中有人提到,研究这个东西有什么用?编程的时候我们不能这么写的。我记得在大学的时候,我们的副院长...如果作为一个程序员,他认为对运算符要了如

    #讨论这个有意义吗?

    这个是在知乎上看到的一个问题,评论挺多的。其中有人提到,研究这个东西有什么用?编程的时候我们不能这么写的。我记得在大学的时候,我们的副院长给我们上课,就给我们提到,要习惯并且喜欢使用 「( 」和 「)」,这两个符号。

    所以上面的表达式,如果想表达清楚自己的意图,可以这样写

    ((x += 5) == 4)
    或者是

    (x += (5 == 4))
    但是有些程序员为什么喜欢这样写呢?

    我们可以肯定,写出这样代码的人,一定对运算符优先级背得滚瓜烂熟了。如果作为一个程序员,他认为对运算符要了如指掌,他觉得别人对这个代码肯定一眼就能看懂,他写出这样的代码也是没有问题的。

    我们学这样的代码有什么用?

    学习这样并不表示我们要写出这样的代码,而是,我们如果在工作学习中,遇到这样的代码,我们就一眼能看出来这个代码的作用。

    C语言的标准有几百页,大部分人不会仔细研究每个细节,有些工程师觉得某些东西没有用,大概率是因为他在自己的工作中没有用到。有的程序员喜欢研究或者在工作中需要使用这样的方法,这就是这种代码存在的其中一个原因吧。

    #表达式和运算符优先级
    C语言在一个表达式中,如果遇到几个运算符,要考虑优先级和结合方向。

    比如,表达式 x pri1 y pri2 z,可能出现两种可能性

    (x pri1 y )pri2 z

    x pri1 (y pri2 z)

    如果运算符 pri1 的优先级比pri2 高,那么就是上面的第一种情况。

    如果运算符 pri1 的优先级比pri2 低,那么就是上面的第二种情况。

    如果优先级相同,那就要考虑结合方向。

    结合方向是 「左到右」或者「右到左」。

    例如,「= 」 的结合方向是 「右到左」。

    所以

    a = b = c 表达式的意义是 a =( b = c )

    而 「+」的结合方向是 「左到右」

    所以

    a + b + c 表达式的意义是 (a + b) + c

    #C语言运算符优先级

    #解析上面的表达式
    x += 5 == 4
    「+=」 的优先级是14

    「 ==」 的优先级是 7

    所以上面表达式的意义是

    x += (5 == 4)
    运行一下

    #表达式的巧用
    很多人不怎么用这种取巧的写法,我这两天看代码看到一个,截图给大家看看,非常简单,也是一种取巧的方法,挺有意思的。一般情况下,我们还是会把 x = y 写在if 外面,直接写在if里面还是挺有意思的。

    如果写成下面这样的话会输出什么呢?评论给出你的答案~

    #include “stdio.h”

    int main(void)
    {
    int x = 2;
    int y = 4;
    int z = 4;

    if( x = y >= z){
    printf("-----------01\n");
    }
    return (0);
    }

    原文链接:https://blog.csdn.net/weiqifa0/java/article/details/105462999

    展开全文
  •  动态语言是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如JavaScript便是一个典型的动态语言。 除此之外如Ruby、Python、OC等也都属于动态语言,而C、C++、...
  • 什么是动态语言

    千次阅读 2010-03-30 09:04:00
    动态语言,也叫动态编程语言是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之外如Ruby、Python等也都...
  • 动态语言,准确地说,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之外如Ruby、Python等也都属于动态...
  • 2、Python动态类型语言你在声明变量时,不需要说明变量的类型。你可以直接编写类似x=111和x="I’m a string"这样的代码,程序不会报错。3、Python非常适合面向对象的编程(OOP),因为它支持...
  • 强/弱类型是指类型检查的严格程度的。语言有无类型,弱类型和强类型三种。无类型的不检查,甚至不区分指令和数据。弱类型的检查很弱,仅能严格的区分指令和数据。强类型的则严格的在编译期进行检查。 C# 是强...
  • C 语言编写实现的 Python,又称为 CPython。平时我们所讨论的 Python,的其实就是 CPython。 随着编程语言的不断发展,Python 的实现方式也发生了变化,除了用 C 语言实现外,Python 还有其他的实现方式。例如...
  • 先说结论:C语言由B语言编写,B语言是由A语言编写 A→B→C 好了,不开玩笑了 既然你能提出这个级别的问题,说明你应该学过C。既然你能提出这个级别的问题,说明你没学过编译原理(或者全还给老师了,容我不厚道一下...
  • 1 什么是指针本文所谓的指针(pointer) ,是指C和C++等语言中的内建的语言特性。在不同范畴中指针这个概念有所不同。在体系结构规范中,指针指称特定的整数字节地址或者两个地址的差(地址偏移量),是整数数值;而在...
  • 编译型语言: 是指使用专门的编译器、针对特定平台(操作系统)将某种高级语言源程序一次性“翻译”成可被该平台硬件运行的机器码(包括指令和数据),并包装成该平台的操作系统所能识别和运行的格式。这一过程称为...
  • 动态语言是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之外如Ruby、Python等也都属于动态语言,而C
  • XML 扩展标记语言

    2011-09-26 17:50:00
    什么是 XML? XML 可扩展标记语言(EXtensibleMarkupLanguage) XML 一种标记语言,很类似 HTML XML 的设计宗旨传输数据,而非显示数据 XML 标签没有被预定义。您需要自行定义标签。 XML 被设计为具有自我...
  • 2、Python动态类型语言你在声明变量时,不需要说明变量的类型。你可以直接编写类似x=111和x="I’m a string"这样的代码,程序不会报错。3、Python非常适合面向对象的编程(OOP),因为它支持...
  • Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。平台无关有两种:源代码级和目标代码级。C和C++具有一定程度的源代码级平台无关,表明用C或C++写的应用程序不用修改只需重新编译...
  • 理解W3C是什么

    千次阅读 2019-06-02 16:17:17
    W3C是指万维网联盟(word wide web consortium);它是一个会员组织,其工作是对web进行标准化;W3C创建并维护WWW标准 W3C标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构 (Structure)、...
  • 我已经接触C++一段时间了,一开始就让我感到疑惑的是其内部结构:我所使用的内核函数和类从何而来? 谁发明了它们?...当我们谈论C和C++时,实际上是指一组定义(程序)语言应该做些什么,如何表现,应该提供...
  • 根据几年前微软在美国公布的内容,WINDOWS本身属于微内核系统,... 微内核系统从概念上是指“只包括操作系统的基本功能,例如内存管理和进程管理等等”,就连对各个文件系统的支持也不算在内,不过具体WINDOWS是不是...
  • 不过这里面也有两方面问题要出来: (1)Python之所以让开发者欲罢不能,很大程度上就来自于它丰富的第三方库,而学习这些Library的使用似乎从来都玩Python的人一上手就会接触的;反观C入门,也不是说它就不能...
  • 当我们谈论 C 和 C++ 时,实际上是指一组定义(程序)语言应该做些什么,如何表现,应该提供哪些功能的规则。C/C++ 的编译器为了处理 C/C++ 编写的源代码必须跟随着这些规则,并生成二进制应用程序。听起来非常接近...
  • 2、Python动态类型语言你在声明变量时,不需要说明变量的类型。你可以直接编写类似x=111和x="I’m a string"这样的代码,程序不会报错。3、Python非常适合面向对象的编程(OOP),因为它支持...
  • 函数式编程的函数是指数学上的函数:给定输入固定的输出,没有副作用。任何语言都可以用函数式的风格, 只是难易不同罢了。 比如函数 y = f(x). 和 函数 t = g(z); 在数学上,当 t在f(x)的定义域内时,可以组成复合...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,655
精华内容 662
关键字:

c语言是指什么

c语言 订阅