Which of these three languages to pick first?

  • (2 Pages)
  • +
  • 1
  • 2

17 Replies - 1839 Views - Last Post: 13 September 2015 - 11:44 AM Rate Topic: -----

Poll: Which of these three languages to pick first? (5 member(s) have cast votes)

Which of these three should be the first to go?

  1. Java (0 votes [0.00%])

    Percentage of vote: 0.00%

  2. C++ (2 votes [40.00%])

    Percentage of vote: 40.00%

  3. C# (3 votes [60.00%])

    Percentage of vote: 60.00%

  4. Other (0 votes [0.00%])

    Percentage of vote: 0.00%

Vote Guests cannot vote

#1 chrylag   User is offline

  • D.I.C Head

Reputation: 0
  • View blog
  • Posts: 62
  • Joined: 06-September 15

Which of these three languages to pick first?

Posted 06 September 2015 - 09:42 AM

Hey there,

I have very basic understanding of how programming in general and some languages in a bit more detail work. I mean things like Compiled vs. Interpreted, Low Level, High Level etc.
By saying "programming in general" I mean I know about variables, control structures, operators, loops etc. what they are and mostly how they work.

Now I am going to study Computer Science in October and I want to be kind of prepared for it. Also I am interested in programming from a personal point of view.
My main interest is in game developing (not that I've ever done it, but I think it might be good enough to try). I know i will not be able to create the next World of Warcraft Killer, maybe not even the next Pacman... but I am curious about trying simple 2D stuff and so.

Now I am wondering. Which of the above mentioned languages will be the best to really dive into programming?! Java, C# or C++?
I hard alot about C# and Java being more modern, flexible and alot easier to understand for newcomers. So many people suggest to start there and, once you've got a basic understanding for programming, move on to things like C++.
I hear others saying C++ is as hard as it gets and switching from there to another language is like a walk in the park. Because basically you are "walking down the hill". While the other way around could be quite painful since alot of comforte from C# and Java is missing in C++.

I know that at the end of the day it will not really matter, what language you choose. Because almost all people told me, once you know the principles of programming, you just have to learn another syntax to know another language.
But I want to know which is the best to start off with, because I don't want to learn for example Java now, and realize, that it is a pain in the *** to go to C++ from there, or I may loose interest in programming, because C++ demotivates me.

So...any help is appreciated.

What would you guys suggest?

Is This A Good Question/Topic? 0
  • +

Replies To: Which of these three languages to pick first?

#2 astonecipher   User is offline

  • Senior Systems Engineer
  • member icon

Reputation: 2940
  • View blog
  • Posts: 11,421
  • Joined: 03-December 12

Re: Which of these three languages to pick first?

Posted 06 September 2015 - 09:53 AM

This topic gets asked pretty frequently. Look at the languages you will be learning through the program and pick one. There is no best language to learn, programming isn't even about the languages.
Was This Post Helpful? 0
  • +
  • -

#3 chrylag   User is offline

  • D.I.C Head

Reputation: 0
  • View blog
  • Posts: 62
  • Joined: 06-September 15

Re: Which of these three languages to pick first?

Posted 07 September 2015 - 01:21 AM

What do you mean by saying "you will be learning through the program"?
I mean... what program? At university?
Was This Post Helpful? 0
  • +
  • -

#4 ben255   User is offline

  • D.I.C Addict

Reputation: 44
  • View blog
  • Posts: 528
  • Joined: 09-September 13

Re: Which of these three languages to pick first?

Posted 07 September 2015 - 01:34 AM

Yes, thats probly what he means.
You can even write games in a console if you want. Instead of printing to a canvas you print a string array. And just keep updating
Was This Post Helpful? 0
  • +
  • -

#5 chrylag   User is offline

  • D.I.C Head

Reputation: 0
  • View blog
  • Posts: 62
  • Joined: 06-September 15

Re: Which of these three languages to pick first?

Posted 07 September 2015 - 02:26 AM

Okay, so I read through my universitys Modular-Handbook and there are only about 2 courses which teach C/C++ (it isn't specified further which of this two is actually teached) but several courses which deal with Java and web development ((X)HTML, CSS, ...) where I think Java is also more widely used than C++.

So I think it might be the best to give Java a shot. What do you think?
Was This Post Helpful? 0
  • +
  • -

#6 andrewsw   User is offline

  • never lube your breaks
  • member icon

Reputation: 6818
  • View blog
  • Posts: 28,229
  • Joined: 12-December 12

Re: Which of these three languages to pick first?

Posted 07 September 2015 - 02:38 AM

Check whether they were talking about Javascript or Java, they are two different languages (maybe you know this).
Was This Post Helpful? 1
  • +
  • -

#7 ben255   User is offline

  • D.I.C Addict

Reputation: 44
  • View blog
  • Posts: 528
  • Joined: 09-September 13

Re: Which of these three languages to pick first?

Posted 07 September 2015 - 02:45 AM

Since you dont want to choose for yourself
Go with C++
Spoiler

Was This Post Helpful? 0
  • +
  • -

#8 chrylag   User is offline

  • D.I.C Head

Reputation: 0
  • View blog
  • Posts: 62
  • Joined: 06-September 15

Re: Which of these three languages to pick first?

Posted 07 September 2015 - 02:46 AM

View Postandrewsw, on 07 September 2015 - 02:38 AM, said:

Check whether they were talking about Javascript or Java, they are two different languages (maybe you know this).



I know that.
They are talking about Java. Distributed Programming, Client-/Server Programming, Java-Collection-Framework, OO in depth with Java, Java Applets, Java RMI, etc etc.
Was This Post Helpful? 0
  • +
  • -

#9 rodiongork   User is offline

  • D.I.C Head

Reputation: 10
  • View blog
  • Posts: 61
  • Joined: 28-August 15

Re: Which of these three languages to pick first?

Posted 07 September 2015 - 04:10 AM

Quote

Java Applets,

Nowadays it is dangerous even to mention this legacy stuff! Avoid touching it or you may end with supporting some crappy legacy project... :)

Quote

What would you guys suggest?

I personally believe that for beginner Python is very good choice. I once wrote short post about it.
Was This Post Helpful? 1
  • +
  • -

#10 chrylag   User is offline

  • D.I.C Head

Reputation: 0
  • View blog
  • Posts: 62
  • Joined: 06-September 15

Re: Which of these three languages to pick first?

Posted 07 September 2015 - 04:32 AM

[quote name='rodiongork' date='07 September 2015 - 04:10 AM' timestamp='1441624218' post='2184704']

Quote

Java Applets,

Nowadays it is dangerous even to mention this legacy stuff! Avoid touching it or you may end with supporting some crappy legacy project... :)/>

