※ 本文為 Knuckles 轉寄自 ptt.cc 更新時間: 2019-05-06 09:20:02
看板 Gossiping
作者 標題 Re: [問卦] 原本寫c後來改python覺得很不舒服正常嗎
時間 Sun May 5 22:43:31 2019
※ 引述《q6534gas1793 (Ming)》之銘言:
: 原本一開始是先學c然後c++
: 最近才去學python
: 發現寫起來特別不舒服
我也是先學 C,再學 C++,之後才學 Python,但我感到...
我宅我色我舒服
: 雖然明明更簡單方便
: 很容易看出成果
: 也不用管一堆格式括號型態
: 也一堆插件可以用
: 但是總是覺得很奇怪很莫名
: 所以原本寫c後面再換成python
你可以在 Python 的程式碼裡頭安插 C 程式,像是這樣:
if __name__ == '__main__':
mylib = C('''
int factorial(int x) {
int ret = 1;
for (; x > 1; x--) {
ret *= x;x--;
}
return ret;
}
''')
factorial = mylib['factorial']
print('15! =', factorial(15))
不過你需要事先準備些「魔法」,完整程式碼可見:
https://gist.github.com/jserv/11d02a2ba126f4056aae5b43ce9fa51f
上述程式的技巧是:
1. 將內嵌於 Python 程式碼的 C 程式透過編譯器 (這裡用 gcc 示範) 產生 shared
library / DLL;
2. 透過 Python 的 ctypes 載入在 (1) 產生的 shared library / DLL 並給定必要
的進入點;
3. 以 atexit 確認做好必要的善後動作;
Ellen Bialystok 教授和 Fergus I. M. Craik 教授合作的論文 "Cognitive and
Linguistic Processing in the Bilingual Mind" [1] 指出,擁有平衡雙語能力
(也就是母語和第二種語言一樣流暢,且在日常中常轉換使用) 的人,可發展出更好
的認知能力。
為何如此呢?其中有個解釋說,無論雙語者在當下使用何種語言思考,在其大腦依然
會下意識的同時處理兩種語言,然後決定使用哪一種語言、屏蔽哪一種語言。這意味
著,雙語者因而運用較單語者更多的「認知」來處理日常思考,這讓他們在無形中多
出大量鍛煉認知能力的機會。
會下意識的同時處理兩種語言,然後決定使用哪一種語言、屏蔽哪一種語言。這意味
著,雙語者因而運用較單語者更多的「認知」來處理日常思考,這讓他們在無形中多
出大量鍛煉認知能力的機會。
Python 和 C 語言的交互使用,不也是強化認知的訓練嗎?
我是宅色夫,我慣 C,也愛探索程式語言。 <-- 網紅的短片後面好像都要加這樣的話
[1] https://www.psychologicalscience.org/journals/cd/19_1_inpress/Bialystok_final.pdf
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.82.61
※ 文章代碼(AID): #1SplQNl2 (Gossiping)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1557067415.A.BC2.html
推 : 朝聖2F 05/05 22:44
推 : 神先拜3F 05/05 22:44
推 : =========================有神先拜再讀4F 05/05 22:44
推 : 有神5F 05/05 22:44
推 : 跪著看6F 05/05 22:44
推 : 好7F 05/05 22:45
推 : 推8F 05/05 22:45
推 : 推!9F 05/05 22:45
噓 : 請發到程式設計版10F 05/05 22:45
推 : 讚11F 05/05 22:45
推 : 推12F 05/05 22:46
推 : 朝聖13F 05/05 22:46
推 : 推個14F 05/05 22:47
推 : 推15F 05/05 22:48
→ : 跟我想的差不多16F 05/05 22:48
→ : 有意義嗎17F 05/05 22:48
推 : 未看先推18F 05/05 22:49
→ : @great5566, 程式設計板不能發廢文,我只好貼在綜合討論區19F 05/05 22:49
→ : @wowpoqwow, 有八卦的價值
→ : @wowpoqwow, 有八卦的價值
→ : 好奇能在其他語言加入C嗎?21F 05/05 22:50
→ : @asdfjoe, 以 Perl 來說,有 Inline::C22F 05/05 22:51
推 : 老師好,好想成大23F 05/05 22:52
→ : 要鍛鍊到的話,用cobol和masm 好了24F 05/05 22:52
推 : push25F 05/05 22:52
推 : 朝聖26F 05/05 22:53
推 : 是神!!27F 05/05 22:53
→ : @Sixigma, 歡迎來讀台灣最好的學店28F 05/05 22:54
推 : 朝聖29F 05/05 22:55
噓 : 工三小30F 05/05 22:55
推 : 朝聖推31F 05/05 22:55
推 : 推一下 XD32F 05/05 22:55
→ : 好爽 能噓大神33F 05/05 22:55
推 : 乾 老師好= = 原來可以這樣玩34F 05/05 22:56
→ : @bonfferoni, 上面那篇心理學論文很好看,大推35F 05/05 22:56
→ : 好文推一下36F 05/05 22:56
推 : 呵 神人耶37F 05/05 22:57
推 : 朝聖38F 05/05 22:57
→ : @bonfferoni, 八卦板的核心價值不就是到處嗆人和取暖嗎?39F 05/05 22:57
推 : 朝聖40F 05/05 22:57
推 : 推41F 05/05 22:57
推 : 推42F 05/05 22:59
→ : 呃 問個蠢問題 為什麼好像很少(或不能)看到開發時是利43F 05/05 22:59
→ : 用語言不同擅長特性開發?雖然最近有看到Julia這種融合多
→ : 用語言不同擅長特性開發?雖然最近有看到Julia這種融合多
推 : 看不懂程式碼…45F 05/05 22:59
→ : 語言特性的46F 05/05 22:59
→ : 116肥宅是不是很多47F 05/05 22:59
→ : 因為我也沒有什麼開發經驗就是了 也許有吧 菜鳥一枚48F 05/05 23:00
推 : 哦哦哦哦哦哦哦本人!!!49F 05/05 23:00
→ : @asdfjoe, 我倒是很常看到混合多種程式語言於一身的系統50F 05/05 23:00
推 : 推!51F 05/05 23:01
→ : 好比說人們說UNIX是C語言開發出來,但發展C語言的同一批人52F 05/05 23:01
推 : 神串留名53F 05/05 23:01
推 : 推推54F 05/05 23:02
→ : 也發展了sed, awk等(在某個角度來說也是)程式語言,為何?55F 05/05 23:02
→ : 能夠解決問題最實在,程式語言畢竟只是手段罷了
→ : 能夠解決問題最實在,程式語言畢竟只是手段罷了
→ : 原來有 可能我見識太少了57F 05/05 23:02
推 : 神58F 05/05 23:03
推 : 噓的人可能不知道原po來頭....59F 05/05 23:04
推 : 最後都是一堆binary 只要跑得好就好了60F 05/05 23:05
推 : 大大是韓粉嗎61F 05/05 23:05
推 : 宅色夫!!!!!!!!!62F 05/05 23:05
推 : 意思是說學會一種語言以後學其他語言會更有優勢嗎 轉換更快63F 05/05 23:05
→ : ?
→ : ?
→ : @ttff, 很不幸的,要看你拿程式語言在何時做什麼事,只看65F 05/05 23:07
→ : 程式語言之間的轉換,很難獲得世俗的肯定
→ : 程式語言之間的轉換,很難獲得世俗的肯定
推 : 推 可以嵌入 javascript ㄇ XD67F 05/05 23:09
→ : @lagidog, 我家的螢幕採用OLED,裡頭有LED螢光粉,韓國技術68F 05/05 23:09
推 : 推69F 05/05 23:09
→ : 因為用了韓國OLED面板,我跟著裡頭的螢光粉,變成「韓粉」70F 05/05 23:09
→ : 我「韓粉」,我驕傲,眼睛舒服,寫程式就跟著飛快了
→ : 我「韓粉」,我驕傲,眼睛舒服,寫程式就跟著飛快了
推 : 有神先拜72F 05/05 23:11
→ : @GaryMatthews, 可以啊,請在 GitHub 找 V8Py 專案73F 05/05 23:13
推 : 早啊74F 05/05 23:14
推 : 我好像有點懂人類點起世間第一把火的感覺了75F 05/05 23:14
推 : 來朝聖了 有神快拜76F 05/05 23:14
推 : 老師的學生都去哪些公司?77F 05/05 23:15
→ : 功三小 QQ78F 05/05 23:15
推 : 推推79F 05/05 23:15
→ : @nova06091, 116畢業生最愛台GG (咦?)80F 05/05 23:21
→ : @aadsl, 需要「做功」才能讓保持低熵狀態,的確是功三小
→ : @aadsl, 需要「做功」才能讓保持低熵狀態,的確是功三小
推 : 可以跟我說你好嗎82F 05/05 23:23
推 : 朝聖83F 05/05 23:23
推 : 朝聖84F 05/05 23:26
推 : 朝聖85F 05/05 23:27
推 : 百推內??86F 05/05 23:28
推 : 老師可以說說Cython嗎?87F 05/05 23:29
推 : 進台GG摸得到C罩杯嗎?(誤88F 05/05 23:29
推 : 推推89F 05/05 23:31
推 : 我先推90F 05/05 23:31
推 : 跪著看91F 05/05 23:32
→ : 推92F 05/05 23:32
推 : 老師可以推薦關於逆向工程的書嗎93F 05/05 23:33
推 : 推94F 05/05 23:35
推 : 求翻譯95F 05/05 23:35
推 : 推96F 05/05 23:35
→ : 推個97F 05/05 23:35
推 : 跪推98F 05/05 23:36
推 : 好厲害!!99F 05/05 23:36
推 : 老師怎麼看osdi18那篇用go寫os的呢100F 05/05 23:37
推 : 程式系?101F 05/05 23:37
推 : 有神先跪102F 05/05 23:38
推 : 有神快拜103F 05/05 23:41
推 : 這次文章長度有點短104F 05/05 23:42
推 : 老師好105F 05/05 23:45
推 : 讚!原來飛龍這麼強@@106F 05/05 23:51
推 : 看不懂沒興趣 有更適合的版107F 05/05 23:51
推 : jserv最近有發大財嗎108F 05/05 23:53
推 : 有神快拜109F 05/05 23:54
推 : 朝聖 神人發專業文,推文數還比不上小英的FB廢文110F 05/06 00:00
推 : 最後一個連結pageNotFount啦111F 05/06 00:01
推 : 推112F 05/06 00:05
推 : 推113F 05/06 00:05
推 : 每次看老師的文都自慚形穢QQ114F 05/06 00:05
推 : 有神快推115F 05/06 00:06
→ : 我跟教授順序一樣欸 c++ stl 超讚116F 05/06 00:07
推 : 太神啦 五體投地117F 05/06 00:08
推 : 學到了118F 05/06 00:08
推 : 推119F 05/06 00:10
推 : 嗯嗯120F 05/06 00:14
噓 : 咬文嚼字,還不如一個好的idea121F 05/06 00:16
推 : push122F 05/06 00:18
推 : 推教授123F 05/06 00:19
推 : 推124F 05/06 00:20
推 : 跪<(_ _)>125F 05/06 00:22
推 : 推126F 05/06 00:23
推 : jserv!!127F 05/06 00:24
推 : 朝聖128F 05/06 00:25
推 : 老師果然又出現了129F 05/06 00:33
推 : 朝聖130F 05/06 00:35
推 : 推專業131F 05/06 00:39
推 : 嗯沒錯我也是這麼認為132F 05/06 00:47
推 : 屏蔽 NotLikeThis133F 05/06 00:48
→ : 有神快拜134F 05/06 00:56
→ : @timthelord, 我在資訊工程系教書,但不是「程式系」135F 05/06 00:57
推 : <(-_-)>136F 05/06 00:58
→ : 台灣的資訊工程系比較像是「賞析程式系」,動手不算多137F 05/06 00:58
→ : @Joey452, 等您來指點鄉民 m(_ _)m
→ : @Joey452, 等您來指點鄉民 m(_ _)m
推 : 有大神快推!139F 05/06 01:00
→ : @r5e97nk63, 因為挑戰廢文的極限嗎?140F 05/06 01:00
推 : 推141F 05/06 01:01
→ : @coisuet, an4 giu4 ho4 mo3 (客語:恁久好無?)142F 05/06 01:02
→ : 喔喔喔,看不懂143F 05/06 01:05
推 : 乾 神144F 05/06 01:07
推 : 推慣C!!145F 05/06 01:32
推 : 我跟很多同事已經放棄ctypes/boost python改投cython懷146F 05/06 01:42
→ : 抱了,老師怎麼看?
→ : 抱了,老師怎麼看?
推 : 謝老師148F 05/06 02:04
推 : 神149F 05/06 02:15
推 : 朝聖150F 05/06 02:17
推 : 推151F 05/06 02:27
噓 : lambda152F 05/06 02:37
推 : 推推153F 05/06 02:39
推 : 好猛154F 05/06 02:40
推 : 推155F 05/06 03:14
推 : 推156F 05/06 03:17
推 : Jserv......157F 05/06 03:24
推 : 推158F 05/06 03:53
→ : @hjgx, 請賞個patch,告訴我該怎麼改寫159F 05/06 03:54
→ : @leo80042, 工具就是要解決問題。我偏好支持PyPy,不過實務
→ : 上 PyPy 轉換得到的 C 程式品質仍不夠好,而且某些程式依然
→ : 執行不了,暫時只能退回 swig, ctypes, cython 一類的混合
→ : 方案,這就是現實
→ : @leo80042, 工具就是要解決問題。我偏好支持PyPy,不過實務
→ : 上 PyPy 轉換得到的 C 程式品質仍不夠好,而且某些程式依然
→ : 執行不了,暫時只能退回 swig, ctypes, cython 一類的混合
→ : 方案,這就是現實
推 : 實用164F 05/06 06:38
推 : 媽我在這!!!165F 05/06 06:47
推 : 這是在p的環境下寫c對吧?厲害厲害166F 05/06 07:08
推 : 為什麼x--要寫兩次?167F 05/06 07:19
推 : 朝聖168F 05/06 07:34
推 : ..jserv先推169F 05/06 07:52
推 : 跪著推170F 05/06 08:04
推 : 推171F 05/06 08:10
推 : 推172F 05/06 08:13
推 : 朝聖C罩杯..啊不對 C語言大神173F 05/06 08:20
推 : 好猛~跪著推174F 05/06 08:25
推 : 是說 有些python引用C shared library的trick網路上175F 05/06 08:44
→ : 很難找
→ : 很難找
推 : 朝聖推個177F 05/06 08:46
推 : 慣C178F 05/06 09:08
推 : 先推,對論文蠻有興趣的,晚點看。其實大多數台灣人179F 05/06 09:09
→ : 一出生就內建兩種了啦,如果求學過程中有放較多心力
→ : 在英語,那就是三種了
→ : 一出生就內建兩種了啦,如果求學過程中有放較多心力
→ : 在英語,那就是三種了
--
※ 看板: Gossiping 文章推薦值: 1 目前人氣: 0 累積人氣: 860
回列表(←)
分享