Author Topic: Which programming language?  (Read 22506 times)

0 Members and 1 Guest are viewing this topic.

Offline sacherjj

  • Frequent Contributor
  • **
  • Posts: 993
  • Country: us
Re: Which programming language?
« Reply #25 on: June 15, 2011, 03:10:51 am »
C# will keep you out of trouble for a beginner.

Python is obviously a fanboy language.  Yahoo Maps runs by the software written by fanboys.  Many parts of Google were also written by fanboys.  Load balancing and score keeping for Battlefield 2, also written by fanboys.  Civilization 4, also written mostly by Python fanboys.  Most of Industrial Light and Magic production use Python, but movie folks are always fanboys.  I'm a fanboy too, because it is just so damn quick to write things...
 

Offline Mechatrommer

  • Super Contributor
  • ***
  • Posts: 11714
  • Country: my
  • reassessing directives...
Re: Which programming language?
« Reply #26 on: June 15, 2011, 07:21:11 am »
i'm a vb fanboy then! psi is delphi fanboy. the one who write in particular language is a fanboy as well, i guess :P
« Last Edit: June 15, 2011, 07:23:38 am by Mechatrommer »
Nature: Evolution and the Illusion of Randomness (Stephen L. Talbott): Its now indisputable that... organisms “expertise” contextualizes its genome, and its nonsense to say that these powers are under the control of the genome being contextualized - Barbara McClintock
 

Offline Psi

  • Super Contributor
  • ***
  • Posts: 10394
  • Country: nz
Re: Which programming language?
« Reply #27 on: June 15, 2011, 07:55:42 am »
i'm a vb fanboy then! psi is delphi fanboy. the one who write in particular language is a fanboy as well, i guess :P


hehe, yeah


Well.. not a fanboy, fanboys tend to be hardcore against the competing products.
I have nothing against Visual Studio or the many other programming IDEs or languages.  

Though, one of my favorite apps is written in Delphi...  Altium Designer  :D, bet you didn't know that
« Last Edit: June 15, 2011, 12:15:47 pm by Psi »
Greek letter 'Psi' (not Pounds per Square Inch)
 

Offline sacherjj

  • Frequent Contributor
  • **
  • Posts: 993
  • Country: us
Re: Which programming language?
« Reply #28 on: June 15, 2011, 12:21:09 pm »
Though, one of my favorite apps is written in Delphi...  Altium Designer  :D, bet you didn't know that

I was thinking about buying a license.  But used the money to buy a car instead.   :o

So I use Eagle.  :)
 

Offline Mechatrommer

  • Super Contributor
  • ***
  • Posts: 11714
  • Country: my
  • reassessing directives...
Re: Which programming language?
« Reply #29 on: June 15, 2011, 01:04:17 pm »
Though, one of my favorite apps is written in Delphi...  Altium Designer  :D, bet you didn't know that
I was thinking about buying a license.  But used the money to buy a car instead.   :o
So I use Eagle.  :)
i dont spend a dime. nor car nor alt!um. i use free diptrace instead. if i can live another 100years, sure i can build something similar with vb :P
Nature: Evolution and the Illusion of Randomness (Stephen L. Talbott): Its now indisputable that... organisms “expertise” contextualizes its genome, and its nonsense to say that these powers are under the control of the genome being contextualized - Barbara McClintock
 

Offline shadewind

  • Frequent Contributor
  • **
  • Posts: 329
Re: Which programming language?
« Reply #30 on: July 17, 2011, 01:07:44 am »
Obviously I need to learn a PC language but there are so many to choose from!
So I'm hoping some of you more experienced engineers can give me some advice on which to pick.

Don't pick. Learn all the common ones. No, this is not a joke. You want to become a professional, and valuable professionals aren't monolingual. They find their way in all the common languages. And it doesn't matter if you like them or not.

After you have done the common ones (and no, Python is not a common one, just a fanboy one), you can still look into the hype stuff and fag of the month.

