• Post Reply Bookmark Topic Watch Topic
  • New Topic

Java vs C  RSS feed

 
Lilou Laure
Ranch Foreman
Posts: 92
10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I would like to know , right now, which domain is it good to take up a job in ? Is it adviseable to go a Java stream or a C based job. Because as months and years go by, there are a lot of new languages and technologies coming up and being used widely too. So will there be high scope for c  or c++ down the lane , years later, as it will be for Java ?  If 2-3 years later, I can show experience in Java, I feel I would have opportunities easily . But if I starting working now in C or C++ , will it be the same after a few years.
 
Peter Schulze
Greenhorn
Posts: 6
Eclipse IDE Netbeans IDE Oracle
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Lilou, well it dependents on you current employment status and education, region where you live , experience in industry, but current trends is more Java less Other languages. To be more practical for example banking and insurance industry use JEE a lot, but to master JEE it will take twice the time if you compare it with android. Sure C++ jobs exists too, but do you really want to work in such environment where pointers operator exists and memory leakage possible and where you have different C/C++ standards one for MS , GNU , ANSI? DO you like debugging the stuff out? In my opinion Java will stay for long time and if a new language will arrive it will probably use already existing JVM, so on that front no further worries available. Then another question about type of software development you wish to go into, there frontend , backend, embedded, security, networking and etc development.
 
Pete Letkeman
Ranch Foreman
Posts: 673
18
Android Chrome IntelliJ IDE Java MySQL Database
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I very strongly suspect that there will almost always be jobs in C/C++ as well has Java (Kotlin, Scala etc).
Many of today's operating systems were created in C/C++ and many of the top rated games use C/C++ for a majority of the work.
Both Android and IOS can be programmed using a variant of C. However you can program in Java for Android as well.
I suspect that you will find that many languages try to take parts of C and improve upon it as not everyone enjoys pointer debugging etc.

Recently I saw a presentation by JetBrains (IntelliJ) who said that their new IDE for creating C programs has been programmed using Java for the most part.
IntelliJ and Android Studio, which is based on IntelliJ have been programmed in Java along with other tools I'm sure.
Eclipse IDE, Visual Studio IDE, Unity, Unreal Engine, most of AutoDesk products, Blender 3D, Python, Linux and more have been programmed using a variant of C.
It's almost a guarantee that every operating system will support a variant of C as a programming language.
Java on the other hand is not on every operating system and cannot be used everywhere C can be used.

From what I understand there is also a fairly big gap between Microsoft C# and C++ and I'm not too sure about the availability of certifications for C developers.

If you are only looking for a job, then I suggest that you pick whichever one that you like better.
However if you are looking for a career then look at what you want to be doing in the next X years.

Do you think that there will be jobs that you C or Java in the next X years that you would like to be doing?
Not everyone enjoys working in C or Java for that matter after they have a few projects done they usually pick a favorite.

Have you created any real life stand alone programs in C or Java?
What if you creating some thing on the smaller scale like Tic Tac Toe or Hangman in both Java and C?
You could find this experience very rewarding as you see how the two languages differ and how common elements like loops are handled.
 
Campbell Ritchie
Marshal
Posts: 55772
163
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Remember that both languages mentioned are old; Java® is about 21 and C over double that age, and both are still going strong. If you search for the Tiobe index you will find they have been right up near the top for years (as has C++ too). Other old languages still in the top fifty include Assembly Ada LISP Fortran and COBOL. I think that languages which have stood the test of time are going to be there for a bit longer, at least.
C is good for backend stuff. Operating systems, database management programs, etc, are written in C/C++ and similar languages. What are you interested in? Can you cope with pointer arithmetic? Can you work out where memory is in use, or where it is unnecessarily in use? Can you write clean object‑oriented code with clear intent? There used to be threads on this website about, “Is Java® too easy for beginners to learn?” saying that difficult features like pointer arithmetic allowed one to identify who will go on to be a successful programmer. But with the number of people I see who can't write objects, I am beginning to think that writing objects is no easier than pointer arithmetic. It is simply a different sort of task.

As for jobs: in ten years, the only language used will be one of our weakly reversible languages. You will have to learn weakly reversible programming to retain your job at all. Can you learn a new paradigm and a new language? That is a skill just as important as being able to program Java® or C now.

This discussion would fit better in our Jobs forum.
 
Campbell Ritchie
Marshal
Posts: 55772
163
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
A few minutes ago, I wrote:. . . in ten years, the only language used will be one of our weakly reversible languages. . . .
That may have been a slight exaggeration.
 
Campbell Ritchie
Marshal
Posts: 55772
163
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Pete Letkeman wrote:. . . there is also a fairly big gap between Microsoft C# and C++ . . .
C# and C++ are different and unrelated languages; C# is an object language which is probably more similar to Java® than anything else. C++ is a procedural language, an enhancement of C, which also supports object features. To a large extent, the syntax of C++, C#, and Java® were all developed from the syntax of C, so there is a superficial resemblance between programs written in all those languages.
 
Lilou Laure
Ranch Foreman
Posts: 92
10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Campbell Ritchie wrote:Remember that both languages mentioned are old; Java® is about 21 and C over double that age, and both are still going strong. If you search for the Tiobe index you will find they have been right up near the top for years (as has C++ too). Other old languages still in the top fifty include Assembly Ada LISP Fortran and COBOL. I think that languages which have stood the test of time are going to be there for a bit longer, at least.
C is good for backend stuff. Operating systems, database management programs, etc, are written in C/C++ and similar languages. What are you interested in? Can you cope with pointer arithmetic? Can you work out where memory is in use, or where it is unnecessarily in use? Can you write clean object‑oriented code with clear intent? There used to be threads on this website about, “Is Java® too easy for beginners to learn?” saying that difficult features like pointer arithmetic allowed one to identify who will go on to be a successful programmer. But with the number of people I see who can't write objects, I am beginning to think that writing objects is no easier than pointer arithmetic. It is simply a different sort of task.

As for jobs: in ten years, the only language used will be one of our weakly reversible languages. You will have to learn weakly reversible programming to retain your job at all. Can you learn a new paradigm and a new language? That is a skill just as important as being able to program Java® or C now.

This discussion would fit better in our Jobs forum.



Being a fresher , what should I go for ? can you suggest one out of java and C/C++ ? I have done OCA 8 in Java already.
 
Lilou Laure
Ranch Foreman
Posts: 92
10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Peter Schulze wrote:Hi Lilou, well it dependents on you current employment status and education, region where you live , experience in industry, but current trends is more Java less Other languages. To be more practical for example banking and insurance industry use JEE a lot, but to master JEE it will take twice the time if you compare it with android. Sure C++ jobs exists too, but do you really want to work in such environment where pointers operator exists and memory leakage possible and where you have different C/C++ standards one for MS , GNU , ANSI? DO you like debugging the stuff out? In my opinion Java will stay for long time and if a new language will arrive it will probably use already existing JVM, so on that front no further worries available. Then another question about type of software development you wish to go into, there frontend , backend, embedded, security, networking and etc development.


I have no experience, I am an under graduate fresher. And no I don't want to mess up with too much of pointer arithmetic and wish to keep it simple as in java 
 
Stephan van Hulst
Saloon Keeper
Posts: 7817
142
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
My stance is that it doesn't really matter. You shouldn't learn a language by heart, but rather programming concepts. Both Java and C have very valuable concepts to teach, some that the other language can't teach. Good companies to work at don't require new employees to know all the ins and outs of a specific language, but rather that the employee is familiar with abstract concepts and can apply them to any new language, given some time to become familiar with the language.

When I was being interviewed at the company I still work for now, they set up an assignment I could work on for one full workday, to see how I would do. They had misinterpreted my CV, and thought I had several years of experience with C#. I did not, and I had to learn the language during my assignment. I didn't get the entire assignment done, but I impressed them nonetheless because of the amount I got done while also learning a new language. That's because C# didn't use any abstract concepts that I wasn't already familiar with from using Java, C++ and Haskell.

I think that "Which language should I learn" is the wrong question to ask. Instead, you should ask "Which programming concepts should I learn, and in which languages can I find them". There is not a single correct answer, but my personal preference would be: "Learn object oriented concepts from Java. Learn functional concepts from Haskell. Learn about pointer arithmetic and variable aliasing from C++. Learn about ownership from Rust. Learn about relational data from SQL. Learn about markup from XML and HTML". The list goes on. There is no one language that does everything well. I challenge you to write a web application backend in C, or a device controller in Java.

