您当前的位置: 首页 > 旅游

如何选择适合自己项目的编程语言IT新闻博

2019-02-02 21:57:14

如何选择适合自己项目的编程语言_IT_博客园,

Objective-C 与 Java 的比较:

Objective-C 与 C++ 的比较:

一般的 iOS 开发与 Android 开发的比较:

Java

从实用性来讲,Java 可以说是种 页 语言。尽管像 Perl 等语言会突然发现它们处理字符串的能力在恢复价值和发送 HTML 到页浏览器上是天生的,但是 Java 是早发现自己是根植于浏览器中,初是在一个有趣但却非常古怪的 HotJava 浏览器(基于 Java 本身进行编写),而之后又以现有浏览器的扩展形式呈现出来。

尽管从表面上看其结构与C和 C++ 类似,但是 Java 的后端表现却与这两种语言不同。比起编译 Java 源代码到原生及其代码中,Java 编译器将编译由 Virtual Machine 或 VM 所运行的 字节码 。Java 字节码是一种汇编语言,但却不是与特定处理器有关系的汇编语言。Java VM 是字节码的运行时解释器,将为你的机器目标处理器解释字节码。这一方法的优点在于,如果目标及其拥有可兼容的 Java VM 或 Java 所承诺的 编写一次就能够在任何地方运行 ,你便可以在不同机器间移动 Java 字节码,并且可以无需做出任何改变而运行。这一方法的缺点在于 Java 字节码并不是原生机器代码,尽管像 及时 编译器能够完善 VM 性能,但实际上你是在运行时间做一些解释,这将引起较小但却可衡量的性能打击。

还有其它缺点便是,Java 的现实性并不符合语言的早期承诺。尽管在页中执行游戏的理念几乎能够马上让所有人动心,但现实是 Java VM 并不能与所有内容兼容,使用特定 VM 而编写的 Java 应用或支程序可能不能运行于带有其它 VM 版本的机器上。 编写一次就能够在任何地方运行 被改为 编写一次便能够移植到任何地方 ,也就是说一旦你完成你的 Java 代码的编写,它便能够有效地运行于一个平台上,然后你所面临的重要任务便是确保你的应用能够有效运行于所有系统上。

Java 的第三个缺点便是源自其 GUI。尽管首次 传递 促使 Java GUI 使用原生的 OS 控制(按键,滚动条等等),较小且较快,但却没有深度。下一次传递 Swing 虽然看起来好多了,但是表现仍然很早,并且完全不同于初的控制。糟糕的是 Sun(Java 之父),太慢了,难以添加现有的 OS 功能,就像关于 ClearType 字体渲染的支持。因此,Java 应用总是着眼于一些与现代化不着边的版本。

但是在服务器编程方面,Java 便扬眉吐气了。VM 的一大优势便是,它并非真正的处理器,只是一个模拟,所以销毁 VM 并不是多大的问题。如果你对于 Java VM 感到困惑,这并不会真正影响基本的操作系统,你大可以选择关闭并重新开始,并且不需要重启整个机器。再加上 Java 的内存管理模式是源自 C++ 和C语言,所以像分配内存(无需将其带回之前的系统)这样的问题便不再是多大的问题了。像这样的系统非常适合服务器环境。服务器可以突然出现并在必要的时候消灭 VM 且不会对潜在 OS 造成任何影响。同样地,GUI 问题也并不适用,如果你的服务器软件看起来并不壮观,它便一点都不重要,除非你想要给服务器管理员留下深刻印象。今天你将会发现许多商业大型多人游戏在服务器端使用了 Java。Three Rings 的多人游戏便是个很好的例子,他们不仅在客户端,同时也在服务器端使用了 Java 语言。

Java 发挥重要作用的另一个领域便是市场。J2ME(Java 2,Micro Edition)是带有删节类程序库(游戏包注:专门为在和其它较小的设备上运行而设计的)的 Java VM 的微小版本。实际上,如果你包含了目标群体,Java 可以说是现在的平台之一。

优点:Java 的 Virtual Machine 加上其内存管理和不再需要的内存的自动收集让你能够创造非常诱惑力且足以避免被摧毁的软件。它同样也带有强大的扩展文件传统。

缺点:Java 的 编写一次便能够在任何地方运行 的承诺未能兑现。Java 类程序库已经经过多次重新编写且未删除早前的调用,所以即使程序库与早前的代码是反向兼容,似乎还有三种方法能够做到一切,除了因为 过时 而被拒绝。

可移植性:非常不错,但却不像想象中那么棒。基于 Java 创造一款可移植且能够使用潜在的 OS 功能的应用与在 C++ 上这么做一样困难。

是否适合新手:非常适合。尽管在不遭遇弃用对象的前提识别执行某项任务的 正确 方式对于那些还在摸索语言的新手来说有点困难,但是语言本身的核心是很容易理解的。同样地,Java 也是许多大学课程的标准语言。

资源:Oracle Inc. 拥有许多对 Java 程序员有帮助的资源。

.NET Languages(特别是 C# 何 Visual Basic)

.NET 是微软对于 Java VM 的基本答案。实际上,.NET 是以整体技术命名的。真正的 VM 名字是 CLR(公共语言运行时),之前所谈论的关于 Java VM 的一切内容都适用于 CLR,但也有一个例外:CLR 从一开始便不是用来 匹配 单一语言,就是 Java 那样。因为这样,有许多语言使用了 CLR 去执行后端处理。不管是像 COBOL 和 FORTRAN 这样的早前语言还是像 Python 这样的现代语言都能够瞄准 CLR。需要提醒你们的是,有些 CLR 项目是小型的单人项目,所以如果你在 CLR 版本中找到你喜欢的语言也不要太过兴奋,因为在这里有些编译器还不够成熟。

微软所开发的 C# 和 Visual Basic 都是的 CLR 语言。C#是源自 Java 的语言,它带有 90% 的 Java 语法,尽管从表面看它更像是源自C或C++。C#拥有一些很棒的语言扩展,即基于 Java 慢慢添加的内容,并重新编写了类程序库。

简称 的 Visual Basic 是 CLR 执行以及对于微软已建立且受欢迎的 Visual Basic 环境的替换。尽管它仍被称为 Basic ,但却不再是全部大写,它与早前的 BASIC 解释器(贯穿于 20 世纪 80 年代所出售的所有计算机的 ROM 中)只带有少量的相似处。现在,它的语法与本列表中的其它语言非常相似,尽管它仍然未使用括号去整合某些内容。它同样也使用了更具对象导向型 点记法 去调用功能而不受语言的前 CLR 版本的更大的功能程序库。

优点:尽管 Java 并未投入太多努力面向 Java VM 编译语言,但是 CLR 从一开始便是为了支持这一点。因此存在许多基于 CLR 的语言,并且它们很容易进行互通。

.NET 技术获得微软的 Visual Studio 环境的大力支持,而这也是一个非常成熟且具有丰富的功能的开发环境。

C#对于微软的 XNA 技术来说应该算是首要的编程语言度疲劳引发肾炎,这是创造在 W适合减肥族吃类低脂肉indows 和 XBox 360 游戏主机间可移植游戏的一种方法。

缺点:与 Java 不同的是,CLR 应用不能像页中小程序那样运行。尽管 Silverlight 技术允许这点,但是对于游戏来说这却太迟了,并且不能像 Java 和 Flash 那样根植于浏览器中。

基于 CLR 的应用比想象中更难移植。

可移植性:尽管存在第三方将 CLR 移植到到除 Windows 外的其它操作系统,但是基于这一方向的努力却远小于面向 Windows 的努力。所以尽管你可能面向 Windows 创造一个非常有活力的 .NET 应用,但是你在 Mac 和 Linux 上的执行却不会多么顺畅。

是否适合新手:都适合。这两种语言都是很直接且容易理解的。此外,它们与 Visual Studio 环境的紧密关系也让设置变得更加简单。

资源:

Flash 和 ActionScript

Flash 在这一列表中算是一个不寻常分子,因为它并不是源自语言本身,而是伴随着一个动画工具诞生。在 20 世纪 90 年代,一些开发者对在页上呈现动画图像所要求的规格以及它们所呈现的方法感到震惊,所以他们便创造了一个名为 FutureSplash 的浏览器插件以及一个能够创造紧凑的向量式动画的绘制和动画工具。互动页业务巨头 Macromedia(已经拥有能够通过自己的 Director 动画工具播放内容的 Shockwave 插件)购买了 FutureSplash,并将其重命名为 Flash 。

在经历了几个版本后,Macromedia 添加了一个 JavaScript 子集,将 ActionScript 整合到插件中,于是 Flash 便成为了一个完整的编程环境,尽管它经历了几个语言版本,并且开发工具也发展成对除简单页游戏之外的内容有帮助的环境。今天,属于 Adobe 的 Flash 是基于 ActionScript 3,这是完全执行了 ECMAScript 标准并且与本列表的其它语言一样具有重要作用。

几年前,Adobe 公开了一个名为 Flex 的工具,即尝试着将 Flash 发展成更加适合创造基于浏览器的用户界面和 RIA 内容,而不再只是针对于动画和游戏。尽管并不是 Flash 的替代品,但是 Flex 比前者更适合创造用户界面,因为它是带有丰富 UI 支持而不是只伴随着固定变成语言的动画工具的 XML 编程语言。

基于近的 Flex 版本,Adobe 公开了一个名为 AIR 的产品,它能够从浏览器中分离 Flash 内容。使用 AIR 和一些新创造的对象(游戏邦注:致力于帮助 Flash 内容使用更多机器资源而不只是浏览器插件),你将能够从 Flash 中创造的可执行内容,并运行于各种平台上。

优点:Flash 完整的绘制和编程工具让编写基于页的游戏变得更加简单。尽管没有 Visual Studio 血统,Flash 环境仍具有非常丰富的功能。

缺点:尽管对于一个人来说是个很棒的环境,但是 Flash 却不能有效支持团队编程。

尽管 Flex 编译器是免费的,但是 FlexBuilder Flex 内容创造工具却不是。

与这一列表中的其它语言不同的是,ActionScript 是针对于客户端的技术。尽管有些服务器端的 ActionScript 解释器可能会阻碍你学习单独的服务器语言,但事实上却不存在这样的情况。

可移植性:Flash 执行时间播放器可以允许于 Windows,Mac,Linux 多种以及一些游戏主机上。但并非所有设备都支持同样本本的 Flash,所以你需要学习每周版本的能力,并在开始前决定好目标平台。

是否适合新手:非常适合,特别是结合其绘制和动画工具。尽管容易在 Flash 环境中创造内容,但却不适用于其它语言。例如,C++使用的一种技巧或创造工具可能在 Java 中拥有等价内容,反之亦然。但是 Flash 的开发环境却与其它语言不同。

资源:就像微软是能够满足你的所有 .NET 需求的万能商店一样,Adobe 对于 Flash 也是这样的存在。

Python

与之前提到的语言不同的是,Python 并不是始于一家大型公司或大学项目。它更接近于大学学生的基层工作,并且在之后变成产业中喜欢语言结构以及缺少就功能的人的选择。该语言本身非常紧凑且很容易使用。我们同样也能够轻松地将 Python 语言解释器整合到现有的项目中,这也是为何你会发现 Python 作为许多游戏的内涵脚本语言的原因。

呈现了许多 Java 的服务器友好型属性的 Python 也是非常棒的服务器语言。实际上,Python 编译器能够棉鞋 Java VM 和微软的 CLR 编译 Python 代码。你会发现许多服务器(游戏邦注:如 YouTube,谷歌和雅虎)都使用了 Python 进行后端处理。

基于用户支持的 PyGame 程序库,Python 在游戏社区越来越受欢迎。PyGame 是一个能够将已建立的 SDL 跨平台图像程序库抽象化为一些容易使用的 Python 内容的对象程序库。一些让人印象深刻的游戏都是使用 Python 进行编写。

优点:是一种免费的开放源。专注于用户社区。能够完全整合到谷歌的 AppEngine -这是谷歌的 付费 处理服务器。

缺点:事实上,几乎所有处理都不是经过一家大型公司而是通过其用户社区,所以这可能是为了让公司签订一个 Python 项目的强行推销方式,尽管一些巨头已经在 Python 做出了巨大投资,所以现在的 Python 不再像过去那样作为一种 业余语言 了。

可移植性:非常好。大多数适合 Python 的第三方程序库都是围绕着像 SDL 和 OpenGL 等可移植技术进行创造,所以我们能够基于 Python 轻松编写一些可运行于任何平台的内容。

是否适合新手:Python 语言拥有能够轻松上手的语法并且很容易学医。此外,还存在一些很棒的社区编写教程。

资源: 拥有所有与 Python 相关的内容。这同样也是许多活跃社区论坛的集中营,在此你能够获得各种问题的答案。

汇编语言

关于汇编语言你必须了解两件事。

语言的名字是 汇编 。将汇编语言转换成低级别的机器编码的工具名字是 汇编程序 。这是一个很常见的错误,甚至连有经验的程序员也会犯这样的错误,即将语言称为 汇编程序 。所以请先叫对它们彼此的名字。

默认情况下,汇编语言是本文中小且快的语言。因为它并非高级语言,但却是你的 CPU 指令系统助记码代表,任何基于高级语言所编写的内容都能够快速用汇编语言呈现出来。

鉴于以上事实,你可能会认为你的研究就此结束了。毕竟,如果一种语言是小且快的,又有什么不使用它的理由呢?实际上,为什么其他人会在你能够基于汇编语言编写代码并获得结果的时候还费心去研究C或 C++ 呢?

那是因为 代码 这一词并不是指代你的程序的原始速度和规模。存在可读性,就像你可能需要递交部分代码给同事让他能够基于这些内容完成自己的任务。存在可移植性,即你可能需要将代码移植到其它操作系统或硬件体系结构中。存在可维护性,即需要能在项目快结束时轻松解决问题。存在抽象性,即你可以基于向下移动角色而不是操控内存中的数字去编写代码。

基于所有的这些元素,汇编语言是一位。汇编语言很难读也难以维护。除非经过仔细评述,否则很少有人能够传承其代码。修改漏洞以及延伸现有的代码很复杂。你必须不断专注于可移植性,以防你终编写出不能运行于来自同一制造商的不同处理器模型。

实际上,汇编语言从未被用于完成游戏。汇编语言通常是作为程序的一部分将执行计算并会经过多次调用。有时候修改功能中的一些机器指令将帮助你创造一些额外且有价值的内容。但却不是在项目已开始便能够执行的过程。这是在早前测试所执行的,即在决定变成瓶颈到底出现在那里时。

汇编语言并非热门的选择,如果你阅读了这篇文章并尝试着明确该选择怎样的语言,你便可能会转向其它语言。

优点:如果你知道自己在做什么的话这可能会是快且有影响的方法。

缺点:如果你正在阅读这一内容,你可能就不知道自己在做什么。所以请准备好花较长时间去学习无数能够推动处理器棒的技巧。

可移植性:糟糕透顶。除非你正在面向基本处理器编写代码,否则你的程序可能不能运行于其它 可兼容的 处理器上。例如,AMD 处理器上一些特殊的指令在 Intel 上便不可行,反之亦然。

是否适合新手:一点都不。

资源:如果你想要面向 Intel 处理器编写代码的话,面向基于 Intel 的计算机的汇编语言便是个很好的推荐。但如果不是的话,你应该着眼于目标 CPU 的制造商。

服务器语言

尽管上述提到的许多语言都能够有效作用于服务器上,但是它们所围绕的许多技术都较为陈旧,而现在也存在更容易使用的解决方法。关于为页编写一个定制后端的初标准是所谓的 CGI,这是在服务器端运行一个定制的可执行文件的一个定制后端,将在页上传输数据,并收集文本输出内容然后将其回传给用户。尽管这在服务器端很容易执行,但这却并未按照今天页的使用方式去创建互动体验模型,的情况便是面向互动页应用的 CGI 解决方法会很笨拙。

PHP

PH皱方法女性战胜衰老P 是早的页 嵌入式 脚本语言之一,并且它将给予多种方式改变所编写的页。尽管 PHP 可以作为一种脚本语言,基于页形式获得输入内容,处理它并返回输出内容,但是其真正优势是在于作为超文本预处理器的作用。一旦被设置为服务器的预处理器,PHP 便能够处理嵌入页面中的代码。所以比起编写一个独立代码,在一个页面上打出当前日期,你可以选择直接将 PHP 代码嵌入印有日期的页中,如此代码将被终文本所取代。PHP 同样也能够添加本机命令程序库与强大的 MySQL 数据库进行交流,从而是保存和检索持久数据变得更简单。

推动 PHP 瞬间倍受欢迎的另一点是价格。它是免费的,因此帮它基金了名为 LAMP(Linux,Apache,MySQL 和 PHP)的服务器配置中。这 4 个技术的结合为刚起步或低预算的页设计师提供了免费切容易使用,的强大页设置。作为奖励,它还能够基于低成本的硬件而运行。这对于页开发者并没有影响。在今天存在许多待执行的免费货低价 PHP 脚本,不管是简单的用户数据库还是完整的站设置。

不甘示弱的微软很快便基于微软的技术,也就是 Windows,Internet Information Server(微软汕头癫痫病医院的页服务器),CLR 和 SQL Server,组合了自己的 PHP 式的配置。尽管并不是免费的也不属于 PHP 联盟, 却拥有所有技术支持费用能够买到的优势,且能够支持除 PHP 外的语言。如果你非常熟悉客户端的 Visual Basic,你便能够基于 在服务器端使用它。

但如果你的预算非常有限,LAMP 设置可能会是更好的选择。

Ruby on Rails (通常简称为 Rails)本身并不是一种编程语言,但却是伴随着 Ruby 编程语言的一个类程序库架构。尽管 Ruby 本身是一种不具有重大改革性的对象导向型脚本语言,同时集成了 Python 和 Perl,但是其 Rails 程序库却创造了系统改革。Rails 程序库完全整合了 MVC(Model View Controller)范式并致力于防止技术的重复。这让你能够基于较小的代码创造一个相对丰富的服务器系统。Rails 使用者将能够自豪地炫耀基于少量代码所编写的页论坛和社交站。

与 PHP 一样,Ruby on Rails 也是免费的。

值得一提的其它语言

上面全部是关于在游戏开发世界拥有自己一席之地的语言,不管是在客户端还是服务器端。也就是说大规模或受欢迎的游戏都是使用这些语言进行编写。但是仍有一些并非游戏语言,但却呈现了许多希望的有趣的技术存在。我们将会在未来的一些重要项目中看到这些语言的出现。

JavaScript

我们已经在关于 Flash 和 ActionScript 的部分中简要提及了 JavaScript。JavaScript 拥有与 ActionScript 同样的根源,这两种语言可以有效地组合在一起。JavaScript 早获得关注是因为作为编写页脚本的语言,而今天它却是作为推动,延伸并说服络浏览器按照你想要的方式去呈现页内容的语言。如果你曾经因为为了适应页面内容而调整自身规格的页而烦恼,你便可以选择 JavaScript。

但 JavaScript 的作用不只是解决让人烦恼的页问题,它也成为了编写台式机上所有有趣但却无用的小工具的语言。此外,该语言非常完善,足以用于编写一款完整的游戏,如果是基于小工具框架的话,便能够在浏览器或单机中运行。

还存在两个主要问题阻碍着 JavaScript 成为页游戏中更受欢迎的语言。个问题便是,与 Flash 插件不同的是,JavaScript 的解释器是依赖于浏览器制造者。尽管语言是基于非常完整的 ECMA 标准,但是浏览器所使用的 JavaScript 执行在语言功能和性能中却是不同的。因此我们很难编写一个能够运行于所有浏览器上的强大的 JavaScript 应用。

第二个问题便是关于你的知识产权的保护。JavaScript 并不是作为源代码进行编译,然后再由浏览器本身进行解释。尽管存在一些有效的工具能够向你的用户隐藏代码,但是你的游戏的源代码却从未能逃离你的浏览器的 查看源代码 指令。如果你并不想你的游戏被模仿/改变/偷走,你就应该仔细着眼于一些有效的安全性解决方法。

D

D 是C,C++和 Java 的 非官方 子孙。这是 Walter Bright(注:作为 PC 上C和 C++ 编译程序构造的先驱之一)脑力劳动的产物。随着不断发展的类程序库以及对于反向兼容性的需求所带来的各种压力,Bright 决定从头开始创造某些内容,汲取C,C++和 Java 的功能,同时舍弃任何不具有存在下去的正当理由的内容。结果便创造了一种比其前辈更紧凑且更容易学习的语言,且无需牺牲任何重要的功能或运行速度。D是当你将语言设计带离整体领域的产物。

尽管D以简洁的名义舍弃了反向兼容性,但是它却拥有与C代码交流的有效方法,所以如果你拥有第三方程序库或一些你不愿意重新编写的C源代码,你便可以轻松地与之进行沟通。

也就是说如果D能够获得更多支持,它便可能成为世界上棒的语言。它只是还未拥有巨大的代码程序库,丰富的工具,以及其它语言的用户支持基础罢了。希望关于该语言的支持能够不断发展,并且它也能够获得更多关注,即使这还需要花费一些时间。

结论

一开始我便清楚在关于到底该使用怎样的语言,本文是不可能达到一个让人满意的结论。实际上,并不存在能够解决所有问题的单一解决方法。希望这一列表至少能够帮助你预留出 2 至 3 个不错的候选对象。而剩下的研究便取决于你自己。

幸亏上述所提到的几乎每一个解决方法都拥有免费的执行过程,所以你可以尝试这些语言并选择适合你自己项目的对象。

(本文为游戏邦/ 编译,拒绝任何不保留版权的转功,如需转载请联系:游戏邦)

载冷剂价格
全封闭声屏障报价
载冷剂批发
推荐阅读
图文聚焦