程序员属于什么五行?
程序员的五行,取决于编程语言和开发的工具环境。 如果是 C/C++ 的话,那属于木;如果开发环境是 DOS/Win32,那么属于金;如果是Unix环境,并且是用汇编写的代码,属于土;如果用Java或Scala写了代码,那么属于火;如果只是用IDE环境写代码,没有生成可执行文件,那么属于水。 为什么这么说呢?
在DOS时代,开发环境和运行环境的权限是很严格的,只有系统管理员才拥有改变硬件设置的权力(修改BIOS中的设置、添加新的驱动等),普通用户根本没有权限改变任何硬件设置。在这种环境下,程序员只能使用系统提供的功能有限的命令行接口(CLI)来编写代码,这种环境最适合培养“尽信书不如无书”的严谨态度,所以那个时代的程序员都擅长编写结构紧凑、模块清晰的代码,那种代码最像树木,所以我给那个时代的程序员下了一个定义:木属性。 后来图形化界面的流行,使得软件的开发环境和运行环境都变得更加宽松,任何一个程序员都可以很方便地添加或删除硬件设备,也可以非常方便地修改系统的硬件配置。在这种环境下,程序员不再习惯于严格地按照系统所提供的功能框架去构建应用程序,而是更多地发挥自己的想象去随意编排各种硬件资源。这种环境最适合培养“大胆幻想、小心求证”的创新精神,所以现代的程序员更倾向于使用灵活的面向对象的语言,这种代码最像火,所以我给当前时代的程序员下的定义就是:火属性。 但无论时代如何变化,计算机是如何发展的,有一个道理始终是不会变的——所有的计算都必须由0和1组成的数据流来实现。这个数据流不管怎么变换,最终都会被转换成某个计算机能识别的形式,而这个转换过程一定是遵循一定的规则的,这些规则就决定了这个数据的属性,也决定了程序员的工作属性。
所以从这个意义上说,程序员的工作属性其实是由算法决定的,而不是由语言或者工具决定的。也就是说,只要掌握了核心算法,就可以轻松应对各种各样的开发语言及开发环境,就像掌握了剑法的人,完全可以轻松驾驭不同形状的刀剑一样。