如何将脚本语言作为项目的一部分进行合理化解释
我有一个特定的项目,想使用脚本语言 + C,或者作为替代方案使用100%的Java解决方案。
该程序需要将传统系统适应其他现代系统的使用。
基本上,我可以使用的语言选择很少。我有C / C ++,Java 1.4,也已经为此环境编译了Lua。
程序执行“屏幕抓取”,必须处理大量字符串。代码的该部分具有很高的可变性。
我的公司中大多数开发人员使用C,因此-我的最初设计是使用C编写一些部分,并使用Lua处理经常更改的字符串。我被告知“必须证明您使用脚本语言的理由”。因此,我重新设计使用100%的Java,并被告知-Java的性能不足。你应该用C做整件事。
我没有控制激光或进行图像处理-只是一些屏幕抓取。我仍然必须为使用C以外的任何东西提供理由-那么我可以提供什么理由呢?
原文链接 https://stackoverflow.com/questions/1873863
你可以用Perl、Python或其他脚本语言来黑客一个原型,并展示它是多么容易和快速完成。
你需要从在 C 语言中实现的成本(时间/金钱)和在高级脚本语言中的成本来证明这个决策的合理性。我会提供几个实例/场景来展示潜在的节约成本。
听起来你在一个相当保守的环境中工作。请注意,人们可能会担心引入一项他们不理解或没有经验的未知技术。因此,你可能希望 a) 引入一些已知且有文档支持的技术 b) 最初不使用任何奇特的功能。希望你可以证明他们可以获得回报,并在以后逐步掌握它。
翻译并保留 markdown 格式:
如果它是真的,理由就是用 Java 执行您正在做的任务会更快。(是吗?- 如 Martin 所说,尝试在 Python 中制作原型并评估需要多长时间。)
在这种情况下,你也可以更强烈地倡导更高的健壮性,因为在C中处理字符串很麻烦,常常会导致编程错误(缓冲区溢出等)。
因为:
这个程序需要进行“屏幕刮取”并需要处理大量字符串。
Perl 或许本来是最好的选择,但如果你没有选择的话。
将下面翻译成中文并且保留原本的 markdown 格式
嵌入式脚本语言的巨大优势在于程序运行时能够检查和修改数据。
对于速度而言,我个人认为 Lua 是游戏开发者的首选,这是因为它快而轻巧。
(你可以在很短的时间内嵌入 Lua 语言,甚至不会注意到它的存在 ;))
我认为成本角度可能会一直输,因为你的团队具有现有的C专业知识,因此节省的成本被学习新语言的成本所抵消。
对我来说(作为一个过去不得不做出这些权衡的人),更具说服力的是对变化的灵活性和响应速度。C必须进行编译和部署,而你可以在10秒钟内将新的Python脚本放入你的环境中。如果你爬取的页面正在变化,那么你的开发和部署环境应该与其匹配,这意味着需要一种脚本语言。
顺便说一句,“Java速度较慢”这一论据只是一些固守C的人们经常拿出来说的事情。这已经不是真的了,并且有无数独立的测试证明了这一点。
通过允许您的应用程序在运行时加载和运行一些脚本,以展示添加新的(或用户自定义的)的便捷性,与正常的设计-开发-部署周期相比。
我的建议:
想一下在爬取过程中需要执行的一些字符串操作。用 C 和 Lua 写出这些操作的代码。我曾经写过一些示例,用 C 写了 30-40 行,而 Lua 只需要 1-2 行。
尝试使用 Lua 和 C 快速原型化你的系统的某个方面,然后进行比较。只有你可以确定这种原型化的时间是否可以被你的经理接受。
在你的团队中找到一位志同道合的盟友(或两位、三位),向他们展示示例和讨论要点。如果你需要进行设计审查,他们可以帮助支持你。
准备好接受这样一个事实:尽管你可能有一个非常好的设计解决方案,但它可能并不适合你的组织。并不是每个人都想学习或尝试新事物。如果一群“敌对分子”必须使用或维护你的项目,那么你可能会面临更多的麻烦,这可能不值得。
解析字符串、HTML、XML等无论使用哪种语言都会很慢。
解析字符串和屏幕抓取是那些解析需求一直在变化且需要很长时间才能稳定的问题之一。因此,您需要编写屏幕抓取软件、尝试、失败和学习的能力,并且需要能够快速做到这一点。
无论哪种情况下,您最好选择Perl和Ruby。Perl以其字符串解析而闻名。Ruby也很好,它有一个屏幕抓取库,例如(scrAPI)。
对于Perl或Ruby的商业理由是工具的成本低廉(免费工具),开发时间大大缩短。使用脚本语言使您能够快速地对抓取软件进行修改和测试,直到做到正确为止。如果您可以在C / C ++中在10分钟内完成代码更改并进行测试,那么您通常可以在Perl / Ruby中在一分钟内完成相同的操作。从长远来看,这可以节省50%的劳动力成本。
未来的扩展性。
如果采用脚本语言,您可以以更低的成本在未来扩展您的项目。
配置。 Lua 被创建为一种配置/数据描述语言。您的程序可能也是以这种方式工作的,具有 C 内核,然后通过 lua 接口进行配置。您要让多少可以配置取决于您,但它可能会随着时间而改变。
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
评估每个解决方案所需的时间(时间==金钱$)。这将有所帮助。