New Reply

useful programming languages to learn?

 
Share Thread Thread Tools
Dec31-12, 12:46 PM   #18
 
Recognitions:
Gold Membership Gold Member
Science Advisor Science Advisor

useful programming languages to learn?


[1] (as most of C is a subset of C++, learning C is mostly a question of learning how the C++ constructs are actually implemented. Pure C itself is redundant.)
This is a great way to start a flame war. Let's NOT do that, please.

Consider another idea:

Maybe you can think of programming languages like this: a few have become well-adapted (analalgous to Natural Selection and Adaptation) to particular niches. Example: C is mandatory if you want to do UNIX system programming or UNIX/Linux kernel development.

COBOL is likely never going away, no matter what you may think of it. These niche languages are not likely to fade away because MEL is cooler'n all-get-out, or Numpy is your idea of perfection because GSL sucks, and Mathematica and Maple cost too much.

There has been a proliferation of programming tools, languages, and dialects. Some new entries will fade, others will find a niche and become another de facto standard.

to the OP:
Pick a language - one - that has been around for a while. Learn that really well.
You would far better off longterm to pick a language that has a standards group (e.g., ISO) behind it.
 
Dec31-12, 01:51 PM   #19
 
The main advantage to knowing multiple languages is that you can read source code for programs you use more easily. For computational biophysics, you'd probably beniefit a lot from knowing fortran, as I imagine a lot of the heavy-duty codes you'll be using are written in it. Python and C are also common in computational physics.
 
Dec31-12, 01:59 PM   #20

Math 2012
 
Recognitions:
Science Advisor Science Advisor
A lot of the advice in this thread amounts to "I think you should learn my favorite language" (or even "I think you should learn the only language I've ever used").

It doesn't matter much what language you start with, because if you do a significant amount of programming you will soon have to learn another one. And another. And another. In 30+ years of programming, I've learned and used at least 20 languages, and I've forgotten almost all the "trivia" about most of them.

The question "which language should I learn" is a bit like "which make of car should I learn to drive in". Unless you choose a Model T Ford, or an F1 race car, the answer is "it doesn't really matter".
 
Dec31-12, 03:40 PM   #21

Astro/Cosmo 2012
 
Recognitions:
Gold Membership Gold Member
Science Advisor Science Advisor
Retired Staff Staff Emeritus
Quote by Arsenic&Lace View Post
I've heard from some that object-oriented programming is overrated. Is this true?
That's a matter of opinion. IMO it was oversold. The paradigm is a good fit for certain tasks, such as graphical user interfaces. It provides a natural way of organizing libraries and APIs, and of keeping namespaces uncluttered. If you're going to be a professional programmer, it's worth understanding how it works and having it in your bag of tricks.
 
Dec31-12, 05:18 PM   #22
 
Mentor
Quote by Arsenic&Lace View Post
I've heard from some that object-oriented programming is overrated. Is this true?
Depends on who is doing the rating, no?

Let me agree with those who argue that you want to learn to program more than any particular language. There are already plenty of people out there who can write bad code in a dozen languages.

Python is a very forgiving language. That's its strength and its weakness. Learning another language which is less forgiving, such as C++ or even Scheme (just because your father suggested it doesn't make it wrong) will help. What will help more is understanding data structures.
 
Jan1-13, 06:37 AM   #23
 
Yeah, I'm messing around with scheme here and there since I find it to be such an unusual programming language. There is a scheme compiler which compiles it into C which my pop swears by: http://www.call-cc.org/ so that could be a good way to kill two birds with one stone.

It's interesting, as I learn both python and scheme, I find that learning something new in scheme provides me with a new way of thinking about python, although not as much in the reversed direction.
 
Jan1-13, 03:18 PM   #24
 
Recognitions:
Gold Membership Gold Member
There are a couple of websites that attempt to provide popularity rankings for programming languages:

http://www.tiobe.com/index.php/conte...pci/index.html

https://sites.google.com/site/pydata...mming-Language

Both indexes agree that (currently) the most popular languages are: Java, C, C++, and C#

Other languages that rank high on both indexes are: PHP, Python, Visual Basic, Perl, and Ruby
 
Jan3-13, 10:45 AM   #25
cgk
 
Quote by jim mcnamara View Post
This is a great way to start a flame war. Let's NOT do that, please. [...]
That is not a good way of *not* starting a flame war :]. I think the statements I made might have been slightly exaggerated, but technically they are not very controversial: C89 is only not a proper subset of C++, because C++ has stricter type checking and due to that some programs legal in C89 are not legal in C++. But these are only minor points. For the most part, you can program C in C++ if you want--for the subsets of the code where this is sensible.

Additionally, if you are a good C++ programmer, you know how the C++ constructs can be implemented or emulated in C. Then you can also program decent C, so learning C by itself is technically redundant. The reverse is not at all true.

Note also that in many situations where C is chosen over C++ in new projects, the main reason for doing so is not technical: Often it is a deliberate choice to avoid the constructs C++ gives you, because they can be abused or turned into undefined behavior very easily. In C++ it can be much harder to see what exactly is going on under the hood. A very important point in kernel development---but not in scientific computing for the largest part of the code.

There has been a proliferation of programming tools, languages, and dialects. Some new entries will fade, others will find a niche and become another de facto standard.
yes, and C is actually not very common in scientific computing or numerics. There are reasons for that: In these fields, C is not really more powerful than Fortran, and it does have the same aliasing related optimization issues as C++ does (there are compiler/implementation specific workarounds for that, but you need to know about them). Fortran and C++, however, are widely used in these fields.
 
Jan3-13, 10:59 AM   #26
cgk
 
Quote by Arsenic&Lace View Post
Yeah, I'm messing around with scheme here and there since I find it to be such an unusual programming language. There is a scheme compiler which compiles it into C which my pop swears by: http://www.call-cc.org/ so that could be a good way to kill two birds with one stone.

It's interesting, as I learn both python and scheme, I find that learning something new in scheme provides me with a new way of thinking about python, although not as much in the reversed direction.
That is good progress! You should continue with both Python and scheme. While Python might seem like it is very natural and many problems have easy solutions, that is not a bad thing at all. It took many decades to arrive at a programming language like that, after all---where you don't have to fight the limitations of the language but just your specific programming problem.

Scheme (and maybe even more so common lisp with its CLOS) are very powerful languages. But while they may seem unusual and lead to new insights into how things can be done, it often turns out that these other ways of doing things are more or less equivalent to the imperative way of doing things. For example, classes can be implemented in terms of closures, but also closures can be implemented in terms of classes. Or tail recursion and iteration can be implemented in terms of each other. This even goes down to intermediate representations of the code, where the static single assignment form of a program (often used in compilers for imperative languages) can be shown to map to the continuation passing style used in compilers of functional languages. Of course, not all things are equivalent, and even if they are equivalent, one way of thinking about a problem may still be more natural or lead to better solutions than a different one. This is why it is helpful to know a set of different languages. If you can warm your heart for scheme, then this is a good one to continue.
 
Jan3-13, 11:23 AM   #27

Astro/Cosmo 2012
 
Recognitions:
Gold Membership Gold Member
Science Advisor Science Advisor
Retired Staff Staff Emeritus
Quote by NigelTufnel View Post
There are a couple of websites that attempt to provide popularity rankings for programming languages:
The popularity of languages only matters if you fall into the fallacy of believing that learning programming is about learning specific languages.
 
Jan3-13, 11:29 AM   #28
 
Quote by bcrowell View Post
The popularity of languages only matters if you fall into the fallacy of believing that learning programming is about learning specific languages.
Good point and quite true! It is useful though if you're a future programmer looking for a job to know what languages are/were in demand in the past couple of years.
 
Jan3-13, 12:50 PM   #29

Astro/Cosmo 2012
 
Recognitions:
Gold Membership Gold Member
Science Advisor Science Advisor
Retired Staff Staff Emeritus
Quote by jedishrfu View Post
Good point and quite true! It is useful though if you're a future programmer looking for a job to know what languages are/were in demand in the past couple of years.
Well, again, this is the same fallacy. HR bunnies may filter one's resume based on experience with specific languages, but for any halfway decent job (i.e., not a code-monkey job), the actual people doing the interviewing and hiring should be trying to figure out one's knowledge of programming and CS, not a specific language. Once a person has solid programming skills in *some* language, they can learn any other language in a weekend, and list it on their resume if it seems to be something that HR filters are looking for. But if HR filters want x years of experience in language y, then nothing you can do by self-study is of any relevance, because they want the y years documented on your c.v. as work experience.
 
Jan3-13, 11:01 PM   #30
 
Since I am one of the younger members here, I'll chip in what I can on what's hip.

Python is a very good language to start it, it is dynamically typed making it very easy to use. The default Python IDE is very user friendly, and I found Python very nice when designing GUIs, performing my hobby cryptanalysis among various things.

There is also another language called Processing, which is amazing. It is basically Java with a very strong emphasis on computer graphics/animation/game design. So if you like to design a game to improve your programming, I would recommend it. Like Python, it is free also. However, Processing, unlike Python, is statically typed, making it a bit harder for noobs to work with.

Both Python and Processing are OOP, so they have huge advantages over the non-OOP languages. But do not learn OOP until you first learn basics like the "if","for","while" etc. and the methods,functions,modifiers etc. To grasp Python, try Michael Dawson's "Python Programming for the Absolute Beginner".

So start with Python, design a game on Processing if you can, then learn more languages. It's more important you learn about the different data structures, data types and different types of algorithms than it is about knowing the nuts and bolts of a multitude of languages.

Also, programming is a skill that should be practiced every now and then to make sure the skill does not wear out. So do something creative or useful to keep yourself sharp.

BiP
 
Jan3-13, 11:37 PM   #31
 
Recognitions:
Homework Helper Homework Help
From Bipolarity,

The default Python IDE is very user friendly, and I found Python very nice when designing GUIs, performing my hobby cryptanalysis among various things.
That is great to know. This makes Python more appealing to try to learn than it seemed before. (That it can create graphical user-interfaces).

Both Python and Processing are OOP, so they have huge advantages over the non-OOP languages.
(Read about oop, still never understood clearly).
 
Jan4-13, 01:06 AM   #32
 
Quote by symbolipoint View Post
From Bipolarity,



That is great to know. This makes Python more appealing to try to learn than it seemed before. (That it can create graphical user-interfaces).



(Read about oop, still never understood clearly).
OOP is just about the implementation of things like classes, class attributes, object instantiation and inheritance. It allows for a way to visualize elements of the code which would otherwise be very abstract.

BiP
 
New Reply
Thread Tools


Similar Threads for: useful programming languages to learn?
Thread Forum Replies
About programming languages. Career Guidance 17
What languages to learn for Game Development? Career Guidance 8
Which programming languages might a physics major learn and why? Academic Guidance 28
Useful languages to learn in college Academic Guidance 5
Programming Languages Programming & Comp Sci 19