|
I'm a college junior majoring in Computer Science and have been learning C++ since the first day.
But nowadays I'm hearing more and more people talking about how Java and C# are the best languages to go for at the moment as those are seemingly the only thing companies are using nowadays.
Every time I turn around the corner there's gonna be someone talking about either of those languages and barely hear anything about C++.
Now my question is: If Java and C# are currently the main trend, why are teachers at the universities teaching C++ and even Lisp? Is it because that's all they know or I'm just taking the Java and C# thing too seriously?
I'm confused...
Thanks~
   
|
Whereas Java and C# are easy, convenient and powerful, C/C++ is still the best for performance. In other words, different jobs requires different languages. You don't do game programming in Java, and you don't program microchips in C. That's why some universities still teach perl and cobalt, etc.
|
How do you pronounce C# when talking? I've never heard of it before.
|
# is sharp, just like reading notes. Thus C# = C-sharp.
|
On April 19 2009 11:18 EsX_Raptor wrote: I'm a college junior majoring in Computer Science and have been learning C++ since the first day.
But nowadays I'm hearing more and more people talking about how Java and C# are the best languages to go for at the moment as those are seemingly the only thing companies are using nowadays.
Every time I turn around the corner there's gonna be someone talking about either of those languages and barely hear anything about C++.
Now my question is: If Java and C# are currently the main trend, why are teachers at the universities teaching C++ and even Lisp? Is it because that's all they know or I'm just taking the Java and C# thing too seriously?
I'm confused...
Thanks~ they teach these languages so you can get a grasp of the different ideas in programming.
such as c++ for it's pointer, java for oop and etc.
|
Also, once you learn a language like c++, learning other languages will be incredibly easy.
|
Kyrgyz Republic1462 Posts
The universities' goal is to teach you not the particular language, but the general concepts of programming. What you learn with C++ translates well to all other languages.
Also it is good to know how the stuff works on lower level, in C/C++ you can work directly with memory, interact with OS functions and do all sorts of hacks which you cannot do in Java/C#.
Java and C# do many things for you, such as automatic memory management or the huge class libraries that can handle routine tasks (managing strings, data collections, network, etc.), which in the end results in increased productivity because it makes programs less prone to human error. That is why they are so popular.
In practice, C/C++ is used where performance is critical: in applications such as games, graphics software, video encoding, software for embedded systems and so on. For tasks such as business/financial applications Java/C# is usually a better choice.
|
On April 19 2009 11:49 Megalisk wrote: Also, once you learn a language like c++, learning other languages will be incredibly easy.
Yes, that's a big part of it. C# and Java are very protected environments; C++ is about as far from a protected environment as you can get. So if you can manage C++, you can easily manage C#/Java.
On April 19 2009 12:13 Random() wrote: software for embedded systems
You'd be surprised how much embedded systems rely on Java implementations.
|
That's really nice, thank you guys for your insight on this.
Now that I think about it, it's true. The reason they teach us C++ is because the language has a lot of things in it that are very useful in understanding the main concepts other programming languages, paradigms, styles and such are all about.
Another question: I've heard before that C++ is used a lot in game programming. But I've also heard that Java is good for this end too? o,o or maybe I heard wrong cause I don't really think such a slow executing language can have a place in today's gaming industry.
|
On April 19 2009 11:39 Jonoman92 wrote: How do you pronounce C# when talking? I've never heard of it before.
http://lmgtfy.com/?q=c# programming language
srsly though, c++ is a great thing to learn dont worry about anything else, c++ is very useful and a great language to know.
|
Don't be afraid to learn new languages. In many cases (Python, perl) it's incredibly easy.
What Random() says is exactly correct. C++ teaches the basics of C (And thus, the imperative programming skills he mentioned) and it also teaches the *basics* of OOP. It's the language which arguably gets your feet wet in the most areas at once.
[If someone wanted to blast me for not promoting Java for its threading model they would not be wrong, however if people really cared about teaching kids that they'd be learning Haskell, etc.]
Honestly, no matter what you learn now, you will be doing things differently in the workplace. Don't worry about it.
|
On April 19 2009 12:22 EsX_Raptor wrote: That's really nice, thank you guys for your insight on this.
Now that I think about it, it's true. The reason they teach us C++ is because the language has a lot of things in it that are very useful in understanding the main concepts other programming languages, paradigms, styles and such are all about.
Another question: I've heard before that C++ is used a lot in game programming. But I've also heard that Java is good for this end too? o,o or maybe I heard wrong cause I don't really think such a slow executing language can have a place in today's gaming industry. If you want to be a game programmer C++ is the only choice for AAA (read: big) game studios. From what I've heard, casual/smaller game studios might work in things like Flash/Actionscript or Java for mobile development. Where I work all the game related stuff is done in C++ and we use C# for tools.
|
On April 19 2009 12:22 EsX_Raptor wrote: Another question: I've heard before that C++ is used a lot in game programming. But I've also heard that Java is good for this end too? o,o or maybe I heard wrong cause I don't really think such a slow executing language can have a place in today's gaming industry.
People write games in Python (Frets on Fire)...
There's a lot to be said for rapid prototyping, as well. Write the game in a 'slow' language, then rewrite the performance-critical bits in C.
In PC gaming, at least, there's a very, very wide field of games that require no performance whatsoever. Solitaire, say. Or starcraft.
|
On April 19 2009 12:24 Divinek wrote:Show nested quote +On April 19 2009 11:39 Jonoman92 wrote: How do you pronounce C# when talking? I've never heard of it before. http://lmgtfy.com/?q=c# programming languagesrsly though, c++ is a great thing to learn dont worry about anything else, c++ is very useful and a great language to know.
is it me or has LMGTFY gone from being funny in a passive-aggressive sort of way to just outright dickishness
|
C flat? or C sharp. thats the question. I think this is one of those things where it cant hurt to know them all bro.
|
On April 19 2009 12:31 Phyre wrote: If you want to be a game programmer C++ is the only choice for AAA (read: big) game studios. From what I've heard, casual/smaller game studios might work in things like Flash/Actionscript or Java for mobile development. Where I work all the game related stuff is done in C++ and we use C# for tools. nice! =)
but i dont get something, how is c# used for tools? can c++ and c# be merged or something?
On April 19 2009 12:32 miseiler wrote: There's a lot to be said for rapid prototyping, as well. Write the game in a 'slow' language, then rewrite the performance-critical bits in C. same thing here, can a game written in, say python, be also merged with other C code?
|
|
|
On April 19 2009 12:36 EsX_Raptor wrote:Show nested quote +On April 19 2009 12:31 Phyre wrote: If you want to be a game programmer C++ is the only choice for AAA (read: big) game studios. From what I've heard, casual/smaller game studios might work in things like Flash/Actionscript or Java for mobile development. Where I work all the game related stuff is done in C++ and we use C# for tools. nice! =) but i dont get something, how is c# used for tools? can c++ and c# be merged or something? Show nested quote +On April 19 2009 12:32 miseiler wrote: There's a lot to be said for rapid prototyping, as well. Write the game in a 'slow' language, then rewrite the performance-critical bits in C. same thing here, can a game written in, say python, be also merged with other C code?
You can't merge two languages really. You can rewrite both into one, thats about it. Unless you include like assembly and stuff.
|
LMAO im reading this and it's giving me the lols xD
however, i dont fit his complaints about today's kids majoring in cs (i actually had to deal with recursion and pointers A LOT... so i guess this is more university-dependent rather than generational?)
edit:
On April 19 2009 12:46 keV. wrote: You can't merge two languages really. You can rewrite both into one, thats about it. Unless you include like assembly and stuff. thank you for clarifying this =)
|
C++ is a very nice language in that it encompasses a lot of concepts. However, starting with C++ (i.e., if you haven't done any programming before) is a questionable choice.
Java and C# are indeed the "main trend" of software development these days for Windows application. Java is pretty much the standard for any back-end server due to its enormous core libraries and documentations. Windows application in anything other than C# is simply a pain in the ass.
Performance these days are generally negligible (relatively speaking), as they can be easily made up with hardware improvements (relatively speaking). These is why more and more companies choose "less efficient" (arguable) languages such as Java and C# over C/C++. However, there are definitely cases where certain languages are preferred over others. Some examples include video games (although C# seems to be gaining popularity), and any application where timing is absolutely crucial (such as hedging firms/arbitrage detection algorithms).
|
I have a friend who is also looking to learn a programming language during the summer and he asked me what to learn... I suggested him C and C++ as a lot of you guys did, though I also suggested Python, he suggested Java, and a friend suggested C#.
In your opinion, what is the best compilerIDE (per language) to use when learning?
I can google some but I wanna hear what TL thinks.
edit: also, are there any downloadable programming textbooks? (or simple, thorough learning guides)
|
On April 19 2009 12:50 Not_Computer wrote: I have a friend who is also looking to learn a programming language during the summer and he asked me what to learn... I suggested him C and C++ as a lot of you guys did, though I also suggested Python and Java.
In your opinion, what is the best compiler (per language) to use when learning?
I can google some but I wanna hear what TL thinks.
Do you mean "compiler" or "IDE"?
|
On April 19 2009 12:48 EsX_Raptor wrote:LMAO im reading this and it's giving me the lols xD however, i dont fit his complaints about today's kids majoring in cs (i actually had to deal with recursion and pointers A LOT... so i guess this is more university-dependent rather than generational?) edit: Show nested quote +On April 19 2009 12:46 keV. wrote: You can't merge two languages really. You can rewrite both into one, thats about it. Unless you include like assembly and stuff. thank you for clarifying this =)
Heh, yea joel is great and he makes me feel alot better about the classes I take when I get owned by the midterms. Wasn't calling you a java school guy anything, I just thought it was a good read and pretty relevant. The problem really is that all those thousands of "game design" and crap 1.5 to 2 year schools are preparing you for a job that is already done by thousands of people in India.
|
On April 19 2009 12:50 Not_Computer wrote: I have a friend who is also looking to learn a programming language during the summer and he asked me what to learn... I suggested him C and C++ as a lot of you guys did, though I also suggested Python and Java.
In your opinion, what is the best compiler (per language) to use when learning?
I can google some but I wanna hear what TL thinks.
Assuming you mean IDE,
I like JCreator for java. A nice clean interface. Extra stuff doesn't get in the way of beginners.
I heard Eclipse is good with a lot of powerful tools as well
|
On April 19 2009 12:52 Cambium wrote:Show nested quote +On April 19 2009 12:50 Not_Computer wrote: I have a friend who is also looking to learn a programming language during the summer and he asked me what to learn... I suggested him C and C++ as a lot of you guys did, though I also suggested Python and Java.
In your opinion, what is the best compiler (per language) to use when learning?
I can google some but I wanna hear what TL thinks. Do you mean "compiler" or "IDE"?
I'm a noob 
edit: yes, IDE
|
If you can handle pointer arithmetic and some of the more complex data structures, the time it takes to learn a new language is pretty much negligible.
|
Correct me if I'm wrong, but I think that you hear a lot about Java and C# in the same way you hear a lot about linux. A lot of noise is made because finally there is an alternative to the defacto standard. It doesn't necessarily mean it is widely used in comparasin.
|
That's an IDE.
I primarily code in Java, and most people (99%?) use Eclipse. I've done C/C++ on Unix with VI and GCC/G++. On windows, Visual Studio is actually not THAT bad (although horribly slow), I really like their debugger.
|
Also, in response to original post, I think java is taught more than c++ now is because its newer, has better documentation and organization (C++ data structures, classes, pointers get really confusing taken all at once), it's use in web apps, and it's easy accessibility (the whole thing is object oriented unlike C++ which mixes and matches). Well at least that's how java has come across in my high school compsci class.
|
On April 19 2009 12:55 fight_or_flight wrote: Correct me if I'm wrong, but I think that you hear a lot about Java and C# in the same way you hear a lot about linux. A lot of noise is made because finally there is an alternative to the defacto standard. It doesn't necessarily mean it is widely used in comparasin.
Java is definitely more widely taught. Its easier to teach and easier to learn.
|
On April 19 2009 12:55 fight_or_flight wrote: Correct me if I'm wrong, but I think that you hear a lot about Java and C# in the same way you hear a lot about linux. A lot of noise is made because finally there is an alternative to the defacto standard. It doesn't necessarily mean it is widely used in comparasin.
It actually is.
Java is by far the most popular programming language used today.
Here's the first link from Google: http://www.devtopics.com/most-popular-programming-languages/
Not saying it's 100% reliable, but it definitely shows a trend.
I've had three different jobs (vastly different) in the past, all companies used Java in some way (two used it for server, one used it to build an online App).
|
On April 19 2009 12:56 arcticStorm wrote: Also, in response to original post, I think java is taught more than c++ now is because its newer, has better documentation and organization (C++ data structures, classes, pointers get really confusing taken all at once), it's use in web apps, and it's easy accessibility (the whole thing is object oriented unlike C++ which mixes and matches). Well at least that's how java has come across in my high school compsci class.
Java is also great because the code is generally much cleaner (less hacks), which provides extra readability, maintainability and reusability.
|
On April 19 2009 12:50 Not_Computer wrote: In your opinion, what is the best compiler (per language) to use when learning? yeah assuming you mean IDE, I'd say Microsoft Visual C++ Express Edition. It is free and very good.
Also, I'd recommend your friend starts out with C++. Yes, it is hard, but I'm now convinced it's honestly the best language to start out with as it teaches you a lot about the known paradigms.
edit: also what Cambium said..
|
no fucking way, start with c++? C++ is a fucked up language. Go for C if you wanna learn pointer arithmetic and other interesting stuff. Then choose an OOP language that's not C++ lol.
|
traditional com science courses always start you off in C or C++ and that's the way it should be. Some modern university give you C#, JAVA etc to better equip you for jobs and there is also nothing wrong with it.
Learn the concepts and take an elective in C# if you must but you really should just pick things up by self study.
|
United States3824 Posts
I think we should only code in 80x86 assembly.
|
Heres my two cents. If you do learn all the fucked up stuff about C++ (and yes, there's plenty), when you try to pick up some of the more modern languages, you will be in a much better position than someone trying to go the other way. And there's still tons of work that must be done (and will need to be for the foreseeable future) in an "unmanaged" language. For example, there is a disclaimer in the Java License agreement that the language cannot be used in Aircraft autopilots or the controls systems of nuclear power plants. That basically means for those types of situations, ether C or C++ will be used and which one is used will depend on the situation. Plenty of C gets written every day for embedded devices.
To pick a completely random analogy, think of going from C++ to Java like playing an RTS without automining/MBS and then switching one that had that stuff. So the answer is obvious: Garbage collectors will ruin competitive programming.
Seriously though, I'm really glad I learned C/C++ first. It might have been easier the other way but I feel like I'm a better programmer in the end.
|
i heard java is a dying language.
|
On April 19 2009 12:36 EsX_Raptor wrote:Show nested quote +On April 19 2009 12:31 Phyre wrote: If you want to be a game programmer C++ is the only choice for AAA (read: big) game studios. From what I've heard, casual/smaller game studios might work in things like Flash/Actionscript or Java for mobile development. Where I work all the game related stuff is done in C++ and we use C# for tools. nice! =) but i dont get something, how is c# used for tools? can c++ and c# be merged or something? Tools meaning stuff like say... a program that provides a GUI for a level designer to configure an AI Bot. The tool is external to the game, it's a windows app. Throwing together little windows apps quickly is something C# excels at. Lots of little tools are made to help developers develop more efficiently.
So let's say you were making a game, perhaps you would use C# to make your level editor or something.
|
This article is great, and I totally agree with it. Introductory cs course are far to easy. Im glad my school at least forced you to learn C on top of Java and offered a course in Scheme, which I took, but most people dont because it is too hard. Far to many times I have had to work with people in 3rd and 4th year course that just dont know how to program properly and should not be in cs. I found out recently my school is actually switching its first cs course to python instead of java because it is easier to learn for newbies....
On April 19 2009 12:50 Not_Computer wrote: I have a friend who is also looking to learn a programming language during the summer and he asked me what to learn... I suggested him C and C++ as a lot of you guys did, though I also suggested Python, he suggested Java, and a friend suggested C#.
In your opinion, what is the best compiler (per language) to use when learning?
I can google some but I wanna hear what TL thinks.
edit: also, are there any downloadable programming textbooks? (or simple, thorough learning guides) For Java use Eclipse. It is a great IDE. I think you can also use it for C/C++, but I never have. I did all my C/C++ programming using text editors and the gcc/g++ compilers on solaris and linux machines which can be extremely frustrating at times.
|
United States3824 Posts
We program in my CS program (my school clumps classes into programs) using Java and talk extensively about recursion. And maybe we don't have goto in java but we are well aware of what recursion is and are expected to implement it most of the time (except in the HW I just turned in )
If you want to say that Java is causing Universities to stop teaching students certain programing concepts then I would blame your school. The concepts stay the same across the languages.
|
Hmm right now i am in a software development company as an intern, and i think it isnt really what language you learn, as different languages have different support in different areas. DirectX is a very common game programming abstraction level, and only really works with C++. I used it with DirectX 9. Havent really tried with Java, but some simple console stuff that is considered normal in C++/C# is quite tedious with Java, but has a lot of libraries to handle stuff. and handling XML with JAVA is just a PAIN in the ass, unlike other scripting languages like PHP which handles XML like a charm. I considered C# to be a better equivalent of VB, which allows me to write GUI apps quickly and easily with the power of C++. Eclipse is good, I tried with notepad and it totally sucks balls
Btw, to the people in the know, downloading the free Visual C++ Express or Visual C# or the all-in-one Visual Studios, which is the best option? I could easily forsee myself using both languages.
|
On April 19 2009 13:10 FreeZEternal wrote: no fucking way, start with c++? C++ is a fucked up language. Go for C if you wanna learn pointer arithmetic and other interesting stuff. Then choose an OOP language that's not C++ lol.
Missing out on vector, string, and boost library for no real benefit is more fucked i would say.
|
Learning C or C++ gives lets you learn the basics and gives you a strong base to expand your programming upon. After learning ways to solve problems, the language doesn't really matter, it's just different syntax with some differences, but after you learn how to actually solve problems, which is the hard part, languages aren't much of a barrier.
Also, Java was written in C, so think about that.
|
On April 19 2009 16:04 gzealot wrote: Hmm right now i am in a software development company as an intern, and i think it isnt really what language you learn, as different languages have different support in different areas. DirectX is a very common game programming abstraction level, and only really works with C++. I used it with DirectX 9. Havent really tried with Java, but some simple console stuff that is considered normal in C++/C# is quite tedious with Java, but has a lot of libraries to handle stuff. and handling XML with JAVA is just a PAIN in the ass, unlike other scripting languages like PHP which handles XML like a charm. I considered C# to be a better equivalent of VB, which allows me to write GUI apps quickly and easily with the power of C++. Eclipse is good, I tried with notepad and it totally sucks balls
Btw, to the people in the know, downloading the free Visual C++ Express or Visual C# or the all-in-one Visual Studios, which is the best option? I could easily forsee myself using both languages.
yeap pre JDK 5 handling console stuff can be a pain in the ass. With JDK 5 and up, you can just use the Scanner class to read input from the console. Eclipse is good, NetBeans is good as well. For .NET, nothing beats Visual Studio +_+
|
On April 19 2009 11:35 Osmoses wrote: Whereas Java and C# are easy, convenient and powerful, C/C++ is still the best for performance. In other words, different jobs requires different languages. You don't do game programming in Java, and you don't program microchips in C. That's why some universities still teach perl and cobalt, etc. How wrong can you be? You definitely program microchips in C and Java is definitely used to make games.
|
On April 21 2009 00:33 yenta wrote:Show nested quote +On April 19 2009 11:35 Osmoses wrote: Whereas Java and C# are easy, convenient and powerful, C/C++ is still the best for performance. In other words, different jobs requires different languages. You don't do game programming in Java, and you don't program microchips in C. That's why some universities still teach perl and cobalt, etc. How wrong can you be? You definitely program microchips in C and Java is definitely used to make games. While you can program microchips in C, it is not the best way to go because of the lack of memory. While you can program games in java, you shouldn't, because the automatic garbage collector among other things slows down performance.
Mind you I've never even tried programming microchips in anything but assembler, I'm just regurgitating the answer I got from my professor when I asked about it. I also have not programmed any high-tech games in java, again I'm just telling you what I was told by people who ought to know better, some of which ran a game programming college.
|
On April 21 2009 00:33 yenta wrote:Show nested quote +On April 19 2009 11:35 Osmoses wrote: Whereas Java and C# are easy, convenient and powerful, C/C++ is still the best for performance. In other words, different jobs requires different languages. You don't do game programming in Java, and you don't program microchips in C. That's why some universities still teach perl and cobalt, etc. How wrong can you be? You definitely program microchips in C and Java is definitely used to make games.
For majority of games most people are talking AAA development studios, which you surely wouldn't want to use Java for (yet). C++ has too many tools and tons of libraries that are just there for games.
Also joelonsoftware is one of my fav sites.
|
C++ and using VIsual studios 2008. And yes, visual studios is probably one of the better IDE's don't listen to everybody blasting VS 
Java is a good language ( i guess) but don't use NetBeans! it's a blasted IDE...
C# is a good language too. But i would much rather program using C++/CLI with .NET than use C#.
|
|
|
|