※ 本文為 tom50512 轉寄自 ptt.cc 更新時間: 2019-06-05 17:34:59
看板 C_Chat
作者 標題 Re: [閒聊] 1%的抽卡率抽100次機率是63.4%?
時間 Tue Jun 4 11:17:22 2019
※ 引述《fragmentwing (片翼碎夢)》之銘言:
: https://imgur.com/fs1T6T9
: 原本想說要用log去算,發現超不準,只好直接算了
: 怕超過2*32次,就用10次和0.1的機率去算了
: 至少一次的機率==一次+兩次+...+N(抽的總次數)次
: 以下程式碼,才正式學C不到10天,請鞭小力點
: #include<stdio.h>
: #include<math.h>
: int cntnis(int a,int b){
: int top=1,bottom=1;
: for(int i=1;i<=b;i++){
: top*=(a-i+1);
: bottom*=i;
: }
: int compute=top/bottom;
: return compute;
: }
: double multi(double have,int havet,int nohavet){
: double result=pow(have,havet)*pow((1.0-have),nohavet);
: return result;
: }
: int main(){
: int times,cntn,i;
: double haveis,mulh,probability,expectation=0;
: times=10;
: haveis=0.1;
: for(i=1;i<=times;i++){
: cntn=cntnis(times,i);
: mulh=multi(haveis,i,times-i);
: probability=cntn*mulh;
: printf("抽 %d 次中,抽中 %d 張的機率= %lf\n",times,i,probability);
: expectation+=probability*i;
: }
: printf("抽 %d 次,機率 %.3lf 期望值為: %lf",times,haveis,expectation);
: return 0;
: }
看到原PO說剛學C就想拿來運用,想要鼓勵一下原PO,
這才是學程式的精神,學了就是有需要就要想到它,把它要拿出來用
有一些人認為C太低階,程式碼太長,用Python或Matlab打起來比較簡單
在這個案例上是沒錯啦,畢竟只是跑10次迴圈而已
但如果是跑上萬次、甚至是百萬次的話,我就建議用C了
我大學念資工時,有一堂課叫做 隨機程序
專門就是再學如何寫有效率的程式去模擬隨機環境,統計十萬百萬次後,比較是否符合數學上計算的機率
例如:
撲克牌抽三張都是紅心,模擬百萬次的成功次數
有三個袋子,裡面各有紅白三顆球,A袋摸一顆球放B袋,B袋摸一顆放C袋,最後C袋摸出紅球,模擬百萬次的成功次數
諸如此類的各種機率問題,都可以用程式去模擬十萬、百萬、甚至千萬次
這種迴圈都是要跑很久的,就比較需要可以碰觸到低階的C去寫程式
可以break迴圈就break,盡可能的減少不必要的過程
Matlab就很適合跑一些很難去寫的數學式演算法,因為都建好函數了
Laplace阿、Fourier都可以直接呼叫
可以畫圖也是一大優勢
我上面用C跑完的百萬次隨機模擬結果,也可以丟到Matlab去跑分布圖 讚讚
再來Matlab是以矩陣做運算的,也很適合去跑圖像分析和圖像處理
當初實驗室學長也有在用Matlab做人臉分析處理的,不過我沒有涉獵就不贅述了
Python是我目前看過最好學的程式了
直覺符合人類語言、程式短易讀易改、主流多數人都會用
我自己就google自學Python玩過網路爬蟲、wikia文本處理機器人、聊天機器人
總結來說
C 適合新手打基礎、或是寫需要大量運算需要增加效率時使用
Matlab 適合數學計算、數位圖像處理
Python 適合快速寫簡單程式、或是開發一些應用
以原原PO的漫畫中例子,我們就可以以C做模擬:
SSR機率1%,抽100次中,如果有中SSR就算成功,模擬百萬次,成功幾次
以數學理論上就是1-99%^100,這就可以直接在Matlab或是Python上做
在來比較最後的數值是否相似,以兩種不同的路來驗證最終結果沒問題
在來比較最後的數值是否相似,以兩種不同的路來驗證最終結果沒問題
以上小弟淺見,還望各路大神鞭小力點
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.182.68 (臺灣)
※ 文章代碼(AID): #1SzUB8YE (C_Chat)
※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1559618248.A.88E.html
推 : 我也是從c開始學1F 06/04 11:20
推 : 快推免得被說看不懂2F 06/04 11:23
推 : 我是從QB開始學...3F 06/04 11:24
→ : 喔喔,對對對,跟我想得差不多4F 06/04 11:24
→ : 我那時候大家都學C++啊,其實還是滿好用的啦5F 06/04 11:25
推 : 其實我也是這麼想的6F 06/04 11:26
推 : 其實我覺得第一個學C挺怪的就是7F 06/04 11:29
推 : 完了我只用過MATLAB8F 06/04 11:29
→ : 打錯,我是要說第一個語言學C++挺怪的9F 06/04 11:29
會說學C/C++打基礎,是因為比較低階,新人可以學習電腦程式的邏輯思考方式我們系上大一程式設計課 上學期是先教Python,對於程式完全沒學過的人比較好上手
下學期才開始教C/C++,把程式邏輯基礎打好
不過我高三學測完就先翻書自學C了 :P
※ 編輯: seeghost945 (60.251.182.68 臺灣), 06/04/2019 11:36:54
推 : python真的很不錯,c和c++的語法和方法太繁複了,做什麼10F 06/04 11:31
→ : 都要一套流程
→ : 都要一套流程
→ : static-typed 語言寫起來就很累啊12F 06/04 11:32
→ : C/C++ 更麻煩的是沒有 garbage collection
→ : C/C++ 更麻煩的是沒有 garbage collection
→ : 大一上學校教c++根本害人14F 06/04 11:34
→ : 不過現在 MATLAB 做得到的事情Python幾乎都可以做了吧?15F 06/04 11:35
推 : 我之前大學資工三個班 其他兩班學c++我們學c16F 06/04 11:36
→ : 第一個學C怪在哪?頂多就沒python豐富 支援一堆..17F 06/04 11:36
→ : 第一個學C很ok,是學C++很怪18F 06/04 11:36
推 : 很多工學院大一也都教C++19F 06/04 11:37
→ : 但感覺不是很適合...
→ : 但感覺不是很適合...
→ : 我知道啊 因為我們當初也是教C++ 課本就螞蟻 對吧?21F 06/04 11:37
推 : c->c++->others22F 06/04 11:38
推 : 語言好不好用看用在哪,殺雞用牛刀怪刀不好用是很奇怪的事23F 06/04 11:38
→ : c算很簡單的,c++導入物件概念,再來是其他24F 06/04 11:39
推 : 真的是要看用在什麼地方 如果你是寫driver跟寫app用的語25F 06/04 11:41
→ : 言本來就不會一樣
→ : 言本來就不會一樣
推 : 先學c/c++可以方便銜接計算機概論的硬體知識27F 06/04 11:42
推 : 我之所以提C比C++做為第一個語言較佳就是因為硬體的關聯28F 06/04 11:43
→ : 我不太懂為什麼教C++的一開始就 cout 和 << ,這兩者涉及
→ : 了class 和 operator overloading 的概念
→ : 而且很多教授直接噴 string class 出來存字串
→ : 這反而會妨礙學生理解字串的處理
→ : 但是在 C 裡面你就只有 char[]
→ : 我不太懂為什麼教C++的一開始就 cout 和 << ,這兩者涉及
→ : 了class 和 operator overloading 的概念
→ : 而且很多教授直接噴 string class 出來存字串
→ : 這反而會妨礙學生理解字串的處理
→ : 但是在 C 裡面你就只有 char[]
推 : arrenwu有沒有北七如我也看的懂得說法啊 ....34F 06/04 11:45
→ : 簡單的說就是C++的教學一開始常常使用高級咒文,但C會從35F 06/04 11:45
→ : 初級元素魔法開始
→ : 初級元素魔法開始
推 : 樓上把c++primer前面幾章讀一下就會大概知道a大在說啥37F 06/04 11:46
推 : c++跟c的關係 用比較簡單的說法就是c++多了物件概念38F 06/04 11:46
→ : 過時的高級咒文... 理解物件我認為要學java..39F 06/04 11:47
→ : c比c++的東西少 當然比較好學(X40F 06/04 11:47
→ : 所以你在用C的魔法時,雖然看起來好像不太俐落,但你很了41F 06/04 11:47
→ : 解你在幹什麼
→ : 解你在幹什麼
以cout和<<的例子來說
int a, b;
printf("%d, %d", a, b);
這樣我們可以知道只會印出兩個數字
std::cout<<a<<b;
可以一直<<下去,但對新手而言根本不知道程式實際上到底做了什麼,只知道這樣會吐出兩個數字
更別說當
int a; char b[10]; string c;
std::cout<< a << b << c;
不同型態都可以直接透過<<輸出
優點是寫起來簡單
缺點是新手根本不知道原理
用魔法來看就是
都打算從頭學魔法了,不先學火元素控制原理
直接唱人家發明好,可以直接噴火的魔法
而且還可以火水風元素都適用
→ : 用c寫一些數學算式還沒那麼不堪啦,純文字下c算簡單易懂43F 06/04 11:48
→ : C++是高級魔法師把複雜魔法簡化給你用,但你其實只看得到44F 06/04 11:48
※ 編輯: seeghost945 (60.251.182.68 臺灣), 06/04/2019 12:01:12→ : 效果跟某些初級魔法很像,但實際上哪裡不同你搞不清楚45F 06/04 11:48
推 : 你這例子真是淺顯易懂,感恩~46F 06/04 11:48
推 : a大好神==47F 06/04 11:49
推 : 我先推才不會讓人覺得我看不懂48F 06/04 11:49
→ : 神比喻49F 06/04 11:49
→ : Cork要求的也太困難了啦 grgrgr50F 06/04 11:49
→ : 因為我在學C之前我從來沒搞懂C++到底怎麼弄字串的51F 06/04 11:49
推 : fortran跟C到底哪個快啊 之前看到有人說90在現代也52F 06/04 11:50
→ : 還是很快
→ : 還是很快
推 : 換CPU比較快(X54F 06/04 11:50
→ : 而Java跟C++這兩大高階魔法系統有一個很類似的哲理,但有55F 06/04 11:51
推 : 這篇給我的感想就是程式設計師=魔法師56F 06/04 11:51
見習魔法師報到→ : 一個很大的不同是,C++的魔法放久了會對你精神造成負擔,57F 06/04 11:51
→ : 換硬體比較快+158F 06/04 11:51
→ : 然後那個負擔你要自己排除;Java的魔法則是構築式裡面會59F 06/04 11:51
→ : 自己慢慢讓它消失
→ : 自己慢慢讓它消失
→ : 之前學fortran字串理解也還行,畢竟宣告要len61F 06/04 11:52
→ : fortran像是在打文章,宣告用integer,dimension,all
→ : ocatable之類,通通沒有縮寫
→ : fortran像是在打文章,宣告用integer,dimension,all
→ : ocatable之類,通通沒有縮寫
推 : java有很多東西幫你做好了,摳他就可以了64F 06/04 11:53
推 : 奇怪,印象中有看到Java要消失不支援的新聞65F 06/04 11:53
→ : 只是從c跳到java會不習慣,所以接c++比較妥當66F 06/04 11:54
→ : c跳c++只會混亂吧..67F 06/04 11:55
推 : 是不習慣標準函式庫太強太威猛嗎XD68F 06/04 11:55
推 : 這串釣到一堆神人==69F 06/04 11:56
推 : c接c++不習慣你是開玩笑,同一個媽生的程式語言70F 06/04 11:56
推 : 對了感謝鼓勵71F 06/04 11:57
我一直認為學程式就是為了用程式解決生活上的問題為了解決問題而去學習程式,就能維持對寫程式的興趣
如果這份熱情可以一直延續到成為工作,那就更棒了
→ : 高階語言邏輯都差不多 跳來跳去很快的 玩單晶片才痛苦72F 06/04 11:58
推 : 應該說,你到Java不習慣的東西,在C++也會不習慣73F 06/04 11:58
→ : Java只是從syntax上面直接強迫你在精神上進入OOP的世界
→ : Java只是從syntax上面直接強迫你在精神上進入OOP的世界
推 : 當然啊,高階的語言大家的電腦都看得懂,特別用一種機器75F 06/04 11:59
→ : 就要用它的機器語言
→ : 就要用它的機器語言
→ : 但是在怎麼破爛的機器 現在應該都有 c compiler吧77F 06/04 12:00
推 : c++跟c差很多好嗎? 你才在開玩笑78F 06/04 12:00
推 : 我覺得學數學比較有用KAPPA79F 06/04 12:01
→ : 我覺得他應該是想要說 C code 放到 C++ 不會出現error啦80F 06/04 12:01
→ : 從fortran往C開始學超不適應81F 06/04 12:01
→ : 一堆東西會撞到
→ : 比方說C的continue是fortran的cycle
→ : 然後fortran自己有另一個代表不做事的continue,常用
→ : 來跟goto搭配,然後fortran的goto是用行代碼(據說有
→ : 不少資管唸四年還不知道行代碼是什麼呢),C是用標籤
→ : 搭配goto
→ : 一堆東西會撞到
→ : 比方說C的continue是fortran的cycle
→ : 然後fortran自己有另一個代表不做事的continue,常用
→ : 來跟goto搭配,然後fortran的goto是用行代碼(據說有
→ : 不少資管唸四年還不知道行代碼是什麼呢),C是用標籤
→ : 搭配goto
推 : c到c++直接回不去88F 06/04 12:01
→ : 我倒是從來沒學過Fortran 這語言現在很多人用嗎?89F 06/04 12:01
→ : goto在非底層語言上算是一種忌諱了吧XD
→ : goto在非底層語言上算是一種忌諱了吧XD
→ : C跳C++會混亂是 你會下意識用C的概念去學 問題是物件91F 06/04 12:02
推 : c_chat(X) C++chat(O)92F 06/04 12:03
其實也是C Chat(?)→ : 完全是另一個世界 很多C的概念根本不適用 加上語法像93F 06/04 12:03
→ : fortran有的老傳產還在用94F 06/04 12:03
→ : 第二不適應的是% C是mod fortran是要把資料型態modu95F 06/04 12:04
→ : le內的東西拿出來用才會% 然後在C這功能好像是用.?
→ : 不過C的module似乎很少用,畢竟class比較方便的樣子
→ : 最不適應的是 fortran的函式是call by reference C
→ : 是 call by value搭配address
→ : 靠 講到fortran那天導聚教授問怎麼會用這個,教授自
→ : le內的東西拿出來用才會% 然後在C這功能好像是用.?
→ : 不過C的module似乎很少用,畢竟class比較方便的樣子
→ : 最不適應的是 fortran的函式是call by reference C
→ : 是 call by value搭配address
→ : 靠 講到fortran那天導聚教授問怎麼會用這個,教授自
推 : 學C很合適吧 指標那邊也帶你學硬體101F 06/04 12:06
我一開始學C陣列一知半解一直到了學到指標才感覺打通任督二脈,搞懂了記憶體邏輯
→ : 己是學C,我也覺得系上為甚麼要教這個……我們原本102F 06/04 12:06
→ : 要學python的說
→ : 指標和指標與陣列的一些關係,我花了一個半小時才弄
→ : 懂
→ : 要學python的說
→ : 指標和指標與陣列的一些關係,我花了一個半小時才弄
→ : 懂
→ : 但是這學期上swift完全不知道在幹嘛==106F 06/04 12:08
※ 編輯: seeghost945 (60.251.182.68 臺灣), 06/04/2019 12:18:19→ : 各位討論這麼多,結果你們到底是在討論c++ 幾?107F 06/04 12:09
→ : C的goto已經有放限制器只能作用在同一block內了108F 06/04 12:09
→ : 你知道,fortran的goto是可以從第十行跳到倒數三行
→ : 的嗎 所以fortran的goto真的是太過強大的東西,沒寫
→ : 註解會讓交接的人很頭痛
→ : 你知道,fortran的goto是可以從第十行跳到倒數三行
→ : 的嗎 所以fortran的goto真的是太過強大的東西,沒寫
→ : 註解會讓交接的人很頭痛
推 : 指標和參考是讓你懂,c所用的都是最基礎的觀念,python就112F 06/04 12:12
→ : 沒想得這麼麻煩,我要用陣列要傳參數當然是要它的值啊,
→ : 我還特地送地址過去幹嘛,我到你家門口告訴你地址到我家
→ : 取貨,幹嘛不順便送給你咧
→ : 沒想得這麼麻煩,我要用陣列要傳參數當然是要它的值啊,
→ : 我還特地送地址過去幹嘛,我到你家門口告訴你地址到我家
→ : 取貨,幹嘛不順便送給你咧
噓 : 用指標是讓你跟副程式溝通的好ㄇ==116F 06/04 12:13
推 : 沒 陣列是傳址的117F 06/04 12:13
→ : 因為整個傳過去會太慢
→ : 因為整個傳過去會太慢
推 : 我說學校教你基礎概念當然用最基礎的c啊119F 06/04 12:14
→ : 比如你傳一個a[] 其實是傳a[0]的位址過去120F 06/04 12:15
→ : 這在取址運算子&上很明顯
→ : 這在取址運算子&上很明顯
推 : 那應該學組語 真 底層122F 06/04 12:16
我們系上也有教組語阿,只是實務上比較少用到大二暑假沒事做去報名參加了資安研習營,裡面在交反編譯理論和簡易運用
那些講師才是真D大神,年紀輕輕就是反編譯工程高手
我只聽得懂理論...
→ : 所以scanf對char[]是不用&的123F 06/04 12:16
推 : 不在c上面告訴你不然在哪邊告訴你124F 06/04 12:16
推 : 我以為我在C洽原來是軟體版125F 06/04 12:18
其實我比較想要討論程式寫隨機程序的XD不過這應該更小眾
推 : 不過python速度太慢惹 演算法測資都測不過QQ126F 06/04 12:19
→ : 不同情況適合不同語言寫,根本沒什麼好比的127F 06/04 12:19
推 : 演算法測資測不過怪Python慢好像不太對吧128F 06/04 12:20
推 : 速度超時啊129F 06/04 12:22
→ : 應該說時間超時
→ : 應該說時間超時
推 : @Giornno Python的 List 是傳地址沒錯喔131F 06/04 12:22
→ : 測資是對的 執行時間太長132F 06/04 12:22
不是Python慢,是你能給Python的資訊太少了,他要去猜你給他了什麼※ 編輯: seeghost945 (60.251.182.68 臺灣), 06/04/2019 12:30:22
→ : 是MATLAB傳才是整個 deep copy133F 06/04 12:23
→ : 一般時間超時是時間複雜度不一樣了吧?
→ : 一般時間超時是時間複雜度不一樣了吧?
→ : 時間複雜度一樣啊 但用python跑就比較慢啊135F 06/04 12:24
→ : 挖 你那測資也太..嚴苛了吧136F 06/04 12:24
→ : 你用C寫大概少一半以上的時間吧137F 06/04 12:24
→ : 用C是要搞定輸入很麻煩 python簡單很多但就太慢
換個方向想 Python就是多花了一點點時間再幫你判斷處理輸入呀~→ : 用C是要搞定輸入很麻煩 python簡單很多但就太慢
推 : 什麼,我誤解了這麼久嗎139F 06/04 12:26
→ : 之前忘了在學哪個演算法python就要跑0.26秒 但標準0.25140F 06/04 12:26
→ : 這很正常吧 程式設計理念不一樣141F 06/04 12:26
推 : 你現在去run: x = [1,2,3] -> y=x142F 06/04 12:26
→ : 然後改 y[0],你會發現x的內容也會被改道
→ : 然後改 y[0],你會發現x的內容也會被改道
推 : 不懂怪在哪,會一個就會全部了,重點在培養寫程式的144F 06/04 12:30
→ : 思考方式,只是不同語言程式的語法不同而已
還有要清楚知道正在使用的程式優勢在哪→ : 思考方式,只是不同語言程式的語法不同而已
學會很多程式就像拿到很多不同的螺絲起子
你要知道哪個螺絲起子適合轉哪種螺絲
推 : C_Chat 又變C討論板了(為什麼要說又呢146F 06/04 12:31
→ : 演算法跟資料結構搞好比用哪個語言重要147F 06/04 12:33
推 : 沒錯啊,如果總是寫出複雜度平方以上的演算法,用再快的148F 06/04 12:34
→ : 語言也沒救
※ 編輯: seeghost945 (60.251.182.68 臺灣), 06/04/2019 12:43:41→ : 語言也沒救
推 : 我直上C+++結果現在學R、Python、java時有障礙...150F 06/04 12:38
推 : 推151F 06/04 12:41
→ : 你是學c++幾?152F 06/04 12:41
推 : 現在都2019了,還有人在C+++==153F 06/04 12:46
推 : 其實你就想,很多人跑模擬還在用MATLAB,所以其實速度上154F 06/04 12:48
→ : 大家不見得會追求到那麼極致
→ : 大家不見得會追求到那麼極致
→ : 個人經驗有障礙的通常不是語言差異156F 06/04 12:48
→ : 遇過幾個文組的沒學過c、c++還是寫得有聲有色
→ : 研究所才開始學寫程式的人也不少
→ : 遇過幾個文組的沒學過c、c++還是寫得有聲有色
→ : 研究所才開始學寫程式的人也不少
→ : 最好是學一個就全部都會 ..工具方法都不太一樣..159F 06/04 12:50
推 : matlab速度很快吧==160F 06/04 12:55
→ : 算矩陣誰比他快的
→ : 算矩陣誰比他快的
推 : 應該是說學會一個 其他就觸類旁通 很快就會了162F 06/04 12:56
→ : Python速度慢 語法又很寬鬆 還是很多人用啊163F 06/04 12:58
→ : 寬鬆?164F 06/04 13:18
推 : 對啊我以前也這樣說可是沒人認同165F 06/04 13:23
推 : 語言確實有很多共同觀念,例如基本的迴圈遞迴演算法166F 06/04 13:33
→ : ,但多的是不共通的語言特性,記憶體分配、指標、ref
→ : erence,不要以為像reference很容易,光是c++的左值
→ : 右值就搞死你了,我到現在都不敢說我多會c++
→ : ,但多的是不共通的語言特性,記憶體分配、指標、ref
→ : erence,不要以為像reference很容易,光是c++的左值
→ : 右值就搞死你了,我到現在都不敢說我多會c++
推 : 以美國公司面試都要現場寫code來說 你說你要以python來170F 06/04 13:35
→ : 接受測試是會被工程師瞧不起的 反而資料結構跟演算法學
→ : 好來 公司看到你特別的地方會直接給你錢請你去總公司面
→ : 試
→ : 接受測試是會被工程師瞧不起的 反而資料結構跟演算法學
→ : 好來 公司看到你特別的地方會直接給你錢請你去總公司面
→ : 試
→ : 用Python寫code會被瞧不起? 現在還有這問題喔?174F 06/04 13:36
→ : 我知道面試好像比較偏愛Java沒錯
→ : 我知道面試好像比較偏愛Java沒錯
→ : 優文176F 06/04 13:38
推 : 目前大三資工,後悔小時候沒多接觸程式,現在很痛苦177F 06/04 13:48
不用怕啦,還有很多大學畢業才開始學寫程式的,還不是都在業界打滾,不要妄自菲薄有熱情維持coding習慣比較重要
推 : 別怕啊 這一兩個學期你降會很習慣了178F 06/04 13:49
→ : 我大二才從文組轉到資工,有興趣很快就會習慣了179F 06/04 13:55
推 : 我一下寫c一下寫verilog 就快死了180F 06/04 14:04
推 : 國中的時候摸過C,隔了十幾年年沒碰程式,之後看python還181F 06/04 14:05
→ : 是很容易上手
→ : 是很容易上手
推 : 想寫程式練功心態是對的啦,但這問題真的不用迴圈來算183F 06/04 14:17
推 : 用上機率統計和常態分佈的概念,迴圈可以省起來
推 : 用上機率統計和常態分佈的概念,迴圈可以省起來
推 : 除了要接著學資料結構和組合語言的資工系學生之外,母語都185F 06/04 14:26
→ : 沒有必要選C
→ : C的learning curve太反人類,母語腔調又很難擺脫,用他當母
→ : 語荼毒過的人腦袋直接上了思想僵化+9的DEBUFF
→ : 要理解其他paradigm難度直線往上跳
→ : 一堆人拿著C++、JVM Python照著C的convention在寫
→ : 把C library字典對換成C++ equivalent就當自己在寫C++,連t
→ : emplate都不會用
→ : C++自己就算不用C style的for(int i … ),我覺得Iterator
→ : 比較潮,不不通通來給我用range-based for
→ :
→ : 開個static public Main()從頭到尾call static method,什
→ : 麼是OO?什麼是design pattern?
→ : DP我知道啊 我高中ZeroJudge就在用的Dynamic Programming那
→ : 個嘛
→ : 然後跟你說「啊每個語言都一樣,會C就會寫C++/Java/…,你
→ : 看會動啊!」
→ :
→ : 每種語言都有他們自己特殊的味道
→ : 那種覺得語言沒差都一樣,通通照著自己那一套寫的人,寫出
→ : 來的東西其他人合作起來有多臭自己都聞不出來
→ : 舉個例子,要寫Python就算沒辦法寫得夠Pythonic,至少code
→ : style給我去把PEP8讀過一遍再來,私人專案沒關係,要公開之
→ : 前先sanitize一下不要臭到別人
→ : 也不是說寫C的就不臭,去翻一下GNU standard library人家是
→ : 用怎麼樣的慣例在寫C的,不要自己惡搞
→ :
→ : 能把虛擬碼換成某種語言跑起來,不代表你會那種語言,大家
→ : 都有的功能不重要,重點是你有沒有弄懂為什麼這個語言存在
→ : 的核心feature和什麼才是他的特色。
→ : 嫌Python慢之前,如果你知道Cython在幹嘛,知道Python為什
→ : 麼又稱glue language,你就會用C來寫core然後Python寫wrapp
→ : er的方式來Pythonic地實作你的演算法然後再接駁給其他系統
→ : Python的設計目的是減少人類的開發時間和各種重要元件之間
→ : 的串接overhead、作為複雜系統的前端語言,例如深度學習引
→ : 擎不約而同選用Python作為前端,C/CUDA作為後端一樣
→ : 沒有必要選C
→ : C的learning curve太反人類,母語腔調又很難擺脫,用他當母
→ : 語荼毒過的人腦袋直接上了思想僵化+9的DEBUFF
→ : 要理解其他paradigm難度直線往上跳
→ : 一堆人拿著C++、JVM Python照著C的convention在寫
→ : 把C library字典對換成C++ equivalent就當自己在寫C++,連t
→ : emplate都不會用
→ : C++自己就算不用C style的for(int i … ),我覺得Iterator
→ : 比較潮,不不通通來給我用range-based for
→ :
→ : 開個static public Main()從頭到尾call static method,什
→ : 麼是OO?什麼是design pattern?
→ : DP我知道啊 我高中ZeroJudge就在用的Dynamic Programming那
→ : 個嘛
→ : 然後跟你說「啊每個語言都一樣,會C就會寫C++/Java/…,你
→ : 看會動啊!」
→ :
→ : 每種語言都有他們自己特殊的味道
→ : 那種覺得語言沒差都一樣,通通照著自己那一套寫的人,寫出
→ : 來的東西其他人合作起來有多臭自己都聞不出來
→ : 舉個例子,要寫Python就算沒辦法寫得夠Pythonic,至少code
→ : style給我去把PEP8讀過一遍再來,私人專案沒關係,要公開之
→ : 前先sanitize一下不要臭到別人
→ : 也不是說寫C的就不臭,去翻一下GNU standard library人家是
→ : 用怎麼樣的慣例在寫C的,不要自己惡搞
→ :
→ : 能把虛擬碼換成某種語言跑起來,不代表你會那種語言,大家
→ : 都有的功能不重要,重點是你有沒有弄懂為什麼這個語言存在
→ : 的核心feature和什麼才是他的特色。
→ : 嫌Python慢之前,如果你知道Cython在幹嘛,知道Python為什
→ : 麼又稱glue language,你就會用C來寫core然後Python寫wrapp
→ : er的方式來Pythonic地實作你的演算法然後再接駁給其他系統
→ : Python的設計目的是減少人類的開發時間和各種重要元件之間
→ : 的串接overhead、作為複雜系統的前端語言,例如深度學習引
→ : 擎不約而同選用Python作為前端,C/CUDA作為後端一樣
推 : 結果這一串沒有經典引戰笑話XDDD,我以為是有人引戰說221F 06/04 14:32
→ : 了什麼xxx是世界上最好的語言才這麼多推
→ : 了什麼xxx是世界上最好的語言才這麼多推
→ : 看來專家很多,想問一下,為啥學校教的跟業界要的落差很大223F 06/04 14:45
我是念中後段的國立大學這邊的環境是學生程式能力參差不齊,更嚴重的是有很多學生只想混畢業
大一入學前都不會寫程式,下課回家除了作業也不會想要多練習程式
熱情沒練習程式能力當然無法進步,學生都原地踏步,能教的就不多
系上的規畫上,到了大三選修課才開始在課堂上學做專案
但說白了也只是不到千行的小專案
一堂課也才18周,還要上課教課程內容
以資料庫這堂課舉例,學關連式資料庫、SQL語法就花了約8~9周
期中考完上述後,才開始寫專案,每周課堂做專案報告
再來教授也不一定會跟業界有互動,當然就不知道現在業界流行的內容
有些教授更只顧著自己研究室的案子
畢竟申請研究經費還是比教育理念重要阿XD
推 : 要引戰的話先從tab還是4格空白開始聊吧224F 06/04 14:47
→ : 再來聊IDE背景顏色要深色還淺色
→ : 再來聊IDE背景顏色要深色還淺色
推 : 我支持IDE背景要深色226F 06/04 14:56
推 : 應該說學c容易習慣從下往上堆的思考,而c++,java..etc227F 06/04 14:58
→ : 通常是由上往下長的思路去設計的,沒切換過來撞牆是必
→ : 然的
→ : 通常是由上往下長的思路去設計的,沒切換過來撞牆是必
→ : 然的
推 : 我都用tab 打C用深色 Matlab用淺色 Latex深淺看心情230F 06/04 14:59
→ : 因為學校不會教你實作...要自行摸索231F 06/04 15:09
→ : 再來C++的教科書很爛
→ : 再來C++的教科書很爛
→ : 從C開始之後學java 現在學python輕鬆多233F 06/04 15:15
※ 編輯: seeghost945 (60.251.182.68 臺灣), 06/04/2019 15:55:44推 : 其實1堂課18周還滿久的啦XD234F 06/04 15:57
推 : Code_Chat235F 06/04 16:17
推 : 現在好像戰不了Vim或Sublime了?236F 06/04 16:40
推 : 其實我是完全不會推薦一般人去寫C 不如去寫C#237F 06/04 22:46
→ : 上手容易度跟內建的API豐富程度差很多
→ : 數字還好 字串處理的話 C#是給你車開 C是要自己打造輪子
→ : 如果程式只是業餘興趣 花大把時間學C是比較沒必要
→ : 上手容易度跟內建的API豐富程度差很多
→ : 數字還好 字串處理的話 C#是給你車開 C是要自己打造輪子
→ : 如果程式只是業餘興趣 花大把時間學C是比較沒必要
推 : C#只是把method第一個字母改大寫的Java而已(戰241F 06/05 01:59
推 : Java 也可以 不過我覺得 C# IDE 強大太多了 XD242F 06/05 02:22
--
※ 看板: ACG 文章推薦值: 0 目前人氣: 0 累積人氣: 506
回列表(←)
分享