我是一名初学者程序员,我们学校的I&CS计划让我们从学习Java开始。在我看来,C语言及其变种在真实世界中更为普遍。这是真的吗?
专业程序员如何使用Java进行工作?更确切地说,我想知道在什么情况下程序员会选择使用Java而不是其他编程语言。OpenOffice 明显是一个使用Java的突出例子,但它不能使用其他语言编写吗?
我是一名初学者程序员,我们学校的I&CS计划让我们从学习Java开始。在我看来,C语言及其变种在真实世界中更为普遍。这是真的吗?
专业程序员如何使用Java进行工作?更确切地说,我想知道在什么情况下程序员会选择使用Java而不是其他编程语言。OpenOffice 明显是一个使用Java的突出例子,但它不能使用其他语言编写吗?
除非你在编写游戏、嵌入式设备软件、维护旧软件或编写高性能并行计算软件(例如CUDA),否则这些天你会发现Java比C/C++更实用。 C#实际上更多地源自Java而不是C,尽管它的名字叫C#,如果您正在考虑这一点(许多人认为它比Java更好,我也是其中之一)。
“Java比C/C++慢”的说法正逐渐成为一个谬论(例如请参见此基准测试)。它肯定更加友好,而且越来越多的企业级解决方案专门处理Java,其开发和在现实世界中的部署。
特别是在服务器应用程序中,您会发现Java正在取得巨大进展。在大多数领域,它是否真的是使用C/C++的第二选择还有待商榷。
Java非常普遍。很难将其与“C及其衍生语言”进行比较,因为没有人统计每种语言在“真实世界”中解决了多少问题。但是Java非常流行。一些你可以在自己的桌面电脑上安装和玩耍的Java应用程序:
Java还可以运行在许多手机和Web服务器上。
至于你的第二个问题——专业程序员倾向于使用Java来完成任务(就像使用C、C++、Perl、Lua、Python、JavaScript、Ruby、Clojure、Pascal、SQL、COBOL和任何其他编程语言一样)。作为初学者,不要担心Java的实际应用性。如果你的学校教授它,请使用它来学习计算机科学概念,这将有助于你在任何语言中解决实际问题。
我一直是一名C/C++程序员,但最近开始使用Java编写Web应用程序,并使用非常酷的Google Web Toolkit(GWT)。这个小工具将会把你的Java代码编译成Javascript,如果你也在Java中编写服务器端代码,它可以极大地简化客户端与服务器端之间的通信。以前我用PHP和Python编写过Web应用程序,用的是原始JavaScript或jQuery,但对我来说,GWT+Java组合是一种更加愉悦的解决方案。
当然,这并不是Java最流行的用法之一,但我想你可能会对该语言的其他用途感兴趣。
Java可能在使用上排名第二,仅次于更接近C语言的语言,但它是一个足够接近的第二,我不会太担心它的适用性。更一般地说,我不会太担心你学习的第一种语言的适用性 - 有这么多语言,每种语言都有其特定的领域。专注于学习概念,你就不会在切换到当前任务所需的任何语言时遇到困难。
关于Java的问题领域:
Java经常用于带有图形用户界面的跨平台应用程序、手机应用程序以及用于生成网页的服务器。在这些领域中已经编写的Java代码使其对这些领域的未来项目具有吸引力 - 但没有一个问题领域明确属于一种语言。
稍微技术一点:
Java是一种静态类型和垃圾收集语言。这意味着稍微不小心做出不安全的事情要稍微困难一些,并且集成开发环境(如Eclipse)可以为程序员提供更多帮助,因此Java可能更适合较大的项目或可能有程序员不熟悉代码库的项目。
作为一种垃圾收集语言,Java可能不太适合具有严重资源限制或速度要求的程序(在这种情况下通常首选C语言)。作为一种静态类型语言,它不太适合快速应用程序开发(在这种情况下通常首选动态类型语言,如Python、Ruby和PHP)。
更广泛地说,Java也是一种命令式语言,因此其风格对大多数程序员来说更加熟悉,并且更适合告诉计算机确切地如何做某事,而不是例如函数式语言(如Haskell),后者可能更适合描述需要完成的任务,以便计算机可以根据需要分配工作(但处理屏幕上的内容等变化的东西则不太好)。
我个人对Java的使用主要是在手机上。我将一个应用程序移植到了Android和BlackBerry。因此,对于真实世界中公开可见的使用,这些操作系统及其各种应用程序是很好的例子。
我与Java的接触越多,就越不喜欢它。这部分是由于开发者工具(Eclipse),部分原因是目标平台,还有部分是语言本身。Java是一门很好的第一门语言,但是在某些时候,我希望你尝试其他语言以了解你所错过的东西。