看板 Programming 關於我們 聯絡資訊
有個問題想來請教各位前輩,文有點長請注意。 -- 我先稍微自我介紹一下。 本身大學唸資工系,目前也正在就讀研究所,目前碩一要升碩二。 C、C++、Java 三種語言由於有修過課所以都略懂一些, 但由於專題以及個人喜好,所以基本上都是寫 C++ 除了專題以及修課的簡單作業外(如資料結構等課程) 也有用 C++ 寫過 OpenGL、Ogre 3D、視窗程式 Java 在我三年前修完課後就沒有再碰過, 除了一年前修 Android 課程時還有碰一下下, 所以 Android 也會寫一點點,但都沒有很專精 目前待的 LAB 比較偏向純學術所以 Coding 量極低, 只有寫模擬驗證數學時會 Coding 我想說 MATLAB 以後去工作用到的機率應該不大, 所以為了訓練自己目前是用 MATLAB 提供的引擎以 C++ 在寫, 不過大部分還是都利用 MATLAB 的 function 所以訓練量其實也不高。 -- 我想在這一年加強自己 Coding 的能力, 雖然三種語言都有接觸過,但我想專精練一種就好,但一直打不定主意。 我目前對三種語言的想法分別是: C :學長說他去面試時比較多公司注重 C C++ :三種比較下來比較熟悉的一種。 Java:雖然幾乎都忘了,但由於有修過課、加上手邊有書可以重新開始學。 除此之外還有下列考量: C :手上有洪維恩的 C 語言教學手冊第四版, 但除了這本不曉得讀完以後還能讀什麼。 C++ :接下來如果要讀 C++ 不太清楚方向。 雖然有寫過 OpenGL 跟 Ogre 3D 但因為以後不打算找圖學 Coding 的工作。 視窗程式只有學過 Windows 的, 但以目前趨勢這好像也不太適合投資時間下去繼續鑽研。        目前唯一想到的是學 C#(似乎跟 C++ 很像,但這部分我不清楚)        之後學 iOS App 的開發。     Java:如果要練 Java 由於手邊有書,我會先把 Java SE 複習後        去複習 Android 然後試著開發比較小規模的 App 放到 Google Play 上 -- 我未來是打算找需要 Coding 但非圖學的工作, 但由於上面的考量我有點不曉得該從哪種語言下手。 當然如果有時間我想三種都學 XD 只是因為還有一年就要畢業,時間上不允許這麼做。 想請各位前輩給點意見,謝謝 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.153.3 ※ 文章網址: http://www.ptt.cc/bbs/Programming/M.1403871599.A.D09.html
MOONRAKER:學C#開發iOS app?你是認真的嗎? 122.116.43.189 06/27 23:08
lc85301:總覺得C++熟的話C應該不會太差=w=140.112.230.221 06/27 23:09
lc85301:我個人的意見是認為可以補一點python之類140.112.230.221 06/27 23:09
lc85301:可是其實要看你找哪類工作140.112.230.221 06/27 23:10
Jockey66666:我覺得專注你有興趣的語言比較有幫助 114.35.246.219 06/28 00:47
Jockey66666:至少要有一種你專精的程式語言 114.35.246.219 06/28 00:49
Nestarneal:iOS app 我聽說是用 C# 為基礎寫的,就111.251.148.136 06/28 10:35
Nestarneal:像是 Android 跟 Java 的關係,不過我111.251.148.136 06/28 10:35
Nestarneal:也沒實際寫過,看起來我理解有誤...?111.251.148.136 06/28 10:35
Nestarneal:Python 我對它的理解是屬於比較舊世代111.251.148.136 06/28 10:35
Nestarneal:的語言,我周遭好像也沒人在寫 @@111.251.148.136 06/28 10:35
Nestarneal:我目前目標是放在找需要 Coding 的工作111.251.148.136 06/28 10:35
Nestarneal:,不過具體來說還沒有決定特定方向...111.251.148.136 06/28 10:35
Nestarneal:目前最有興趣的是 Android app 的開發111.251.148.136 06/28 10:35
Nestarneal:朝這方向走對以後找工作應該有幫助..?111.251.148.136 06/28 10:36
Nestarneal:因為之前有看過幾家公司在徵人,不過不111.251.148.136 06/28 10:36
Nestarneal:是在寫 app 而是在寫更底層的東西,111.251.148.136 06/28 10:36
Nestarneal:不曉得練習寫 app 會不會可以找的工作111.251.148.136 06/28 10:36
Nestarneal:範圍比較小?還是說先專注練習 C?111.251.148.136 06/28 10:36
Nestarneal:因為感覺很多東西都還是用 C 在開發...111.251.148.136 06/28 10:36
mars90226:Python不是舊世代的語言阿...你那些才是 140.112.16.142 06/28 10:52
mars90226:iOS的話要學Objective C或最新的Swift 140.112.16.142 06/28 10:53
mars90226:如果走Android就學Java吧,順便學OOP 140.112.16.142 06/28 10:54
mars90226:個人覺得C++的OOP跟目前流行的OOP差很多 140.112.16.142 06/28 10:54
mars90226:學Java可以熟悉如何用OOP設計 140.112.16.142 06/28 10:55
MOONRAKER:iOS用C#寫,請你不要聽說了好嗎 122.116.43.189 06/28 11:22
MOONRAKER:python一點也不舊 你根本不是理解是成見 122.116.43.189 06/28 11:23
MOONRAKER:我看你think too much了,趕快找一個開 122.116.43.189 06/28 11:23
MOONRAKER:始寫就對了,java不錯 122.116.43.189 06/28 11:23
gomi:你是活在哪個年代? 36.235.208.17 06/28 12:17
ucfan:嘛...以開發年代來說,python甚至比java還 118.160.26.252 06/28 13:11
ucfan:老是沒錯啦 118.160.26.252 06/28 13:11
Jockey66666:何謂流行的oop,c++哪裡做不到? 114.35.246.219 06/28 16:14
Killercat:其實C++學好就夠了。我進公司才開始學220.136.117.227 06/28 17:56
Killercat:java開發android 一個月就上手 進這家220.136.117.227 06/28 17:57
Killercat:公司才開始學python 一個月上手...220.136.117.227 06/28 17:57
Killercat:C++基礎好比什麼都重要220.136.117.227 06/28 17:57
Killercat:obj-c反而是比較麻煩的 要有點心裏準備220.136.117.227 06/28 17:58
Killercat:他的概念比較類似smalltalk 而非C/C++220.136.117.227 06/28 17:59
mars90226:我認為目前流行的OOP是單繼承+interface 1.171.181.138 06/28 19:37
mars90226:概念上跟多繼承的OOP差很多 1.171.181.138 06/28 19:37
mars90226:即使有些語言有trait,主要還是單繼承 1.171.181.138 06/28 19:38
mars90226:C++並不是說作不到,只是與其他OOP語言 1.171.181.138 06/28 19:38
mars90226:差異比較大 1.171.181.138 06/28 19:39
Jockey66666:可以多重繼承不代表一定要多重繼承 114.35.246.219 06/28 19:57
Jockey66666:因為c++沒有java中extends和 114.35.246.219 06/28 19:59
Jockey66666:implements的差別 114.35.246.219 06/28 19:59
Jockey66666:其實實務上觀念是一樣的 114.35.246.219 06/28 19:59
mars90226:但是interface呢? 1.171.181.138 06/28 20:06
mars90226:主要是想說C++中的class要有很多type就 1.171.181.138 06/28 20:07
mars90226:要多重繼承,可是這勢必會遇上一些問題 1.171.181.138 06/28 20:07
mars90226:而Java則用interface取代 1.171.181.138 06/28 20:07
Jockey66666:c++也可以寫interface阿 114.35.246.219 06/28 20:12
mars90226:阿,沒有implement的class嗎...好像也是 1.171.181.138 06/28 20:24
mars90226:不是很清楚實務上C++會怎麼寫,不過已經 1.171.181.138 06/28 20:27
mars90226:以個人經驗,C++寫起來與Java相差甚大 1.171.181.138 06/28 20:27
mars90226:就原PO目前的目的,還是比較推薦Java 1.171.181.138 06/28 20:28
Jockey66666:我覺得加強coding的能力這部分 114.35.246.219 06/28 20:45
Jockey66666:不是學很多語言就代表coding會進步 114.35.246.219 06/28 20:46
Jockey66666:能精通一種程式語言比較有意義 114.35.246.219 06/28 20:47
Jockey66666:照原po的說法他目前學比較深的是c++ 114.35.246.219 06/28 20:48
Jockey66666:不過還是要看他想找什麼工作 114.35.246.219 06/28 20:48
Killercat:urh, 說C++的implements(interface)概念220.136.117.227 06/28 23:13
Killercat:一樣的話,這是個很大的誤會 :D220.136.117.227 06/28 23:13
Killercat:實際做一次看看你就知道了....220.136.117.227 06/28 23:14
Killercat:我也認為C++沒有真正的interface是滿220.136.117.227 06/28 23:14
Killercat:遺珠之憾的就是...220.136.117.227 06/28 23:14
BDFishX:請問樓上誤會的點是在? 112.104.7.175 06/28 23:15
Killercat:C++沒有真正的interface 所以不存在與220.136.117.227 06/28 23:16
Killercat:java的extend, implement概念相同的問題220.136.117.227 06/28 23:16
Killercat:virtual是個很twilight的東西 實際寫一220.136.117.227 06/28 23:17
Killercat:次 編譯器靠背個幾次比方說缺virtual220.136.117.227 06/28 23:17
Killercat:dtor啊 找不到vtble啊 會慢慢的比較理解220.136.117.227 06/28 23:17
Killercat:C++的class只有pure virtual function220.136.117.227 06/28 23:18
Killercat:跟interface仍然不等價,他仍然是一個220.136.117.227 06/28 23:18
Killercat:「實體」而不是「契約」的概念220.136.117.227 06/28 23:18
Killercat:obj-c的protocol又是另外一個極端就是..220.136.117.227 06/28 23:19
BDFishX:請問pure virtual function與interface不 112.104.7.175 06/28 23:31
BDFishX:等價的點是在哪邊呢?剛剛我實做了一次並 112.104.7.175 06/28 23:31
BDFishX:沒有碰到您提到的問題 不好意思 很好奇問 112.104.7.175 06/28 23:32
BDFishX:題的點是在哪邊@@ 112.104.7.175 06/28 23:32
Killercat:我直接說結論。理論上來講,interface220.136.117.227 06/28 23:53
Killercat:僅僅只是一個contract,而pure virtual220.136.117.227 06/28 23:54
Killercat:class(其實沒這種說法 你知道是啥就好)220.136.117.227 06/28 23:54
Killercat:仍然是一個擁有實體 會有鑽石繼承問題220.136.117.227 06/28 23:54
Killercat:擁有vtbl 需要virtual dtor的真正class220.136.117.227 06/28 23:54
Killercat:http://tinyurl.com/k36k2cj 最後面的220.136.117.227 06/28 23:57
Killercat:老兄也有解釋,簡單說C++沒這概念220.136.117.227 06/28 23:57
Jockey66666:本質上是不一樣的東西,因為語言沒有 114.35.246.219 06/29 00:08
Jockey66666:但我們可以去實作這樣的概念 114.35.246.219 06/29 00:10
Jockey66666:鑽石繼承只能自己避開 114.35.246.219 06/29 00:10
Killercat:其實我覺得跟interface「概念」比較像的220.136.117.227 06/29 00:22
Killercat:反而是template時做出來的policy220.136.117.227 06/29 00:22
Killercat:不過這個比較麻煩一點倒是真的...220.136.117.227 06/29 00:22
Jockey66666:能給個範例學習下嗎 謝謝 114.35.246.219 06/29 00:46
Killercat:Modern C++ Design 第一還是第二章220.136.117.227 06/29 01:34
Killercat:你慢慢看下去會覺得這東西其實在語言層220.136.117.227 06/29 01:34
Killercat:面上 比較接近真正的interface220.136.117.227 06/29 01:34
Killercat:網路有1x年前侯捷翻譯的中文版。它裡面220.136.117.227 06/29 01:35
Killercat:一些東西都過時了 但是Policy這個還是220.136.117.227 06/29 01:35
Killercat:在現代C++領域非常讓人受用220.136.117.227 06/29 01:35
legendmtg:未來的concept啊XD 220.134.108.48 06/30 20:52
Killercat:concept爭議更大 C++11沒進去我很傷心(? 59.124.251.135 07/01 09:20
longlongint:單論程式語言跟演算法 原PO應該已爐 114.44.206.68 07/01 20:20
longlongint:火純青 學習用工具吧 114.44.206.68 07/01 20:20
MOONRAKER:燃燒不完全也是青色的。 122.116.43.189 07/08 22:33
Killercat:...樓上講話真的很...有梗 XDD 118.160.21.238 07/09 06:56
donkeychen:噗 純青... 210.59.147.226 07/17 14:04