做系统,一直使用C#,其开发环境简单好用,被称为宇宙第一编译器,没有第二。
经常会看到一些争论,关于程序语言的争论,这个从不同的程序语言诞生,一直就存在的。
很多开发者,会有一些抱怨,使用的语言决定了软件或代码的组织结构。
这个因为一直在用C#做开发,一直没有体会到,我认为C#语言上的应用,确实能实现代码的完美艺术化。
最近,在开发一款,嵌入式的系统,用C语言做开发,在STM32处理器上开发,C语言的初次接触,可能要追溯到10年前了,那时候还是在大学时代考计算机资格证时,记得是谭浩强的一本书,用的Turbo C,好像是这么个开发环境。为了过级,在考前一个月突击背了一些算法和结构,总归最后过了。
后来工作了,初始接触的是VB.net,后来是C#,还有一段时间,花心思在MFC编程上。C#是用过最长的语言,从正式工作开始吧。
一直在用C#开发代码,有时接触一些C++或C封装的动态库和代码,会看到代码写的及其难解和不可读。印象中,这两种语言写得代码,就大致是这样,比较晦涩难懂,没有太多可读性。因为一些代码是面向硬件层面的开发人员写得,感觉更是缺少了像C#这种高级语言所有的一些抽象表达。
但是最近在写这款嵌入式系统的过程中,我意识到了,其实语言自身并没有限定我们的表达,是学习入门时或常年形成的一些固化习惯决定了程序能写成哪种样子,好的设计关键是意识、想法和大局观,如果在规划时,就是按照这个大局观去考虑,那就会组织明确、层次清晰明了,而直接反应到代码上就是结构和算法了。
用过C#等语言的开发者,不愿意接触C等语言开发的主要原因是,C#中编译器辅助实现了大量的函数和类库,可以轻松驾驭调取应用,那转到c开发,因为系统没有提供太多的函数和类库,有些需要自己去手动封装,比如队列,在C语言中是没有的,但是在设计中假设又要用到,这个时候即使队列的算法再复杂,我们也不能绕过去,而应该服从设计。
有了这种思路、意识、想法,一套软件代码,可能在设计阶段就不会纠结在语言的实现上,而只是关心怎样设计,用什么样的层次,为设计而去实现,自然就会处处流露出一些优秀的结构或算法了,抽象性就会更好了,用C语言写出了C#语言更容易表达的抽象性。