Recommended Software Language to Learn?

  • Thread starter Millacol88
  • Start date
  • #1
86
0
I am just finishing up grade 11 and thought it would be worthwhile to learn a programming language over the summer. However, I'm unsure which language I would do best to learn. I can already code in Turing, HTML, and Java. I am most likely going to pursue an education in science or engineering. With that in mind, what language do you think I should learn?
 

Answers and Replies

  • #3
86
0
Any reasons? Like what are the advantages, will it benefit someone going into the line of work I want to go into?
 
  • #4
280
0
What kind of Java have you done?


If you have done Java, there's a couple things to do over the summer:

1. learn and make android apps

A great place to begin is here: http://www.vogella.de/articles/Android/article.html#overview_android

2. learn about data structures for Java (queue, linked list, sorting, graphs, trees, recursive algorithm - just pick a few... recursive is a must...)
3. learn about C++ 's pointer since you have already done Java. Java and C++ are very similar. You can pick up the general C++ in a day, and you can rewrite some of your Java codes into C++. Pointers are extremely critical for C++ developers. You just can't live without those. Java doesn't have the C++ pointers. Java offers something different: http://csis.pace.edu/~bergin/papers/JavaPointerTraps.html (beside the fact that Java does garbage management)

4. Learn Python


First of all, I am a strong advocate of C++ for beginners, and not Python for beginners. It is a lot easier to teach beginners about data types, loop invariants with a C-style language. I am not saying you can't do the same with Python. It's probably a personal favor. I have done C++, Python, Java, and Perl. Perl is always out of choice for beginners. Furthermore, many data structure and algorthim books are written for C-style (I count Java C-style too). There are a few books teach those two subjects through presudo codes, but many people prefer to have a book that shows demo code.

Python is a popular language. It is a high-level, intrepert, dynamic, general-purpose language. It is known as a "minimalist language". It comes with some keywords, but if you want more you have to import modules (unlike in Java, the core API is vast). The language looks strange to many C-style lovers. It doesn't have braces or semicolons. Most of the time you dont have to provide the data types. Converting from one type to another is usually an easy task. The language is just weird. In Python, array is simply a list, which does more than just C-style array.

There are many open-source projects written in Python. One excellent way to become better in programming is to read source codes. Moreover, many companies today do Python. It is an ideal language for rapid development. C++ and Java are robust, and C++, in general, preform betters than Python. In practice you choose the one that fits your needs. A web server written in C is probably more powerful than that in Python, but it would take many man hours so we usually scarifies some performances and choose Python over C.

If you have more time, the 5# is to learn about Linux.
 
  • #5
86
0
That's great advice, thanks! I did a semester long intro to Computer Science course, did some basic console and GUI programs.

I might have a go at developing android apps, that looks pretty interesting.

A couple more questions: what are the major differences between C, C#, and C++? With these in mind is it still best for me to learn C++? And what's a good entry-level text for it?
 
  • #6
990
58
I second Python. It's a very productive language, very easy to learn, and runs on almost everything. There are excellent scientific libraries for it.

C++ is an overly complex and arcane language. In most cases, Java is going to be fast enough to make using C++ unattractive.

I would recommend learning ANSI C. C is still extremely useful for writing drivers and API extensions. https://www.amazon.com/dp/0131103628/?tag=pfamazon01-20&tag=pfamazon01-20 is still the classic text.

C# is Microsoft's answer to Java. It does improve on Java in some ways, but it doesn't have Java's portability (and, yes, I know about Mono). One to learn if you want to be a professional windows programmer.
 
Last edited by a moderator:
  • #7
268
4
If you already really understand Java learn C#. Then after that learn C++, or you could just skip to C++. If you really like programming you need to learn C++ eventually.
 
  • #9
246
0
If you want a highly recommended Python tutorial :

http://www.swaroopch.com/notes/Python

I would suggest learning Python 2.x for now as its still more widely used.
You don't really have to buy the book that you mentioned at least for now.

If you are running Windows, then you can install Python XY:
http://www.pythonxy.com/

Python XY comes with an IDE which would makes things much easier, it also comes with the libraries needed (NumPy) for numerical calculations and plotting (MatPlotLib).

Personally speaking, I know C,C++ ,,, using Python for the first made it look like a very natural transition. The reason why I prefer Python for small codes is the little time you need to realize an idea.