And learn the platform/OS. A programming language is useless if you can't efficiently make use of the platform/operating system. And just like with programming languages, learn more than one platform if you want to become a professional.

The recommendation to not care about the language, but pick an IDE is absolutely rubbish. Unless you want to become a "programmer" who can't tell his arse from his head and starts to panic if he needs to use something else than the only IDE running on the only platform and OS he uses since the last 10 years. A disgusting lot of programmers I may add, because they typically claim they know the one true way to do things. Avoid becoming that hero code monkey type of programmer.
+1 for pretty much everything here.

Learn lots of languages and you'll pretty soon learn that they all suck in their own unique way. The more languages you learn, the easier it will be to learn new ones. Then use whatever language is most appropriate for the job (i.e. don't use .NET for an MCU).


Someone mentioned Qt licensing is expensive for commercial use which is not true anymore since there is the option of LGPL licensing nowadays.
 

Offline Harvs

  • Super Contributor
  • ***
  • Posts: 1204
  • Country: au
Re: Which programming language?
« Reply #31 on: July 19, 2011, 10:44:28 am »
I guess by now you're at least a year or two through your degree, so by now you are probably looking at your target area's of industry for future jobs, right?  If not you should be...

So leaveraging off that, your goal doing a engineering degree isn't just the be the most educated well rounded professional you can be, but also to be the most attractive to the industry/company you're looking to target.

Therefore my suggestion isn't going to be a language or IDE.  I would suggest you find out what the industry/company you want to be working for uses, and at least learn that.  If you do your research right you'll probably find half a dozen different languages and test tools around companies you're going to be targeting, so learn them all...
 

Offline gregariz

  • Frequent Contributor
  • **
  • Posts: 545
  • Country: us
Re: Which programming language?
« Reply #32 on: July 20, 2011, 03:37:18 am »
Not much has changed since the time of the great computer flame wars of the 90's.... asking a question like this still invokes religious responses.

My advice since I dont care about religion... if its for you.. use what ever is most comfortable to your brain. If its for your employer.. you have no choice.
 

Offline sacherjj

  • Frequent Contributor
  • **
  • Posts: 993
  • Country: us
Re: Which programming language?
« Reply #33 on: July 20, 2011, 01:54:46 pm »
My advice since I dont care about religion... if its for you.. use what ever is most comfortable to your brain. If its for your employer.. you have no choice.

Often using the programming language that is most comfortable for your brain is a bad thing.  It is a great idea to force yourself to use quite a few different languages.  It will make you a better programmer in the end.  A book like 7 Languages in 7 Weeks is a good way to do this.
 

Offline ToBeFrank

  • Regular Contributor
  • *
  • Posts: 234
  • Country: us
Re: Which programming language?
« Reply #34 on: July 20, 2011, 03:32:33 pm »
Often using the programming language that is most comfortable for your brain is a bad thing.  It is a great idea to force yourself to use quite a few different languages.  It will make you a better programmer in the end.  A book like 7 Languages in 7 Weeks is a good way to do this.

Good at everything, great at nothing.
 

Offline Semantics

  • Contributor
  • Posts: 48
  • Country: us
Re: Which programming language?
« Reply #35 on: July 20, 2011, 04:14:44 pm »
Often using the programming language that is most comfortable for your brain is a bad thing.  It is a great idea to force yourself to use quite a few different languages.  It will make you a better programmer in the end.  A book like 7 Languages in 7 Weeks is a good way to do this.
Good at everything, great at nothing.

Full disagreement. There are different flavors of programming paradigms out there. The one I specialize in professionally is OO (object oriented), but in earlier years I've done block (procedural), but OO is essentially an extension of it.

Learning a programming language as a non-programmer is a big deal. You not only have to deal with the idiosyncrasies of the language proper but you also have to learn the concepts behind it. If you learn C# properly, you're going to learn OOP, whether you realize it immediately or not. Later on, if you're exposed to Java, now all you have to worry about is the language quirks because your brain already can think with Objects.

