"Is it better to learn Perl or Python since i can manage only writing simple bash shell scripts."[1]Recently on ##C++-basic there was a discussion that related to learning low level vs high level languages first.
Both of these discussions are based on the premise that there is a right answer.
There are a number of things wrong with this question.
- Kaushal seems to be saying that he can only learn one language or the other. Why not learn both?
- Programming language choice depends on the project one plans on working on. Using perl to write a kernel is impossible and using COBOL to write a GUI application is silly. Asking such a question requires more context.
- For some reason only Perl and Python are the only languages given as choices. What about C++? Why not Haskell? There are many useful languages and they each have their own pros and cons.
- Code organization and Design Patterns
- Programming constructs
- Abstraction and encapsulation
- Data structures and how to choose between them
- Syscalls and context switching
- and many more
Higher-level languages allow programmers to abstract away the low level details and focus on getting a task done. This is great for completing a task and making a beginner feel proud about what (s)he has created. It also helps the programmer learn programming basics such as variables, loops, arrays, input/output, and functions without getting bogged down with memory management.
On the other hand, choosing between various data structures is confusing unless one understands why things work the way they do. Learning about context switches, data structures, syscalls, pointers, etc is easier in a low level language (like C or C++).
So what language should someone learn first?
A good programmer should learn both types of languages. In my experience a lot beginners have trouble wrapping their heads around functions and other organizational patterns such as classes. I usually start people with Python and move quickly to C++. This helps to teach good programming style and techniques before they get to learn the low level concepts as well.
[1] http://comments.gmane.org/gmane.comp.python.tutor/65413