PTT推薦

[問卦] 有人也覺得Python比C難寫嗎?

看板Gossiping標題[問卦] 有人也覺得Python比C難寫嗎?作者
flinch
(縮)
時間推噓14 推:20 噓:6 →:27

本滷一直是做軟韌體的(裝置之軟體 或韌體) 當然主要是用C/C++

現在用Python覺得很不直覺 難寫


0. 弱資料型態

 串口/網路收資料 一個個卦(byte)收

 收來後 分配組合成int 還float 在C用memcpy就好

看是整個struct一起上 還是一個個成員複製都可

 在python偏偏要用struct.unpack(當然不只這招 但這是我找到最簡化的做法)

 然後C會自動填充空卦(當然可關掉) python全部你家的事


1. 弱資料型態 但偶有強型態之引數

若全都是弱資料形態就算了

有些原生包 限定 list就list 不是bytes

這時就要強轉一下 這要等跑一下才知需要轉 很煩


2. 沒有 do while 或 goto 

do..while棒棒啊 宏神器

更可取代 goto :

do
{
if(TRUE == 吃屎乎())
break;

if(TRUE == 敗亡否())
break;
通過乎 = TRUE;
}while(0);

if(TRUE == 通過)
return 0;

失敗之處理();
return -1;


在python只能用 while 1 來取代


3. 無前處理

都要依賴編輯器來注消/啟用代碼

無法弄成以下模式 以方便比較及優化

#if(1)
簡化之解法
#else
原解法但繁複
#endif


那python是好用在哪?

是切資料串方便嗎 像以下

sub_len = 8

b_list = a_list[:8]

a_list = a_list[8:]

(C直接指針吊包就好 b_ptr = a_ptr; a_ptr = a_ptr + sub_len)


不用設環境可直接上工? 是啦 不過還不是要手動安裝一堆包

那與設環境有什麼區別?


--

※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.162.206 (臺灣)
PTT 網址
※ 編輯: flinch (111.248.162.206 臺灣), 07/08/2023 21:20:41

bbbb25487 07/08 21:16程式寫得好

TackoFall 07/08 21:16樓下推字比較多

railman 07/08 21:16比c好寫啊

newking761 07/08 21:17欸欸欸,人家py不是給你這樣用的,

newking761 07/08 21:17什麼需求用什

newking761 07/08 21:17麼工具都不知道,滾

jen1121 07/08 21:18強型別弱型別,語言結構習慣問題

Ceferino 07/08 21:18別說goto了,用太多出問題超難抓

goto(被限定為)只有一種用法 就是跳到定點集合 就與我原文寫的 do{..}while(0)完全一樣 但用goto可省掉縮排

jen1121 07/08 21:18下一篇JavaScript 比Java難寫

laogiby 07/08 21:19沒人要你寫韌體用python 滾

不是寫韌體本身 是寫上位機程式

mnxzq 07/08 21:19用python寫韌體 就好比拿筷子吃牛排

makeman 07/08 21:19因為沒指標啊

※ 編輯: flinch (111.248.162.206 臺灣), 07/08/2023 21:21:35

s860134 07/08 21:22你不熟而已

darkMood 07/08 21:22只是不習慣而已。

s505015 07/08 21:22Python就夠直覺啊

本滷不覺得用python拆包封包比C直覺

※ 編輯: flinch (111.248.162.206 臺灣), 07/08/2023 21:26:11

selfhu 07/08 21:25你瘋了嗎?

milkBK 07/08 21:27樓下公司規定只能寫flash

chjimmy 07/08 21:27goto很容易出事,少用為妙

goto好物 在錯誤處理時非常有用 我這講的goto是到定點集合 不是反向跳轉

cocoaswifty 07/08 21:28換語言會有一段轉換期 習慣就好

jen1121 07/08 21:29哥十來年經驗C/C++ Objective-C,比較反

jen1121 07/08 21:29人類

計算機本身就是一直在尋址取值 注意到取值是有尺寸型態問題的 把這些封著 那若要尋指取值就變很繞 不直覺

※ 編輯: flinch (111.248.162.206 臺灣), 07/08/2023 21:32:59

saedn 07/08 21:32教我 我資料抓不下來 嗚嗚

jen1121 07/08 21:35址不封裝怎麼玩物件導向,你說是吧

物件導向精神是virtual啊 就是接口 實作就是函數指針 python這還是被C/C++屌打 沒辦法宣告一純接口 (C++是 virtual int XXX() = 0) 讓別人一眼看到就知要填空 或編譯器直接報錯

※ 編輯: flinch (111.248.162.206 臺灣), 07/08/2023 21:40:54

dayend 07/08 21:49不覺得

SHANGOYANYI 07/08 21:58難寫+1 大神都是用針戳光盤 直接硬

SHANGOYANYI 07/08 21:58幹出一套win95

Mensholaten 07/08 22:05講goto有問題的幾乎都菜雞 太多道聽

Mensholaten 07/08 22:05塗說 goto都是拿來做error handling

Mensholaten 07/08 22:05的...

Mensholaten 07/08 22:08很多搞不清楚就只會說goto不要用

aqasia 07/08 22:13

pshuang 07/08 22:16我用得很高興 你不喜歡是你家的事

tonyian 07/08 22:18你老了,雖說python弱型別真的很鳥,但感

tonyian 07/08 22:18覺你去寫rust 會更痛苦?

SDNS 07/08 22:25自找麻煩 cc

ztdxqa 07/08 22:34你先說你要寫什麼應用吧 python就是專門用

ztdxqa 07/08 22:35來搞ML相關 pytorch/tensorflow/pyspark

ztdxqa 07/08 22:36好奇你的應用是什麼

ztdxqa 07/08 22:41每個語言有每個語言能用的地方 你拿python

ztdxqa 07/08 22:42去跑遊戲引擎直接回退到30年前

ztdxqa 07/08 22:43不過拿rust跟c/c++比倒是可以比

ztdxqa 07/08 22:44拿python跟C/C++比就不知道你到底要比三小

newversion 07/08 22:50python 本身是用C寫的 呵呵

ch410773 07/08 23:03工具都不會選回去重修好了啦

a1e 07/08 23:33我很討厭有人程式一堆goto.....

a1e 07/08 23:33拿來做error handling沒差,有人程式流程goto

a1e 07/08 23:34飛來飛去的,看到頭就痛...

ggBird 07/08 23:37千萬別說自己會c++

Selkirs 07/09 00:11那是你不會,什麼都想自幹當然別用Pyth

Selkirs 07/09 00:11on

sxbear 07/09 00:42用途不一樣 c偏底層開發 p偏上層應用

JasonX5566 07/09 01:16

gen5566 07/09 09:34宏你媽懶覺˙