[問卦] 有人也覺得Python比C難寫嗎?
本滷一直是做軟韌體的(裝置之軟體 或韌體) 當然主要是用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.cc), 來自: 111.248.162.206 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1688822140.A.D32.html
※ 編輯: flinch (111.248.162.206 臺灣), 07/08/2023 21:20:41
→
07/08 21:16,
9月前
, 1F
07/08 21:16, 1F
→
07/08 21:16,
9月前
, 2F
07/08 21:16, 2F
噓
07/08 21:16,
9月前
, 3F
07/08 21:16, 3F
噓
07/08 21:17,
9月前
, 4F
07/08 21:17, 4F
→
07/08 21:17,
9月前
, 5F
07/08 21:17, 5F
→
07/08 21:17,
9月前
, 6F
07/08 21:17, 6F
推
07/08 21:18,
9月前
, 7F
07/08 21:18, 7F
→
07/08 21:18,
9月前
, 8F
07/08 21:18, 8F
goto(被限定為)只有一種用法 就是跳到定點集合
就與我原文寫的 do{..}while(0)完全一樣 但用goto可省掉縮排
→
07/08 21:18,
9月前
, 9F
07/08 21:18, 9F
噓
07/08 21:19,
9月前
, 10F
07/08 21:19, 10F
不是寫韌體本身 是寫上位機程式
噓
07/08 21:19,
9月前
, 11F
07/08 21:19, 11F
推
07/08 21:19,
9月前
, 12F
07/08 21:19, 12F
※ 編輯: flinch (111.248.162.206 臺灣), 07/08/2023 21:21:35
推
07/08 21:22,
9月前
, 13F
07/08 21:22, 13F
→
07/08 21:22,
9月前
, 14F
07/08 21:22, 14F
推
07/08 21:22,
9月前
, 15F
07/08 21:22, 15F
本滷不覺得用python拆包封包比C直覺
※ 編輯: flinch (111.248.162.206 臺灣), 07/08/2023 21:26:11
推
07/08 21:25,
9月前
, 16F
07/08 21:25, 16F
推
07/08 21:27,
9月前
, 17F
07/08 21:27, 17F
→
07/08 21:27,
9月前
, 18F
07/08 21:27, 18F
goto好物 在錯誤處理時非常有用
我這講的goto是到定點集合 不是反向跳轉
推
07/08 21:28,
9月前
, 19F
07/08 21:28, 19F
→
07/08 21:29,
9月前
, 20F
07/08 21:29, 20F
→
07/08 21:29,
9月前
, 21F
07/08 21:29, 21F
計算機本身就是一直在尋址取值 注意到取值是有尺寸型態問題的
把這些封著 那若要尋指取值就變很繞 不直覺
※ 編輯: flinch (111.248.162.206 臺灣), 07/08/2023 21:32:59
推
07/08 21:32,
9月前
, 22F
07/08 21:32, 22F
推
07/08 21:35,
9月前
, 23F
07/08 21:35, 23F
物件導向精神是virtual啊 就是接口 實作就是函數指針
python這還是被C/C++屌打 沒辦法宣告一純接口
(C++是 virtual int XXX() = 0)
讓別人一眼看到就知要填空 或編譯器直接報錯
※ 編輯: flinch (111.248.162.206 臺灣), 07/08/2023 21:40:54
→
07/08 21:49,
9月前
, 24F
07/08 21:49, 24F
推
07/08 21:58,
9月前
, 25F
07/08 21:58, 25F
→
07/08 21:58,
9月前
, 26F
07/08 21:58, 26F
→
07/08 22:05,
9月前
, 27F
07/08 22:05, 27F
→
07/08 22:05,
9月前
, 28F
07/08 22:05, 28F
→
07/08 22:05,
9月前
, 29F
07/08 22:05, 29F
→
07/08 22:08,
9月前
, 30F
07/08 22:08, 30F
推
07/08 22:13,
9月前
, 31F
07/08 22:13, 31F
推
07/08 22:16,
9月前
, 32F
07/08 22:16, 32F
推
07/08 22:18,
9月前
, 33F
07/08 22:18, 33F
→
07/08 22:18,
9月前
, 34F
07/08 22:18, 34F
→
07/08 22:25,
9月前
, 35F
07/08 22:25, 35F
推
07/08 22:34,
9月前
, 36F
07/08 22:34, 36F
→
07/08 22:35,
9月前
, 37F
07/08 22:35, 37F
→
07/08 22:36,
9月前
, 38F
07/08 22:36, 38F
推
07/08 22:41,
9月前
, 39F
07/08 22:41, 39F
→
07/08 22:42,
9月前
, 40F
07/08 22:42, 40F
→
07/08 22:43,
9月前
, 41F
07/08 22:43, 41F
→
07/08 22:44,
9月前
, 42F
07/08 22:44, 42F
推
07/08 22:50,
9月前
, 43F
07/08 22:50, 43F
推
07/08 23:03,
9月前
, 44F
07/08 23:03, 44F
推
07/08 23:33,
9月前
, 45F
07/08 23:33, 45F
→
07/08 23:33,
9月前
, 46F
07/08 23:33, 46F
→
07/08 23:34,
9月前
, 47F
07/08 23:34, 47F
→
07/08 23:37,
9月前
, 48F
07/08 23:37, 48F
推
07/09 00:11,
9月前
, 49F
07/09 00:11, 49F
→
07/09 00:11,
9月前
, 50F
07/09 00:11, 50F
推
07/09 00:42,
9月前
, 51F
07/09 00:42, 51F
噓
07/09 01:16,
9月前
, 52F
07/09 01:16, 52F
噓
07/09 09:34,
9月前
, 53F
07/09 09:34, 53F