仅仅看一下计算机语言的家谱就应该阐明C的位置。
C是一种非常成功的计算机语言,它的后代(C ++,Java,Objective C,以及许多动态语言,例如Perl,Python或JavaScript)都非常活跃。但是C绝不是第一种编程语言,甚至也不是唯一的编译语言(还编译了Fortran,Pascal,Lisp或Basic)。
C从一开始就被认为是一种可移植的汇编语言,因此它具有一个有趣的生态位,这意味着从C程序到任何汇编语言(处理器指令集的语言)的转换都非常简单。在定义第一种C语言40多年后,大多数情况仍然如此。
C并不完美。它的基础模型是基于指令,基于寄存器和堆栈的顺序编程。当前的处理器仍然基于寄存器上的指令集,所以这也导致了C捕获并行性(向量化或线程化)的亮度要差得多。为并行性而构想的语言(例如Erlang)可以做得更好。C太简单了,无法从数学角度轻松地表达程序(功能语言要好得多)。C缺少许多用于将程序表示为现实模型的内置构造:面向对象的语言要好得多。
的确是,当您必须处理硬件或寻求高性能时(例如,当从头开始编程另一种编程语言时),通常首选C而不是汇编,因为它在软件和硬件之间的开销很小。对于许多目的来说已经足够好了。
为了更好地掌握计算机科学,您应该至少学习一种迭代式低级语言,例如C或某种汇编语言(以更好地了解底层硬件和操作系统),一种功能性语言(以更好地理解算法)以及面向对象的语言。例如C++等。
后来转向C ++或Java可能是一个不错的举动,因为它们已在行业中广泛使用。而且,有了扎实的背景,它们比较容易上手。
领取专属 10元无门槛券
私享最新 技术干货