查看完整版本: 如何從頭學起C++?
頁: [1] 2 3

babysking5 發表於 2017-5-1 01:14 PM

如何從頭學起C++?

我最近想開始學C++

但覺得跟C語言又差蠻多的

而且我的C語言大概也只學到for loop的地方@@

不知道各位是怎麼開始學C++的?
<div></div>

ash1326 發表於 2017-5-11 02:23 AM

C語言一定要學好。C不行直接寫C++有難度

建議先打好C語言的基礎,再去學習OOD,然後新手建議從Java開始練

等到已經了解整個OOD的觀念後,從Java轉C++只是改變你的語法而已

coal511464 發表於 2017-5-12 12:30 PM

去大學偷聽程設課程....剩下的只能多寫

weirdococo 發表於 2017-5-12 01:13 PM

以我的例子,我的第一個語言是script language,像是python , ruby , perl ....,
基本上我會說C++很難用但不是很難學,寫不出東西一般只是說你沒有專業知識,
然而script有很多的演算法和專業領域的程式庫可以觀摩,所以用C++就只剩下
(這一個東西用C++怎麼寫? 寫不出來去stackoverflow問)這樣的感覺。
所以我會建議你不要先學C 或 C++ 這類語言,C 或 C++ 會進步比較快。

superwaterdog 發表於 2017-5-18 10:15 PM

同意樓上說的
先把基礎工練起來
邏輯設計觀念建立
後面只是運用的居多
<br><br><br><br><br><div></div>

cockroachrun 發表於 2017-5-19 09:38 AM

C++ 跟C 一樣不好寫. 他跟script language, java 有一個很大的不同點就是沒有   Garbage Collection (記億體垃圾收集GC). 且C++/C 對型別有強列的要求.  沒有GC 你要自己管裡記億體回收. 這導致很大的程式設計上的麻煩.

ren1244 發表於 2017-5-20 12:27 AM

我國中時買了一本C語言的書,也把他看完了。
那時陣列、指標也差不多都能了解。
因為課業關係,到大學才繼續碰,開始會去找別人問的題目來做。
後來有一些解題系統,拿來作練習還不錯。

至於語言,先後碰了 C++ javascript PHP lua VB
python是最近才碰的

我發現自己只有學C跟C++是認真看完整本書
其他語言都是想做甚麼東西時,順帶學的
但我覺得後來在學其他語言,受惠於C/C++很大
也有利於我在用高級語言時盡量避免無謂的複製與重新創造物件
因為我感受得到那背後的代價是甚麼
不過也是有些東西是從其他語言學到的
例如javascript的closure是C/C++沒有的
然而,我也深深感受到python這類語言
不需要特別link其他的library就能做很多事情有多方便

至於怎麼學?
我覺得抱持興趣,或是有想做的東西都是很好的方法
累的話也不需勉強,但想玩時就好好享受那樂趣。

對了,有基本能力的話,可以看一些「資料結構」跟「演算法」的東西
這裡面比起學語言更有樂趣。

學語言就像是學會寫字
而「資料結構」跟「演算法」就像是學會怎麼寫出各種文章...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

chevylin0802 發表於 2017-5-25 08:58 AM

本帖最後由 chevylin0802 於 2017-5-25 09:04 AM 編輯

