(原創) 為什麼要學C/C++? (C/C++)
很多人覺得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++)相关推荐
- (原創) 為什麼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(),尤其後者,重 ...
- (原創) 為什麼企業研發喜歡找研究生? (日記)
我常常在想,大學生跟研究生有什麼差別?為什麼研發喜歡找研究生呢? 首先看看大學生怎麼唸書,大學生基本上修的課都有課本,也就是說,只要把課本念好搞懂,基本上就沒問題了,而課本都是大師整理好的東西,有範例 ...
- 计算机考研877难不难,計算機方向考研全都是統考嗎?為什麼有的學校專業課是877,有的是850呢?不全都是408嗎?...
計算機方向考研全都是統考嗎?為什麼有的學校專業課是877,有的是850呢?不全都是408嗎?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶 ...
- (原創) 如何為Blog加上簡體中文(繁體中文)翻譯? (Web) (CSS) (JavaScript)
Abstract 雖然簡體中文和繁體中文本一家,不過若能提供同時提供繁體中文和簡體中文的服務,對於讀者將是一大福音. Introduction 目前我在Blog上方多了簡體中文的即時翻譯,如下圖所示 ...
- (原創) 今天拿到學生證了 (日記)
<原文我在2006/09/07發表在藍色小舖> 今天拿到學生證了,終於正式成為台大的學生.第一件事情就是去台大圖書館借了四本書回家看,一次可以借兩個月耶,真不錯. 感覺很複雜,下星期要離開 ...
- (原創) 如何正確的使用迴圈(使用for_each)? (C/C++) (STL) (template)
Abstract之前在(原創) 如何使用for_each() algorithm? (C/C++) (STL) 曾經討論過for_each(),不過當時功力尚淺,只談到了皮毛而已,這次看了effect ...
- (原創) 如何一個字元一個字元的印出字串? (C/C++) (C)
Abstract 若只能一個位元一個位元的印出字串,你會怎麼印呢? Introduction 我同學要將字串送到硬體,但硬體所提供的API,一次只能送一個字元,在這裡我們模擬這個情境,一個字元一個字元 ...
- (原創) 如何使用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明明是嵌入式系統,怎 ...
- (原創) Quartus II安裝新觀念:如何將Quartus II安裝在VirtualBox內? (SOC) (Quartus II) (VirtualBox)...
Abstract VM並不是什麼新的觀念,透過VM我們可以在一個OS去執行其他OS,若我們將Quartus II也裝在VM中,將可解決一些長久以來Quartus II使用上所遇到的問題. Introd ...
最新文章
- 【Sql Server】DateBase-SQL调整
- Linux常用压缩解压命令
- 程序员都该懂点 HTTP
- Spring和springmvc两个容器的关系
- 报错解决办法 SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder
- 好消息acesse_真实的acesse爱搜索 黑心传销骗子
- 2020CCPC(威海) - Clock Master(数论+分组背包)
- 当AI成为基础资源,360OS 发力在线教育的重心——专访360OS张焰
- MongoDB警告信息
- 网络压缩《network pruning 浅析》
- java输出动物,求大神帮助输出为什么只有动物名,几条腿,怎么叫,没有汤姆猫叫等...
- mybatis报-因为 accessExternalDTD 属性设置的限制导致不允许 http 访问
- 微信红包c语言程序,微信抢红包软件的C语言原理
- 禁止Edge浏览器自动更新的办法
- Detecting Causality in Complex Ecosystems(检测复杂生态系统中的因果关系)
- 我的2016—遇见自己,遇见未来
- ESP32设备驱动-MicroSD Card驱动
- cairosvg在linux中的安装_Cairo编程
- java实现shapefile文件的解析
- 解决linux的-bash: ./xx: Permission denied/tensorflow 运行cpu还是gpu的方法