go语言学习层次结构 go语言进阶

如何看待go语言泛型的最新设计?Go 由于不支持泛型而臭名昭著,但最近,泛型已接近成为现实 。Go 团队实施了一个看起来比较稳定的设计草案 , 并且正以源到源翻译器原型的形式获得关注 。本文讲述的是泛型的最新设计,以及如何自己尝试泛型 。
例子
FIFO Stack
假设你要创建一个先进先出堆栈 。没有泛型,你可能会这样实现:
type Stack []interface{}func (s Stack) Peek() interface{} {
return s[len(s)-1]
}
func (s *Stack) Pop() {
*s = (*s)[:
len(*s)-1]
}
func (s *Stack) Push(value interface{}) {
*s =
append(*s, value)
}
但是,这里存在一个问题:每当你 Peek 项时,都必须使用类型断言将其从 interface{} 转换为你需要的类型 。如果你的堆栈是 *MyObject 的堆栈,则意味着很多 s.Peek().(*MyObject)这样的代码 。这不仅让人眼花缭乱,而且还可能引发错误 。比如忘记 * 怎么办?或者如果您输入错误的类型怎么办?s.Push(MyObject{})` 可以顺利编译,而且你可能不会发现到自己的错误,直到它影响到你的整个服务为止 。
通常 , 使用 interface{} 是相对危险的 。使用更多受限制的类型总是更安全,因为可以在编译时而不是运行时发现问题 。
泛型通过允许类型具有类型参数来解决此问题:
type Stack(type T) []Tfunc (s Stack(T)) Peek() T {
return s[len(s)-1]
}
func (s *Stack(T)) Pop() {
*s = (*s)[:
len(*s)-1]
}
func (s *Stack(T)) Push(value T) {
*s =
append(*s, value)
}
这会向 Stack 添加一个类型参数,从而完全不需要 interface{} 。现在,当你使用 Peek() 时,返回的值已经是原始类型,并且没有机会返回错误的值类型 。这种方式更安全,更容易使用 。(译注:就是看起来更丑陋,^-^)
此外,泛型代码通常更易于编译器优化,从而获得更好的性能(以二进制大小为代价) 。如果我们对上面的非泛型代码和泛型代码进行基准测试,我们可以看到区别:
type MyObject struct {
X
int
}
var sink MyObjectfunc BenchmarkGo1(b *testing.B) {
for i := 0; ib.N; i{
var s Stack
s.Push(MyObject{})
s.Push(MyObject{})
s.Pop()
sink = s.Peek().(MyObject)
}
}
func BenchmarkGo2(b *testing.B) {
for i := 0; ib.N; i{
var s Stack(MyObject)
s.Push(MyObject{})
s.Push(MyObject{})
s.Pop()
sink = s.Peek()
}
}
结果:
BenchmarkGo1BenchmarkGo1-161283752887.0 ns/op48 B/op2 allocs/opBenchmarkGo2BenchmarkGo2-162840647941.9 ns/op24 B/op2 allocs/op
在这种情况下,我们分配更少的内存,同时泛型的速度是非泛型的两倍 。
合约(Contracts)
上面的堆栈示例适用于任何类型 。但是,在许多情况下 , 你需要编写仅适用于具有某些特征的类型的代码 。例如 , 你可能希望堆栈要求类型实现 String() 函数
计算机语言从低级到高级可以分为?按照计算机语言从低级到高级的次序,把计算机系统按功能划分成多级层次结构,每一层以一种不同的语言为特征 。这些层次依次为:微程序机器级 , 传统机器语言机器级 , 汇编语言机器级,高级语言机器级,应用语言机器级等 。
《语言学概论》——考前密训——第四章 语言的结构规则——语法抽象性
指的是对具体东西进行类的概括 。
递归性
指的是相同的规则可以重复使用 。
系统性
指的是语法规则具有推导性和解释性 。
稳定性
变化现象比较少,变化过程也十分缓慢 。
语音
语音是指语言的声音,包括字词发音、音节轻重、停顿、句调等 。语法现象就表现为语音差别 。
动补结构“想起来了”意思是“回想起来了”;
动宾结构“想起来了”意思是“打算起床” 。
语汇
语汇是指词语的意义、用法和类别等,某些特定词语会造成语法上的差异 。“长2米”、“短2米”
修辞
修辞包括词语选用、辞格运用和句式调整 。为了修辞需要有时可以超出语法规则的限制 。比如“太阿Q”“很女性”名词做谓语 。
语境
指的是对具体东西进行类的概括 。
比如“一张动物园”是“我要买一张去动物园的票”这句话在特定场所(公共汽车上)的成分省略现象 。
逻辑
人们说话要合逻辑,也有约定俗成 。
比如“门把风吹开了”不合逻辑,例外如本来该说“来北京以前”,但人们反而常常说“没有来北京以前” 。
历时和共时
【go语言学习层次结构 go语言进阶】 历时:纵向动态 , 重点是某些语法现象在特定时间过程中产生和消失的原因和规律 。比如古代汉语中的之、乎、者、也现在已变成“的、了、吗、呢”等另一套语气词 。
共时:横向静态,重点是某一种语言在特定时间范围内的语法表现形式和语法规则系统 。所以现代汉语是一种共时的系统 。
教学和信息
教学:研究成果是服务于人 , 特点是规范和实用,定义和说明要求具有简明性和可接受性 。
信息/计算机:特点是精确和可靠 , 定义和规则必须具有推导性和可验证性 。
普遍和个别
普遍:发现人类语言中的共同的语法机制 。
个别:发现各种语言独特的语法现象 。
语法和句法
语法/形态学,主要描写词的形态特征和变化规则 。
句法/造句法,主要说明句法成分和句子类型 。汉语中像语序、虚词、结构等句法问题应该在语法中占有更多分量 。
组合规则和聚合规则
“哪个成分在前,哪个成分在后”的问题就由组合规则来管,所以组合规则实际就是语法结构的构成规则 。
“什么样的成分能替换出现在某个组合位置上”的问题就由“聚合规则”来管 , 所以聚合规则实际上就是语法成分的归类规则 。
核心语法和外围语法
核心语法:仅指句法结构规则,又称“小语法” 。
外围语法:则还包括语法有关的词语、语义和语音等现象 。这种语法分类是一种较新的分类观点 。
A.语素: 最小的有意义的一眼单位 。
B.语素组: 多个语素组成的有意义的未独立使用的语言单位 。
C.词: 最小的有意义的能够独立使用的语言单位 。
D.词组: 有意义的能独立使用的语言单位 。
E.句子: 由若干个词活着词组按照一定的规则组合成的,能表达相对完整的意义 。
F.句组: 由多个句子组合而成的,表达相互关联的比较复杂的意义 。
各语法单位的关系(三级六种)
凡事能够体现一类意义或有共同作用的形式,就都是 语法形式 , 语言中不管是词语意义,还是结构意义,凡是通过一类形式或共同功能所获得的意义,就是 语法意义。语法形式与语法意义就像是语法这张纸的两面,二者相互依存、不可分割 。
词法手段
词性变化:
附加:英语中名词后加“-s”表示复数 。
屈折:如英语中的复数“man/men(男人)” 。
异根:如英语中“go/went(走)” 。
零形式:未加词缀的“book(书)”这种单数意义就是用零形式表示的 。
词的轻重音:未加词缀的“book(书)”这种单数意义就是用零形式表示的 。
词的重叠:名词或量词的重叠“人/人人、天/天天”都有“逐个”的意思 。
句法手段
虚词:比如“我和老师”、“我的老师” 。
语类选择:比如“读书”是动宾结构,“好书”是偏正结构 。
语序:如“天气好”是主谓关系,“好天气”是偏正关系 。
句调:比如“他去?(高调)”“你去?。ǖ偷鳎崩幢泶镆晌省⑵硎褂锲?。
人类语言分类:
用词形变化、词的轻重音等语法手段的语言 , 如俄语、德语等 , 叫做 综合性语言 ;主要使用虚词、语序等语法手段的语言,如汉语、英语等 , 叫做 分析性语言。因此,词法手段又可称作综合性手段,句法手段又可以称作分析性手段 。
类别范畴 是由语类和语类选择形式表示的语法意义 。
从词的类别看,各种语言都需要词的语法类别意义 。比如建立名词的类表示人或事物的意义,如“工人、英语” 。但不同语言在语类上也有差异 。比如俄语中只有形容词修饰名词,但汉语修饰名词的词就不需要词形变化,如“军用电话、高级电话” , 所以汉语的不同词类都可能表示修饰义 。
从词与词的类别选择看,各种语言也都要求某类词与某类词的组合的意义,比如名词加动词就产生人或事物被陈述的意义 , 如“工人工作” 。不同语言在语类选择的意义上也有差异 。例如德语名词前需要修饰义的成分时只能选择形容词 。
关系范畴 主要指通过 虚词和语序 表示语法意义 。
有些缺少形态变化的语言必须通过虚词和语序来表示特定的语法关系意义 。例如“学生家长”同样是“名词 名词”,但既可能是联合关系也可能是修饰关系,通过加上连接词“和”和“的”,如“学生和家长”“学生的家长”,就可以区别这两种关系意义了 。
划分标准:
形态标准:英语动词有时、体、态的词形变化,名词有单复数的变化 。
意义标准:一种语汇概念意义 , 一种是语法范畴意义 。
分布标准:这种观点是说要根据词的聚合位置来确定词类 。
划分结果:
共同词类和特殊词类
共同词类如名词、动词;特殊词类如汉语的量词 。
词类的大类和小类 的实词(体词、谓词)和虚词 。
典型词类和夸类词类
如“table(桌子)”是典型名词 。
基本词组
词组利用语序的语法手段,叫做“基本词组” 。有五种类型:
主谓词组:他很聪明
动宾词组:吃面条
偏正词组:优秀教师
动补词组:洗干净了
联合词组:能源交通
特殊词组
汉语的助词词组(动词 时态助词),如“吃了、说过” 。
汉语的方位词组,如“桌子上” 。
汉语的语气词词组,如“走吧” 。
除此之外还有三种比较重要的特殊词组,一是“介词词组”,二十“数量词组”,三十“‘的’字词组” 。
词类的聚合分类
体词性词组——谓词性词组
向心词组——离心词组
层次分析必须依据两条原则:一是成结构,二是有意义 。
句型类:
完全主谓句: “妈妈来了”、“这孩子真聪明” 。
不完全主谓句: “下雨了”可以补出主语,说“天下雨了” 。
非主谓句: “禁止吸烟”、“有人来了” 。
独词句: “谁”、“好”、“进来” 。
句式类:
XY——YX: “我认识这个人——这个人我认识(宾语前移)”
XY——X: “进来、休息休息吧”
X——XY: “你去上海——你去上海吗”
X——Y: “你去上海——你去不去上海”中“去——去不去”也是一种成分替换 。
功能类:
陈述句: 如“今天星期一” 。
疑问句: 如“你知道这件事吗” 。
祈使句: 如“请把这件事尽快办一下” 。
感叹句: 如“It’s great(太棒了)”“多么可爱的孩子们啊” 。
简繁类:
单句: 结构和意义比较简单的句子 , 如“我病了”,“我听说今年大学扩大招生了” 。
复句:
由两个或两个以上互不从属的分句组成的 。
联合关系复句:并列、选择、递进、连贯
主从关系复句:因果、转折、条件、假设、让步
有的学者倾向于把句子与句子组合这种比较长的语言单位叫做 句组,侧重语法层面的研究;有学者主张把这种语言单位叫做 话语。
多个单句和复句的组合形式,在语用上就统称为 篇章。
会话 是两个或多个人共同说的一段话 , 交谈、讨论 。
go是什么意思一是一种编程语言,另一个是动词,表示走的意思 。
简介
Go是谷歌2009年发布的第二款编程语言 。2009年7月份,谷歌曾发布了Simple语言 , 它是用来开发Android应用的一种BASIC语言 。谷歌资深软件工程师罗布·派克(Rob Pike)表示,“Go让我体验到了从未有过的开发效率 。”派克表示,和今天的C或C一样,Go是一种系统语言 。他解释道 , “使用它可以进行快速开发,同时它还是一个真正的编译语言,我们之所以现在将其开源,原因是我们认为它已经非常有用和强大 。”2007年,谷歌把Go作为一个20%项目开始研发 , 即让员工抽出本职工作之外时间的20%,投入在该项目上 。除了派克外,该项目的成员还其它一些谷歌工程师 。派克表示,编译后Go代码的运行速度与C语言非常接近,而且编译速度非常快,就像在使用一个交互式语言 。现有编程语言均未专门对多核处理器进行优化 。派克表示 , Go就是谷歌工程师为这类程序编写的一种语言 。它不是针对编程初学者设计的,但学习使用它也不是非常困难 。Go支持面向对象,而且具有真正的封装(closures)和反射(reflection)等功能 。在学习曲线方面,派克认为Go与Java类似,对于Java开发者来说,应该能够轻松学会Go 。之所以将Go作为一个开源项目发布,目的是让开源社区有机会创建更好的工具来使用该语言 , 例如Eclipse IDE中的插件 。目前还没有支持Go的IDE 。在目前谷歌公开发布的所有网络应用中,均没有使用Go 。但是谷歌已经使用该语言开发了几个内部项目 。派克表示,Go是否会对谷歌即将推出的Chrome OS产生影响,现在还言之尚早,不过Go的确可以和Native Client配合使用 。他表示,“Go可以让应用完美的运行在浏览器内 。”例如,使用Go可以更高效的实现Wave,无论是在前端还是后台 。
gene ontology
GO(gene ontology)但是它已经成为生物信息领域中一个极为重要的方法和工具,并正在逐步改变着我们对 biological data的组织和理解方式,它的存在已经大大加快了我们对所拥有的生物数据的整合和利用,我们应该逐步学会理解和掌握这种思想和工具 。众所周知,sequence based biology中的核心内容即是对序列的Annotation(注释) , 其中主要包含structural annotation和functional annotation,前者涉及分析sequence在genome中的locus以及exon,intron , promoter等的location , 而后者则是推断序列编码产物的功能,也正是我们在六月论题中所着重探讨的 。应该说,这二者是相互关联的 。随着多种生物genome的相继解码,同时大量ESTs以及gene expression profile date的积累,使得annotation的工作量和复杂度大大增加 。然而另一方面,大多数基因在不同真核生物中拥有共同的主要生物功能,通过在某些物种中获得的基因或者蛋白质(shared protein)的生物学信息,可以用以解释其他物种中对应的基因或蛋白(especially in comparative genomics) 。由于这些繁复的功能信息主要是包含在积累的文献之中,如何有效的提取和综合这些信息就是我们面临的核心困难,这也是GO所要着力解决的问题 。通过建立一套具有动态形式的控制字集(controlled vocabulary) , 来解释真核基因及蛋白在细胞内所扮演的角色,并随着生命科学研究的进步 , 不断积累和更新 。一个ontology会被一个控制字集来描述并给予一定的名称,通过制定“本体”ontologies并运用统计学方法及自然语言处理技术 , 可以实现知识管理的专家系统控制 。到目前为止,Gene Ontology Consortium(GO的发起组织)的数据库中有3大独立的ontology被建立起来:biological process生物过程, molecular function分子功能及cellular component细胞组分 。而这三个ontology下面又可以独立出不同的亚层次,层层向下构成一个ontologies的树型分支结构 。可以说, GO是生物学的统一化工具 。
“go”在英汉词典中的解释(来源:百度词典):
GO
abbr.
1. =general order 通令
go
KK: []
DJ: []
vi.
1. 去;离去
2. 行走;旅行;移动[Q]
3. 做(事);从事(活动)[ v-ing]
4. 变为,成为[L]
5. 处于...的状态[L]
6. 衰退;受损;磨损
7. 开始;开动
8. (机器等)运转
9. 通到;延及;至[W][Q]
10. 相配[W]
11. 【数】(除)得整数商[W]
12. 被放置;容得下[W][Q]
13. 售出;归给[( for/to)]
14. (与must, can, have to 连用)被去掉;被放弃;被辞退
15. (消息等)被传递,流传[W][ that]
16. 被接受;被准许;有效[W]
17. 进行;结果[Q]
18. 发出声响;(钟)报时
19. 完结;死
vt.
1. 拿...打赌[( on)]
2. 【口】(常用于否定句)忍耐
n.
1. 【口】轮到的机会[C]
2. 【口】尝试[C][( at)]
3. 【口】精力;精神[U]
4. 【口】意外的事态[S]
5. 去;进行[U]
6. 【口】时髦东西[the S]
话说楼主你问的是哪个方面的啊~
go语言学习层次结构的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go语言进阶、go语言学习层次结构的信息别忘了在本站进行查找喔 。

    推荐阅读