作者descent (「雄辯是銀,沉默是金」)
看板Soft_Job
標題Re: [請益] 如何學習C/C++並能使之成為應職技能?
時間Tue Feb 10 13:05:47 2015
c++ 太可憐了, 想為 c++ 說點話, c 之所以難學, 其中有個指標的難題, c++ 可以在某
種程度上減低這樣的困難。
int getaddrinfo(const char *node, const char *service,
const struct addrinfo *hints,
struct addrinfo **res);
呼叫 getaddrinfo 之後, 還得記得要 freeaddrinfo(result), 而 res 本身又是個複雜
的 linked list 資料結構, 有興趣可以參考 man page 的用法, 雖然難不倒你, 但用起
來實在太複雜。
要是用 c++, 就可以使用 std::vector 來對付這樣的資料結構, 無需操作指標, 又保有
高效率。
vector<XXX> res
getaddrinfo(..., res);
for (int i=0 ; i < res.size() ; ++i)
{
}
不需要記得去 free 記憶體, 也不用使用那令人害怕的兩顆星操作。
而 c++ 也提供了 std::string, 光是這個和 std::vector, std::list, 就足夠降低寫
c 程式的門檻, 不用辛苦的注意 \0 到底有沒加上, 字串 size 是不是少了一, 更不用擔
心老是搞不清楚
char str[] = "abc";
char *str="abc";
static char *str="abc";
這些奇怪的差異, 我還沒提到如果 function 要傳入, 或是傳回字串時的麻煩事。
這些都減少了很多初學者操作指標的困擾, Joel 說過, 一個語言好用是因為你不用自己
管理記憶體, c++ standard library 提供了不少的幫助, 這些都比學習 c 來得容易。
我第一個自學的語言是 x86 組合語言, 遇到重重困難, 一事無成, 太高估我自己了, 若
一開始改學 c/c++, 應該略有小成。
從我改學 c++ 之後, 大多是她陪伴著我, c 也是靠著學 c++ 時, 順便接觸到的, 果然要
操作指標難度會整個提升不少。
那你說 template, oo, lambda, c++11, c++14 那些東西呢?
管他的! 你需要多學習那些才能寫出程式嗎?
雖然工作都是以 c/c++ 為主, 不過薪水沒有特別高。
※ 引述《NewSpec (新規格)》之銘言:
: 這個問題我老早就想請教各位版大了
: 並不是為了嗆前面那個問題= =""
: 雖然說有人覺得學C/C++沒必要
: 但事實上就是某幾個browser公司依舊缺C/C++工程師
: 做big data的一樣缺C/C++ infra工程師
: 前陣子有人跟我說有個能讓我現在package +50%的機會
: 一樣是要Linux network programming
: 但我他媽的就是一個不值錢的java/python/scala後端
: 事到如今我已經再也受不了了
: 能力也不是比別人弱,但一開始路就走錯了又能怎樣
: 所以想請問各位學習C/C++並能使之成為應職技能要怎樣能比較快達到?
: 我已經在物色github project想contribute了,
: 但不知道別人吃不吃這套... QQ
--
要有一流的運氣, 才能邂逅一流的美女。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.236.206.105
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1423544753.A.B24.html
→ leolarrel: 歡迎你來認識/學習python or ruby,比c++好用太多 02/10 14:01
→ realmeat: 指標操作我一直覺得很單純... 有啥複雜的? 02/10 14:02
推 imutek: 我習慣 allocate memory 之後,先找好位置寫上 free 02/10 15:28
→ noonOut: 你講的是 API 設計的問題吧 epoll_wait 也是回一串清單 02/10 16:03
→ noonOut: 但就不用兩個星星 02/10 16:03
推 ACMANIAC: C++ 愛好者給個推。我覺得奇怪的是,我也問到不少人愛寫 02/10 16:04
→ ACMANIAC: C++ 的都跟我一樣上手以後就完全不想碰 C,怎麼在業界 02/10 16:05
→ ACMANIAC: 看起來還一堆人在用 C... 實在難以理解啊。 02/10 16:05
→ noonOut: 是說 c 沒有辦法用 raii 幫你處理資源那是事實 02/10 16:05
→ noonOut: 所以講到後來方便歸方便,背景知識要很多...什麼東西可以 02/10 16:06
→ noonOut: 怎樣被釋放要很清楚,不然會是災難 02/10 16:06
→ noonOut: 雖然我也很愛 C++,但我絕對不會用簡單來形容 02/10 16:07
→ imutek: 像是Linux平台的版子儲存空間夠大,我用C++寫的很愉快 02/10 16:58
→ imutek: 但有些MCU的toolkit只給了C compiler,也只能寫C囉 02/10 16:59
→ rodion: 業界還在碰C 很多是有portability考量 02/10 17:01
推 wuliou: 寫過C++回不去C 寫過Java回不去C++ 寫過Python其他都不想 02/10 21:54
→ wuliou: 再碰了XD 不過如果碰MCU或是SoC C語言還是躲不了的 02/10 21:55