It's not my fault :P
They mentioned it in the curriculum.
Was This Post Helpful? 0
  • +
  • -

#11 rodiongork   User is offline

  • D.I.C Head

Reputation: 10
  • View blog
  • Posts: 61
  • Joined: 28-August 15

Re: Which of these three languages to pick first?

Posted 07 September 2015 - 04:47 AM

To put it in proper words - they are going to waste time on teaching this???
I probably would start wondering if it is possible to choose another set of classes :)

Java nowadays is mainly used either in mobile (Android) or at server-side (mainly of enterprise applications). Usually it is all right even to skip desktop GUI applications in Java...
Was This Post Helpful? 1
  • +
  • -

#12 chrylag   User is offline

  • D.I.C Head

Reputation: 0
  • View blog
  • Posts: 62
  • Joined: 06-September 15

Re: Which of these three languages to pick first?

Posted 07 September 2015 - 05:38 AM

View Postrodiongork, on 07 September 2015 - 04:47 AM, said:

To put it in proper words - they are going to waste time on teaching this???
I probably would start wondering if it is possible to choose another set of classes :)/>

Java nowadays is mainly used either in mobile (Android) or at server-side (mainly of enterprise applications). Usually it is all right even to skip desktop GUI applications in Java...


Well this would mean if I want to go for (GUI-)Desktop applications and Desktop Game Development I should choose the C++ path. :)

If i want to do some Web Development I can still switch over to Java easiely tough, like I understood most people.
Was This Post Helpful? 0
  • +
  • -

#13 Ryano121   User is offline

  • D.I.C Lover
  • member icon

Reputation: 1461
  • View blog
  • Posts: 3,289
  • Joined: 30-January 11

Re: Which of these three languages to pick first?

Posted 07 September 2015 - 07:01 AM

It really depends on what you want to do:

Game Development - yes go for C++ like the rest of the industry. Maybe C# with Unity if the going gets tough (it's still used on a lot of indie titles)

Desktop Apps - I see no reason why anybody would go the C++ route for this anymore unless they were doing some serious graphical work (so pretty much a game).
- Java applets (web based) = no way don't waste your time
- Java Swing = again don't waste your time, it's old stuff
- JavaFx = the new framework for Java desktop apps. It's actually pretty cool although not widely used at the moment. If you really want to use Java for desktop go this route
- Other than that you go towards the newer technologies like C# for Windows apps. Some are even using NodeJs now for desktop apps

Web Development - server side here, client side it's Javascript or nothing pretty much
- Java is a good choice for server side still. Lots of frameworks, documentation and it's still massively used in industry
- alternatively you go the .Net route with ASP.Net and C#. Again very popular for Windows servers
- the other main choice these days is NodeJs on the server side. It's picking up a lot of popularity but isn't mature enough yet for industry
- other than that there is always PHP and Python with Django and Ruby on Rails. All good choices.

So really just pick one and go with it.
Was This Post Helpful? 0
  • +
  • -

#14 astonecipher   User is offline

  • Senior Systems Engineer
  • member icon

Reputation: 2940
  • View blog
  • Posts: 11,421
  • Joined: 03-December 12

Re: Which of these three languages to pick first?

Posted 07 September 2015 - 07:07 AM

The reason I say go with something you will be learning, your first language is tough. Figuring out the syntax and what the different parts are, understanding how a program should route, it's all the stuff you need to pay attention to. If you start with another language, like python or ruby and then you learn Java or Cpp you are even more lost.

It's not impossible to learn multiple languages at one time, it is just really difficult. Usually you will end up more frustrated and forget all of it.
Was This Post Helpful? 0
  • +
  • -

#15 BBeck   User is offline

  • Here to help.
  • member icon


Reputation: 792
  • View blog
  • Posts: 1,886
  • Joined: 24-April 12

Re: Which of these three languages to pick first?

Posted 07 September 2015 - 08:41 AM

Quote

Now I am wondering. Which of the above mentioned languages will be the best to really dive into programming?! Java, C# or C++?
I hard alot about C# and Java being more modern, flexible and alot easier to understand for newcomers. So many people suggest to start there and, once you've got a basic understanding for programming, move on to things like C++.
I hear others saying C++ is as hard as it gets and switching from there to another language is like a walk in the park. Because basically you are "walking down the hill". While the other way around could be quite painful since alot of comforte from C# and Java is missing in C++.

I know that at the end of the day it will not really matter, what language you choose. Because almost all people told me, once you know the principles of programming, you just have to learn another syntax to know another language.
But I want to know which is the best to start off with, because I don't want to learn for example Java now, and realize, that it is a pain in the *** to go to C++ from there, or I may loose interest in programming, because C++ demotivates me.


I pretty much agree with all that. C++ 11 and 14 are pretty "modern" but maybe in ease of use C# and Java are more modern. C# and Java are also easier to find a job with in the business world; there are not nearly as many C++ programmers out there because the business world tends to prefer to do things fast and dirty. "Why do it right when you can do it for half the cost in half the time and if it runs 10 times slower than it should you just dump another $1,000,000 on 10 new servers so that you can run it 10 times faster! Problem solved."

I have an unfair prejudice against Java that goes way back more than a decade ago when I tried Java and didn't like it. I haven't messed with Java in many many years and so I could not say what the current state of Java is. I think it's probably the most popular language in the business world right now.

I love C#. It's my go to tool when I want to get something done quickly.

I'm currently leaning mostly to C++. I love C++ too. I just consider it a very different tool than C#.

If you do a side by side comparison of C# and C++ 14, maybe C++ is "slightly" more difficult than C#. Maybe that's just because I've gotten used to both. But really, pointers, memory management, building, linking, and compiling, and maybe a couple other things are really the only things more difficult than C#.

C# was designed to make C++ programmers feel at home while providing a Microsoft alternative to Java since businesses were more interested in that than C++.

C++ is not as hard as it gets although it's really close. Assembly Language is as hard as it gets. Do object oriented Windows GUI apps in Assembly Language and you're pretty much getting as hard as it gets. I love Assembler too but many might consider me a masochist for that. I might actually be programming in Assembler except that when I started writing Windows GUI apps in Assembler, I quickly discovered that Assembler and C++ are almost the same thing. Most of the heavy lifting is actually done by the Win32 API and so both in C++ and Assembler you are just making calls to Win32 about 80% of the time to do all the work. Assembler there has the slight advantage of controlling the computer slightly better because you are making all the decisions on how to use the stack and heap and so forth.

The bottom line is that learning to write Windows programs in Assembler is very good for learning to program because that truly is the lowest level where you are literally controlling the hardware instead of just "programming". But again, these days in Windows the API is doing 80% of the work for you as opposed to making direct calls to the BIOS and such. But it's a great learning experience that every programmer should get around to eventually. And by eventually I mean after you learn to write simple Windows GUI apps in C++.

But once you go through that learning experience, there is no point to continue in Assembler. Only those who just simply truly love Assembler ever do. The primary disadvantage of serious programming in Assembler is that no one does it, there are few if any books on it, and it's very hard to find tutorials and help when you get stuck. Most of the time when you go looking for help, what you'll actually be finding is C++ stuff.

C++ is so close to Assembler that I prefer to do C++ just because there is far more help out there for working in C++, I'm not sure how to do Object Oriented Programming in Assembler (I could probably figure it out but never have and it would still be a lot more difficult I imagine), and there's basically no advantage to using Assembler over C++.

I've heard straight from the lips of industry insiders that the MS C++ compiler is so efficient that it is nearly impossible to write better machine code yourself. (Machine Code and Assembler are practically the same thing. Machine Code is literally nothing but byte values, or numbers. Assembler translates 1 to 1 into Machine Code in order to make the code readable. It's far easier to understand that "Add BX,11" means to add 11 to whatever value is in the BX register than "F4 AD 0B" which means the exact same thing. Note that's not the actual codes but ones I made up for the example, but it makes the point.) So, I suppose if you wanted to get really hard core you could program in Machine Code, but no one does that pretty much ever since Assembler is literally the exact same thing but more easy for humans to understand. And C++ is only a step up from that, which is one of the reasons it can be at times a bit difficult with it's pointers and such.

Anyway, what makes C++ so much harder and time consuming than C# is that C++ doesn't natively do .Net and natively do the Windows GUI out of the box the way C# does. If I want to make a Windows app in C# I just select the template to start a Windows forms project and I have at least a working Window almost instantaneously.

In C++, it naturally wants to do Console apps which today have few advantages since the Console runs inside Windows and you're really doing a Windows app without the GUI.

So, the problem with C++ is that you have to get other APIs and such involved to do anything. With C#, you download XNA and you're doing basic game programming stuff in C# in a few minutes. To do even basic game programming in C++ for Windows you are going to have to use Win32 and DX11 which are both subjects that are every bit as complicated to learn as C++ and probably more so really.

So, C++ and C# are very comparable in how difficult they are to learn and once you learn one the other will be a lot easier to learn with going from C++ to C# maybe being a little easier although C++ programmers may have problems with OOP. But the big difference between the two is when you start trying to write Windows GUI apps and games.

You could also use other libraries with C++ that are not as difficult as learning DX11 but all games are at their core either OpenGL or DX. (DX12 is actually the latest incarnation of DX but you have to have a DX12 graphics card and I think it only runs on Win10 and so you have to have that too. DX11 will run on Win7.) So something like SDL may be an easier library to learn and great for 2D games, but I believe under the hood it's making calls to OGL to get the work done.

But my point there is that if you do C++, you have to learn a bunch of APIs to do what is really easy in C#. And it's good to know how to do Windows programming and such at the lower level, but it's a lot more work. (I think Win8 and 10 have left the Win32 API behind now and use WinSDK but I'm still doing Win7. In fact, I'm trying to learn Linux and OGL now.)

Now the big advantage of learning C# first is that it's Object Oriented. Maybe it's just the way I was taught C in college and later kind of picked up C++ because that's what Visual Studio is geared towards. But at first, I just created a couple classes and thought I was doing OOP. I understood the basic concepts like inheritance and polymorphism, but in hind sight I wasn't really "getting it". I think that's common with programmers who actually learn C and since they're writing C code in Visual Studio's C++, they think they're doing C++. In many ways, it seems that you are encouraged down that path.

But then I started doing C# a little for work and mostly for game programming in XNA and I learned to start thinking in Object Oriented ways. You can't help it in C# because everything is so highly Object Oriented. C# was designed from the beginning to be extremely Object Oriented. C++ was really C (a non Object Oriented language) that later got objects added to it. The bottom line is that it's much easier to not do OOP in C++ than it is in C#. Learning C# will make you a lot better at OOP thinking. And so when you then go back to C++, your mind is in the right place to do OOP in C++.

C++ back to C# is maybe a little bit "walking back down hill" but it's not a very steep hill unless you learned stuff like Win32 and DX (and that's such a steep hill that it makes a very strong case for learning something like C# first).

Personally, I feel that C# is a better place to start out than C++. You in many ways will feel like you're going backwards if you go from C# to C++ because you're going back to Console apps and relearning so much of what you already know. If you learn C++ and then go to C# without learning deeper level APIs, you'll have maybe a better knowledge of how things work like pointers and such, but to really get that, you need to learn C++ Console apps and then learn Assembler Console apps, and then go to C# where you will have a much deeper understanding of what it really means when C# passes a parameter by reference. Or you could learn to do it in C# and then go learn to do the same thing in C++ and then learn to do it Assembler to truly understand it, but then in C# you'll go from writing Windows apps back to doing basic Console apps in C++ and Assembler and will have to get into other APIs and SDKs in order to do that stuff with the GUI and such.

Java is probably a fine choice. (I just haven't done any Java in so long that I really have little idea of what it is these days.) I just saw some stuff the other day about 3D game programming in Java.

You can do 2D game programming in just about anything these days. Even HTML5 is now able to do 2D game programming. Computers have just become so fast and everything is built on top of DX or OGL these days and so there's just almost nothing these days it seems that cannot do 2D game programming. 3D game programming is where your options become a little more limited as it tends to be far more taxing on the GPU and thus doesn't run as fast.

It really goes back to the fact that it doesn't really matter so much which language you learn first. You'll eventually move on and every language was created for a reason and has its own advantages and disadvantages. Any language you learn will make the next one easier to learn no matter which languages they are or what order.

I might also mention that C++ programming was built up in my mind to mythical proportions by those around me. I regret that I waited so many years to learn C++ after having learned BASIC and then Pascal and even a little Assembly Language. I got this idea it was incredibly difficult. And looking back on it, it was not half as hard as I imagined although maybe Win32 was. lol If you've been doing C# for about a year, you're probably ready for C++. The hardest part of C++ is probably pointers and memory management. Most languages, like C#, protect you from that because the subject is a little more difficult and your programs crash in a blaze of glory if you don't get this right. But even that is learnable. It just takes time and a lot of study. But once you get it, it's not that hard.

This post has been edited by BBeck: 07 September 2015 - 08:47 AM

Was This Post Helpful? 1
  • +
  • -

  • (2 Pages)
  • +
  • 1
  • 2