2011-03-27 83 views
3

我是一个Java人,主要是做Android的东西。学习C/C++和Java

我想进入Android的游戏编程,并想知道是否有任何点学习C(不适用于android,因为那里只能用C++编写)。人们仍然用C来做什么? Java和Objective-C是不是有点过时了?

我一定会学习C++,因为大家都说你需要它来进行游戏编程。你会同时学习Java吗(我还在学习)还是应该先学习Java?

+2

边干边学 - 语言无所谓。 – Wroclai 2011-03-27 09:11:02

回答

1

首先Objective-C基本上只用于Apple技术的开发,所以它的兼容性/可移植性方面肯定没有C那么强大.C++实际上只是作为一个库向C中添加类。在开发在C++中,你确实正在开发一个大规模更新的C语言.Java并没有超越C,而是提供了另一种编程方法。 Java没有C的低级功能(编辑内存...)。

1

C用于系统编程,特别是在Linux内核中。但实际上,学习编程语言!=学习编程。

因此,它最适合你先学习Java作为主要编程语言和阅读这里列出一些书:What is the single most influential book every programmer should read?

后,扩大你的知识会更容易些。

+0

谢谢,病态的不断学习JAVA。我想学习C++吗?你认为学习C或C++会为我完成工作有什么意义。 – Bluemner 2011-03-27 10:10:04

+0

尽管C和C++是亲属,但它们的语言差别很大。另外C++比纯C复杂得多。但是无论如何,如果你不觉得你会参与系统编程,那么在开始时就不需要学习C了。因此,从更高的抽象(Java)开始,学习好的编码实践,继续使用C++提及的良好实践,然后,如果你愿意的话,开始学习C,因为在这一点上,你应该已经知道如何编写好代码。 – xappymah 2011-03-27 10:40:09

2

如果你学习C++,学习C只是一小步。作为第一个近似,C或多或少是C++的一个子集。

在使用C/C++之前,我会一起深入地学习Java的O-O设计技巧和设计模式。一旦你开始使用C/C++,你必须处理诸如指针和显式内存管理之类的问题......以及说“X的行为未定义”的语言规范。

C和C++等语言的复杂性很容易妨碍学习设计技巧。

1

C用于许多事情。您使用的大多数(PC)应用程序仍然使用C或C++编写。你可以阅读关于细节here for example ;-)

Java是不同的,它并不是许多倡导者试图建议的进化步骤。

+0

+1补偿-1没有评论。 – 6502 2011-03-27 09:24:55

7

尽管C语言相当老,但C语言仍然是最常用的语言之一。根据众所周知的Tiobe语言索引,它只落后于Java:http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

C在许多环境中仍然被广泛使用,其中包括嵌入式系统,还有普通的桌面应用程序。特别是在Linux上,即使在系统/内核开发之外工作,C也有很强的追随者。

虽然Java/C++连接有传奇色彩。很明显,Java语法严重依赖于C++语言,但在概念上,语言实际上更接近于Objective-C。帕特里克·诺顿(早期的Java语言的设计者之一)最近发布了关于这一点:Java Was Strongly Influenced by Objective-C

因此,为了更好地理解Java绝对不负有心人学习C++和Objective-C在一定的时间,但它绝对不是一个要求。如果你已经学习了这两个中的任何一个,那么你已经自动学习了(大)C部分。

一般来说,在跳到下一个语言之前,更好地学习一种语言。

4

我将C学习为第一语言。重点是内存分配和释放,以及简单的数据类型,如动态分配数组,可变大小的动态分配数组,指针等等。

这足以完成一个完全成熟的应用程序,但现在回头看,做事情要困难得多;我仅限于数组,动态或静态,所以它的复杂性非常糟糕。无论如何,这意味着稍后我可以专注于面向对象的编程和高效的数据结构,C++和Java中的算法等,而不用担心编程问题。

所有的方法都可以工作,但我很开心能理解记忆是如何工作的。我在大学遇到的大部分通过Java学习编程的人都不明白这一点。我认为这很重要:)

3

C是最强大的语言之一。正如他们所说的,拥有巨大的权力会带来很大的责由于其巨大的灵活性,在C语言编程/调试过程中犯错误和驱动程序员变得非常容易。无论如何,我认为要成为一名“优秀”的程序员,你需要学习如何分配内存和指针的细节/ deallocated,垃圾收集..从C从未暴露给Java程序员。而对于您的游戏编程雄心壮志,当您使用它来优化性能时,它肯定也会有所帮助。

我建议你和Java一起学习C语言,以便更好地理解它们的差异和相似之处,否则你将变得对Java过于依赖,并且过渡到C变得更加困难。

要学习任何语言,最好的方法就是编程。在这里http://cslibrary.stanford.edu/,你会得到最好的练习,让你开始。有趣!