cockroachrun 發表於 2017-5-19 09:38 AM
C++ 跟C 一樣不好寫. 他跟script language, java 有一個很大的不同點就是沒有   Garbage Collection (記億 ...

這只是突顯出你的程式寫作習慣不好
事實上
只要是編譯產出的是可執行檔的程式語言
都不會有GC
有GC的功能的都是要靠直譯器做
即使是java號稱執行在Java VM上
其實也一樣只是直譯器
只是名稱搞得好聽一些而已
型別問題也一樣
只要是編譯成機器碼的可執行檔
都會需要較硬性的型別規定
腳本程式語言之所以可以不用
就是在於它是由直譯器一行一行的執行腳本
變數的儲存位置與空間
可以由直譯器隨時變動的
即使你前一行把a設成10的正整數
下一行你照樣可以把a寫成hello的字串
腳本程式語言之所以現在流行起來
只是因為它具有邊編輯程式邊執行除錯的優勢
以及不需要擔心記憶體空間被配置而不釋放
所以開始取代了Java在應用層的程式市場
其實也只不過是回到Apple II的時代時
一開機就自動進入BASIC編輯環境
只不過現在用的是python或者是其他腳本語言環境
所以你所認為的那兩個麻煩
只是突顯出對你程式設計的不嚴謹
這是不好的習慣與對於程式設計不應該有的態度
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

chevylin0802 發表於 2017-5-25 10:01 AM

本帖最後由 chevylin0802 於 2017-5-25 10:28 AM 編輯

ren1244 發表於 2017-5-20 12:27 AM static/image/common/back.gif
我國中時買了一本C語言的書,也把他看完了。
那時陣列、指標也差不多都能了解。
因為課業關係,到大學才繼 ...
關於重新創造物件的問題
有一點是需要修正你的想法的

先不談C語言的部份
因為C並沒有物件的語法
只有結構的宣告方式

所以我就只針對C++來說明一些問題
要講創造C++的物件背後所付出的代價的話
從記憶體的使用上來說
子物件甚至於已經繼承好幾層的子物件
對記憶體的浪費當然會相當可觀
但即使是如此
以現在動輒數GB的記憶體容量的PC來說
還真的算不上什麼鳥事
所以基本上可以是被忽略的
除非是像我們這種開發嵌入式系統的人
可能記憶體都只有幾十MB或幾百MB的情況
才需要對記憶體容量的問題特別的小心注意
不過如果真的要對記憶體空間那麼輜銖必較的話
已經不可能去用C++寫了
只會使用單純的C來寫
而另一個負擔無非就是會造成不必要的函式層層呼叫的問題
這確實是存在的
畢竟只要是層層堆疊出來的物件就會有這種層層呼叫procedure的情況(指組合語言的proc)
這還真的是免不了
但是對於已經是在Giga Hz級的PC來講
這也一樣算不上什麼
畢竟它不是早期的8088/8086的PC, 正常工作只有在3.77MHz,超頻也只不過8MHz
用不著那麼在意以及小心程式類似遞迴式呼叫的問題
何況系統堆疊也不像DOS只能給你256Bytes
所以還真的不需要那麼特別的在意物件所帶來的負擔
但是C++其實對程式設計師來講也是一個很大的負擔
不過並不是指C++程式語言本身
而是因為網路的關係
使得有很多人可以從網路免費獲取許多已經被一些民間組織或企業所提供的C++函式庫
這種百花齊放百家爭鳴的情形下
導致讓許多程式設計師享受到免費使用函式庫的機會
而它也同樣存在於其他各種類型的程式語言上
只是C++給程式設計師所帶來的負擔卻是遠比其他類型的程式語言要來得嚴重許多
所以避免複製或創建不必要的物件的問題
應該是擺在繼承這些公開的程式庫裏的物件而言
當然並不代表著外界的函式庫都不能去複製或創建繼承
只是很多人就只是去使用而並沒有真正的去了解
台灣的學生正面臨的就是這種問題
把API當成是好用的工具
至於這個工具到底有沒有真正的去了解
則不關他們的事
反正會用就夠了
只要會開車誰還管輪胎是怎麼做出來的
就因為抱持著這種心態在做研發
所以常常遇到問題不知道如何解決
很多企業裏面也常常看到這種程式設計師
美其名叫做程式設計師而已
事實上完全沒有系統概念
也完全不懂什麼是系統分析以及系統設計
勉勉強強只能算是工廠裏的作業員那樣子的咖而已
可是卻都個個都叫做學士碩士跟博士
所以很多時候真的很感慨
現在連中國大陸都有許多人在網路上發展許多前瞻性可持久性以及擴充性的研發專案
自由軟體的貢獻度上雖然追不上歐美
但起碼已經起了個頭
然而台灣香港以及澳門等
卻是連根毛都沒有

...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

aa8764114 發表於 2017-6-2 02:45 PM

C++只是比C語言多加物件導向還有其他很狂功能的昇級版
撇除物件導向還有那些功能
C跟C++根本就是一樣的
而且C++又有比C還要簡化的語法
個人覺得沒有甚麼C++比較難C比較簡單這回事
其實我覺得你可以直接學C++<br><br><br><br><br><div></div>

wlin2544 發表於 2017-6-3 03:26 AM

想要藉著這個發問 順便問一個問題~~
就是 C++ 到底要練到什麼程度 才算是可以在職場上寫程式是OK的
或者是自己接CASE可以比較應付得來~~~
我舉一個比較簡單的例子 例如說 可以寫出一個計算機鍵盤來 就算是比較水平的水準~~
像是說 計算機 他會有設計的問題 乘法的問題 什麼迴圈之類的應用 算是都會 都OK的~~
例如這樣子的概念!!!

chevylin0802 發表於 2017-6-3 01:53 PM

本帖最後由 chevylin0802 於 2017-6-3 02:26 PM 編輯

wlin2544 發表於 2017-6-3 03:26 AM
想要藉著這個發問 順便問一個問題~~
就是 C++ 到底要練到什麼程度 才算是可以在職場上寫程式是OK的
或者是 ...

坦白講,講到職場的時候。恐怕會對你打擊不小。放在20年前,C++可以算當紅炸子雞。台灣會有一堆企業搶著找C++的工程師。不管你是會微軟的MFC還是會寶蘭的C++ builder,都不怕找不到工作。那是微軟一統PC天下的時代。隔了五年之後,嵌入式系統成了主流。C++工程師更紅了,不過與此同時,Java也開始展露頭角。只是當時的CPU運算能力還沒現在這麼強,Java的視窗應用程式佔不到便宜。市場仍然被C++所壟斷。之後,Java朝向伺服器端的應用,也因此開始與php及asp對上。但是php挾著龎大的開源資源優勢,以及MySQL的強大執行優勢,使得Java工程師並沒有佔到什麼便宜。可是與此同時,嵌入式系統的產品因為卡在記憶體的容量問題,也致使許多C++程式面臨到開發困難。微軟的C#,對C++的就業市場,帶來第一波的打擊。緊接著,CPU的速度跟上來了,Java原先在畫面反應速度慢的問題得到了關鍵性的改善,也搶走了C++的市場。有點幸運的是,當Android的出現,改變了嵌入式系統的規格生態。原本的8MB/16MB/32MB的記憶體規格,一下子來到128MB起跳,原因是價格無限趨近,甚至還有時候是因為高容量單價比低容量便宜造成。這種情況顛覆了原本需要斤斤計較記憶體的嵌入式系統的規格,從而也給C++帶來一些機會,尤其是有UI介面的,QT+的函式庫應用成了需求的主因。但是並不包括Android的工作機會。因為Android需要用到的往往是C比較多些,主要是寫驅動程式以及Jni的部份。但這種的需求遠比寫Java App的要來得少很多。而且C++工程師還要會Java才能在Android的開發團隊生存。C++工程師不吃香了嗎?不算是不吃香,而是嵌入式系統的開發,他們要全能的工程師。要會做嵌入式系統的整體性的整合,要能夠會開發C++程式但是只是附帶的以及非必需,要能夠會使用純C語言寫驅動程式。因為現在更多的情況是偏向於無UI的嵌入式的產品應用。比如家用NAS。有UI的系統,就連車載系統都改用Android做。這也使得C++的就職市場越來越少。只剩下一些還在靠C++ Builder開發的小眾市場。還可以算比較專心在做C++程式。其他的,都只是把C++當成附帶的條件而不是主要工作。甚至還可以預言,Python成為主要的程式語言,C/C++成為附帶的工作,都還會是未來除了Android之外的發展方向之一。除非你是去歐美國家找C++的工作機會,那還是非常管用。但是在華人地區,從來不在框架層著墨的地方,是不大有機會讓你做。至於要會到什麼樣程度才能在職場工作?這點我比較難以回答。不過,就以嵌入式系統來說,起碼要有能力自己寫一套伺服器程式是必需的。如果會寫Linux的驅動程式,那就更有機會。但是只有一個標準的要求,都只能用純C語言去寫,伺服器部份不可以使用gnu以外所提供的任何程式庫。Link list要有能力自己做。...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

wlin2544 發表於 2017-6-3 04:47 PM

chevylin0802 發表於 2017-6-3 01:53 PM static/image/common/back.gif
坦白講,講到職場的時候。恐怕會對你打擊不小。放在20年前,C++可以算當紅炸子雞。台灣會有一堆企業搶著 ...

好的 謝謝大大的回覆~~~
我自己是資工系的畢業生!!!!
但是大學的時候學得不太好 再加上找工作的困難度
有點想要回歸回來本科業工作!!! 但是自己的能力又不足 自己也很明白
之前在學校期間是有接觸過C++,Android,Java,Adruino的東西!!!
C++算是學得比較好一點的~~ 所以才想說 是否要把C++學好 再往其他語言去跑!!!
我自己是比較偏向寫出工具或者是APP出來~~ 有機會也想要朝遊戲類發展看看
所以自己也有稍微摸索了一下unity的部分~~ C++好像也可以寫遊戲類的東西!!
或者是自己跟幾個好朋友 自己開發自己接CASE接案子來賺錢 順便提升自己的能力!!
感覺現在的網頁趨勢好像比較高!!!!!!
但是又怕 去學新的 反而沒學好 就得也不熟 到頭來一頭空!!!
我是有預計月中的時候會想要買C++與java和unity的書回來看回來摸!!!...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

chevylin0802 發表於 2017-6-3 07:41 PM

本帖最後由 chevylin0802 於 2017-6-3 07:52 PM 編輯

wlin2544 發表於 2017-6-3 04:47 PM
好的 謝謝大大的回覆~~~
我自己是資工系的畢業生!!!!
但是大學的時候學得不太好 再加上找工作的困難度


現在還有新的PC網路遊戲嗎?
我印象中好像多半都是大陸開發的flash遊戲。
真正靠directx用C++做的3D遊戲好像已經很少出現了。
而unity3d如果是做成PC遊戲,也都改成用C#來做
好像沒有聽到還在用C++寫
至於工具類的程式,在微軟平台上
不是用C#,就是用Java。又或者是Python。
畢竟C++寫UI實在是太麻煩了。
遠遠不及C#跟Java方便。
還不如你就真的靠arduino去接專案
利用它積木式的硬體整合方式
靠簡單易完成的程式
做迅速完成的專案
畢竟別人做硬體,要畫線路圖,要進行電路佈置,要洗板子,要上電子零件。
搞搞弄弄的,沒半年以上的時間很難完成成品
現在全使用模組化,再靠3D列印機殼
對於小批量的生產而言指100K的量以下
是有很大的優勢的
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

wlin2544 發表於 2017-6-3 11:30 PM

chevylin0802 發表於 2017-6-3 07:41 PM static/image/common/back.gif
現在還有新的PC網路遊戲嗎?
我印象中好像多半都是大陸開發的flash遊戲。
真正靠directx用C++做的3D遊戲 ...

對呀 unity是用C#來寫的這個我知道~~~
只是有時候在人力銀行上面找C++的遊戲工作
好像還有幾個的樣子~~~~
不過我之前聽過一些人說過 再加上我自己的想法是
應該不管什麼語言 只要夠專精 夠厲害!!
應該都還是有它的出路跟門路吧~~~~

話說 大大會比較建議走java嘛!?
因為在大學期間 大概2年前左右吧~~
我自己會知道 未來的趨勢是java
但是反向思考 或許大家會一直往java去移動~~~
他的條件應該也會往上提升!!!
那相對的 沒什麼人去學習或者是懂得語言
那會不會相對的他的應徵門檻會來的比較簡單一點

至於接case的部分 我看了104與ptt上面的 好像都是RWD,網頁類居多~~~
當然還是有一些APP Android 與 IOS 還有什麼ERP之類的~~
至於大大說的arduino的專案 有範例嗎 或者是網站可以參考
之前在學校做的東西 都比較屬於簡單型的~~~
對他比較不太熟悉說 可以做出怎樣的東西!!!
例如說unity可以做出2D 3D遊戲之類的
java可以做各種計算機 工具阿 遊戲啊 一些在google play上面看到的東西!!
對於arduino比較沒有什麼樣品的概念在!!!
再麻煩大大的指點指教了...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div>
頁: [1] 2 3