Like for spoken languages when you learn a programming language you build on prior knowledge. Further I will venture to say that it takes a Java programmer hours to learn C++ versus an Italian fellow will take week if not months to speak Portuguese. So what programming language to learn first is less important than to really learn the language thoroughly. It's paramount to understand what is possible and what is not possible, all the intricacies with the programming language before moving on to the next one.
For kids early on they can learn to program with wonderful languages like Logo or Scratch or others available in the market. It really doesn't matter if they to program in a Raspberry Pi or Windows or Apple devices. Again what is important is that they learn the basics of interacting with users, operating systems and hardware. While developing the first programs such as "Hello World" and creating first functions or methods or whatever the nomenclature of the particular language is, logical thinking is developed, thereby stretching our brain muscles. And in the process they pick up one of the most valuable principles in science: cause and effect or the scientific method. I know this is not a technical perfect statement in itself but like engineers with Newtonian physics is good enough.
Speaking about Newtonian physics, I almost fell of my chair when I read recently in a blog from an educator that kids should not be taught BASIC because since it is not an object oriented programming language and that the GOTO statement should be banned because it makes people lazy. It's not the first time I hear this, there is even a famous computer scientist Dijkstra that said that programmers become "mentally mutilated" referring to those people who learned BASIC as their first language. I completely disagree with this type of thinking. I can give many reasons why I disagree but it's suffice to say that I simply don't consider myself mentally mutilated and I don't consider any of my peers and colleagues who learned BASIC as their first language limited by it either.
I learned BASIC as a kid and I believe it was fundamental in creating an interest in me to learn programming. And because I learned about BASIC limitations I was encouraged to learn other languages as my projects became more challenging. By the way, I highly recommend reading the article in Time magazine about BASIC if you want to learn more about this ongoing debate: http://time.com/69316/basic/
Yes BASIC is a simple language to learn; and that's what I love the most. I love that the syntax is simple and the code reads beautifully. It's easy to debug and is very robust. BASIC later evolved into Quick BASIC then Visual BASIC which later evolved to Visual BASIC .NET becoming a full object oriented program. I remember devouring books on the subject and since there was no Internet available at the time, understandable code with clear and concise comments were like hidden treasures. I especially enjoyed those examples that can be reused over and over, that can be used as reference when debugging.
With time, projects became more complex and challenging therefore I learned other languages such as Visual Basic, C, Fortran, Pascal, Assembly, C++ and Python. I continue learning every day but I prefer to stick to one language at the time as practice makes you better. Nowadays I am into Java. I love is open source nature and the ability to be ported into different devices and platforms. Not the easiest language to learn but because I already have some good foundation I am able to pick it up fairly fast. It's not so easy to read, it's heavy on object oriented programming so it's sometimes hard to decode when inheritance is being used and because it builds on other classes and libraries it can be a bit tricky to understand and there is an extra complexity since you are also dealing with virtual machine not operating system specifically. Having said that it's a beautiful language, it is very powerful and efficient. And I foresee myself working with it for years to come.
One last note when selecting a programming language. Often when we talk about programming languages we take for granted the compilers. Compilers are programs that help debug syntax or logic errors in the code. They translate the "higher language" code into "machine code" most often assembly executable code statements or code for the fancy virtual machines. In my point of view it's critical to understand the role this wonderful compilers play when introducing someone to programming. If the language is too complex the errors generated may be more difficult to decrypt than the error itself. Therefore when choosing a language one must feel good with the compiler tool being used. My father built a compiler once for a German computer chip. I remember watching him as a kid, I didn't know what he was doing but now I know how challenging that task was. It was neat to see that the compiler will catch errors in code that even my father wrote.
Learning the fundamentals is the best investment one makes. Even great mathematicians had to learn first to add and subtract before they move into equations, derivatives, probabilities and vectorial calculus. So I will leave you with this statement:
IF you want to learn a new programming language THEN select any the ones available in the market such as Python or C++. WHILE you master the new language you selected DO pay attention to the limitations of the new language AND start researching what to learn next. \n
Please feel free to share your programming experience and what is your favourite language. Until next time,
Omar
For kids early on they can learn to program with wonderful languages like Logo or Scratch or others available in the market. It really doesn't matter if they to program in a Raspberry Pi or Windows or Apple devices. Again what is important is that they learn the basics of interacting with users, operating systems and hardware. While developing the first programs such as "Hello World" and creating first functions or methods or whatever the nomenclature of the particular language is, logical thinking is developed, thereby stretching our brain muscles. And in the process they pick up one of the most valuable principles in science: cause and effect or the scientific method. I know this is not a technical perfect statement in itself but like engineers with Newtonian physics is good enough.
Speaking about Newtonian physics, I almost fell of my chair when I read recently in a blog from an educator that kids should not be taught BASIC because since it is not an object oriented programming language and that the GOTO statement should be banned because it makes people lazy. It's not the first time I hear this, there is even a famous computer scientist Dijkstra that said that programmers become "mentally mutilated" referring to those people who learned BASIC as their first language. I completely disagree with this type of thinking. I can give many reasons why I disagree but it's suffice to say that I simply don't consider myself mentally mutilated and I don't consider any of my peers and colleagues who learned BASIC as their first language limited by it either.
I learned BASIC as a kid and I believe it was fundamental in creating an interest in me to learn programming. And because I learned about BASIC limitations I was encouraged to learn other languages as my projects became more challenging. By the way, I highly recommend reading the article in Time magazine about BASIC if you want to learn more about this ongoing debate: http://time.com/69316/basic/
Yes BASIC is a simple language to learn; and that's what I love the most. I love that the syntax is simple and the code reads beautifully. It's easy to debug and is very robust. BASIC later evolved into Quick BASIC then Visual BASIC which later evolved to Visual BASIC .NET becoming a full object oriented program. I remember devouring books on the subject and since there was no Internet available at the time, understandable code with clear and concise comments were like hidden treasures. I especially enjoyed those examples that can be reused over and over, that can be used as reference when debugging.
With time, projects became more complex and challenging therefore I learned other languages such as Visual Basic, C, Fortran, Pascal, Assembly, C++ and Python. I continue learning every day but I prefer to stick to one language at the time as practice makes you better. Nowadays I am into Java. I love is open source nature and the ability to be ported into different devices and platforms. Not the easiest language to learn but because I already have some good foundation I am able to pick it up fairly fast. It's not so easy to read, it's heavy on object oriented programming so it's sometimes hard to decode when inheritance is being used and because it builds on other classes and libraries it can be a bit tricky to understand and there is an extra complexity since you are also dealing with virtual machine not operating system specifically. Having said that it's a beautiful language, it is very powerful and efficient. And I foresee myself working with it for years to come.
One last note when selecting a programming language. Often when we talk about programming languages we take for granted the compilers. Compilers are programs that help debug syntax or logic errors in the code. They translate the "higher language" code into "machine code" most often assembly executable code statements or code for the fancy virtual machines. In my point of view it's critical to understand the role this wonderful compilers play when introducing someone to programming. If the language is too complex the errors generated may be more difficult to decrypt than the error itself. Therefore when choosing a language one must feel good with the compiler tool being used. My father built a compiler once for a German computer chip. I remember watching him as a kid, I didn't know what he was doing but now I know how challenging that task was. It was neat to see that the compiler will catch errors in code that even my father wrote.
Learning the fundamentals is the best investment one makes. Even great mathematicians had to learn first to add and subtract before they move into equations, derivatives, probabilities and vectorial calculus. So I will leave you with this statement:
IF you want to learn a new programming language THEN select any the ones available in the market such as Python or C++. WHILE you master the new language you selected DO pay attention to the limitations of the new language AND start researching what to learn next. \n
Please feel free to share your programming experience and what is your favourite language. Until next time,
Omar