【在主画面加入捷径】
       
【选择语系】
繁中 简中

技术杂谈:程序设计师的工具箱

【赞助商连结】

    程序设计师会用到那些工具呢?笔者就自己的经验,分享一些程序设计师可能会用到的工具,供有需要的学习者一些可参考的方向。

    • 系统程序语言 (system language):这些工具给我们足够低阶的操作,像是内存管理等。传统上,这个领域是由 C 主宰,有许多人会使用 C++。一些比较新兴的替代方案包括 D 或 Rust 等。
    • 应用程序语言 (application language):这些工具在效能在易用性上达到一个平衡点。大部分的人会从 Java 或 C# 中择一,有一些人仍然会使用 C++。Go 则是另一个近年来热门的新兴方案。
    • 脚本语言 (scripting language):这些工具易学易用,虽然速度没有前两者来得快,但一般使用情境下也足够了。一些典型的实例包括 Python、Ruby 和 Perl。
    • 终端机工具 (command-line utilities):这些工具不是程序语言,但有着类似的特质,通常会有复杂的参数或内建的小型语言 (即领域专用语言)。大部份类 Unix 系统的指令都属于这类。
    • 开发工具 (development tools):包括编辑器 (editor)、IDE 等,版本控制软件也算是这类。一些流行的编辑器包括 Atom 或 Visual Studio Code 等,而最知名的版本控制软件则是 Git。

    有些程序设计者几乎不会接触到系统程序语言,但至少要对 C 有一些些概念。因为许多高阶语言都提供 C 的接口,做为桥接外部元件的方式。例如,我们用 C++ 或 Rust 撰写元件,将其转为 C函数库,再桥接 Python 或 Ruby 等高阶语言。至于 C++ 则较为复杂,需要时再学即可,在许多情境下,可以用 Java 或 C# 代替。

    Java 和 C# 像是兄弟一般,学了其中一个另外一个很快就会上手。我们不需要跳入商业公司的斗争中,依使用情境选择即可。通常 C# 的语言设计较佳,因为学习了一些 Java 的经验;但 Java 有较多的社群资源,跨平台性也较佳。原先 C# 仅能在 Windows 上执行,近年来微软改变其策略,现在也可以在其他平台上执行 C# 程序,但尚未移植全部的功能,使用者需自行评估可用性。

    对于一些简单的日常任务,我们不会搬出 Java 或 C# 这种重兵器,而会使用脚本语言。网络爬虫就是一个例子,这类任务的程序时常需要改变,有时候只需爬完一次取得数据即可,这时候,使用脚本语言会较节省时间。另外一个例子是数据分析,我们需要很多步骤,像是数据处理、建立模型等,这个过程要来来回回好几次,使用脚本语言会较为灵活。

    在类 Unix 系统的终端机环境中,有许多方便的小型工具,可以增加我们的工作效率;这些小型工具有复杂的参数,甚至内建小型语言。初学者会以为这些小型工具很复杂,但我们不需要学习全部工具所有的功能,视需求逐步学习即可。即使笔者使用十数年的 GNU/Linux 和 Mac,仍然还有许多不熟悉的工具。

    工具是学不完的,每隔一阵子,就会出现一些新的工具。我们不需要害怕新技术,也不需要盲目地追逐这些技术。在学习某个新工具前,了解这个工具的主要目标,这个工具解决了什么问题,仔细地评估是否需要这些工具。

    【赞助商连结】