Another thing to consider is that knowing a language might only be half of the battle. Some employers are interested in employees that are familiar with specific frameworks. For instance, there are many Java software houses that want programmers that know Spring and Hibernate, and there are many C# software houses that want programmers that know ASP.NET MVC and Entity Framework. Becoming familiar with such frameworks might require much more practice than becoming familiar with the languages that use them.

The answer to your question depends completely on what YOU want to do.
 
Pete Letkeman
Ranch Foreman
Posts: 673
18
Android Chrome IntelliJ IDE Java MySQL Database
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Aside from Java and/or C how about your knowledge of databases? Many things are driven by databases now a days and that skill will probably be in demand for many years to come.
A free, feature limited database that you can experiment with is SQLite.
You could learn how to do things in SQLite such as:
  • Create tables
  • Create indexes and primary keys
  • Update tables
  • Delete tables
  • Edit tables
  • Create triggers
  • Normalize the data structures
  • Retrieve data from the tables
  • Update data in the tables
  • Delete data from the tables

  • Going back a bit, if you create a game like Hangman, then you can use SQLite to keep track of:
  • times played
  • times won
  • times lost
  • time of day played
  • number of bad letters guessed
  • number of good letters guessed
  • etc

  • I think it's kind of hard to suggest one or the other without a specific goal in mind. Like Stephan stated:
    Stephan van Hulst wrote:The answer to your question depends completely on what YOU want to do.
     
    Stephan van Hulst
    Saloon Keeper
    Posts: 7817
    142
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Lilou Laure wrote:And no I don't want to mess up with too much of pointer arithmetic and wish to keep it simple as in java

    Java is not simple. C is much simpler than Java is. C just does a lot less to protect you from yourself. It appears you are more interested in high level than low level language languages. I've noticed that functional languages are getting more and more traction in recent years. Since you already have some experience with Java, you might want to consider a purely functional language to challenge yourself and learn a radically different programming paradigm. I've mentioned Haskell before. Haskell is not popular with many employers, but you will gain a wealth of understanding of functional concepts in general when you get some experience with Haskell.
     
    Paul Anilprem
    Enthuware Software Support
    Ranch Hand
    Posts: 4097
    33
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Lilou Laure wrote:
    Peter Schulze wrote:Hi Lilou, well it dependents on you current employment status and education, region where you live , experience in industry, but current trends is more Java less Other languages. To be more practical for example banking and insurance industry use JEE a lot, but to master JEE it will take twice the time if you compare it with android. Sure C++ jobs exists too, but do you really want to work in such environment where pointers operator exists and memory leakage possible and where you have different C/C++ standards one for MS , GNU , ANSI? DO you like debugging the stuff out? In my opinion Java will stay for long time and if a new language will arrive it will probably use already existing JVM, so on that front no further worries available. Then another question about type of software development you wish to go into, there frontend , backend, embedded, security, networking and etc development.


    I have no experience, I am an under graduate fresher. And no I don't want to mess up with too much of pointer arithmetic and wish to keep it simple as in java 


    Since you are still in (or just out of) college, how are your grades? Assuming you are a CSE major, how good are you with the theory? A career in C/C++ requires a solid grounding in computer science fundamentals. Java/C#, not so much.


    >And no I don't want to mess up with too much of pointer arithmetic and wish to keep it simple as in java
    If something is too easy, you can rest assured that there is no money in it. Don't be afraid of pointers (or any hairy stuff that you might encounter in Java). Take whatever you find difficult or too complicated head on and you will have a wonderful career in programming
     
    Campbell Ritchie
    Marshal
    Posts: 55772
    163
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    We thought from the question that you had already graduated. As an undergraduate, you shouldn't really be thinking of what will be best for jobs yet. Stephan is right: learn the concepts of programming, and about the different paradigms. If your course is any good, there will be enough to keep you busy. If you can learn Java® successfully, you will be able to learn C successfully and vice versa.
     
    Pete Letkeman
    Ranch Foreman
    Posts: 673
    18
    Android Chrome IntelliJ IDE Java MySQL Database
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    For what it's worth StackOverflow has recently released their Developer Survey Results 2017 which you can see here https://insights.stackoverflow.com/survey/2017
    Stack Overflow wrote:Each year since 2011, Stack Overflow has asked developers about their favorite technologies, coding habits, and work preferences, as well as how they learn, share, and level up.
    This year represents the largest group of respondents in our history: 64,000 developers took our annual survey in January.

    It appears to compare developer occupations, geographical areas, gender, programming language usage and more.
     
    Lilou Laure
    Ranch Foreman
    Posts: 92
    10
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Campbell Ritchie wrote:We thought from the question that you had already graduated. As an undergraduate, you shouldn't really be thinking of what will be best for jobs yet. Stephan is right: learn the concepts of programming, and about the different paradigms. If your course is any good, there will be enough to keep you busy. If you can learn Java® successfully, you will be able to learn C successfully and vice versa.


    Of course I have graduated ! 
     
    Lilou Laure
    Ranch Foreman
    Posts: 92
    10
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Pete Letkeman wrote:For what it's worth StackOverflow has recently released their Developer Survey Results 2017 which you can see here https://insights.stackoverflow.com/survey/2017
    Stack Overflow wrote:Each year since 2011, Stack Overflow has asked developers about their favorite technologies, coding habits, and work preferences, as well as how they learn, share, and level up.
    This year represents the largest group of respondents in our history: 64,000 developers took our annual survey in January.

    It appears to compare developer occupations, geographical areas, gender, programming language usage and more.



    a very very small proportion of females it shows for developers   
     
    Stephan van Hulst
    Saloon Keeper
    Posts: 7817
    142
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Yes, so far IT has mainly been a male dominated subject area. In recent years there's been a stronger drive to attract female developers though, so I think it's getting better.
     
    Pete Letkeman
    Ranch Foreman
    Posts: 673
    18
    Android Chrome IntelliJ IDE Java MySQL Database
    • Likes 2
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    According to the StackOver Flow Survey (https://insights.stackoverflow.com/survey/2017) results:

    Most Popular Programming Languages
    Time Frame: January 2017 - August 2017
    #OverallWeb DeveloperDesktop DeveloperSysadmin/DevOpsData Scientist/Engineer
    1.JavaScript 62.5%JavaScript 81.7%SQL 60.2%JavaScript 73.9%JavaScript 58.7%
    2.SQL 51.2%SQL 60.4%JavaScript 60.0%SQL 63.9%SQL 58.0%
    3.Java 39.7%C# 38.1%C# 59.4%Java 41.4%Python 45.0%
    4.C# 34.1%Java 37.9%Java 39.9%Python 38.9%Java 44.4%
    5.Python 32.0%PHP 33.8%C++ 31.3%PHP 37.8%C# 35.2%
    6.PHP 28.1%Python 25.3%Python 25.4%C# 35.1%C++ 32.0%
    7.C++ 22.3%TypeScript 14.4%PHP 21.6%C++ 20.7%PHP 24.6%
    8.C 19.0%C++ 12.6%C 21.3%C 18.5%C 24.0%
    9.TypeScript 9.5%Ruby 11.1%TypeScript 12.1%Ruby 14.0%R 11.2%
    10.Ruby 9.1%C 10.3%VB.NET 12.0%TypeScript 13.3%TypeScript 9.2%

    As you can see SQL, JavaScript, Java, C#, C++ and C are in the top ten across the board.
    It would appear as though knowing those languages would make you appealing for employers.

    So it comes down to what you want to do, which is what Stephan van Hulst stated in an earlier post.
     
    Lilou Laure
    Ranch Foreman
    Posts: 92
    10
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    thanks all 
     
    Randy Maddocks
    Ranch Hand
    Posts: 148
    3
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    If I may add, something that appears to becoming more and more important is not just technical/development skills, but people skills (or soft skills as it is also known), to make yourself more employable. I work in the head office of a mid-size insurance company, and having the necessary people skills is trending towards being as critical as having technical/development skills.  I certainly can't speak for all industries, but the more I research this, the more I see it emerging as a must-have skill. And it makes sense, right? Developers, for the most part, have to interact with people from different aspects of a business. You can be a great developer, but if you cannot effectively interact with people (e.g. asking the proper questions to determine their requirements for a new or existing application, being able to address challenges that may arise from conflicting views or opinions), some may see that as a detriment.

    I recently came across this article that indirectly reinforces my point: Forbes article on people skills

    Another article I came across on this subject (pertaining more to a web developer): Web Developer - top people skills

    Hope this is helpful to you Lilou, a belated congratulations on your graduation, and all the best in your career.
     
    • Post Reply Bookmark Topic Watch Topic
    • New Topic
    Boost this thread!