12 2018 档案
摘要:Closures Are Reference Types In the example above, incrementBySeven and incrementByTen are constants, but the closures these constants refer to are st
阅读全文
摘要:@autoclosure 在闭包前面加上@autoclosure func or(first:Bool,@autoclosure second:()->Bool) -> Bool { if first { return true } else { return second() } } 再来看下调用
阅读全文
摘要:函数类型(Function Types) 每个函数都有种特定的函数类型,由函数的参数类型和返回类型组成。 例如: 这个例子中定义了两个简单的数学函数:addTwoInts 和 multiplyTwoInts。这两个函数都传入两个 Int类型, 返回一个合适的Int值。 这两个函数的类型是 (Int,
阅读全文
摘要:功能:model = modelType.transform(rawdata) 使用分析: 使用机制:继承+实现配置+使用; 需要自己实现什么? 设计分析: 工具模块?机制模块?model基类? 生成机制? 如何组织? 接口:通过继承使用接口; 主干类: JSONDeserializer<T: Ha
阅读全文
摘要:一般情况下Swit要想调用obj-c,c或c++代码必须通过obj-c以及桥接文件才可以办到,但是使用@_silgen_name,可以对于某些简单的代码,直接跳过桥接文件和.h头文件与C代码交互。 创建.c文件 #include <stdio.h> int add(int i, int j){ re
阅读全文
摘要:面向(控制)执行 vs 面向描述 命令式编程面向算法vs声明式编程面向描述。 命令式编程面向:数据结构与算法; 算法 = 控制 + 逻辑; 命令式编程是行动导向(Action-Oriented)的,因而算法是显性而目标是隐性的; 声明式编程将描述与求解分离; 声明式编程面向描述: 面向逻辑、抽象、描
阅读全文
摘要:大家应该都听说过等式‘算法+数据结构=程序’吧?这是Pascal设计者Niklaus Wirth的一本著作的书名,它刻画了过程式尤其是结构化编程的思想。后来Robert Kowalski进一步提出:算法=逻辑+控制。其中逻辑是算法的核心,控制主要用于改进算法的效率。在逻辑式编程中,程序员只需表达逻辑
阅读全文
摘要:换言之,每种范式都引导人们带着某种的倾向去分析问题、解决问题 冒号续道:“范式译自英文的paradigm,也有译作典范、范型、范例的。所谓编程范式(programming paradigm),指的是计算机编程的基本风格或典范模式。借用哲学的术语,如果说每个编程者都在创造虚拟世界,那么编程范式就是他们
阅读全文
摘要:“再来看看静态类型语言的好处:由于在运行之前进行了类型检查,一方面代码的可靠性增强,符合‘发现错误要尽早’的原则;另一方面编译器有可能藉此优化机器代码以提高运行效率,同时相比前者节省了运行期的耗费在类型检查上的时间和空间。此外,变量类型的声明彰显了编程者的意图,有辅助文档的功效。”冒号有条有理地解释
阅读全文
摘要:这组运算符和代数中的运算加减乘除运算符一样,符合一定的定律:结合律、(交换律)等; 函数式编程的核心(底层支持)就是这些类型和运算符的定义。 函子就是定义这些类型和运算符的()。 运算符通常为单目运算??运算符的被操作数是(高阶)数据,操作数是配置函数,操作本身是高阶函数; 本质是:结合函数式特点,
阅读全文
摘要:https://www.cnblogs.com/feng9exe/p/9712059.html 类型系统(type system)是一门编程语言最核心也是最基础的部分。无论该语言基于何种编程范式,都必须在开天辟地之初首先对类型系统作出明确的定义。这是因为,编程语言虽然五花八门,千奇百怪,但是归根结底
阅读全文
摘要:实际上我们绝大多数程序员都是在用命令式风格在编程, 这是和我们的冯诺依曼计算机机构密切相关的。 (码农翻身注: 参见文章《冯诺依曼计算机的诞生》) 在一个冯诺依曼计算机中, 最核心的就是CPU和内存, 指令和数据都放在内存当中, CPU每次取出一条指令, 译码,执行,然后把结果写回内存 , 本质就这
阅读全文
摘要:抽象: 抽:抽取、抽离、分离; 象:表述、表达; 软件的抽象: 数据的抽象:属性,对象、继承; 行为的抽象:接口、虚函数; 抽象就是将复杂物体的一个或几个特性抽出去,而只注意其他特性的行动或过程(如头脑只思考树本身的形状或只考虑树叶的颜色,不受它们的大小和形状的限制)。 具体来说,抽象是指: 1、将
阅读全文
摘要:"范畴就是使用箭头连接的物体。" 箭头表示范畴成员之间的关系,正式的名称叫做"态射"(morphism)。范畴论认为,同一个范畴的所有成员,就是不同状态的"变形"(transformation)。通过"态射",一个成员可以变形成另一个成员。 1.2 数学模型 既然"范畴"是满足某种变形关系的所有对象
阅读全文
摘要:范畴论基本概念 如果你是第一次听说范畴论(category theory),看到这高大上的名字估计心里就会一咯噔,到底数学威力巨大,光是高等数学就能让很多人噩梦连连。和搞编程的一样,数学家喜欢将问题不断加以抽象从而将本质问题抽取出来加以论证解决,范畴论就是这样一门以抽象的方法来处理数学概念的学科,主
阅读全文
摘要:一切皆是映射映射即流流即函数 这句话背后的意义不仅仅在于函数式编程。量子力学说过,事物只在相互作用时才出现。“事物”即“一切”,“相互作用”即“映射”。这是“一切皆是映射”(光剑)这句话背后更为本质的意义。 https://yq.aliyun.com/articles/626871 htt
阅读全文
摘要:如果要检查泛型列表中的某个项以确定它是否有效,或者将它与其他某个项进行比较,则编译器必须在一定程度上保证它需要调用的运算符或方法将受到客户端代码可能指定的任何类型参数的支持。这种保证是通过对泛型类定义应用一个或多个约束获得的。例如,基类约束告诉编译器:仅此类型的对象或从此类型派生的对象才可用作类型参
阅读全文
摘要:func allItemsMatch<C1: Container, C2: Container> (_ someContainer: C1, _ anotherContainer: C2) -> Bool where C1.Item == C2.Item, C1.Item: Equatable {
阅读全文
摘要:1、泛型定义本体有参量类型约束; 2、泛型扩展对参量类型约束; 3、函数参量约束; 泛型类型的访问控制: 1、与类型无关的通用函数,泛型的任何实例都可以访问; 2、与类型有关的函数(通过扩展约束实现),只有特定类型实例化的泛型实例才能访问; 由此得出结论: 再考虑泛型约束的情况下,泛型类型是一个代码
阅读全文
摘要:1、泛型、泛型约束与扩展; 2、函数式编程; 3、值类型、引用类型; 4、枚举、关联值、元组等其他 上述为swift最大的特点 Another safety feature is that by default Swift objects can never be nil, and trying t
阅读全文
摘要:具体化:针对特定的类型参量进行二次定义; 实例化:实例化;
阅读全文
摘要:“标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法。大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> 接口或 IQueryable<T> 接口。标准查询运算符提供了包括筛选、投影、聚合、排序等功能在内的查询功能。 各个标准查询运算符在执行时间上
阅读全文
摘要:class_addProtocol([UIButton class],@protocol(UIButtonExport)); @protocol UIButtonExport <JSExport> - (void)setTitle:(NSString *)title forState:(UICont
阅读全文
摘要:Common programming paradigms include:[1][2][3] imperative in which the programmer instructs the machine how to change its state, procedural which grou
阅读全文
摘要:编程语言的发展趋势及未来方向(1):历史回顾及趋势概述 编程语言的发展趋势及未来方向(2):声明式编程与DSL 编程语言的发展趋势及未来方向(3):函数式编程 编程语言的发展趋势及未来方向(4):动态语言 编程语言的发展趋势及未来方向(5):元编程 编程语言的发展趋势及未来方向(6):并发 编程语言
阅读全文
摘要:三年前读过这篇文章 或者 这里,今天了解到Go语言,就在想以后语言会是什么样?我想再多也没用,因为没有达到大牛的思想境界,只到再看五年前大神的分析。在些做一点总结。 1.语言发展很慢,而快速发展的是:框架 、工具 2.语言抽象级别越来越高,更简易使用。比如:scala 基于框架构建的 3.未来趋势会
阅读全文
摘要:命令式编程:面向cpu编程、面向算法编程; 声明式编程:面向解释器编程、面向结构编程。 在编程范式上,我们需要理解编程语言的两个分类——命令式编程和声明式编程——的设计思想。其中,非命令式的编程都可归为声明式编程,命令式、函数式和逻辑式是最核心的三种范式。可以用下图来表示。 命令式编程和声明式编程起
阅读全文
摘要:声明式语言包包括数据库查询语言(SQL,XQuery),正则表达式,逻辑编程,函数式编程和组态管理系统。 声明式编程透过函数、推论规则或项重写(term-rewriting)规则,来描述变量之间的关系。它的语言运行器(编译器或解释器)采用了一个固定的算法,以从这些关系产生结果。 https://ba
阅读全文
摘要:领域特定语言(英语:domain-specific language、DSL)指的是专注于某个应用程序领域的计算机语言。
阅读全文
摘要:首先在声明式编程里面有2大家族,那就是函数式编程和数据流编程,数据流编程下面就是响应式编程,而函数响应式编程是”继承”于函数式编程和响应式编程的 声明式编程(英语:Declarative programming)是一种编程范式,与命令式编程相对立。它描述目标的性质,让计算机明白目标,而非流程。声明式
阅读全文
摘要:概述 从前面的博文我们也可以看到,数组和字典中只能存储对象类型,其他基本类型和结构体是没有办法放到数组和字典中的,当然你也是无法给它们发送消息的也就是说有些NSObject的方法是无法调用的,这个时候通常会用到装箱boxing和拆箱unboxing。 其实各种高级语言基本上都有装箱和拆 箱的过程,例
阅读全文
摘要:目的:保证cpu对结构体数据的存取效率; 执行:在编译器层面; 规则:成员的起始位置、结构的大小、数组中的结构等做出的约束; 参量(对齐因子):缺省按照结构体内的最大尺寸单元对齐;可以指定pack. 表现: 结构体的内存对齐形式上像一个报文; 最大尺寸的的成员变量占据报文的一行; 小尺寸的成员变量通
阅读全文
摘要:Data structure alignment refers to the way data is arranged and accessed in computer memory. It consists of three separate but related issues: data al
阅读全文
摘要:Memory access granularity Programmers are conditioned to think of memory as a simple array of bytes. Among C and its descendants, char* is ubiquitous
阅读全文
摘要:内存对齐的规则: 1、 对于结构的各个成员,第一个成员位于偏移为0的位置,以后每个数据成员的偏移量必须是min(#pragma pack()指定的数,这个数据成员的自身长度) 的倍数。 2、 在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照#pragma pack指定的数值和结
阅读全文