免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 7139 | 回复: 28

Perl 程序员学习 Golang,Go 语言简单入门、快速使用 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2015-12-10 14:30 |显示全部楼层
我们在等待 Perl6 的道路上一天天老去,Perl6 呢?还!没!好!二儿子都能打酱油了,还没好!
终于有一天,我决定把自己的“母语”改成 Golang。“改母语”和只是学一个新语言不同,母语意味着做任何程序工作的首选。
今天就给大家介绍一下 Golang。
Golang 比 Perl 有很多优势,其中之一就是语言级别的多线程,写出来的程序可以充分利用 CPU 多核。多线程的实现是基于 epoll 的,也就是 Perl+AnyEvent+Coro,还是在多线程的情况下实现了这一切,而且还是扁平化事件驱动,顺序写代码,不会有一大堆回调混在一起。
下面就简单对比一下这两个语言的语法,花两分钟看一眼,就可以开始写程序了!

变量
Perl:
  1. my $str = "hello";
  2. my $num = 100;
复制代码
Go:
强类型语言区分类型
  1. str := "hello"   // str 的类型是字符串
  2. num := 100       // num 的类型是 int
复制代码
数组
Perl:
  1. @av,$av[0], $av[20],动态数组,索引随便写。
复制代码
Go:
强类型语言区分类型,数组也不例外
  1. av := []int{1, 2, 3, 4}
复制代码
哈希
Perl:
  1. %hash,用于 key/value 对。$hash{"key"} = 100
复制代码
Go:
需要分别指明 key/value 的类型
  1. hv := map[string]int{"key": 100}
  2. hv["key"] = 200
复制代码
循环
Perl:while, for, foreach
Go:只有一个 for

函数
Perl:
  1. sub xxx {}
复制代码
Go:
  1. func xxx (str string) int {}
复制代码
函数要指明参数个数和类型,包括返回值个数和类型


程序结构
Perl:
  1. !#/usr/bin/perl
  2. use xxx;

  3. my $str;

  4. &function1("aa", "bb")

  5. sub function1 {
  6.     my $aa, $bb =  @_;
  7. }
复制代码
Go:
  1. package main

  2. import "xxx"

  3. func main () {
  4.     function1 ("aa", "bb")
  5. }

  6. func function1 (aa string, bb string) {
  7. }
复制代码
注意:以上介绍不严谨且不全面,但非常简单,且覆盖了两个语言最基本的东西。
原谅我随波逐流的在这急功近利的时代选择了标题党,此文显然算不上是“简单入门”,只是想告诉大家,真的非常容易学习。我学习和使用 Golang 已经有一段时间,感觉就像 flw 所说,“Golang 是非常值得学习的语言”。

想继续学习的同学看这里:
以下列出了我学习资料的内容和顺序:

1. 先走一遍官方介绍。
https://tour.golang.org (大概需要半天时间)
里面的课后练习开始如果觉得难懂就跳过,整个过程不明白的地方做存疑操作。

2. 接下来看
https://golang.org/doc/effective_go.html
这个就介绍的相对细了,要仔细看,第一遍看的时候对不明白的地方也存疑,之后逐步搞明白。

3. Golang 官方博客
http://blog.golang.org/ 里面非常多的小的地方的语言讲解,例如 slice 是如何实现的

4. Golang 语言说明书
https://golang.org/ref/spec 这部分内容最多。尽量都过一遍,找到前面学习中漏掉的内容和概念模糊的东西。

5. 看 Golang 源代码。
说到 Golang 源代码,我要再补充一个我个人认为 Golang 的另一个优点。在学了几周 Golang 以后,翻开 Golang 源代码,虽然我不理解整体的设计,但几乎没有一行代码是我看不懂的,每一行我都知道它在做什么。而 Perl 我用了 10 年+,CPAN 上仍然有大把的晦涩难懂的黑魔法代码。
Golang 的源代码容易看懂,还能学到很多东西。这部分我是从 net/http 开始的。

评分

参与人数 1信誉积分 +10 收起 理由
substr函数 + 10 很给力! 赞一个! 总是这么给力啊

查看全部评分

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2015-12-10 17:15 |显示全部楼层
本帖最后由 sunzhiguolu 于 2015-12-10 17:21 编辑

回复 1# py
大神您好, 对这门语言我一窍不通. 有几个问题向您请教:
1.> 对面向对象编程是原生支持还是依靠第三方模块的支持;
2.> 中文学习资料多吗? 与英文资料所占比例大概是个什么样子;
3.> 支持正则吗, 语法是否像 Perl 5 那样;
4.> 使用该语言写的东西在 (Windows | Linux) 平台能够直接执行吗, 转换方便吗? (即: exe)
5.> 文本处理的能力如何;
6.> 开发 web 应用与 Perl 相比具有哪些优势;

   

论坛徽章:
8
技术图书徽章
日期:2013-09-30 08:51:28技术图书徽章
日期:2013-12-11 09:26:39白羊座
日期:2013-12-27 15:27:13金牛座
日期:2014-01-06 09:13:05天蝎座
日期:2014-01-21 14:23:28酉鸡
日期:2014-05-09 16:51:12卯兔
日期:2014-08-11 16:49:1515-16赛季CBA联赛之八一
日期:2017-08-14 23:24:57
发表于 2015-12-10 17:23 |显示全部楼层
这几个网址一个都打不开····

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2015-12-10 17:52 |显示全部楼层
本帖最后由 sunzhiguolu 于 2015-12-10 18:01 编辑

回复 3# xiumu2280
百度 => 翻吅墙就行了.


   

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
发表于 2015-12-10 20:33 |显示全部楼层
Go 是底层语言的典范,Perl 6 是高级语言的典范。(我实在不明白为什么 Go,Android 等技术类站点被 xx ) 但还是有镜像站点可以下载安装版本。

Go 语言很好,但最大的问题是语法似乎不是为人类设计的,不过要重新设计一个外壳语言,把 Go 语言重新包装一下,用类似 Ruby 的语法来写代码,就会让更多人更容易体会到 Go 语言的好处。

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
发表于 2015-12-10 20:38 |显示全部楼层
回复 2# sunzhiguolu


1.> 对面向对象编程是原生支持还是依靠第三方模块的支持; 原生
2.> 中文学习资料多吗? 与英文资料所占比例大概是个什么样子; 资料不多,英文占多数,但社区完善,提问回答的很快。
3.> 支持正则吗, 语法是否像 Perl 5 那样; 正则的语法和 Perl5 差不多
4.> 使用该语言写的东西在 (Windows | Linux) 平台能够直接执行吗, 转换方便吗? (即: exe):能
5.> 文本处理的能力如何; 能用Perl 处理的文本,用 Go 也能处理
6.> 开发 web 应用与 Perl 相比具有哪些优势; 就是快

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
发表于 2015-12-10 21:37 |显示全部楼层
Perl 语言有一种风格叫 use Modern, 我认为这种风格的代码可读性最好,可维护性也最好。

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2015-12-10 22:07 |显示全部楼层
回复 6# 104359176
非常感谢您的帮助, 谢谢您...

   

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2015-12-11 08:24 |显示全部楼层
104359176 发表于 2015-12-10 20:33
Go 是底层语言的典范,Perl 6 是高级语言的典范。(我实在不明白为什么 Go,Android 等技术类站点被 xx ) 但还是有镜像站点可以下载安装版本。
Go 语言很好,但最大的问题是语法似乎不是为人类设计的,不过要重新设计一个外壳语言,把 Go 语言重新包装一下,用类似 Ruby 的语法来写代码,就会让更多人更容易体会到 Go 语言的好处。


1. 因为 Google 的东西都在 GAE 上,封的是 GAE 不是某个具体的东西
2. 学习 Golang 之前我也认为语法太难受。但所谓的难受,基本上就是变量名和变量类型颠倒。这种难受的感觉几周之后就完全没有了。而且,我在给编程经验<1年的人做培训的时候,发现他们普遍对于这种颠倒没有什么感觉,而老程序员就会感觉不适。这说明变量名和变量类型的摆放顺序,很可能只是习惯而已,并不是所谓“不是为人类设计的”。

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
发表于 2015-12-11 09:53 |显示全部楼层
Perl6早出来了,名字叫Ruby
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP