内容丰富的命题作文 - 《Visual Studio Code 权威指南》书评

内容丰富的命题作文 - 《Visual Studio Code 权威指南》书评

Visual Studio Code 是微软推出的、主要面向程序员的新一代编辑器,在某些轻量级场景下已经可以替代专业的 IDE 产品(尽管从本质上说它仍然是编辑器)。其实它出现也已经有好几年了,但一直以来除了官方文档之外,缺乏其他系统性的学习资料。当然也不是完全没有,比如:

现在,由微软中国的工程师韩骏编写的《Visual Studio Code 权威指南》出版了,也算是填补了该主题在中文领域的一项空白。

重写 500 Lines or Less 项目 - Static Analysis

概述

本文章是 重写 500 Lines or Less 系列项目其中一篇,目标是重写 500 Lines or Less 系列的原有项目:静态分析/Static Analysis。原文章代码是基于 Julia 这种新型的编程语言,主要分析目标是该语言中比较被强调的一个特性:多重分派(multiple dispatch)。考虑到 Julia 语言并不是特别普及,同时多重分派在其他语言中也并非常见特性(也有与之相近的概念),可能大部分读者对它会比较陌生,影响对于原文的理解。因此,本文选择基于主流、同时也比较便于学习和理解的 Python 来演示静态分析的原理和过程,不再按照原文的体例。

重写 500 Lines or Less 项目 - 前言

对于有一定编程基础、希望提高项目能力的同学来说,500 Lines or Less 无疑是个很好的参考。它的若干实例都是来自实际、具有现实意义的项目,500 行左右的代码规模对初学者来说略有难度但也不至于高不可攀,作为提高级别的学习资料是相当合适的,因此也有不少人推荐过它。

不过在浏览这个项目之后,我也发现一些问题。最大的问题可能是这些文章写成时间较早,代码也有些过时,比如很多示例是用 Python2 写成的,它们如果不经修改的话,在目前的 Python3 上是无法运行的;此外,部分内容也应当更新。比如 Web 服务器的例子讲述到了 CGI,但 CGI 在现代的 Web 服务器上已经很少使用,不太值得再去花时间深究。

另外一个遗憾是作为教材的写作方法。尽管这些代码并不算多——从题目就能知道,都在 500 行以内——但除非你对目标领域非常熟悉,否则是不太可能一次写成的。然而,大部分示例是先讲解原理之后就展示最终的代码。我们既看不到作者思考的过程,也不太日常项目开发的实际情况。因此,我决定不再跟随原文章的节奏,而是自己从头写起,并采用分步骤、渐进式的方法,保持文章和代码同步。这样,你能够看到一个较大的需求是如何从简单的方式入手,一步步扩展成完整的程序的。相信每个人在开发时会有自己的思考方式和具体步骤,如果自己去完成该项目的话,各人的实现会有很大差异,这是完全正常的。所以我也希望大家通过自己的思考去理解代码,当然,有条件的话最好是再自己动手写一遍,这样才能让自己的理解更加深入。

当然,重写这么多篇文章是个宏大的工程,我的力量毕竟有限,不可能面面俱到。原文中大多在开篇时会花一些篇幅来讲解项目设计的基础知识,比如涉及到的网络协议的工作原理等等,这些内容并不过时,基本上也没有更新的必要,因此直接阅读原文即可。本系列的文章一般会先简述背景和内容结构,然后直接进入开发环节。

以上说到了一些问题,但这并不是对原项目的批评。相反,这些作者前辈是非常值得尊敬的,他们乐于向后辈分享知识,并耐心编写了这些颇具深度的学习资料。我所编写的大部分代码也是在他们的基础上进行扩展或改写,换句话说,我也是站在巨人的肩膀上,希望给后来人的学习提供一点微小的贡献。当然,自私地说,对我本人也是一个学习和实践的机会。

示例代码

本文章系列的所有代码都放在 我的 Github 代码库,每个项目使用一个单独的目录,命名和 500 Lines or Less 项目保持一致,以方便查找。但为了方便使用,避免为各个项目及步骤单独创建环境的麻烦,代码根目录下包含了总的入口,比如 Python 代码的入口是 main.py。部分示例代码如下:

"""
Web Server example.
"""
# Run Step 00: Basic Server
# from web_server.step00_basic_server import main; main()
# Run Step 01: Middlewares
# from web_server.step01_middlewares import main; main()

