C_and_CPP 板


LINE

有些環境只能使用C語言 但是C真的很不適合大型專案 因為太容易產生命名超長的變數或函式 雖然還有struct可以讓函式命名簡短些 但是那需要浪費指標空間 有沒有什麼工具是使用適合大型專案的語法 然後輸出成C語言的? 我目前有查到llvm有可以將C++轉成C的功能,不過還沒詳細看 各位有什麼工具可以介紹一下嗎? 下面列一下版友的建議跟我目前查到的 很意外這種東西很少人做,可能只有C可用的環境大多不會建立大型專案 *cython *agda *mathematica --



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







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP