D码点评:14 螺旋形和顺序的声明语法

Go 语言和 Node.js 都是近年爆发的明星语言,值得/应该/怎样 学习? 先来点儿开胃的…

螺旋形(C/C++)和顺序(Go)的声明语法

收集在: http://floss.zoomquiet.org/data/20110622145115/index.html (原文在墙外…你懂的…)

tumblr_kt2ejqry4W1qz5wuco1_500.jpg(JPEG 图像,500x455 像素)

这篇文章指出,C/C++的声明语法(declaration syntax)的读法是顺时针螺旋形的. 一个例子是:

'''
         +--------------------+
         | +---+              |
         | |+-+|              |
         | |^ ||              |
    char *(*fp)( int, float *);
     ^   ^ ^  ||              |
     |   | +--+|              |
     |   +-----+              |
     +------------------------+
'''

读作: “fp是一个指针, 指向一个函数(螺旋路径被fp右边的括号封死,绕到左边的*), 有一个整形和一个浮点指针参数 (两个参数一起读因为他们被一个括号括起来了), 并返回一个指针,指向一个字符”.

而这篇发表于Go blog 上的文章给出了一个对比:

f func(func(int,int) int, int) func(int, int) int

的读法是顺序的: “f是一个函数, 他的参数包括一个函数, 有两个整数参数并返回一个整数,和一个整数, 并且返回一个函数, 他有两个整数参数并返回一个整数”.

进一步说,C/C++的声明语法(declaration syntax) 和表达式语法(expression syntax)是一致的. 比如上面例子里, *(*fp)( int, float *) 的类型就是 char.

而Go的声明语法和表达式语法是不一样的. 这样的区别的好处不只是读起来方便(我理解是按照英语语法), 而且让"写"程序也方便, 比如定义一个closure:

sum := func(a, b int) int { return a+b } (3, 4)

是也乎

正如大妈在相关论战中的断言:

@庄表伟 我在 @知乎 提了一个问题:哪些语言特性,有助于开发大型系统? http://t.cn/zRtHC8k

@ZoomQuiet 但凡能有节制的减轻程序员心理负担的特性都是! 10月15日 16:12

42分钟乱入 GAE(with go1) !-) — chaos2go1 1.0.120510 documentation 中,大妈就已经推崇过 Go 有效改善 C 样程序的思考辅助.

其实,当初决定尝试 Go 就是因为当年对 C 的恐惧心理, 在大学时用 Turbo C 编程时, 一个简单的功能,竟然要折腾那么久, 当时就崩溃了作程序猿的决心,想转职作3D 动画的, 结果再次被 3D MAX 的操作界面给折腾崩溃! 幸好遇到了 bash,php,sction script,python 一路下来,才发现,编程世界如此多样性, 根本不是大学里老师们宣称的,世界是 C/C++/C#/JAVA/Delphi 神马的…

而进一步学习 Go 过程中, 才了解到 Go 其实就是发明C 的那帮神人自我救赎的作品 ;-) 所以,你值得尝试!

另外推荐经典的相关文章:

呵呵…

当期活动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

12.8 PyCon2013CHina 珠海场

  • Python 年度大会
  • Pythonner 大趴
  • Pythonista 相亲集会
  • Pythonic 体验交流

请及时举报你身边的 华蠎行者!

巡阅

2013-12-03  

声明: 本文采用 BY-NC-SA 授权。转载请注明转自: #ZHGDG#


以上...


加入 珠海GDG

  1. 注册 Meetup
  2. 关注 Zhuhai GDG
  3. 或扫描: 2meetup

通过 珠海GDG 可以:

    第一时间获知谷歌最新技术,
    可以学到如何去谷歌平台上赚钱的思路和方法,
    可以认识很多有可能将来一起走上自己创业道路的人,
    可以学会把你的创新带向国际市场,
    参加那里的活动有经常和国际上的开发者们进行交流的机会...

PS:

若无意外,题图都是从原文提取或是通过 Google 图片搜索出来的, 版权属左, 不负责任 ;-)

PPS:

珠海GDG 微信/Blog 欢迎投稿,只要追自认内容吻合以下条件:

0. 有趣 ~ 至少是自个儿有兴趣的领域吧...
1. 有料 ~ 至少有点儿原创的东西吧..
2. 有种 ~ 至少不能是成功学吧!

有好物请及时通过邮件列表投稿成也: [email protected]
(发空邮件到 [email protected] 即完成订阅)

微信公号

栏目设定:

    G术图书 (gb:推荐好书,书无中外)
    D码点评 (dd:麻辣评点,善意满盈)
    G说公论 (gt:时评杂文,新旧不拘)
    珠的自白(dm:大妈自述,每周一篇)
    海选文章(hd:得要相信,大妈法眼)

总之, 请大家告诉大家, 珠海生活中的技术社区 都来订阅呗 ;-)

订阅方法

hacker emblem

GDG珠海 社区资源:

大妈的多重宇宙 - YouTube

全新自媒体系列...科学幻想,读书,说故事...
点击注册~> 获得 100$ 体验券: DigitalOcean Referral Badge

订阅 substack 体验古早写作:
Zoom.Quiet’s Chaos42 | Substack


关注公众号, 持续获得相关各种嗯哼:
zoomquiet


蟒营®编程思维提高班Python版

**2021.01.11** 因大妈再次创业暂停定期开设, 转换为预约触发: