我应该学习什么语言来开发来自PHP的跨平台软件?

我应该学习什么语言来开发来自PHP的跨平台软件?,php,cross-platform,Php,Cross Platform,我想我已经在PHP中“编程”了大约3到4年,而且我认为我已经非常擅长它了,所以决定转向更复杂的东西。我知道PHP过于灵活(例如,您不必声明变量的类型),我必须习惯以这种方式编写代码 因此,基本上我想写一些应用程序,在这些应用程序中,我可以控制许多CPU内核,并创建窗口应用程序。能够使用像DirectX或OpenGL这样的3D库简直太棒了 我真的不太了解适合这种应用程序的语言。那么,在你看来,我应该学什么语言?我应该买什么书来学习它呢?C++是大型跨平台项目的典型选择。 掌握如何在C++中编写跨平

我想我已经在PHP中“编程”了大约3到4年,而且我认为我已经非常擅长它了,所以决定转向更复杂的东西。我知道PHP过于灵活(例如,您不必声明变量的类型),我必须习惯以这种方式编写代码

因此,基本上我想写一些应用程序,在这些应用程序中,我可以控制许多CPU内核,并创建窗口应用程序。能够使用像DirectX或OpenGL这样的3D库简直太棒了


我真的不太了解适合这种应用程序的语言。那么,在你看来,我应该学什么语言?我应该买什么书来学习它呢?

C++是大型跨平台项目的典型选择。
掌握如何在C++中编写跨平台应用程序是一个很大的挑战,但绝对值得。IM/< P> C++是跨平台大型项目的典型选择。
掌握如何在C++中编写跨平台应用程序是一个很大的挑战,但绝对值得。IM.< /P> < P> Python将是最容易的步骤(例如,在它中没有“声明类型的变量”),并满足您的其他要求(通过多处理、OpenGL等多个内核)。C#更容易(你确实需要声明变量类型,但是,像Python和PHP一样,它代表你管理内存),但是多平台方面(除了依赖Mono项目的Windows之外,任何地方)都不那么令人信服;Java可能仍然提供更好的“多平台”体验,尽管在其他方面C#更丰富(但是,它们是两种基本上具有相似功能和难度的语言)

C++肯定会是最难的(你必须管理你的内存和声明东西),但也是最强大的(当你开始管理你的内存,以及做你提到的任何事情和更多)


所以,这是你的决定:你有多看重学习/转换/使用的简易性,而不是纯粹的力量、灵活性、多平台的优点等等?正确的选择可能取决于您对这些因素的相对权重。至于这本书,如果你选择Python(我不会推荐我自己的书,因为这肯定是有偏见的;-),Wesley Chun的核心Python可能是最好的;如果C++,我最喜欢的是Lippman的《拉奎伊》和Moo的《C++入门》。不确定哪本书最适合C#(或Java)。

Python对您来说是最简单的步骤(例如,其中也没有“声明变量类型”),并且满足您的其他要求(通过多处理、OpenGl等实现多核)。C#更容易(你确实需要声明变量类型,但是,像Python和PHP一样,它代表你管理内存),但是多平台方面(除了依赖Mono项目的Windows之外,任何地方)都不那么令人信服;Java可能仍然提供更好的“多平台”体验,尽管在其他方面C#更丰富(但是,它们是两种基本上具有相似功能和难度的语言)

C++肯定会是最难的(你必须管理你的内存和声明东西),但也是最强大的(当你开始管理你的内存,以及做你提到的任何事情和更多)


所以,这是你的决定:你有多看重学习/转换/使用的简易性,而不是纯粹的力量、灵活性、多平台的优点等等?正确的选择可能取决于您对这些因素的相对权重。至于这本书,如果你选择Python(我不会推荐我自己的书,因为这肯定是有偏见的;-),Wesley Chun的核心Python可能是最好的;如果C++,我最喜欢的是Lippman的《拉奎伊》和Moo的《C++入门》。不确定什么书是最好的C++(或java)。

语法在语法上比C/C++更类似Python,但是Python更容易学习和更现代。
如果你使用的是Windows,你可能想试试C#或者Java。这两种语言都有C++风格的语法,但比C++更容易学习。

在Python中语法与C/C++相比更相似,但Python更容易学习,更现代。 如果你使用的是Windows,你可能想试试C#或者Java。这两种语言都有C++风格的语法,但比C++更容易学习。

“跨平台”有点过于笼统。你到底想跨平台做什么

像Silverlight和Flash/Flex这样的富互联网平台肯定是跨浏览器的,并且将在Windows和Mac上的浏览器之外运行

如果你想在任何环境中使用编程语言,那么C++、Python、Ruby和java都是很强的选择(如果你愿意考虑MNO),也可以选择C,但是这并不保证你在一个平台上编写的代码在其他平台上运行得很好(或者完全)。问题不在于语言,而在于与操作系统、特定于平台的库、用户界面平台等的接口。可移植性很难实现,当您看到即将出现的问题(如高度并行编程)时,可能不会变得更容易

你没有说清楚为什么跨平台是重要的;这也会影响你的选择。特定的应用程序或服务类型?您喜欢的特定工具恰好也是跨平台的?您对应用程序代码、基础架构代码、平台代码感兴趣吗

我个人倾向于C#和.NET。NET的下一个版本将有一些很棒的并行编程工具和大大改进的线程模型。WPF和Silverlight在图形方面令人兴奋,但这比DirectX或OpenGL更高,因此这在很大程度上取决于您的目标。

“跨平台”有点过于笼统。你到底想跨平台做什么

像Silverlight和Flash/Flex这样的富互联网平台肯定是跨浏览器的,并且将在Windows a上的浏览器之外运行