You are not logged in.

#1 2011-11-17 08:20:15

Daedalus1
Member
Registered: 2011-11-17
Posts: 24

Which group of programming languages to master?

Which group of programming languages should I master to tackle a diverse set of problems? I would like for this list to be small as to not learn too many languages while not having a good grasp on them. The purpose of this is so I can approach any problem and pick the right tool for the job.

Right now I'm thinking about C and Fortran for computational problems requiring speed (fortran because I'm a science student), Python for quick scripting and when development time is the most crucial factor, and Haskell for a functional middle ground. I appreciate any feedback.

Last edited by Daedalus1 (2011-11-17 08:35:08)

Offline

#2 2011-11-17 08:27:00

addy
Member
Registered: 2011-11-16
Posts: 29

Re: Which group of programming languages to master?

Just learn 'C'. Almost everything can be done using this powerful language and gives you much more control than any other language. Once you learn it, learning other languages will be a piece of cake for you (learn just the syntax).

Offline

#3 2011-11-17 08:31:38

Daedalus1
Member
Registered: 2011-11-17
Posts: 24

Re: Which group of programming languages to master?

addy wrote:

Just learn 'C'. Almost everything can be done using this powerful language and gives you much more control than any other language. Once you learn it, learning other languages will be a piece of cake for you (learn just the syntax).

I already know a bit of C and I can learn languages easily. The problem is that I often forget how to use them because I'm always jumping around languages thinking, "this one is better than that one". I want a coherent short list of languages that I can stick to and not be overwhelmed.

Last edited by Daedalus1 (2011-11-17 08:33:06)

Offline

#4 2011-11-17 08:37:10

ryuslash
Member
Registered: 2010-10-11
Posts: 58
Website

Re: Which group of programming languages to master?

But that's all about you. There's no list of superior languages with which everything can be done elegantly and quickly. Find out which languages you like working with and stick to those.

I personally try and write as much as I can in C. If it's a website or web application I prefer Python (with Django), but at work I use PHP. For experimenting and quickly writing low-level stuff Go is also very nice and I really like Guile (and other lisps) for anything extension.

Offline

#5 2011-11-17 08:46:47

/dev/zero
Member
From: Melbourne, Australia
Registered: 2011-10-20
Posts: 1,247

Re: Which group of programming languages to master?

You'll learn it all with experience. Just tackle what you find interesting today.

Offline

#6 2011-11-17 08:47:44

addy
Member
Registered: 2011-11-16
Posts: 29

Re: Which group of programming languages to master?

There are different language for different purposes. For example, for power programming, freedom, control (and for headache too smile) or in general use C, for windows programming C++ is the best bet,  for high portability and OOP paradigm use Java (slight performance loss), and there are others for web development and other areas.

I would advise you have a very good grip on C. It's my favourite.

Offline

#7 2011-11-17 09:26:01

ngoonee
Forum Fellow
From: Between Thailand and Singapore
Registered: 2009-03-17
Posts: 7,354

Re: Which group of programming languages to master?

Daedalus1 wrote:

...fortran because I'm a science student...

From a former engineering student, I though FORTRAN was dead and buried smile. Of course it depends on your university and more particularly on your lecturing staff.


Allan-Volunteer on the (topic being discussed) mailn lists. You never get the people who matters attention on the forums.
jasonwryan-Installing Arch is a measure of your literacy. Maintaining Arch is a measure of your diligence. Contributing to Arch is a measure of your competence.
Griemak-Bleeding edge, not bleeding flat. Edge denotes falls will occur from time to time. Bring your own parachute.

Offline

#8 2011-11-17 20:10:25

austin.rbn
Member
Registered: 2010-01-23
Posts: 77

Re: Which group of programming languages to master?

Here's what I recommend. I would choose one from each sub-group:

