看板 Gossiping作者 jserv (松鼠)標題 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
※ 同主題文章:
04-30 15:10 q6534gas1793.
Re: [問卦] 原本寫c後來改python覺得很不舒服正常嗎
05-05 22:43 jserv.
推 WANGMIN: =========================有神先拜再讀4F 05/05 22:44
→ jserv: @great5566, 程式設計板不能發廢文,我只好貼在綜合討論區@wowpoqwow, 有八卦的價值19F 05/05 22:49
→ asdfjoe: 好奇能在其他語言加入C嗎?21F 05/05 22:50
→ jserv: @asdfjoe, 以 Perl 來說,有 Inline::C22F 05/05 22:51
→ gimyhsiou: 要鍛鍊到的話,用cobol和masm 好了24F 05/05 22:52
→ jserv: @Sixigma, 歡迎來讀台灣最好的學店28F 05/05 22:54
→ jserv: @bonfferoni, 上面那篇心理學論文很好看,大推35F 05/05 22:56
推 sodes: 呵 神人耶37F 05/05 22:57
→ jserv: @bonfferoni, 八卦板的核心價值不就是到處嗆人和取暖嗎?39F 05/05 22:57
→ asdfjoe: 呃 問個蠢問題 為什麼好像很少(或不能)看到開發時是利用語言不同擅長特性開發?雖然最近有看到Julia這種融合多43F 05/05 22:59
→ loklaz: 116肥宅是不是很多47F 05/05 22:59
→ asdfjoe: 因為我也沒有什麼開發經驗就是了 也許有吧 菜鳥一枚48F 05/05 23:00
→ jserv: @asdfjoe, 我倒是很常看到混合多種程式語言於一身的系統50F 05/05 23:00
→ jserv: 好比說人們說UNIX是C語言開發出來,但發展C語言的同一批人52F 05/05 23:01
→ jserv: 也發展了sed, awk等(在某個角度來說也是)程式語言,為何?能夠解決問題最實在,程式語言畢竟只是手段罷了55F 05/05 23:02
→ asdfjoe: 原來有 可能我見識太少了57F 05/05 23:02
推 TedZec: 噓的人可能不知道原po來頭....59F 05/05 23:04
推 sooge: 宅色夫!!!!!!!!!62F 05/05 23:05
推 ttff: 意思是說學會一種語言以後學其他語言會更有優勢嗎 轉換更快?63F 05/05 23:05
→ jserv: @ttff, 很不幸的,要看你拿程式語言在何時做什麼事,只看程式語言之間的轉換,很難獲得世俗的肯定65F 05/05 23:07
→ jserv: @lagidog, 我家的螢幕採用OLED,裡頭有LED螢光粉,韓國技術68F 05/05 23:09
→ jserv: 因為用了韓國OLED面板,我跟著裡頭的螢光粉,變成「韓粉」我「韓粉」,我驕傲,眼睛舒服,寫程式就跟著飛快了70F 05/05 23:09
→ jserv: @GaryMatthews, 可以啊,請在 GitHub 找 V8Py 專案73F 05/05 23:13
→ Wand …
推 Wand: 早啊74F 05/05 23:14
推 as60711: 來朝聖了 有神快拜76F 05/05 23:14
→ aadsl: 功三小 QQ78F 05/05 23:15
→ jserv: @nova06091, 116畢業生最愛台GG (咦?)
@aadsl, 需要「做功」才能讓保持低熵狀態,的確是功三小80F 05/05 23:21
推 heaviest: 老師可以說說Cython嗎?87F 05/05 23:29
推 asdfjoe: 進台GG摸得到C罩杯嗎?(誤88F 05/05 23:29
推 hth9494: 老師可以推薦關於逆向工程的書嗎93F 05/05 23:33
推 saedn: 好厲害!!99F 05/05 23:36
推 jobsdone: 老師怎麼看osdi18那篇用go寫os的呢100F 05/05 23:37
推 JameC: 這次文章長度有點短104F 05/05 23:42
推 NX9999: 讚!原來飛龍這麼強@@106F 05/05 23:51
推 Qkirito: 看不懂沒興趣 有更適合的版107F 05/05 23:51
推 jaid: jserv最近有發大財嗎108F 05/05 23:53
推 OK8066889: 朝聖 神人發專業文,推文數還比不上小英的FB廢文110F 05/06 00:00
推 a72737363: 最後一個連結pageNotFount啦111F 05/06 00:01
推 Fice: 推113F 05/06 00:05
→ minicoke: 我跟教授順序一樣欸 c++ stl 超讚116F 05/06 00:07
推 k010447: 太神啦 五體投地117F 05/06 00:08
推 ZZZZ0: 嗯嗯120F 05/06 00:14
噓 Joey452: 咬文嚼字,還不如一個好的idea121F 05/06 00:16
推 rog43: 老師果然又出現了129F 05/06 00:33
推 GTR12534: 屏蔽 NotLikeThis133F 05/06 00:48
→ jserv: @timthelord, 我在資訊工程系教書,但不是「程式系」135F 05/06 00:57
→ jserv: 台灣的資訊工程系比較像是「賞析程式系」,動手不算多
@Joey452, 等您來指點鄉民 m(_ _)m137F 05/06 00:58
→ jserv: @r5e97nk63, 因為挑戰廢文的極限嗎?140F 05/06 01:00
→ jserv: @coisuet, an4 giu4 ho4 mo3 (客語:恁久好無?)142F 05/06 01:02
推 leo80042: 我跟很多同事已經放棄ctypes/boost python改投cython懷抱了,老師怎麼看?146F 05/06 01:42
噓 hjgx: lambda152F 05/06 02:37
→ jserv: @hjgx, 請賞個patch,告訴我該怎麼改寫
@leo80042, 工具就是要解決問題。我偏好支持PyPy,不過實務上 PyPy 轉換得到的 C 程式品質仍不夠好,而且某些程式依然執行不了,暫時只能退回 swig, ctypes, cython 一類的混合方案,這就是現實159F 05/06 03:54
推 tokyoboy: 這是在p的環境下寫c對吧?厲害厲害166F 05/06 07:08
推 aooa: 推172F 05/06 08:13
推 iamnotme: 朝聖C罩杯..啊不對 C語言大神173F 05/06 08:20
推 ldeathkiller: 是說 有些python引用C shared library的trick網路上很難找175F 05/06 08:44
推 kanetakusan: 先推,對論文蠻有興趣的,晚點看。其實大多數台灣人一出生就內建兩種了啦,如果求學過程中有放較多心力在英語,那就是三種了179F 05/06 09:09
--