coffee-js / languages

编程语言学习论坛
https://github.com/coffee-js/languages/issues
112 stars 11 forks source link

读 "Why Coding Style Matters" #12

Open tiye opened 12 years ago

tiye commented 12 years ago

微博上看到@玉伯也叫射雕 分享自@sofish 转自 Why Coding Style Matters 的一段话:

When you start thinking of code as communication with other developers, you start to realize that you’re not simply writing code, you’re crafting code. Your code should clearly communicate its purpose to the casual observer. Keep in mind, your code is destined to be maintained by somebody other than you. You are not just communicating with other members of your team in the present, you’re also communicating with members of your team in the future.

另外又看到了文学编程很流传的一句口号:

“Programs are meant to be read by humans and only incidentally for computers to execute.” — H. Abelson and G. Sussman (in “Structure and Interpretation of Computer Programs”)

我现在觉得语言就应该为了沟通而设计, 并且更适应大脑思考问题的方式 况且通过编译器, 各种可行的语法无论多文气也不碍机器将其正常运行的 而代码的可读性对 Coder 来说非常重要, 就跟杂志排版广告设计多么重要一样 而且阅读 code 专注程度远超文本, 操作也极频繁, 因而非常值得精致 能力够的话我倒希望在博客和文档上当充斥语法高亮还有细致的结构

其实我有一种想法, 随着机器普及, 会有更多人参与到 coding 当中来 可能的结果是编程语言开始对自然语言渗透, 直到口语中也带上很多编程语言的影子 反过来编程语言借用自然语言的词汇已经是稀松平常的做法

于是我开始抱怨编程语言设计时使用了过多符号, 也过于僵化, 即便是 macro macro 虽说给出了编译器般操作语言的能力, 可终究还在 Lisp 的语法当中 去掉符号的规则, 甚至自己写出字符串自己执行这用代码怎么做好?

接着还有代码组织的思路, 模式.. 不过我想算法现在依然是比代码规范更伤脑筋的问题 个人其实更期待他人封装好模块, 然后调用, 这样更能保证清晰... 而模块内部的算法.. 我并不清楚怎么更好....

后面作者用了一个很常用的比喻来解释团队协作规范多么重要:

I liken the situation to a group of musicians trying to form a band. Each one comes in believing that their way of doing things is best (their “method” or “process”). The band will struggle so long as everyone is trying to do their own thing. It’s impossible to create good music unless everyone in the band agrees on the tempo, the style and who should take lead during a song. Anyone who has ever heard a high school band perform knows this to be true. Unless everyone is on the same page, you aren’t going to accomplish much.

That’s why I strongly recommend style guides for software development teams. Getting everyone on the same page is difficult, and the style guide is a great place to start. By having everyone write code that looks the same, you can avoid a lot of problems down the road.

我想代码的规范就像在一个群体里说些什么一样, 都经过磨合 记得在微博分享过一个项目, 当时视频演示里两个 coder 实时编辑同一份代码, 没找着.. 首先语法要灵活, 其次, 要改变一个人写份的做法, 让编码的人能实时沟通 我认为语法也要像自然语言一般进行磨合和积淀, 甚至将一种用法传播, 才能快速演化 Social Coding 是个好的方向, 只是 repo 和 Git 还每到向往中的通畅 我向往的是整个网络当能是实时的, 就像现世我们是实时的一样

最后开始鼓励使用 IDE:

Don’t be afraid of using tools to help enforce coding style. Web developers have an unprecedented number of tools at their fingertips today, and many of them can help ensure that a coding style guide is being followed. These range from command line tools that are run as part of the build, to plugins that work with text editors.

我在 Linux 下自学养成的习惯是不用 IDE, 因为 IDE 笨重和臃肿 诚然 yinwnag0 说过的解析语法树自动提示匹配会有用, Visual Studio 也有类似功能 可他对编码的约束, 对写小脚本的自由, 还有 OS 运行流畅度, 影响都很大 在 IDE 能消除这些不足之前, 我不想去用

island205 commented 12 years ago

初级VIM路过

Liutos commented 12 years ago

一时无法认真组织自己的语言表述,我的观点大致可以认为是``编程语言要利于准确地表达程序员的观点''。

tiye commented 12 years ago

好囧,, 帖子第一段引文居然错了... 速度订正掉了..

@Liutos 同意这个观点. 我想侧重到这篇文章可以说是"利于...程序员们的观点"了

tiye commented 12 years ago

@emerge 主题串了.. 原文有个链接失效了, 旧的链接 里有个名字叫"里坊".. 还有两个更早的名字可以看链接里的链接

tiye commented 12 years ago

@emerge 不懂你说的, 要不要新建一个Issue 好了, 这个 Issue 完全串了..

tiye commented 12 years ago

突然想通, 我说的那种语言不断堆积不断进化的想法, 很像是在控制台里边的堆积 比方说用熟悉了某个命令, 于是在加上 alias, 久而久之代码很简短很精确, 而且适合解决常见问题 而我理解中语言的意义就在于能快速解决各种问题, 就像日常的文件操作这么迅速一样 然后编程语言到目前, 相对控制台常用的工具还是多么僵化的, 于是我想这里等待一个改变 那之后写代码就像说话, 谁见多识广了就能很轻松将意图表达为能控制机器交流的语言

一种, 能快速将编程语言的常用命令封装成模块, 让人使用语言能有在控制台里快速操作的感觉 比如在网上维护一些命令集合, 每个人能上去添加和 folk, 然后同步到自己常用的语言环境中 还有像在后台统计所有人使用到某个版本里每个函数的次数, 并绘制图表 之后就能根据数据开发开发更好的语言的工具集, 便利各种人在一些场景中使用

然后像异步, OO, FP, Monads 各种编程模式在实际场景中怎样被使用也更加