For computationally large codes (you don't have to bother about this now), C++ is the king as its the fastest.

And one more thing, Python is considered a free replacement for some functionality of MATLAB which is widely used in Science and Engineering.
 
  • #10
280
0
I don't really have any favorite Python book because the language is so WEIRD.... I just go through the basics and try to convert any existing C++ programs I've written into Python...

You have a lot of time. Learn a new language is not the most difficult thing. Switching back and forth and still able to program in other languages effectively is a challenge. Once you have a basic idea of what Python is and what C, or C++ is, go back and master one of those languages. You must dive into one of those before moving into the next one.

Also, keep a programming blog to keep track of your learning experiences. You will thank me later if you do. Programming is largely about experience. The contents of the blog can be bugs, special techniques, and advices that you have found. Don't forget to write down the reference links for each post (that is, for each problem). Say I have an error about immutable string. I opened ten tabs, and those ten tabs provide good answers to what I was looking for. I write them down.
 
  • #12
246
0
Also, keep a programming blog to keep track of your learning experiences. You will thank me later if you do. Programming is largely about experience. The contents of the blog can be bugs, special techniques, and advices that you have found. Don't forget to write down the reference links for each post (that is, for each problem). Say I have an error about immutable string. I opened ten tabs, and those ten tabs provide good answers to what I was looking for. I write them down.

I second the idea of noting down the programming experience, so in the end you will end up with your own custom quick reference cookbook.
 
  • #13
280
0
For beginner it can be quite difficult to use the documentation. Nnonetheless a beginner should use the documentation as much as possible. I don't like the Java documentation, but Python's is excellent.

PS: If you are going to do android, please take caution when you are reading the official tutorials. Those official tutorials are full of bugs and mistakes.

Furthermore, I encourage you to keep track of this programming site:
http://stackoverflow.com
You can learn a lot just by reading some of the threads. It is an excellent programming helping network!
 
  • #14
22,089
3,289
Learn Lisp! It's much more beautiful than python. You'll be amazed by it's elegance. :smile:
 
  • #15
76
0
If you already know Java then learn Jython. You will start wondering how you ever lived without it! It is python with access to the entire java api. To give you an idea of what it looks like, to create a window in Jython (that's it, there is no main method or class that I have left out, this is the entire code):

from javax.swing import JFrame
f = JFrame('Hello, World!', defaultCloseOperation=JFrame.EXIT_ON_CLOSE, size=(300, 300), locationRelativeTo=None)
f.setVisible(True)

It is fantastic for prototyping as you don't even need to recompile between changes. The other advantage of python is that you get CPython (the standard, comes with almost every *nix including Mac, I am currently writing a Mac cocoa app entirely in python, based on a gtk app written entirely in python), Jython (runs on a JVM and can call all the java libraries) and Iron Python (the .Net implementation - you code pure .Net apps in Python).

After Python learn C or C++, it is good to get an idea of what the magic is actually doing in the VM in terms of pointers, memory allocation etc.
 
  • #16
246
0
As this thread is still somewhat new, I would like to add a follow up.

So far I haven't been writing any performance critical Python scripts, so I decided to look into the possible optimizations to speed things up, and I stumbled across various flavors and extensions of Python , e.g. PyPy and the one that impressed me was Cython (http://cython.org), basically it converts a python syntax code to a C code (Cython is compiled, while normal Python is interpreted).

Cython is compatible with most of Python, but offers enhancements in execution speed between 100X - 1000X.

To convert a Python code to Cython's .pyx code, its mainly about making data type declarations for variables and slight adjustments to functions and so, so mainly the pythonic nature of the code is maintained.

The following presentation might be interesting (slides in pdf format are inside the archive):
http://wiki.sagemath.org/scipy08?action=AttachFile&do=get&target=scipy-cython.tgz
 
  • #17
Hi,

I have a question similar to OP's that some of you might have an answer to. I'm going to university next year as a biology major and I want to learn a program language as I think it may prove beneficial for something later on (grad school, career, etc). Any suggestions on what I should learn?

Thanks.
 

Related Threads on Recommended Software Language to Learn?

  • Last Post
Replies
5
Views
2K
  • Last Post
3
Replies
50
Views
8K
  • Last Post
Replies
13
Views
2K
  • Last Post
2
Replies
44
Views
7K
Replies
5
Views
5K
  • Last Post
Replies
0
Views
1K
  • Last Post
2
Replies
35
Views
5K
  • Last Post
Replies
15
Views
4K
  • Last Post
2
Replies
25
Views
4K
Replies
10
Views
3K
Top