The principles between families of programming languages are the same, the rest is just icing to set itself apart. And even then, the hardware that executes object code built from any source is considerably more limited than the language itself: it's all comparisons, math, and input/output of some flavor. Really, the language is merely an abstraction to better organize instructions.

The best software guys I know all talk about the abstractions, not the direct implementations. They don't use one tool (one language). While they may have a favorite, they recognize when different things are potentially a better fit for their needs at the moment. This has the parallel that great microcontroller guys base the decision to go PIC or AVR based on the strengths and weaknesses of their abstractions in application to solve a current need... and they are abstractions: ICs that just swing pins high and low based on the state of some other ones.

Tunnel vision is a terrible thing to be stricken with in anything having to do with technology. Smart people know they have to continually learn to stay that way and to do that they must stray from their comfort zone every now and then.
 

Offline ToBeFrank

  • Regular Contributor
  • *
  • Posts: 234
  • Country: us
Re: Which programming language?
« Reply #36 on: July 20, 2011, 04:57:35 pm »
If you learn C# properly, you're going to learn OOP, whether you realize it immediately or not. Later on, if you're exposed to Java, now all you have to worry about is the language quirks because your brain already can think with Objects.

The principles between families of programming languages are the same, the rest is just icing to set itself apart.

So in other words, if you get great with one OO language, all the other languages are fairly easy to pick up. I'll repeat:

Good at everything, great at nothing.
 

Offline gregariz

  • Frequent Contributor
  • **
  • Posts: 545
  • Country: us
Re: Which programming language?
« Reply #37 on: July 20, 2011, 05:17:41 pm »
My advice since I dont care about religion... if its for you.. use what ever is most comfortable to your brain. If its for your employer.. you have no choice.

Often using the programming language that is most comfortable for your brain is a bad thing.  It is a great idea to force yourself to use quite a few different languages.  It will make you a better programmer in the end.  A book like 7 Languages in 7 Weeks is a good way to do this.

Thats not what I said.. I use what is most comfortable with my brain for the project at hand. I'll use different tools for different tasks.

For example if I'm working with an embedded Arm and I need to use a particular hardware set. I will use the compiler that actually has the libraries for that hardware set.

If on the other hand I have freedom to pick a hardware set, I will usually pick a compiler that has the most feature packed libraries for the type of hardware I want.

The language is secondary.

However I will say this, I've run across an incredible number of 'software engineers' whose only approach to a project is to use OO. They wouldn't consider procedural programming. For most embedded projects I've been on this has added a layer of abractions that we could have done without. The custom code for most embedded projects is not so long that it could not be understood by one person, however when the OO abstractions are in play, readability goes out the window quickly.

I remember sitting in the OO program in the mid 90's and the professor saying that OO was a mix of failure and success, with many high profile OO converts from the procedural space having failed in the OO space. Given the arguments that are being recirculated today it appears much of that experience has been forgotten.
 

Offline sacherjj

  • Frequent Contributor
  • **
  • Posts: 993
  • Country: us
Re: Which programming language?
« Reply #38 on: July 20, 2011, 05:21:32 pm »
So in other words, if you get great with one OO language, all the other languages are fairly easy to pick up. I'll repeat:

Good at everything, great at nothing.

It is impossible to be great at something without having a pretty good understanding of the alternatives.  Every language has great parts and every language has bad parts.  Some more of one than the other.

If you are an OOP programmer and have never done functional or LISP or other styles, you are a lesser programmer.  I can't say it more simply than that.  Because other paradigms give you ways to work around the bad parts of the language you are working in.

It is almost impossible to be great at a language unless you are good at many.  The great computer programmers I've run across are fluent in many.  Because not every task is a nail and not every language is a hammer.
« Last Edit: July 20, 2011, 05:27:26 pm by sacherjj »
 

Offline ToBeFrank

  • Regular Contributor
  • *
  • Posts: 234
  • Country: us
Re: Which programming language?
« Reply #39 on: July 20, 2011, 05:41:10 pm »
It is impossible to be great at something without having a pretty good understanding of the alternatives.

It's impossible without an understanding of the concepts, not the alternatives.

Quote
If you are an OOP programmer and have never done functional or LISP or other styles, you are a lesser programmer.

Of course they are.  ???

Quote
It is almost possible to be great at a language unless you are good at many.

Haha, do you realize you just uintentionally wrote "good at everything, great at nothing"? See, you agree with me!

Quote
The great computer programmers I've run across are fluent in many.

So were they great before or after they became fluent in many languages?
 

Offline sacherjj

  • Frequent Contributor
  • **
  • Posts: 993
  • Country: us
Re: Which programming language?
« Reply #40 on: July 20, 2011, 05:49:18 pm »
It is impossible to be great at something without having a pretty good understanding of the alternatives.

It's impossible without an understanding of the concepts, not the alternatives.

They generally come one and the same.  Some languages do not even posses the ability to show concepts or do it very poorly.  And example of this is typical lambda usage.

Quote
It is almost impossible to be great at a language unless you are good at many.

Haha, do you realize you just uintentionally wrote "good at everything, great at nothing"? See, you agree with me!

Nope.  Don't agree with you.  I corrected my typo before your post went up.

Quote
The great computer programmers I've run across are fluent in many.

So were they great before or after they became fluent in many languages?

They had great potential before the experienced many languages, but were not great until getting the varied experience.  I have met 1000's of very good programmers.  I have met 100's of great programmers.  There is one thing the great programmers have in common, that is breadth of knowledge. 

You cannot be great at a certain language without knowing enough other languages to know what isn't great about that language.  There is not yet a perfect language.  Not knowing what other languages do better makes your knowledge of a language insufficient.
 

Offline gregariz

  • Frequent Contributor
  • **
  • Posts: 545
  • Country: us
Re: Which programming language?
« Reply #41 on: July 20, 2011, 06:08:46 pm »
Since I'm guessing the OP was an EE student it could be narrowed down a bit to say that if you are going to work commercially in the embedded space, most compiler options will be C or C++. Of course each compiler with have a slightly different implementation of that language.

Other embedded languages you will find are Basic and Pascal, although to a much lesser extent

My favourite embedded compilers are currently by Mikroe.com for mostly 8 and 32 bit Pic's.

In the real world of software development we can use some factual stats and say.. the most popular language in the world is Microsoft Visual Basic (VB.net). Amongst my religious programming friends who are involved in application development (not web programming) it is Microsoft Visual C++ (.net)

To a lesser extent Java is very popular in some workplaces.

My wife started out as an EE and moved into professional programming... she currently uses VB.net C#.net and Java very rarely. Mostly she has needed to use one of those languages plus other tools and hooks that can be called from any programming language.. things such as PhP, SQL, and other commercial libraries.

For my own embedded experimenting I will usually use a microcontroller Basic compiler for readability. Sometimes I will use C but I prefer not to (Basic compilers are only available for a few of the MCU's). For utility software on the PC I will usually use Java (80%) and sometimes VB (20%) (ignore the .net extensions) and very occasionally gcc.

As someone said .. all language suck to some extent. In my brain, for some projects, some compiler options suck less that others. This least suck factor should give you something most comfortable for your brain.

In college they forced us to learn Assembly, Pascal and C/C++. I've never really used either assembly or pascal since college except for my own stuff. I use C on the job because that what everyone uses there but I hate the syntax of the language. I don't find it as readable as either Pascal or Basic, but thats a personal brain thing. As a result for my own projects I'll typically use Basic for embedded tasks.

Now.. everyone needs to start somewhere... and my generation all grew up programming Basic for years on the commodore 64's and the like. If the OP is an EE student he will have been forced to have studied C (if not.. change Uni) already. I would suspect that he could just keep going into Visual C++ (or C#) and if wanting to try something different Java is really close to C++ in a lot of ways. Learning the Microsoft Visual Studio environment is a good way to go as Oracle Netbeans is a very identical ripoff. Visual Studio is also identical for any of the Microsoft .net langages (VB, C#, C++) so you can't really go wrong learning one of the Microsoft languages.

My 2c
« Last Edit: July 20, 2011, 06:18:46 pm by gregariz »
 

Offline ToBeFrank

  • Regular Contributor
  • *
  • Posts: 234
  • Country: us
Re: Which programming language?
« Reply #42 on: July 20, 2011, 06:11:16 pm »
They generally come one and the same.  Some languages do not even posses the ability to show concepts or do it very poorly.  And example of this is typical lambda usage.

So now you have to use lambdas to be a great programmer? Anything else that makes one a "lesser" programmer we should know about?

Quote
Nope.  Don't agree with you.  I corrected my typo before your post went up.

Well then, we can scratch "sense of humor" off the list.

Quote
There is one thing the great programmers have in common, that is breadth of knowledge.

No arguing that. But I'll still take the guy who knows three and is great at one over the guy who knows ten and is good at ten.

Quote
You cannot be great at a certain language without knowing enough other languages to know what isn't great about that language.  There is not yet a perfect language.  Not knowing what other languages do better makes your knowledge of a language insufficient.

Rubbish. Becoming fluent in a programming language does not happen from using many other languages. It happens from using that language.

I'm guessing since you're so black and white that you think I'm saying a great programmer should only ever know one language, which of course, I'm not. But for certain, if a new person (as the OP is) attempts to learn a bunch of languages versus sticking with one and getting great at it, he or she will never be great at any of them.
 

Offline sacherjj

  • Frequent Contributor
  • **
  • Posts: 993
  • Country: us
Re: Which programming language?
« Reply #43 on: July 20, 2011, 06:19:48 pm »
Rubbish. Becoming fluent in a programming language does not happen from using many other languages. It happens from using that language.

Don't disagree with that.  Being fluent in a language comes from using that language.  Pretty much common sense.   This isn't a discussion of being fluent or not, it is discussing your idea that you can either be great at one or good at many.  I think you can't be great at one with only learning one.

I'm guessing since you're so black and white that you think I'm saying a great programmer should only ever know one language, which of course, I'm not. But for certain, if a new person (as the OP is) attempts to learn a bunch of languages versus sticking with one and getting great at it, he or she will never be great at any of them.

There is a difference between mastering languages and learning them.  I've seen many very good programmers who have only been exposed to one language and it is a detriment to them.  They believe the language as gospel when there are some times things in a language that must be worked around.  You do not have to be monogamist when to comes to languages. 

I believe that you cannot be great at a language without being exposed to the ideas in languages that are different from the language you are mastering.  You seem to think this isn't important.  I believe that one of the best things a new programmer can do is sample many languages before becoming great at one or two.  We will agree to disagree.   
« Last Edit: July 20, 2011, 06:22:58 pm by sacherjj »
 

Offline ToBeFrank

  • Regular Contributor
  • *
  • Posts: 234
  • Country: us
Re: Which programming language?
« Reply #44 on: July 20, 2011, 07:27:44 pm »
I believe that you cannot be great at a language without being exposed to the ideas in languages that are different from the language you are mastering.  You seem to think this isn't important.

Concepts are important, not the languages. So yes, I think learning many languages isn't important, learning the big concepts is, the main ones being OO and polymorphism.
 

Offline sacherjj

  • Frequent Contributor
  • **
  • Posts: 993
  • Country: us
Re: Which programming language?
« Reply #45 on: July 20, 2011, 07:36:35 pm »
I believe that you cannot be great at a language without being exposed to the ideas in languages that are different from the language you are mastering.  You seem to think this isn't important.

Concepts are important, not the languages. So yes, I think learning many languages isn't important, learning the big concepts is, the main ones being OO and polymorphism.

Only for OO programming paradigms (which I agree is almost 100% of good programming for PC software, or should be).  This isn't always the best methodology to tackle a problem. 

We are saying many similar things, just from different angles I think.  For small projects that won't grow, OO is somethings the 20 pound sledge that is used to drive a tack.  It works, but not well and is serious overkill.   But trying to do a large application in functional programming is like building a house with a tack hammer.  Each have their place and vary wildly, depending on what realm of programing task you typically encounter.

Some concepts that are tied to languages that are important are like the advantages and disadvantages of both static and dynamic typing.  Compile/interpreted.  Etc.  While they are not tied directly to a language, it is hard to learn some advantages of dynamic typing with C.  :)

I guess the biggest difference is what you will be solving.  I've written code for PLCs, Micros, VAX systems, Unix systems, Phones, PDAs, and the common Windows, Linux systems and Web stuff, etc.  It is impossible to be great with one hammer and get that done.  The same languages don't exist on all platforms.  (And I'm not great with any one language yet.   ;D  )   Many of those would not be as good of code if written in OO primciples (Unix drivers as one example).
« Last Edit: July 20, 2011, 07:47:56 pm by sacherjj »
 

Offline ToBeFrank

  • Regular Contributor
  • *
  • Posts: 234
  • Country: us
Re: Which programming language?
« Reply #46 on: July 20, 2011, 07:48:06 pm »
Only for OO programming paradigms

Nope. OO concepts can and should be used in languages that don't support OO. Encapsulation comes to mind.
 

alm

  • Guest
Re: Which programming language?
« Reply #47 on: July 20, 2011, 09:34:06 pm »
Nope. OO concepts can and should be used in languages that don't support OO. Encapsulation comes to mind.
I suggest you study some programming languages that don't focus as much on OO. May even make you a great programmer. OO is not the only way to properly design software, it's just currently the most popular, and quite suitable for some tasks. Might be something else entirely in ten years. Functional paradigms should also be used in languages that don's support them if the circumstances call for it, for example.

Until recently, MIT's introduction to programming for EECS students was in scheme (similar to LISP). And I believe CMU has moved OO from the freshman year to the sophomore year and switched from Java to Python (which doesn't require you to know OO to write 'Hello world'), since OO was not considered essential to get a good understanding of programming.

I'm not claiming that OO is not important, just that the world is larger than Java, C# and C++. How much OO do you apply in Labview, for example? How useful is OO for number crunching and vectorized code (eg. data analysis, stuff MATLAB is typically used for)? OO doesn't make math easier to read.
 

Offline ToBeFrank

  • Regular Contributor
  • *
  • Posts: 234
  • Country: us
Re: Which programming language?
« Reply #48 on: July 20, 2011, 09:57:21 pm »
I suggest you study some programming languages that don't focus as much on OO.

You mean like C, which I've spent many years with? The best C code is structured in an OO-way where you use file scope (static) for encapsulation. This makes it maintainable, reusable, and less error prone. This isn't OO, but it's using OO concepts. A file essentially is an OO "class".

Quote
OO is not the only way to properly design software, it's just currently the most popular, and quite suitable for some tasks.

Reread my statement. I didn't say OO. I said "OO concepts".

Quote
Until recently, MIT's introduction to programming for EECS students was in scheme (similar to LISP).

Yep, I had a semester of scheme. You get really good at recursion.

Quote
since OO was not considered essential to get a good understanding of programming.

It certainly is not, but I most definitely would not want to work with the code of the person who didn't understand it and use its concepts in non-OO code and/or OO code.

Quote
I'm not claiming that OO is not important, just that the world is larger than Java, C# and C++.

You've made the assumption that's all I know, which is incorrect. Guess what, I also work with Python almost every day. Golly gee whiz, I'm one of those multi-language guys.

Quote
How useful is OO for number crunching and vectorized code (eg. data analysis, stuff MATLAB is typically used for)?

It's funny you ask that because that is exactly the code I work with everyday. I put the algorithms our math and physics PHDs come up with on big clusters. The answer is... "very".
 

Offline gregariz

  • Frequent Contributor
  • **
  • Posts: 545
  • Country: us
Re: Which programming language?
« Reply #49 on: July 20, 2011, 10:28:21 pm »
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf