作者 flinch (縮)
標題 [問卦] 有人也覺得Python比C難寫嗎?
時間 Sat Jul  8 21:15:38 2023




        本滷一直是做軟韌體的(裝置之軟體 或韌體) 當然主要是用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 (臺灣)
※ 作者: flinch 2023-07-08 21:15:38
※ 文章代碼(AID): #1agM5yqo (Gossiping)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1688822140.A.D32.html
※ 編輯: flinch (111.248.162.206 臺灣), 07/08/2023 21:20:41
bbbb25487: 程式寫得好1F 101.139.16.61 台灣 07/08 21:16
TackoFall: 樓下推字比較多2F 211.76.74.210 台灣 07/08 21:16
railman: 比c好寫啊3F 111.71.212.205 台灣 07/08 21:16
newking761: 欸欸欸,人家py不是給你這樣用的,
什麼需求用什
麼工具都不知道,滾4F 111.242.222.104 台灣 07/08 21:17
jen1121: 強型別弱型別,語言結構習慣問題7F 1.200.254.162 台灣 07/08 21:18
Ceferino: 別說goto了,用太多出問題超難抓8F 123.192.234.4 台灣 07/08 21:18
        goto(被限定為)只有一種用法 就是跳到定點集合

        就與我原文寫的 do{..}while(0)完全一樣 但用goto可省掉縮排
jen1121: 下一篇JavaScript 比Java難寫9F 1.200.254.162 台灣 07/08 21:18
laogiby: 沒人要你寫韌體用python 滾10F 42.73.37.228 台灣 07/08 21:19
        不是寫韌體本身 是寫上位機程式
mnxzq: 用python寫韌體 就好比拿筷子吃牛排11F 111.242.246.99 台灣 07/08 21:19
makeman: 因為沒指標啊12F 39.9.43.46 台灣 07/08 21:19
※ 編輯: flinch (111.248.162.206 臺灣), 07/08/2023 21:21:35
s860134: 你不熟而已13F 27.242.227.199 台灣 07/08 21:22
darkMood: 只是不習慣而已。14F 175.181.114.40 台灣 07/08 21:22
s505015: Python就夠直覺啊15F 42.72.224.68 台灣 07/08 21:22
        本滷不覺得用python拆包封包比C直覺
※ 編輯: flinch (111.248.162.206 臺灣), 07/08/2023 21:26:11
selfhu: 你瘋了嗎?16F 223.141.25.222 台灣 07/08 21:25
milkBK: 樓下公司規定只能寫flash17F 114.32.129.203 台灣 07/08 21:27
chjimmy: goto很容易出事,少用為妙18F 123.192.211.125 台灣 07/08 21:27
        goto好物 在錯誤處理時非常有用

        我這講的goto是到定點集合 不是反向跳轉
cocoaswifty: 換語言會有一段轉換期 習慣就好19F 118.171.135.187 台灣 07/08 21:28
jen1121: 哥十來年經驗C/C++ Objective-C,比較反人類20F 1.200.254.162 台灣 07/08 21:29
        計算機本身就是一直在尋址取值 注意到取值是有尺寸型態問題的
        把這些封著 那若要尋指取值就變很繞 不直覺
※ 編輯: flinch (111.248.162.206 臺灣), 07/08/2023 21:32:59
saedn: 教我 我資料抓不下來 嗚嗚22F 180.217.50.228 台灣 07/08 21:32
jen1121: 址不封裝怎麼玩物件導向,你說是吧23F 1.200.254.162 台灣 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: 不覺得24F 61.224.16.108 台灣 07/08 21:49

--
作者 flinch 的最新發文:
點此顯示更多發文記錄