# [開發工具和規格標準篇](https://hackmd.io/s/HJFyt37Mx#)
contributed by < `type59ty` >
##### tags:`sysprog2018`, `hw1`, `你所不知道的C語言`
---
## 開發工具和規格標準篇
* 為什麼不探討C++ ?
1. 涵蓋太多內容
C++在上個世紀可稱為物件導向程式語言,但現今較適合當作**meta language**,其中包含**object-oriented、functional、generic programming**,以及**STL**。
2. 改版速度太快
經歷**C++ 98/03/11/14/17**,尤其從14開始加入大量功能,如: **Parallelism、Networking**。
3. 編譯器不相容之問題
* Indirection operator
* `&`用在指標操作時讀作“address of”
> [C99規格書](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf) 6.5.3.2 提到
> “The unary & operator yields the address of its operand.”
* `*`用在指標操作時讀作“value of”
>“The unary * operator denotes indirection. If the operand points to a function, the result is a function designator; if it points to an object, the result is an lvalue designating the object.”
* 授權條款
* MIT License
最寬鬆,只要在不塗掉作者名稱前提下,怎麼發佈都可以
* GPL (General Public License)
以「copyleft」條款為依據,可自由複製、修改和發佈,但後續的衍生作品也必須受到此條款規範,通通納入open source的社會
* LGPL (Lesser General Public License )
寬鬆版的GPL,是自由軟體基金會針對函式庫類別程式所特別撰寫出來的自由軟體授權條款,如果僅是針對LGPL的軟體進行任何調用、連接而非包含、修改後再利用,則可以不需open source,因此可以封閉並做商業利用。
> Reference: [避免無謂的商業授權費,搞懂LGPL與GPL的不同](https://progressbar.tw/posts/97)
* 工具
* cdecl
* GDB
* Visual Studio Code