我是一个Java人,主要是做Android的东西。学习C/C++和Java
我想进入Android的游戏编程,并想知道是否有任何点学习C(不适用于android,因为那里只能用C++编写)。人们仍然用C来做什么? Java和Objective-C是不是有点过时了?
我一定会学习C++,因为大家都说你需要它来进行游戏编程。你会同时学习Java吗(我还在学习)还是应该先学习Java?
我是一个Java人,主要是做Android的东西。学习C/C++和Java
我想进入Android的游戏编程,并想知道是否有任何点学习C(不适用于android,因为那里只能用C++编写)。人们仍然用C来做什么? Java和Objective-C是不是有点过时了?
我一定会学习C++,因为大家都说你需要它来进行游戏编程。你会同时学习Java吗(我还在学习)还是应该先学习Java?
首先Objective-C基本上只用于Apple技术的开发,所以它的兼容性/可移植性方面肯定没有C那么强大.C++实际上只是作为一个库向C中添加类。在开发在C++中,你确实正在开发一个大规模更新的C语言.Java并没有超越C,而是提供了另一种编程方法。 Java没有C的低级功能(编辑内存...)。
C用于系统编程,特别是在Linux内核中。但实际上,学习编程语言!=学习编程。
因此,它最适合你先学习Java作为主要编程语言和阅读这里列出一些书:What is the single most influential book every programmer should read?
后,扩大你的知识会更容易些。
如果你学习C++,学习C只是一小步。作为第一个近似,C或多或少是C++的一个子集。
在使用C/C++之前,我会一起深入地学习Java的O-O设计技巧和设计模式。一旦你开始使用C/C++,你必须处理诸如指针和显式内存管理之类的问题......以及说“X的行为未定义”的语言规范。
C和C++等语言的复杂性很容易妨碍学习设计技巧。
C用于许多事情。您使用的大多数(PC)应用程序仍然使用C或C++编写。你可以阅读关于细节here for example ;-)
Java是不同的,它并不是许多倡导者试图建议的进化步骤。
+1补偿-1没有评论。 – 6502 2011-03-27 09:24:55
尽管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部分。
一般来说,在跳到下一个语言之前,更好地学习一种语言。
我将C学习为第一语言。重点是内存分配和释放,以及简单的数据类型,如动态分配数组,可变大小的动态分配数组,指针等等。
这足以完成一个完全成熟的应用程序,但现在回头看,做事情要困难得多;我仅限于数组,动态或静态,所以它的复杂性非常糟糕。无论如何,这意味着稍后我可以专注于面向对象的编程和高效的数据结构,C++和Java中的算法等,而不用担心编程问题。
所有的方法都可以工作,但我很开心能理解记忆是如何工作的。我在大学遇到的大部分通过Java学习编程的人都不明白这一点。我认为这很重要:)
C是最强大的语言之一。正如他们所说的,拥有巨大的权力会带来很大的责由于其巨大的灵活性,在C语言编程/调试过程中犯错误和驱动程序员变得非常容易。无论如何,我认为要成为一名“优秀”的程序员,你需要学习如何分配内存和指针的细节/ deallocated,垃圾收集..从C从未暴露给Java程序员。而对于您的游戏编程雄心壮志,当您使用它来优化性能时,它肯定也会有所帮助。
我建议你和Java一起学习C语言,以便更好地理解它们的差异和相似之处,否则你将变得对Java过于依赖,并且过渡到C变得更加困难。
要学习任何语言,最好的方法就是编程。在这里http://cslibrary.stanford.edu/,你会得到最好的练习,让你开始。有趣!
边干边学 - 语言无所谓。 – Wroclai 2011-03-27 09:11:02