编程生涯 ABC(B) - 工欲善其事
上一篇文章 @ 的那个映昕被本尊挖出来是错的 🙈, 于是请认准 Matters 唯一(?) 正版映昕 @映昕 🙇♀️
俗话说工欲善其事……
必先利其器嘛……于是如果想让自己的编程生涯有个不那么糟心的开始的话,找好强力又合适自己的工具就十分重要啦。
所以都需要些什么呢?
- 首先要有个操作系统,不然剩下的都运行不起来。
- 然后总要用什么写源代码吧,于是需要一个顺手的编辑器。
- 和汝正在学习的语言的相关工具(例如编译器啦、解释器啦什么的)和文档。
- 等等……
操作系统?
敬告:此处带有严重到过分的主观偏见(?)
毕竟所有的程序都要在一个操作系统上运行对不对?(自己运行的那个大概可能叫做操作系统内核……)。于是,对于现在最常见的三种桌面操作系统:
- Windows :除非汝的出发点是开发 Windows 应用,否则没什么实际用处。(虽然 Windows 10 以后可以安装 Linux 子系统稍微缓解一下……)
- macOS:除非汝的出发点是开发 macOS / iOS / WatchOS 应用,否则……还能用(例如拿 brew/macports 或者 docker 凑合一下什么的)。如果汝是外貌协会(十分在意外观)的家伙另当别论。
- GNU/Linux: 对于上面两种情况以外的情况都挺合适的:
如果汝不愿意多学习一些的话……老实讲汝可以放弃了,前面不才说过这是个学无止境的行业(坑)嘛……
但为了避免本末倒置,汝可以考虑先装进虚拟机里,慢慢来(于是前面那篇文章的 Project 就派上用场了,施工中……)
一个强力又顺手的编辑器
「先前我们说过,工具是手的延伸。哦,和其它任何软件工具相比,这都更适用于编辑器。你需要尽可能不费力气的操纵文本,因为文本是编程的基本原材料。」
汝为什么会需要一个强力又顺手的编辑器?
- 强力: 一个足够强力的文字编辑器应该具备一些方便的基本功能,例如:
语法凸显和自动完成(可以节约汝珍贵的脑力资源,以及可能使汝提前发现一些错误,像是没以特定颜色显示的关键字可能隐藏着语法错误的时候)
自动缩进和重新排版(有可能是为了美观,有可能是为了统一,也有可能只是语法要求(例如 Python ……))
自动化(允许汝通过例如对编辑器编程等方式完成一些繁琐的操作,例如创建新文件时的脚手架代码,生成不同目标的源代码等等)
可扩展(可以通过更新或者扩展支持未来的新特性)
- 顺手:一个顺手的编辑器应该能根据汝自己的需求作出改变,例如外观(字体、背景、颜色等等),窗口布局和快捷键等等。适合汝的习惯的话,也能提高不少效率不是?
- 一个: 精通一个文字编辑器的使用已经够难啦……为了避免好几个不一样的配置造成的混乱,还是只精通一个好了。
那么有没有……
- 嗯,没有,因为这是个个人问题(当然也有的人觉得是个“信仰问题”……)
- 目前程序员中最著名(猜的)的两大编辑器当属 Emacs 和 Vi(及其某个变种 Vim)莫属啦,Emacs 因为功能强大经常被戏称做是“伪装成一个编辑器的操作系统”, 而 Vi 和 Vim 因为小而快的特性被许多 GNU/Linux 发行版内置。它们俩也是传说中的“编辑器之战”的两大主角(?)。
- 如果偏好有图形界面的话, Notepad++ 、 Atom 和 Visual Studio Code 都是不错的选择啦,以及它们仨(加上上面那俩)正好都是自由软件。
- 或者就要靠汝自己搜索啦,例如“Code Editor”什么的 ……
还是集成开发环境?
汝或许已经听说过集成开发环境这个词了吧(或者它的缩写 IDE):
集成开发环境是一种辅助程式开发人员开发软体的应用软体,在开发工具内部就可以辅助编写原始码文本、并编译打包成为可用的程序,有些甚至可以设计图形介面。 IDE通常包括程式语言编辑器、自动构建工具、通常还包括除错器。有些IDE包含编译器/直译器,如微软的Microsoft Visual Studio,有些则不包含,如Eclipse、SharpDevelop等,这些IDE是通过调用第三方编译器来实现代码的编译工作的。有时IDE还会包含版本控制系统和一些可以设计图形用户界面的工具。许多支援物件导向的现代化IDE还包括了类别浏览器、物件检视器、物件结构图。虽然目前有一些IDE支援多种程式语言(例如Eclipse、NetBeans、Microsoft Visual Studio),但是一般而言,IDE主要还是针对特定的程式语言而量身打造(例如Visual Basic)。
通常来说的话,只有当汝写到一定程度或者汝所使用的语言和工具本身就很重的侯才会要考虑使用集成开发环境:
- 例如开发 Windows 应用就逃不开 Visual Studio,开发 iOS / macOS / WatchOS 应用就离不开 Xcode 什么的。
- 或者汝选择困难模式入门(?),例如一开始直接写 C++ 或者 Java 什么的。使用像 Eclipse / IntelliJ IDEA 之类的集成开发环境还能减少汝配置编译器等环境浪费掉的时间。
其它工具和资源
这个当然亦然还是看人下菜因人而异啊(这不还是废话嘛)
- 首先要用好搜索引擎,这样不仅能节约不少时间,还能防止汝提出一些容易被烦躁的家伙忽略或喷回来的问题。
- 汝所学习的每一门语言的官方网站当然是汝要谙熟于心的事项之一,因为上面会有像是文档和标准啥的重要信息,而且通常是最新的。
- 为了避免汝因为种种原因造成的过失无法挽回,以及日后合作的需要,学习使用一种源代码控制系统(有时汝会看到它的缩写“sccs”)也是相当有必要的。
- 目前最流行的源代码控制系统是 Git (大概啦),想要学习 Git 使用的话 Git 作者倾力推荐的 Pro Git 是个不错的开始。
- 以及汝也许听说过 GitHub 了,这个(可能是)最流行的软件源代码托管服务平台也使用 Git,也有不少开发者在上面一同协作。
- IRC(Internet Relay Chat的缩写,“互联网中继聊天”)是一种经典的聊天协议,不少自由和开放源代码软件都将 IRC 作为用户和用户,用户和开发者间沟通的一种主要途径。 (然后想起来咱之前写过一篇文章简单介绍过 IRC 的使用来着,拿出来好了: https://blog.yoitsu.moe/tech_misc/a_abracadabra_irc_guide.html )
- ……