绿林网

Go程序设计语言读后感锦集

Go程序设计语言读后感锦集

《Go程序设计语言》是一本由艾伦 A. A. 多诺万著作,机械工业出版社出版的286图书,本书定价:79,页数:2017-5,特精心收集的读后感,希望对大家能有帮助。

《Go程序设计语言》读后感(一):很适合学习go的一些库的入门

比较厉害的go语言书了,第一次看就看了一半,坚持不下去了。后面看了《go语言实战》,想学习下一些库的用法(比如net相关的),发现这本书刚好很适合的 第五和第八章就穿插了net库的用法,看下来,用书中的代码就能实现一个并发的网络爬虫了,并且提到了两种相关的算法(图的深度和广度) 总结就是,需要多啃一下的书

《Go程序设计语言》读后感(二):这本书代码例子相当好

看这本书的时候,就感觉这本书代码例子相当好,基本上很多概念,文字看不懂的话,多读几遍代码,很容易就能理解了(特别是讲并发的那几章),还有对同一个问题的变化写法。

go语言本身语法在编程语言里算很简单了,即没有动态语言的各种神奇的元编程trick,也没有什么函数式编程,内部dsl,而且面向对象的概念也不是很重,指针还是阉割版的,语法糖也少。基本上这本书过下来就差不多了。

《Go程序设计语言》读后感(三):基本的语句都不通

翻译太辣鸡了, 全篇机翻或者请小学生翻译的吧, 这是怎么节约成本的, 我也是醉了

翻译太辣鸡了, 全篇机翻或者请小学生翻译的吧, 这是怎么节约成本的, 我也是醉了

翻译太辣鸡了, 全篇机翻或者请小学生翻译的吧, 这是怎么节约成本的, 我也是醉了

翻译太辣鸡了, 全篇机翻或者请小学生翻译的吧, 这是怎么节约成本的, 我也是醉了

《Go程序设计语言》读后感(四):go语言的the BOOK

本书兼具广度和深度,不愧是K&R之一,每句话都是细节,千万不要囫囵吞枣错过。作者真的尽力用最少的篇幅最具深度的介绍了一门现代语言。原版绝对是最好的go语言教材

翻译版有两个版本:

1. 这本纸质的。前面问题很少,后面三章错字很多,甚至有很多程序的输出也翻译了,这估计是译者之一不认真,很丢脸很不负责任。不过也不太影响理解。

2. 另一个网上版本,叫《go语言圣经》,是golang爱好者翻译的,一般出现错误就一起纠正了,可以说质量超过了纸质翻译版。还可以边用边查,挺好的

如果英文不错,推荐看原版。无论看什么版本,本书都是让你最快窥见golang全貌的最好资料。

《Go程序设计语言》读后感(五):《Go程序设计语言》中文版翻译错误

一星是打给翻译的,原著我想打6分。

本来看的中文版,无奈翻译实在是看不懂,只好买了一本英文版。本以为看英文会比较吃力,没想到的是,英文看起来竟然比中文流畅的多。同时也发现一些翻译上的问题,在此记录一下。

这本书的翻译实在是太差了!有很多地方译者根本就没有理解原著想表达的意思!我很怀疑译者有没有好好看一遍自己翻译的东西!

不会翻译的地方直接就整段整段的跳过吗??

new是关键字吗??

垃圾回收器是立即回收吗??

局部变量和包级变量的分配是一样的吗??

什么是地址化的值??

什么是二进制操作符(应该为二元操作符)??

两个变量的类型不携带任何信息它们就具有相同的地址??

什么叫做"不需要调用字符串”?(应该为“不需要调用String函数”)

什么叫做"逃逸的概念使你不需要额外费心来写正确的代码"??

“Named types also make it possible to define new behaviors for values of the type.

These behaviors are expressed as a set of functions associated with type, called the type's methods,

we'll look at methods in detail in Chapter 6 but will give a taste of the mechanism here"

这一段直接全部漏掉了没有翻译。

“Better still, use the golang.org/x/tools/cmd/goimports tool, which automatically inserts and removes packages

from import declaration as necessary; most editors can be configured to run goimports each time you save a file.

Like the gofmt tools, it also pretty-prints Go sources files in the canonical format.”

整段直接就不翻译了??

“我们可以忽略掉整个日志”,应该为:“我们可以忽略掉整个错误”

"进行错误检查之后,检测到失败的情况往往都在成功之前"

应该为:“进行错误检查之后,首先进行错误处理,然后再处理正常的逻辑”

“之后跟着实际的函数体一直到最后”

后面一句漏翻译了 “以最大限度的减少缩进”。

"偶尔, 一个程序必须针对不同各种类的错误采取不同的措施"

应该为

“然而,程序有时候需要根据发生的不同种类的错误采取不同的处理方式”

