C/C++学习 [编辑本页]

这才是真正的程序

  • 编译生成机器指令
  • 直接操作内存
  • 直接与操作系统沟通
  • 可以写驱动
  • 可以写操作系统
  • 可以写底层库,其他语言写扩展即可,通用性更强,C/C++写的库可以供大部分语言使用
  • 可以写编程语言
  • 适合做密集计算的程序,如算法实现、数据结构、引擎等

http://benchmarksgame.alioth.debian.org/u64q/php.php

编译/解释

编译出来的是机器码,解释执行是中间码。 编译型语言性能更好

JIT :即时编译,在运行时生成机器码,也可以认为是编译型的。如Java,LuaJIT,C#

高级复杂如PHP这样的语言很难做JIT。

静态/动态

静态语言必须在编译时确定类型,动态语言在运行时决定类型。 动态语言提供了最大的灵活性,比如一个hashmap,静态语言必然要求 hashmap内的元素类型全部一致。而动态语言在运行时才去确定。

GC

自动管理内存还是手动。带有GC的语言,开发效率更高,因为不需要关注内存申请/释放。不带GC的语言如C/C++,开发效率低,但程序的内存管理的粒度更大,操控力更强。

数据结构

PHP里只有hashtable,C++有STL,包含了map,set,queue,list等等各种丰富的容器 C中只有数组,其他数据结构需要自己写,如链表、hashmap。

历史问题

C语言是大部分编程语言的始祖,了解C语言可以了解其他语言底层的实现。其他语言或多或少都受到C的影响。

竞争力

目前来看还没有一种语言可以取代C/C++。或许Golang可以,但10年之内不会。

PHP会消亡吗

一定不会,没有一种语言能像PHP,Javascript这样扔个文件上去就能运行。如此好的鲁棒性、组件化、自动化。PHP这样简单、直接、实用、效率高。PHP是易于掌握,难于精通。