C or C++ -- for programs that need to be very efficient and highly optimized.
Haskell, Scala, OCaml, or a LISP dialect (like Clojure)  -- for solving problems that are well-fitted to a functional paradigm.
Python, Ruby, or possibly Perl -- for rapid development, and small- to medium-sized programs where performance is only a minor concern, and automation tasks.

I preferred to learn C++, Haskell, and Python from the above, and I feel that they give me a flexible set of tools to tackle any problem I might encounter. Feel free to make your own choices,

Last edited by austin.rbn (2011-11-17 20:13:31)


"Computer Science is embarrassed by the computer." -- Alan J. Perlis

Offline

#9 2011-11-17 22:20:47

Daedalus1
Member
Registered: 2011-11-17
Posts: 24

Re: Which group of programming languages to master?

addy wrote:

There are different language for different purposes. For example, for power programming, freedom, control (and for headache too smile) or in general use C, for windows programming C++ is the best bet,  for high portability and OOP paradigm use Java (slight performance loss), and there are others for web development and other areas.

I would advise you have a very good grip on C. It's my favourite.

Surely learning C# and Java would be redundant as they both accomplish much of the same goals, so you would eliminate one of them and master the language and libraries. If I don't have a short list I would have to choose from many many languages the best one for the task, then I would have to learn it really well, otherwise I risk sloppy algorithms. I don't really have the time to learn the absolute best language for every task so I settle for a tradeoff between close enough and decent for the task. If that's the wrong way of thinking let me know.

I really have no need for high portability though, almost everyone uses linux for the serious stuff here and libraries are cross-platform enough that they need little work to move from one platform to the next.

austin.rbn wrote:

Here's what I recommend. I would choose one from each sub-group:

C or C++ -- for programs that need to be very efficient and highly optimized.
Haskell, Scala, OCaml, or a LISP dialect (like Clojure)  -- for solving problems that are well-fitted to a functional paradigm.
Python, Ruby, or possibly Perl -- for rapid development, and small- to medium-sized programs where performance is only a minor concern, and automation tasks.

I preferred to learn C++, Haskell, and Python from the above, and I feel that they give me a flexible set of tools to tackle any problem I might encounter. Feel free to make your own choices,

Sounds like a good plan, although I don't have experience with functional languages. Do you think Haskell is one of the most fun and supported of the functional languages?

ngoonee wrote:
Daedalus1 wrote:

...fortran because I'm a science student...

From a former engineering student, I though FORTRAN was dead and buried smile. Of course it depends on your university and more particularly on your lecturing staff.

A lot of the simulations here are coded in fortran. I guess a lot of the scientists learned fortran in the early days and never moved on.

Last edited by Daedalus1 (2011-11-17 22:36:53)

Offline

#10 2011-11-17 23:25:48

/dev/zero
Member
From: Melbourne, Australia
Registered: 2011-10-20
Posts: 1,247

Re: Which group of programming languages to master?

Daedalus1 wrote:

Sounds like a good plan, although I don't have experience with functional languages. Do you think Haskell is one of the most fun and supported of the functional languages?

One immediate benefit of using Haskell is that it would help if you ever want to use the xmonad wm. OTOH, Lisp is also popular, so you kind of need to do some research and figure out for yourself which direction would suit you better.

Offline

#11 2011-11-17 23:55:14

austin.rbn
Member
Registered: 2010-01-23
Posts: 77

Re: Which group of programming languages to master?

Daedalus1 wrote:

Sounds like a good plan, although I don't have experience with functional languages. Do you think Haskell is one of the most fun and supported of the functional languages?

I find Haskell to be more fun, because Haskell is the only purely functional language in the list I gave, so it really forces the programmer to think in the functional paradigm. It also is fairly well-supported: there are over 3,000 different packages on Hackage. Also, the Haskell Platform (which is what you should install) contains everything one needs for modern, general-purpose programming.

On the other hand, Clojure has access to the huge number of libraries written in Java, and there are many more learning resources for LISP than Haskell. Also, LISP provides all sorts of fun of its own with the code-as-data philosophy.

So, you'll have to do your own research, but I think both Haskell and Clojure are particularly good choices, if you're looking for fun and support.


"Computer Science is embarrassed by the computer." -- Alan J. Perlis

Offline

#12 2011-11-19 22:58:00

bsilbaugh
Member
From: Maryland, USA
Registered: 2011-11-15
Posts: 141

Re: Which group of programming languages to master?

I'm a doctoral student in aerospace engineering. My research is in computational aeroelasticity (physics based modeling of fluid-structure dynamics). I help maintain an inhouse CFD solver and have developed my own flexible multi-body dynamics solver. I thought I would share some observations based on my experience working in the field of scientific computing, which may not be as well represented on this forum.

A lot of the legacy codes I've come across are either Fortran or C; however, I'm now seeing some new projects being developed in C++ (and attempt to leverage the benefits of OOP design). Also, there are some large scale government projects which are using Python to develop computational "frameworks"; i.e. use Python enable communication between special purpose solvers.

Personally, I started off learning Fortran 95 and Python. For a while I was writing my numerical kernels in Fortran and then using Python to patch them together (via f2py) to create ad-hoc applications. Now I've actually begun to develop almost entirely in C++; part of the motivation being an interest in template metaprogramming, and part being a desire to develop in a consistent OOP framework. But, I'm still able to leverage some of my old Fortran code now that most modern Fortran compilers support ISO_C_BINDINGS (introduced as part of the Fortran 2003 standard).

If you're new to programming, and your problem domain is scientific computing, you can't go wrong with Fortran. Array operations in Fortran are usually an order of magnitude faster than C, and Fortran tends to be more forgiving of sloppy coding than C (assuming you stay away from obsolete constructs such as goto's, common blocks, etc). However, if you want/need to learn object oriented programming, then C++ may be worth learning; Python is a great OOP language, but there are probably more C++ numerical/scientific tools out there than Python (a notable exception being scipy, also a lot of C++ tools can be integrated into a Python framework via Boost.Python). Also, there are some rather nice visualization tools available in C++ (e.g. VTK). The downside to C++ is that it requires more discipline than, say, Python; this is offset somewhat by the introduction of smart pointers, but there are still plenty of rather obscure ways in which a person can shoot him/herself in the foot using C++.

Remember, that Fortran, C++, and Python all provide mechanisms for binding to C. So, even if you start off developing a bunch of code in Fortran, there is a good chance you'll still be able to reuse some of this work in future C, C++, and/or Python projects.

Last edited by bsilbaugh (2011-11-22 22:41:08)


- Good judgement comes from experience; experience comes from bad judgement. -- Mark Twain
- There's a remedy for everything but death. -- The wise fool, Sancho Panza
- The purpose of a system is what it does. -- Anthony Stafford Beer

Offline

#13 2011-11-20 15:36:31

Basu
Member
From: Cornell University
Registered: 2006-12-15
Posts: 296
Website

Re: Which group of programming languages to master?

I mostly second with whatever austin.rbn says but with some additions:

1. You should learn C because it will make you learn how the machine actually works. Do not conflate C with C++, they are pretty different languages.
2. You should learn a UNIX-y scripting language -- one of Perl/Python/Ruby for quick prototyping, string mangling, web dev, etc.
3. You should learn an enterprise-y object oriented programming language such as C++, C# or Java
4. You should learn a strongly typed functional programming language to better understand the mathematical basis of computer science like ML, OCaml or Haskell
5. You should learn a Lisp dialect such as Scheme or Common Lisp (I would recommend the Racket implementation of Scheme).

Let me know if you have any questions.


The Bytebaker -- Computer science is not a science and it's not about computers
Check out my open source software at Github

Offline

#14 2011-11-20 19:32:55

bsilbaugh
Member
From: Maryland, USA
Registered: 2011-11-15
Posts: 141

Re: Which group of programming languages to master?

You may also want to ask yourself if you will ever need to run your codes in a distributed computing environment; e.g. a Linux cluster. If yes, then there is a high probability that you'll need to learn MPI. I know that most MPI implementations provide Fortran, C, and C++ API's, and there are also some Python wrappers out there as well (e.g. mpi4py).

I should also point out that most Fortran, C, and C++ compilers support OpenMP out of the box. This means that a code that was initially written in Fortran, C, or C++ can be modified (usually rather easily) to take advantage of multi-core processors.

As you might be aware, GPGPU computing is becoming more popular within the scientific community. Most of the GPGPU languages are minor extensions of the C language (and in some cases just additional C libraries). So, I suppose if you start out developing in C, then learning one of the GPGPU languages would seem like a natural extension of what you already know.

(As others have alluded, you may want to view all of this as a never ending evolutionary process. That is, don't worry about finding some panacea to all your future programming needs today. Focus on learning the principles, keep and open mind, and be ready to adapt to an ever changing environment. Whatever the answers you get today, 10 years from now the answers will likely be very different.)

Last edited by bsilbaugh (2011-11-20 20:09:57)


- Good judgement comes from experience; experience comes from bad judgement. -- Mark Twain
- There's a remedy for everything but death. -- The wise fool, Sancho Panza
- The purpose of a system is what it does. -- Anthony Stafford Beer

Offline

#15 2011-11-22 12:58:51

pling
Member
Registered: 2011-11-21
Posts: 20

Re: Which group of programming languages to master?

addy wrote:

Just learn 'C'. Almost everything can be done using this powerful language and gives you much more control than any other language. Once you learn it, learning other languages will be a piece of cake for you (learn just the syntax).

Are you a professional programmer? Because I am, and almost no one would give this advice.

You can do almost anything in C, but doing so is often stupid. It's about a quarter as productive as a state of the art of the language like Scala. For numeric computing, it generally offers inferior provision for vectorisation compared to Fortran. As for "more control than any other language" - yes, under some circumstances it does, *if* you have deep knowledge of the machine architecture you are writing for and are willing to code for that architecture. This is usually not worthwhile.

Once you learn it, learning other languages will be a piece of cake for you (learn just the syntax).

This is wannabe nonsense. A lot of coders who could get by professionally in C couldn't even transition to C++! Which is pretty much why Java was created. And to work with languages like Erlang or Haskell a C programmer has to install entire new models in his head.

Offline

#16 2011-11-22 13:06:34

pling
Member
Registered: 2011-11-21
Posts: 20

Re: Which group of programming languages to master?

Basu wrote:

I mostly second with whatever austin.rbn says but with some additions:

1. You should learn C because it will make you learn how the machine actually works. Do not conflate C with C++, they are pretty different languages.

Absolute nonsense. For example, what part of  C will make aware that out of order execution or branch prediction exist? Let alone how they work.

And re. C and C++  : C++ is 99% identical to C, with an extra 200% or so added on.

3. You should learn an enterprise-y object oriented programming language such as C++, C# or Java

C++ is a systems programming language. It's only used to enterprise apps for legacy reasons these days, just like C.

4. You should learn a strongly typed functional programming language to better understand the mathematical basis of computer science like ML, OCaml or Haskell

This is more nonsense. Learning one of these languages won't have any such effect. If you want to learn discrete mathematics or some such topic, then get a book on it. Learning a functional language will teach you functional programming and that's it.

Offline

#17 2011-11-22 13:13:12

pling
Member
Registered: 2011-11-21
Posts: 20

Re: Which group of programming languages to master?

Daedalus1 wrote:

I already know a bit of C and I can learn languages easily. The problem is that I often forget how to use them because I'm always jumping around languages thinking, "this one is better than that one". I want a coherent short list of languages that I can stick to and not be overwhelmed.

Just pick one of either Ruby or Python and work at it a while. The choice is actually pretty arbitrary. Do what a pro and would do and code in the highly productive scripting language until you a performance hit, then write C code for that limited area. Rather than learning lots of languages badly, learn the fundamentals of procedural programming well - get books like Code Complete, Pragmatic Programming, Programming Perls, etc and work through them.

Functional programming is interesting and potentially has a big future (not for the reasons given but because it can be helpful when writing multithreaded code to make as much of it stateless as possible) but that's not something to worry about now. Nor are MPI or, gawd help us, GPU coding. Get the basics down.

Offline

#18 2011-11-22 19:04:46

bam365
Member
Registered: 2010-06-05
Posts: 20

Re: Which group of programming languages to master?

pling wrote:

C++ is a systems programming language. It's only used to enterprise apps for legacy reasons these days, just like C.

I hope this is a joke...it probably is.

My two cents, I think that's a pretty good list you've got there, OP. I personally find that C and Python meet pretty much all of my general-purpose programming needs. In my experience Python and languages like it sometimes cause as many problems as they solve, but as a scripting language it's very good. If you want to just learn two general purpose languages, that pair is a pretty good choice for Linux users. But, the boilerplate answer still applies, whatever meets your needs and you are comfortable with is best for you.

Offline

#19 2011-11-22 20:36:24

Calmatory
Member
Registered: 2008-05-25
Posts: 15

Re: Which group of programming languages to master?

Languages are merely tools to get things done. It is much more important to be able to think in an abstract manner to solve problems without creating more of them. Programming is the easy part, program design is the hard part.

It depends entirely what you want to achieve, what you want to do and what you want to get done. If you want to do web development, learning C is more or less useless pretty much all of the time. It does not put you in any kind of inferior position if you don't know C compared to someone who knows C. Likewise if you are looking for a low-level embedded software development position, knowing PHP and JavaScript will not really put you in any superior position compared to someone who does not know those languages. If you want to develop games, then the choice is much more diverse; you can make games with C, C++, C#, Java, Python, PHP, JavaScript, Flash, ... Heck, in some cases you might even have to go as far as the native assembly of the target platform and count CPU cycles and cache miss/hit rates. smile

Usually the question "What languages to learn" is the wrong approach. You should ask yourself "What do I want to do, and what language suits the best for my needs?". Prefering C or C++ over, say Java because "They are faster" is utter nonsense in most cases, unless you are specifically aiming for time-critical code on limited hardware and software environments. What matters more is the right algoritms rather than the fast implementations. With high enough input, for example when comparing Insertion sort and Heapsort, if insertion sort is running on a overclocked 8 GHz CPU and the implementation is the most optimal possible one, and the Heapsort is written in PHP and runs on a wrist watch, what will happen? With big enough input the suboptimal PHP implementation running on a wrist watch will turn out to be faster, because the algorithm itself is more optimal. The language or implementation efficiency does not matter as long as you are not running into performance issues while using optimal algorithms.

That being said, learn about algorithms, learn about data structures, learn about common practices in the industry(e.g. agile methodologies, this if you are interested in programming for a living), learn about computers in general, learn about different programming paradigms, be curious and never give up. What is more important than your educational degree, is your own ability to learn new things quickly, how interested you are genuinely in programming and software development and how much do you like to spend your free time on becoming a better programmer/software developer/designer.

Remember, the language is a mere tool to get the job done. It does not really matter in the end, what matters is your attitude and common ability to solve problems in creative ways. Remember, never give up and be curious! smile

Offline

#20 2011-11-22 22:52:58

bsilbaugh
Member
From: Maryland, USA
Registered: 2011-11-15
Posts: 141

Re: Which group of programming languages to master?

Something I failed to mention earlier, is that Fortran lacks a solid unit testing framework. I can't image tackling a large scale project without unit testing. I'm sure the "professional programmers" out there are saying "well duh", but believe it or not its a new idea to some engineers/scientists. It took me a long time to convince my PhD adviser of the benefits of OOP design and unit testing.

So I guess I should further qualify my earlier statement, "you can't go wrong with Fortran", to apply when:
* Your problem domain is scientific computing (e.g. solving PDE's using Finite Element or Finite Volume methods).
* Your analysis is executed as a batch process with little user interaction beyond initial setup. No GUI's needed.
* Run-time performance is a major consideration (i.e. the type of analysis your doing is known to require hundreds, if not thousands, of CPU hours).
* Your data structure is not too complicated; i.e. at most you only need allocatable, multi-dimensional, arrays. Modern fortran dialects (starting with Fortran 2003) do provide some OOP constructs, but I don't know how efficiently these features have been implemented by compiler developers. That is, isn't the reason behind Fortran's performance legacy the fact that it didn't allow some of these more advanced constructs and was therefore easier for the compiler to optimize?
* Your code is small enough that you can get away without a comprehensive unit test suite; obviously you still need to run tests, but you can write your ad-hoc test suite without too much effort.

Last edited by bsilbaugh (2011-11-22 23:29:28)


- Good judgement comes from experience; experience comes from bad judgement. -- Mark Twain
- There's a remedy for everything but death. -- The wise fool, Sancho Panza
- The purpose of a system is what it does. -- Anthony Stafford Beer

Offline

#21 2011-11-22 23:23:25

bsilbaugh
Member
From: Maryland, USA
Registered: 2011-11-15
Posts: 141

Re: Which group of programming languages to master?

I suppose if you wanted to be really hard-core, you would use punch-cards.

Last edited by bsilbaugh (2011-11-22 23:26:54)


- Good judgement comes from experience; experience comes from bad judgement. -- Mark Twain
- There's a remedy for everything but death. -- The wise fool, Sancho Panza
- The purpose of a system is what it does. -- Anthony Stafford Beer

Offline

#22 2011-11-23 03:44:40

ewaller
Administrator
From: Pasadena, CA
Registered: 2009-07-13
Posts: 19,739

Re: Which group of programming languages to master?

bsilbaugh wrote:

I suppose if you wanted to be really hard-core, you would use punch-cards.

Or Brain F**k

[ewaller ducks and runs]


Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
Sometimes it is the people no one can imagine anything of who do the things no one can imagine. -- Alan Turing
---
How to Ask Questions the Smart Way

Offline

#23 2011-11-23 07:30:15

Daedalus1
Member
Registered: 2011-11-17
Posts: 24

Re: Which group of programming languages to master?

Calmatory wrote:

Languages are merely tools to get things done. It is much more important to be able to think in an abstract manner to solve problems without creating more of them. Programming is the easy part, program design is the hard part.

Yes, I know that. I guess the question I should have asked is which categories of languages are appropriate to which problems? Then I could pick one of each category and learn them.

Basu wrote:

I mostly second with whatever austin.rbn says but with some additions:

1. You should learn C because it will make you learn how the machine actually works. Do not conflate C with C++, they are pretty different languages.
2. You should learn a UNIX-y scripting language -- one of Perl/Python/Ruby for quick prototyping, string mangling, web dev, etc.
3. You should learn an enterprise-y object oriented programming language such as C++, C# or Java
4. You should learn a strongly typed functional programming language to better understand the mathematical basis of computer science like ML, OCaml or Haskell
5. You should learn a Lisp dialect such as Scheme or Common Lisp (I would recommend the Racket implementation of Scheme).

Let me know if you have any questions.

Although pling may disagree with some of the reasons, these seem like sensible categories. What are some of the advantages of learning a Lisp language, and what domain would it be advantageous over other languages?

bsilbaugh wrote:

You may also want to ask yourself if you will ever need to run your codes in a distributed computing environment; e.g. a Linux cluster. If yes, then there is a high probability that you'll need to learn MPI. I know that most MPI implementations provide Fortran, C, and C++ API's, and there are also some Python wrappers out there as well (e.g. mpi4py).

I should also point out that most Fortran, C, and C++ compilers support OpenMP out of the box. This means that a code that was initially written in Fortran, C, or C++ can be modified (usually rather easily) to take advantage of multi-core processors.

As you might be aware, GPGPU computing is becoming more popular within the scientific community. Most of the GPGPU languages are minor extensions of the C language (and in some cases just additional C libraries). So, I suppose if you start out developing in C, then learning one of the GPGPU languages would seem like a natural extension of what you already know.

(As others have alluded, you may want to view all of this as a never ending evolutionary process. That is, don't worry about finding some panacea to all your future programming needs today. Focus on learning the principles, keep and open mind, and be ready to adapt to an ever changing environment. Whatever the answers you get today, 10 years from now the answers will likely be very different.)

Yes, I will eventually need to work with distributed computer systems and maybe GPU programming such as CUDA. For this purpose, where speed is critical, I would need to have C mastered. However I'm very used to the OOP methodology of Java and C++ and haven't been able to wrap my head around doing things otherwise. So as pling mentioned, I need to be able to first do procedural algorithms well and I think I need to learn C from the ground up. What I know of C, I've learned through C++. What is an introductory book that you would recommend to do this?

pling wrote:

Do what a pro and would do and code in the highly productive scripting language until you a performance hit, then write C code for that limited area. Rather than learning lots of languages badly, learn the fundamentals of procedural programming well - get books like Code Complete, Pragmatic Programming, Programming Perls, etc and work through them.

Are C and python sufficient for general purpose programming? Are there any cases where it is difficult in getting the resultant amalgamated program to run smoothly? (just a wild guess)

Last edited by Daedalus1 (2011-11-23 07:35:01)

Offline

#24 2011-11-23 11:04:29

pling
Member
Registered: 2011-11-21
Posts: 20

Re: Which group of programming languages to master?

bam365 wrote:
pling wrote:

C++ is a systems programming language. It's only used to enterprise apps for legacy reasons these days, just like C.

I hope this is a joke...it probably is.

Nope.

If you're programming .net, then C# is a much better choice - it's *very* rare for a non-legacy project to use C++. If you're programming linux server stuff, then Java - or if you're hip then Scala or Groovy - are vastly more usual. And linux old-style gui apps are such a small % of the market they might as well not exist. When was the last time you heard of a significant new C+ enterprise framework or component?

Offline

#25 2011-11-23 11:17:23

pling
Member
Registered: 2011-11-21
Posts: 20

Re: Which group of programming languages to master?

Daedalus1 wrote:
pling wrote:

Do what a pro and would do and code in the highly productive scripting language until you a performance hit, then write C code for that limited area. Rather than learning lots of languages badly, learn the fundamentals of procedural programming well - get books like Code Complete, Pragmatic Programming, Programming Perls, etc and work through them.

Are C and python sufficient for general purpose programming? Are there any cases where it is difficult in getting the resultant amalgamated program to run smoothly? (just a wild guess)

What is "general purpose programming"??? If you're looking for a magic tool that will let you write any sort of program efficiently then it doesn't exist - which is part of the the reason why there are so many languages.

C and Python - or C and Ruby, but Python is more common in the sciences* - offer a decent foundation. The first thing you need to do to learn to program **well** is to write lots of easily testable apps with simple console interfaces; they're a good team for this. Or you could go with a member of the Java family, in which case I'd start with Groovy (it's about twice as productive) and learn how to mix in some raw Java when needed for performance.

Anyway: concentrate at getting good at one style of programming, in one main language (90-99% of your time should be in Python/Ruby) rather than dispersing your efforts.

*Meaning more relevant libraries are available** - which should always be one of the biggest factors in choosing a language. In particular look at Sage - the Python-based Mathematica alternative.

**Which is why bio people should consider Perl instead, despite its awfulness - but if you're a bioguy and don't already know this, then you don't deserve help.

Offline

Board footer

Powered by FluxBB