有些环境只能使用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