[SOLVED] Which programming language is mostly used today for developing corporate software
ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
View Poll Results: Which one do you choose and why?
Which programming language is mostly used today for developing corporate software
Basically, name of the subject says everything... I'm wondering which language is mostly used today for developing "serious" (corporate) software. Which are pros and cons for each? I'm not trying to start some flaming war... nothing similar!
I just want to hear your thoughts about those programming languages. If somebody has a good book regarding any of those languages, please, share the title and the author.
Thank you.
NOTE: if anybody thinks I should add another language, please, do recommend it!
What I like about it:
- OO
- Lots of great libraries (Qt, Boost, GTK+)
- It makes sense to me and|because it's like Perl, the language I started programming in
What I don't like about all the others:
Java:
- Slow
- Sun
- It's a lot of typing.
C:
- It feels too '80s
- No OO
- I'm bad at it :P
C#:
I've never tried programming in C#.
Those are my personal opinions. Bear in mind that all of these are Turing Complete languages therefore anything you can do in one you can do in any of them. So it really comes down to your (or your Boss's) preferences.
...You should change the poll question to reflect this...
Done!
Quote:
Originally Posted by jarubyh
C++
What I like about it:
- OO
- Lots of great libraries (Qt, Boost, GTK+)
- It makes sense to me and|because it's like Perl, the language I started programming in
Those are my personal opinions. Bear in mind that all of these are Turing Complete languages therefore anything you can do in one you can do in any of them. So it really comes down to your (or your Boss's) preferences.
I would say C or C++, but it depends on the corporation and their needs. I voted for C, it is much less bloated and has the best backwards compatibility.
I think it depends a great deal on the corporation you're talking about. Most companies I've worked for/with have a HUGE investment in Java. Over the past few years a lot of the Microsoft shops have done a lot in C#. I've also seen a lot of serious bioinformatics infrastructure written in Perl.
Am I misremembering, or did you change the question after I voted?
In the company where I work, we use mostly C++ but also other languages including C and C#. In the department where I work, we use exclusively C++ for the products we develop but several developers use Matlab's programming language for internal programs written for research purposes.
I voted for C++ based on the original question. I think C++ is the only language appropriate for developing large projects. The bigger the project, the more reasons there are that all other languages fail.
But I think C# is the language currently used most for developing commercial software. I think MS has a lot of clout and has used that clout to promote C#. With C# more than other languages, they are able to push the standard around to disadvantage non MS platforms. I personally think C# is a rotten language in general, but even if it were a good language I would prefer a language whose standard is less under MS's control.
Am I misremembering, or did you change the question after I voted?
You are not misremembering, you're wright... i did change the question. Main reason for editing the thread name is that I didn't want to start any discussion between the members which are fans of different languages (first name was "C vs C++ vs C# vs Java"). My apologies if you think I'm trying to mislead you. I just wanted some advice which language to start learning first... I do have some knowledge in C/C++ but nothing I could brag with! Of course I will, eventually, start learning other languages.
Quote:
Originally Posted by johnsfine
...I think MS has a lot of clout and has used that clout to promote C#. With C# more than other languages, they are able to push the standard around to disadvantage non MS platforms...
True... But somewhere I've read that there is a open source cross platform software for running .NET apps. I believe it is called mono or something like that
I do like C++, and the fact it is object oriented... Only thing I'm concerd is that you can cause a lot of memory leaking if you don't know what you are doing.
Thank you for your opinion and, again, sorry if changing the thread name offended you somehow!
I do like C++, and the fact it is object oriented... Only thing I'm concerd is that you can cause a lot of memory leaking if you don't know what you are doing.
In C or C++, the whole problem of object ownership is left up to the programmer. In most other languages that is handled by the environment. I agree that is often a big burden on the programmer and big source of errors for programmers attempting tasks that are a bit beyond them.
C and C++ have extremely flexible pointer support (beyond most other programming languages). That is a flexibility I would hate to try to program without. But it is a flexibility that makes life much harder for any automatic garbage collection system.
Even without the flexibility of C pointers, any "one size fits all" system for deciding when to delete objects will be terribly wrong for at least some situations. C and C++ make the programmer take that responsibility, which means letting the programmer select a solution that fits the specific requirements of each situation.
Quote:
Thank you for your opinion and, again, sorry if changing the thread name offended you somehow!
Not offended, just clarifying the meaning of my vote. I voted for the language (C++) that should be used for most serious projects, not the language (C#) that I estimate is most used for current serious commercial projects.
BTW, you mentioned C++ specifically (not C) for memory leak issues. The memory management issues are identical between C and C++. The various solutions are syntactically easier in C++ than C. So given similar projects, C should be more prone to memory leaks than C++.
There may be an attitude difference. C++ has so much more implicit functionality (things the compiler takes care of for you by default) that it may be easier to forget it doesn't manage object ownership.
Quote:
I just wanted some advice which language to start learning first.
I think a decent subset of C++ makes a great beginner language, much better than C.
Use std::vector, std::string, std::cin and std::cout as black box functionality without even trying to learn the C++ language features that make them possible. (Much later go back and learn those language features).
Delay learning about C strings (char arrays used like strings) and all their associated functions until you are much more comfortable with pointers and C arrays in other contexts. Maybe delay learning scanf indefinitely.
I would use struct rather than class for all objects in beginner C++ and delay learning about public vs. private vs. protected. But I expect a lot of other experts would be upset at such a proposal.
...Use std::vector, std::string, std::cin and std::cout as black box functionality without even trying to learn the C++ language features that make them possible. (Much later go back and learn those language features).
Delay learning about C strings (char arrays used like strings) and all their associated functions until you are much more comfortable with pointers and C arrays in other contexts. Maybe delay learning scanf indefinitely.
I would use struct rather than class for all objects in beginner C++ and delay learning about public vs. private vs. protected. But I expect a lot of other experts would be upset at such a proposal.
I'm fairly familiar with classes and the structures. I believe I will accept your suggestion(s)... Start (resume) with the C++ and master the pointers and arrays. Then open the "black box" and learn features that do make possible vectors, strings, input and output.
Thank you for your time and your suggestions johnsfine! You've been very helpful. Also big thanks to all other members that replied and voted in the poll!
I'm fairly familiar with classes and the structures. I believe I will accept your suggestion(s)... Start (resume) with the C++ and master the pointers and arrays. Then open the "black box" and learn features that do make possible vectors, strings, input and output.
I found it helpful to find particular problems that seemed difficult to solve, then learn all of the things that would go into solving it. For example, if you set out to create a program that parses structured data then you'll have to learn a lot of the important concepts of the language you're using along the way. You'll also run into problems you hadn't imagined before, which might not come up otherwise. You don't actually have to complete that solution; it's just kind of a place-holder and you'll have other ideas stemming from the smaller accomplishments.
Kevin Barry
I'm fairly familiar with classes and the structures.
In C++ those are two names for the same thing. C++ has two keywords struct and class but the difference is only whether the default is public or private.
A struct can have public, private and protected members, can inherit from base classes, can have virtual functions and constructors and a destructor and anything else a class can have.
A class could have all public members, all POD, like a C structure.
Quote:
Originally Posted by Z0K4
Start (resume) with the C++ and master the pointers and arrays.
In most situations where a C programmer would use an array, a C++ programmer would use std::vector. So I would consider C arrays to be slightly beyond beginner level in an appropriate introduction to C++. Learn how to use std::vector. Later learn about C arrays as a more efficient but less convenient alternative to std::vector for the few cases such is justified.
My earlier comment suggested delaying learning about C strings until after learning about C arrays. But that doesn't suggest learning about C arrays too early. A C beginner needs to learn about C strings early because beginning programming without strings is lame. So a C beginner usually misunderstands C strings (more than any other feature of C). A C++ beginner can learn std::string and leave C strings until much later.
I found it helpful to find particular problems that seemed difficult to solve, then learn all of the things that would go into solving it. For example, if you set out to create a program that parses structured data then you'll have to learn a lot of the important concepts of the language you're using along the way. You'll also run into problems you hadn't imagined before, which might not come up otherwise. You don't actually have to complete that solution; it's just kind of a place-holder and you'll have other ideas stemming from the smaller accomplishments.
Kevin Barry
+1 Thank you Kevin!
Quote:
Originally Posted by johnsfine
In C++ those are two names for the same thing. C++ has two keywords struct and class but the difference is only whether the default is public or private.
Ohhhh... I see!
Quote:
Originally Posted by johnsfine
In most situations where a C programmer would use an array, a C++ programmer would use std::vector. So I would consider C arrays to be slightly beyond beginner level in an appropriate introduction to C++. Learn how to use std::vector. Later learn about C arrays as a more efficient but less convenient alternative to std::vector for the few cases such is justified. My earlier comment suggested delaying learning about C strings until after learning about C arrays. But that doesn't suggest learning about C arrays too early. A C beginner needs to learn about C strings early because beginning programming without strings is lame. So a C beginner usually misunderstands C strings (more than any other feature of C). A C++ beginner can learn std::string and leave C strings until much later.
Wow... I believe I learned more from you about C/C++ features than I learned from my professors! Thanks.
OK, I didn't read everything up there, but I'm a bit surprised that no one mentioned any WEB stuff, since we're all supposed to be moving to the cloud and what not!....
Isn't Javascript important? I personally skipped C++ in favour of it.
Well... JS is client side scripting language. I think that server side languages are more important (php, asp), but that is just my opinion. Cloud computing might be good for someone, but that is definitely not good enough for hardcore gamers, scientists, or any other users that want or need maximum PC performance. If you want max performance you need good hardware, and even better software (drivers), and that is where C/C++ overruns every other language out there.
Thank you for your reply!
BTW... I also like JavaScript (but not as much as C or C++, even though I'm still beginner)!
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.