C_and_CPP 板


LINE

有些环境只能使用C语言 但是C真的很不适合大型专案 因为太容易产生命名超长的变数或函式 虽然还有struct可以让函式命名简短些 但是那需要浪费指标空间 有没有什麽工具是使用适合大型专案的语法 然後输出成C语言的? 我目前有查到llvm有可以将C++转成C的功能,不过还没详细看 各位有什麽工具可以介绍一下吗? 下面列一下版友的建议跟我目前查到的 很意外这种东西很少人做,可能只有C可用的环境大多不会建立大型专案 *cython *agda *mathematica --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.167.54.161
※ 文章网址: https://webptt.com/cn.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灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP