有些環境只能使用C語言
但是C真的很不適合大型專案
因為太容易產生命名超長的變數或函式
雖然還有struct可以讓函式命名簡短些
但是那需要浪費指標空間
有沒有什麼工具是使用適合大型專案的語法
然後輸出成C語言的?
我目前有查到llvm有可以將C++轉成C的功能,不過還沒詳細看
各位有什麼工具可以介紹一下嗎?
下面列一下版友的建議跟我目前查到的
很意外這種東西很少人做,可能只有C可用的環境大多不會建立大型專案
*cython
*agda
*mathematica
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2016-11-28 11:45:00我覺得你應該先說說為什麼你的用途裡一定要有 C每個個案最好的解法不見得相同
作者:
CoNsTaR ((const *))
2016-11-28 11:47:00那是超古早 llvm 才有的功能吧…
作者:
firejox (Tangent)
2016-11-28 13:16:00你有那麼缺空間嗎
作者:
CoNsTaR ((const *))
2016-11-28 14:12:00推坑 agda 啦 先做出 C&C++ denotational semantics 再寫agda 互轉 :p
作者:
gozule (好冷啊~~)
2016-11-28 15:22:00可以考慮用cython寫純c的程式,兼具python的語法和c的速度
作者:
saxontai (黑暗,點綴孤零零的星)
2016-11-28 15:24:00好奇變數/函式名稱是長到什麼程度 XD
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2016-11-28 16:35:00我在想直接做個 compiler + runtime 會不會更方便點例如 mulle-objc 是純 C11 寫的, 直接把 runtime 移植上去, 然後就寫 Objective-C 直接 compile 跑在上面
作者:
CoNsTaR ((const *))
2016-11-28 18:40:00我記得 clang 是可以直接把 objc 編成 c 的 有這個印象好像是啥 rewrite 什麼的 不太確定如果 objc 可接受的話可以試試看
...長串是正常的名稱空間+用途+目的物 不長名稱能獨立?又不是c++有name space 就算有還是常常很長
作者:
CoNsTaR ((const *))
2016-11-28 18:44:00我錯了 那只能變成 c++…
隨便舉例boost::numeric::ublas::matrix變成C還比較短 少八個冒號咧還是你的程式不需要架構? 那我教你二十六個字母十個字就有26^10種組合 保證用不完
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2016-11-28 22:08:00講話沒邏輯只會無腦護航的基本教義廚實在很難相處
作者:
xvid (DivX)
2016-11-28 22:11:00老實說我寧願看冒號至少可以區分是命名空間一堆底線看到暈喔
你應該是反過來,用高階語言去實現整個架構需要用C的部份就用C寫成能讓高階語言呼叫的library用其它語言產生C code再與自己寫的整合並不恰當
我是故意舉例 C語言本來就沒有封裝在沒有封裝特性的語言尋求封裝很好笑上層明明可以用cpy去包好介面 原PO感覺不想用高階
作者:
CoNsTaR ((const *))
2016-11-29 10:19:00樓上 原 Po 是想用高階語言 但環境要求原始碼必須是 C
翻譯成C的高階語言一堆,不過大多都吃 POSIX,沒問題?
對不起我沒看仔細 c就是沒有封裝 大型專案多的是所以是回到前面有人說的 環境是什麼?就算嵌入式也說一下硬體是哪些
lua 或其他語言的FFIc++ to c 你可以去用cfront compiler
作者:
ah7675 (阿毛)
2016-11-30 00:35:00glib vala不過如果限制在uclibc可能真的就沒什麼辦法了
作者:
firejox (Tangent)
2016-11-30 04:05:00C可以封裝啊@@比起包裝成C 也要考量轉過去吃的空間吧@@
作者:
POSIX (tedium of chores)
2016-11-30 22:52:00害我以為是控制碼
樓上 POSIX 本尊出現了...POSIX 沒關係的話,我推薦 OCaml,是 ML 家族的語言優點很多..不但速度快(接近C++) 表達能力也很強缺點就是語法比較醜(個人感覺) 學習資源少 現成工具少除了ML家必備的pattern matching、algebraic data typeOCaml 還有一系列 parametric 開頭的泛型編程語言特性能類比 template(c++) 與 type class(haskell)其實還有ANIS Common Lisp to C、Scheme to C的Compiler但我覺得一般人應該不想被((()))弄花眼..所以就不介紹了補充:OCaml也有OO但語法醜,例如cat.meow寫成cat#meow很惡意的讓你不會想用他的OOP .... XDDD