避免在多种不同的语言中编写相同的算法

7
我是一名网页开发者,我发现很多时候我需要在客户端和服务器上使用相同的函数。因此,我会将其写成JS以及PHP或任何其他服务器端语言。我已经厌倦了这个过程。如果我必须更改它,那么我需要在两个地方都进行更改。如果我想要在一些手持设备上使用它,那么我还需要使用objective-C或Java等重写该代码。然后,如果我需要更改该函数,则需要在所有地方都进行更改。
有没有解决方案?如果我通过ajax调用某些webservice,那么客户端将会有延迟。如果它是在JS中,那么无法从PHP或Java等中访问。如果我从另一种语言中使用PHP中的某些服务,则也可能成为性能问题。
有时我们需要将这些函数的输出作为参数使用db或不使用db进行输入。
我知道可能有一些相当简单的解决方案,但我不知道。请提供一些独立于语言的解决方案,因为我并不总是拥有VPS。
我不确定我的问题实际上是否属于stackoverflow.com或programmers.stackexchange.com,如果属于后者,请转移到programmers.stackexchange.com而不是关闭此问题。

你可以创建一个 Web 服务来提供这个常见的功能。Web 服务调用代码可能会有所不同,但你想要实现的任何共同点都将保持不变。显然,这在很大程度上取决于你对它的使用方式,但这是可能的。 - doogle
不清楚为什么你要在客户端和服务器上编写相同的函数。这到底是如何工作的,为什么需要这样做? - kennebec
@doogle 我知道这是一件常见的事情,所以肯定是可能的,但在给定的场景中,如何使其能够在浏览器客户端和手持设备上使用,无论是使用Java还是C等,是否有适当的格式?我认为JSON更接近?但仍然需要在运行时加载js。 - Hafiz
@kennebec 有时候会有一些需要通过 JS(运行时计算)进行的计算,而在从服务器获取数据并刷新页面时,有些相同的计算也需要执行,但不依赖于 JS。这在许多项目中都是很常见的情况。虽然不总是计算,但有时是其他不同的事情,但都要进行这种复制操作。 - Hafiz
我认为我正在寻找的是一种基本的计算和基本操作语言,应该有用不同语言编写的编码器和解码器,并且传输基本算法就像JSON传输数据一样,但我想我需要自己完成这个 :| - Hafiz
哇,语言/格式传输算法而不是数据,我认为这对我的学期项目会很有帮助 :) - Hafiz
2个回答

3
通常,解决此问题的方法是使用一种语言编写通用代码,并使用翻译器或库链接来允许其他语言访问。 Node.js 允许您使用 JavaScript 编写服务器端代码。
Node.js 是一个基于 Chrome 的 JavaScript 运行时构建的平台,可轻松构建快速、可扩展的网络应用程序。Node.js 使用事件驱动、非阻塞 I/O 模型,使其轻量高效,非常适合在分布式设备上运行的数据密集型实时应用程序。
您还可以使用 JavaScript 编写移动设备的 HTML5 应用程序。 "使用 HTML、CSS 和 JavaScript 构建 iPhone 应用" 现在,网页设计师和开发人员可以加入 iPhone 应用派对,而不必学习 Cocoa 的 Objective-C 编程语言。事实证明:您可以使用 HTML、CSS 和 JavaScript 快速高效地编写 iPhone 应用。本书通过大量详细的示例、逐步说明和实践演习向您展示如何做到这一点。
如果您不想尝试在JavaScript中编写大型复杂应用程序,GWT提供了一种编写Java并通过翻译在客户端运行的方式。

GWT SDK包含Java API库、编译器和开发服务器。它允许您使用Java编写客户端应用程序,并将其部署为JavaScript。


如果您使用 .Net 语言开发:C# -> JavaScript ScriptSharp

Script# 是一款免费工具,可让开发人员编写 C# 源代码,并将其编译为常规脚本,可在所有现代浏览器上运行。


但有时我们需要编写本机应用程序,而不是使用Webview等,因为有时应用程序必须使用库中提供的一些功能,这些库将HTML / CSS / JS转换为应用程序。并且可能存在Symbian或其他手持操作系统,在其中JS无法工作。此外,服务器上的node.js需要在那里安装,我认为共享托管不允许这样做。因此,是否有一种真正的跨语言解决方案,例如某些Web服务或格式或两者的组合,可以在两侧都起作用? - Hafiz
我的客户通常使用共享主机,其中只有PHP可用。 - Hafiz
有没有一些使用JSON的Web服务可以这样做?由于JSON是独立格式,大多数语言都可以进行编码/解码。 - Hafiz
1
@Hafiz,不,没有一种编程语言互语可以在所有平台上运行。 - Mike Samuel
我理解,那么最大的可能解决方案是使用类似于JSON的东西传输对象,其中包含数据但无法传输函数。 - Hafiz
所以我认为应该有基本计算和基本操作语言,这些语言应该有不同语言编写的编码器和解码器,并且传输基本算法就像JSON传输数据一样。 - Hafiz

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接