很多人覺得C/C++已經是過氣的語言,應該學 C# 或 Java才對,在這裡我提出一些我個人的理解:

1,C/C++是個兼具高低階的語言
C/C++有高階的Class提供Abstract Data Type,可以開發應用軟體,也有低階的Pointer,可以開發系統程式。(C#、Java仍定位為開發應用軟體的高階語言,無法開發OS、Compiler、Driver等系統軟體)。目前各OS的API幾乎都是以C/C++所撰寫,使用C/C++可直接呼叫之,不用擔心格式轉換及相容性問題。

2.C/C++同時支持多種設計典範
C/C++可同時支持Procedure-Based Programming、Object-Based Programming、Object-Oriented Programming、Generic Programming。(C#、Java為純Object-Oriented Programming)。

3.C/C++可同時設計軟體硬體
C/C++原本只能設計軟體,但加上SystemC的Library後,C/C++搖身一變成為HDL,可以用C/C++設計硬體和IC,另外其他HDL如Verilog、SystemVerilog也有C/C++的影子。(C#、Java目前仍然無法設計硬體)。

4.大量使用Operator,程式乾淨簡潔。
C#、Java也算乾淨,但Operator用的沒C/C++兇。

5.C/C++有標準的Library,使C/C++具可攜性。
C/C++可在眾多平臺下編譯器,具程式碼跨平臺特性。(C#、Java都是專屬平臺的Library,C#的Library只能在.NET平臺用,Java的Library也只能在Java平臺用。而Java所謂的跨平臺是執行檔的跨平臺,不是程式碼的跨平臺)。

6.執行速度快。(C/C++ > C# > Java)。
C/C++為Native Code,不像C#、Java須跑在虛擬機器上的Managed Code。

7.同時活躍於學術和業界
學術普遍上使用C/C++在各種領域,而業界更是以C/C++為標準,以Microsoft來說,雖然.NET為Microsoft力推的平臺,但事實上,Microsoft旗下的產品卻都仍使用Visual C++開發,為世界上最大的C++公司。

8.C/C++為其它程式語言的母語。
C#、Java、JavaScript、ActionScript都可以看到C/C++的影子,只要學會C/C++,再學其它語言都很快。且很多領域的Bible,都是用C/C++寫的(如Design Pattern、OOA/D、Generic Programming),C/C++的書遠比C#、Java多很多,畢竟C/C++的歷史遠比C#、Java久。

9.學習C++的Generic Programming。
若你主要使用C#、Java為開發語言,OOA/D和Design Pattern領域的書在這兩個語言已經有不少經典,但Generic Programming在這兩個語言都才剛剛加入而已,更別提有什麼經典的書,學習C++的Generic Programming觀念技巧後,可用在C#和Java上。

(原創) 為什麼要學C/C++? (C/C++)相关推荐

  1. (原創) 為什麼VB有Dim obj As Foo = New Foo()這種語法? (初級) (Visual BASIC)

    Abstract 以前在寫VB/VBScript時,一直不了解為什麼VB提供兩套New語法,Dim obj As New Foo()和Dim obj As Foo = New Foo(),尤其後者,重 ...

  2. (原創) 為什麼企業研發喜歡找研究生? (日記)

    我常常在想,大學生跟研究生有什麼差別?為什麼研發喜歡找研究生呢? 首先看看大學生怎麼唸書,大學生基本上修的課都有課本,也就是說,只要把課本念好搞懂,基本上就沒問題了,而課本都是大師整理好的東西,有範例 ...

  3. 计算机考研877难不难,計算機方向考研全都是統考嗎?為什麼有的學校專業課是877,有的是850呢?不全都是408嗎?...

    計算機方向考研全都是統考嗎?為什麼有的學校專業課是877,有的是850呢?不全都是408嗎?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶 ...

  4. (原創) 如何為Blog加上簡體中文(繁體中文)翻譯? (Web) (CSS) (JavaScript)

    Abstract 雖然簡體中文和繁體中文本一家,不過若能提供同時提供繁體中文和簡體中文的服務,對於讀者將是一大福音. Introduction 目前我在Blog上方多了簡體中文的即時翻譯,如下圖所示 ...

  5. (原創) 今天拿到學生證了 (日記)

    <原文我在2006/09/07發表在藍色小舖> 今天拿到學生證了,終於正式成為台大的學生.第一件事情就是去台大圖書館借了四本書回家看,一次可以借兩個月耶,真不錯. 感覺很複雜,下星期要離開 ...

  6. (原創) 如何正確的使用迴圈(使用for_each)? (C/C++) (STL) (template)

    Abstract之前在(原創) 如何使用for_each() algorithm? (C/C++) (STL) 曾經討論過for_each(),不過當時功力尚淺,只談到了皮毛而已,這次看了effect ...

  7. (原創) 如何一個字元一個字元的印出字串? (C/C++) (C)

    Abstract 若只能一個位元一個位元的印出字串,你會怎麼印呢? Introduction 我同學要將字串送到硬體,但硬體所提供的API,一次只能送一個字元,在這裡我們模擬這個情境,一個字元一個字元 ...

  8. (原創) 如何使用ModelSim-Altera對Nios II仿真? (SOC) (Nios II) (SOPC Builder) (ModelSim) (DE2)...

    Abstract 在剛學習Nios II時,每次在Run As Nios II Hardware下方,看到Run As Nios II ModelSim就覺得很好奇,Nios II明明是嵌入式系統,怎 ...

  9. (原創) Quartus II安裝新觀念:如何將Quartus II安裝在VirtualBox內? (SOC) (Quartus II) (VirtualBox)...

    Abstract VM並不是什麼新的觀念,透過VM我們可以在一個OS去執行其他OS,若我們將Quartus II也裝在VM中,將可解決一些長久以來Quartus II使用上所遇到的問題. Introd ...

最新文章

  1. 【Sql Server】DateBase-SQL调整
  2. Linux常用压缩解压命令
  3. 程序员都该懂点 HTTP
  4. Spring和springmvc两个容器的关系
  5. 报错解决办法 SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder
  6. 好消息acesse_真实的acesse爱搜索 黑心传销骗子
  7. 2020CCPC(威海) - Clock Master(数论+分组背包)
  8. 当AI成为基础资源,360OS 发力在线教育的重心——专访360OS张焰
  9. MongoDB警告信息
  10. 网络压缩《network pruning 浅析》
  11. java输出动物,求大神帮助输出为什么只有动物名,几条腿,怎么叫,没有汤姆猫叫等...
  12. mybatis报-因为 accessExternalDTD 属性设置的限制导致不允许 http 访问
  13. 微信红包c语言程序,微信抢红包软件的C语言原理
  14. 禁止Edge浏览器自动更新的办法
  15. Detecting Causality in Complex Ecosystems(检测复杂生态系统中的因果关系)
  16. 我的2016—遇见自己,遇见未来
  17. ESP32设备驱动-MicroSD Card驱动
  18. cairosvg在linux中的安装_Cairo编程
  19. java实现shapefile文件的解析
  20. 解决linux的-bash: ./xx: Permission denied/tensorflow 运行cpu还是gpu的方法

热门文章

  1. ArcGIS转KML
  2. TYPE-C边充电边听歌产品方案详述
  3. ubuntu16.04中安装R3.6
  4. 找到一个TRACE32-ICD使用说明解除了不少疑惑
  5. Pytorch 相关-梯度回传
  6. MySQL之事务 索引 锁_MySql 知识点之事务、索引、锁原理与用法解析
  7. 查看日期命令linux,linux date命令查看和设置时间详解(图文)
  8. 使用C#模拟键盘输入
  9. 服务“双一流”高校建设的智慧校园发展思路
  10. MSSQL 学习笔记