"而且它们可以赋给 变量或者传递或者从其他函数返回", 应该为:

"而且,它们可以赋值给变量或者传递给其他函数,或者从其他函数返回"

“这样的代码组织给调用者提供了很多的灵活性” 建议改为:

"这样的代码组织给调用者提供了极大的灵活性"

"包级别的初始化在main开始之前进行" 应该为:

“包级别的变量初始化在main函数开始执行之前进行”

“局部变量初始化和声明一样在函数执行期间进行” 应该为:

“局部变量的初始化在函数遇到其声明语句的时候进行”

“短变量声明不需要声明所有在左边的变量” 建议改为:

“短变量声明不需要声明所有在:=左侧的变量”

“如果一些变量在同一个词法块中声明, 那么对于这些变量,短声明的行为等同于赋值” 应改为:

“如果某些变量已经在同一个词法块中声明过了,那么对于这些变量,短声明的行为等同于赋值”

already 没有翻译造成中文意思错误

“变量有时候使用一个地址化的值” 应为:

“变量有时候被描述为可寻址的值”

“这个规则有一个例外:两个变量的类型不携带任何信息且是零值, 例如struct{}或者[0]int,当前的实现里面,它们有相同的地址”

这一段翻译严重错误,英文原文是

“There is one exception to this rule: two variables whose type carries no information and is therefore of size zero, such as struct{} or [0]int, may, depending on the implementation, have the same address.”

应该翻译为:

“这个规则有一个例外:两个变量的类型不携带任何信息,因此其size是0,例如struct{}或者[0]int, 可能具有相同的地址,这取决于具体实现。”

“每次执行声明语句时创建一个新的实体,变量一直生存到它变得不可访问,这时它占用的存储空间被回收” 应该为:

“每次执行声明语句时创建一个新的实例,变量一直生存到它变得不可访问为止,这时它占用的内存可能会被回收”

两字之差,意思就不一样了。一个变量没有被引用了,那么它的生命周期结束了,但是并不一定会被马上回收,可能会有一些延时,这个要看具体的垃圾回收算法是如何实现的。

“即使包含它的循环已经返回,它的存在还可能延续” 应该为:

“即使包含它的函数已经返回,它的存在还可能延续”

“编译器可以选择使用堆或栈上的空间来分配” 翻译错误

原文是

“A compiler may choose to allocate local variables on the heap or on the stack but,...”

也就是说,编译器可以选择在栈上或者堆上分配局部变量,注意是局部变量,并没有提到包级变量,包级变量的生命周期是整个程序的运行期间,空间分配也许跟C/C++一样在静态存储区分配。

“令人惊奇的是,这个选择不是基于使用var或new关键字来声明变量” 翻译错误

在go中,new是一个预定义的函数,并不是关键字,所以在英文原文中,刻意避免了使用keyword这个说法

英文原文:

“this choice is not determined by whether var or new was used to declare the variable.”

应该翻译为:

“这种选择不是根据是否使用了var或new来确定的”

“任何情况下,逃逸的概念使你不需要额外费心来写正确的代码” 翻译错误

原文是

“In any case, the notion of escaping is not something that you need to worry about in order to write correct code”

中文版完全偏离了英文版表达的意思。正确的翻译应该为:

“在任何情况下,你都不需要担心逃逸的概念影响到你写出正确的代码”

“赋值语句用来更新变量所指的值”

什么是变量所指的值?根本没有这种说法,中文让人很迷惑

英文原文是

“the value held by a variable is updated by an assignment statement”

直接翻译成

“赋值语句用来更新变量的值” 更好

“每一个算术和二进制位操作符” 翻译错误

“binary operator”是指二元操作符,没有二进制操作符的说法。

“多重赋值也可以使一个普通的赋值序列变得紧凑”

原文是

“Tuple assignment can also make a sequence of trivial assignments more compact”

trivial意为繁琐的,不知道为什么翻译成普通的,这句话翻译成下面更好

“多重赋值也可以使一系列繁琐的赋值变得更加紧凑”

“这类表达式(例如一个有多个返回值的函数调用)产生多个值” 翻译有问题,

这类是哪一类?前文也没有提到,英文是“certain exxpressions”应该翻译成“某些表达式...”

fmt.Printf("%vn", c) // "100℃" 不需要调用字符串

应该为不需要调用String函数,不需要调用字符串这种翻译真的是让人彻底无语。。。

f.ReadByte() 写成了 f.Stat()

“成功执行的路径不会变的支离破碎” 应为:

“返回成功的执行路径不会被缩进”

自作聪明,乱翻译

本文由作者上传并发布(或网友转载),绿林网仅提供信息发布平台。文章仅代表作者个人观点,未经作者许可,不可转载。
点击查看全文
相关推荐
热门推荐