读者想要运行哪个项目/步骤的代码,只要去掉注释符号即可。大家也会发现,为了让目录成为合法的模块,部分目录名称做了相应的修改,相信对查找代码不会造成障碍。

以下列出分类文章/项目目录以及相关的参考资料,大家可以选择自己感兴趣的主题来阅读。

文章索引

参考资源

GoalKicker 整理的 Programming Notes 系列免费书籍

GoalKicker 整理的 Programming Notes 系列免费书籍

GoalKicker 这个网站最近整理发布了一系列免费的编程系列电子书,称为 Programming Notes for Professionals books 系列,其涉及的内容之广泛让人吃惊。

书籍封面

再仔细看内容描述,原来内容是来自 StackOverflow,而该网站则做了整理、编辑、排版和发布的工作。

书籍描述

我大略看了两本,其内容有点类似于 Effective XXX 系列,是一系列知识点的汇总,并不是入门的教学内容,而是更适合作为总结回顾、查漏补缺,有经验的程序员应该可以很快看完。到目前为止,已公开的书籍如下表所示,共 48 本,大家可以挑自己感兴趣的主题来看。

  1. .NET Framework Notes for Professionals book
  2. Algorithms Notes for Professionals book
  3. Android® Notes for Professionals book
  4. Angular 2 Notes for Professionals book
  5. AngularJS Notes for Professionals book
  6. Bash Notes for Professionals book
  7. C Notes for Professionals book
  8. C# Notes for Professionals book
  9. C++ Notes for Professionals book
  10. CSS Notes for Professionals book
  11. Entity Framework Notes for Professionals book
  12. Excel® VBA Notes for Professionals book
  13. Git® Notes for Professionals book
  14. HTML5 Canvas Notes for Professionals book
  15. HTML5 Notes for Professionals book
  16. Haskell Notes for Professionals book
  17. Hibernate Notes for Professionals book
  18. JavaScript® Notes for Professionals book
  19. Java® Notes for Professionals book
  20. Kotlin® Notes for Professionals book
  21. LaTeX Notes for Professionals book
  22. Linux® Notes for Professionals book
  23. MATLAB® Notes for Professionals book
  24. Microsoft® SQL Server® Notes for Professionals book
  25. MongoDB® Notes for Professionals book
  26. MySQL® Notes for Professionals book
  27. Node.JS® Notes for Professionals book
  28. Objective-C® Notes for Professionals book
  29. Oracle® Database Notes for Professionals book
  30. PHP Notes for Professionals book
  31. Perl® Notes for Professionals book
  32. PostgreSQL® Notes for Professionals book
  33. PowerShell® Notes for Professionals book
  34. Python® Notes for Professionals book
  35. R Notes for Professionals book
  36. React JS Notes for Professionals book
  37. React Native Notes for Professionals book
  38. Ruby on Rails® Notes for Professionals book
  39. Ruby® Notes for Professionals book
  40. SQL Notes for Professionals book
  41. Spring® Framework Notes for Professionals book
  42. Swift™ Notes for Professionals book
  43. TypeScript Notes for Professionals book
  44. VBA Notes for Professionals book
  45. Visual Basic® .NET Notes for Professionals book
  46. Xamarin.Forms Notes for Professionals book
  47. iOS® Notes for Professionals book
  48. jQuery® Notes for Professionals book

想要下载的同学现在就可以去 GoalKicker 的主页,国内可以正常访问,也不需要注册登录,点开即可下载。

Visual Studio Code 远程扩展不是开源的

Visual Studio Code 这个新锐编辑器最近的发展势头很猛,而目前的主要卖点则是远程开发(Remote Development)以及在线版本(Visual Studio Online)。过去我在看代码的时候就发现,Remote Development 扩展的源码并未开源出来,但当时并未在意,只是猜想可能是对 VSCode 的核心改动比较大、或者网络部分的设计尚未稳定,因此暂时封闭,以后应该会逐步释放出来。直到最近看到一些资料,才发现这是一个有意的决定,而 Remote Development 部分可能永远都不会开源了。

放弃了用 Go 重写网站的决定

我曾经说过,现在也仍然认为————个人网站就是用来折腾的。本站也经过几次重写,主要是想要体验不同的语言和框架在完成一个实际项目的时候有哪些差别。最近一次重写遇到了 Python 在性能方面的某些问题(具体看这里),因此我也开始考虑是否可以用性能比较强的静态语言来重写,以目前各种语言的发展态势来看,Go 似乎是一个比较合理的选择。