→ james732: 超長的變數或函式會有什麼問題嗎? 11/28 10:52
推 stupid0319: 轉組語比較有可能吧 11/28 11:05
→ uranusjr: 我覺得你應該先說說為什麼你的用途裡一定要有 C 11/28 11:45
→ uranusjr: 每個個案最好的解法不見得相同 11/28 11:46
推 CoNsTaR: 那是超古早 llvm 才有的功能吧… 11/28 11:47
因為是低階的嵌入式系統所以才用C語言
超長的變數命名實在讀的很不舒服
寫那麼長就只為了避開命名衝突
我有試著用巨集來縮短命名,不過這做法看起來有點危險
另外像zip或lua之類的專案會使用C語言來寫是為了移植性跟速度吧?
我有計畫寫些通用工具發表出來
如果能用C語言實作會比較理想(找不到適當工具的話還是會回去用C++實現)
所以才想找工具來用更好的風格來寫C
這工具如果能控制生產出來C程式碼要使用什麼前綴就更好了
這樣遇到跟其他library命名衝突還可以改名字
C++對命名問題就處理的還ok
名字一樣很長,但是允許你省掉namespace名稱
※ 編輯: eye5002003 (118.167.54.161), 11/28/2016 13:27:25
→ firejox: 你有那麼缺空間嗎 11/28 13:16
不光是想摳那些記憶體
C語言的定位本來就是原始不花俏的基礎工具
語法上就是沒那麼方便
※ 編輯: eye5002003 (118.167.54.161), 11/28/2016 13:59:56
推 CoNsTaR: 推坑 agda 啦 先做出 C&C++ denotational semantics 再寫 11/28 14:12
→ CoNsTaR: agda 互轉 :p 11/28 14:12
Agda -> Epic -> C 這樣轉嗎?
我不排斥functional programming,但是怕駕馭不了這種寫法
Agda勉強算是可以考慮的選項
※ 編輯: eye5002003 (118.167.54.161), 11/28/2016 15:20:09
推 gozule: 可以考慮用cython寫純c的程式,兼具python的語法和c的速度 11/28 15:22
推 saxontai: 好奇變數/函式名稱是長到什麼程度 XD 11/28 15:24
cython我前面有提過了,python語法是很好沒錯
但是cython生出來的C程式碼看起來不大優,我沒認真研究啦
這個我再實際用看看
※ 編輯: eye5002003 (118.167.54.161), 11/28/2016 16:29:58
→ uranusjr: 我在想直接做個 compiler + runtime 會不會更方便點 11/28 16:35
→ uranusjr: 例如 mulle-objc 是純 C11 寫的, 直接把 runtime 移植上 11/28 16:36
→ uranusjr: 去, 然後就寫 Objective-C 直接 compile 跑在上面 11/28 16:36
推 james732: 嵌入式系統轉來轉去的效率更糟吧 11/28 17:59
mulle-objc的做法不是我想要的
※ 編輯: eye5002003 (118.167.54.161), 11/28/2016 18:35:38
→ CoNsTaR: 我記得 clang 是可以直接把 objc 編成 c 的 有這個印象 11/28 18:40
→ CoNsTaR: 好像是啥 rewrite 什麼的 不太確定 11/28 18:40
→ CoNsTaR: 如果 objc 可接受的話可以試試看 11/28 18:41
噓 Sidney0503: ...長串是正常的 11/28 18:42
→ Sidney0503: 名稱空間+用途+目的物 不長名稱能獨立? 11/28 18:44
→ Sidney0503: 又不是c++有name space 就算有還是常常很長 11/28 18:44
→ CoNsTaR: 我錯了 那只能變成 c++… 11/28 18:44
→ Sidney0503: 隨便舉例boost::numeric::ublas::matrix 11/28 18:45
→ Sidney0503: 變成C還比較短 少八個冒號咧 11/28 18:45
推 Sidney0503: 還是你的程式不需要架構? 那我教你 11/28 18:49
→ Sidney0503: 二十六個字母十個字就有26^10種組合 保證用不完 11/28 18:49
→ uranusjr: 講話沒邏輯只會無腦護航的基本教義廚實在很難相處 11/28 22:08
推 xvid: 老實說我寧願看冒號至少可以區分是命名空間 11/28 22:11
→ xvid: 一堆底線看到暈喔 11/28 22:11
推 littleshan: 你應該是反過來,用高階語言去實現整個架構 11/28 22:17
→ littleshan: 需要用C的部份就用C寫成能讓高階語言呼叫的library 11/28 22:17
→ littleshan: 用其它語言產生C code再與自己寫的整合並不恰當 11/28 22:20
推 Sidney0503: 我是故意舉例 C語言本來就沒有封裝 11/29 09:57
→ Sidney0503: 在沒有封裝特性的語言尋求封裝很好笑 11/29 09:58
→ Sidney0503: 上層明明可以用cpy去包好介面 原PO感覺不想用高階 11/29 09:59
→ CoNsTaR: 樓上 原 Po 是想用高階語言 但環境要求原始碼必須是 C 11/29 10:19
推 ronin728: 翻譯成C的高階語言一堆,不過大多都吃 POSIX,沒問題? 11/29 11:22
推 Sidney0503: 對不起我沒看仔細 c就是沒有封裝 大型專案多的是 11/29 11:22
→ Sidney0503: 所以是回到前面有人說的 環境是什麼?就算嵌入式也說一 11/29 11:24
→ Sidney0503: 下硬體是哪些 11/29 11:24
推 soheadsome: lua 或其他語言的FFI 11/29 11:29
→ soheadsome: c++ to c 你可以去用cfront compiler 11/29 11:30
不光是因為環境啦
C建立的library會比C++建的library用途更廣
所以才用C
FFI跟我講的東西不一樣吧?
我想要的就是用更簡潔的方式來維護一個C專案
POSIX沒關係啊,介紹一下這種高階語言吧
※ 編輯: eye5002003 (118.167.50.236), 11/29/2016 18:15:05
※ 編輯: eye5002003 (118.167.50.236), 11/29/2016 18:51:46
→ ah7675: glib vala 11/30 00:35
→ ah7675: 不過如果限制在uclibc可能真的就沒什麼辦法了 11/30 00:42
推 firejox: C可以封裝啊@@ 11/30 04:05
→ firejox: 比起包裝成C 也要考量轉過去吃的空間吧@@ 11/30 04:10
推 soheadsome: 我都忘記有vala了 11/30 07:36
推 POSIX: 害我以為是控制碼 11/30 22:52
推 ronin728: 樓上 POSIX 本尊出現了... 12/04 17:43
→ ronin728: POSIX 沒關係的話,我推薦 OCaml,是 ML 家族的語言 12/04 17:45
→ ronin728: 優點很多..不但速度快(接近C++) 表達能力也很強 12/04 17:48
→ ronin728: 缺點就是語法比較醜(個人感覺) 學習資源少 現成工具少 12/04 17:49
→ ronin728: 除了ML家必備的pattern matching、algebraic data type 12/04 18:01
→ ronin728: OCaml 還有一系列 parametric 開頭的泛型編程語言特性 12/04 18:03
→ ronin728: 能類比 template(c++) 與 type class(haskell) 12/04 18:06
→ ronin728: 其實還有ANIS Common Lisp to C、Scheme to C的Compiler 12/04 18:09
→ ronin728: 但我覺得一般人應該不想被((()))弄花眼..所以就不介紹了 12/04 18:10
→ ronin728: 補充:OCaml也有OO但語法醜,例如cat.meow寫成cat#meow 12/04 18:24
→ ronin728: 很惡意的讓你不會想用他的OOP .... XDDD 12/04 18:25