Software is major component of technology development. “What programming I should learn ?” is the common question. Java, C++, C#, Python, …?

            Answer the following questions will help you make a choice.

What is your objective, which area you apply to and what is your hardware platform?

  1. Office automation using excel. Learn VBA
  2. High performance using C++
  3. Window Desktop application with database using C#
  4. Web programming with database use C#, Java, JavaScript and other web framework
  5. Objective C for Mac and iPhone
  6. Machine learning, AI, Computer vision use Python

All programming languages have same basic elements.

Data types, variables, operators, logic control and looping control.

In early stage, concept of programming was structural programming, modular programming.

Modern programming is mostly Object orient programming (OOP). Most software library and frameworks are in OOP. It is a must to learn.

To understand OOP, I would recommend to learn C# in visual studio which has good interface to show you Object’s properties, methods and events. Common control like textbox, list, combo box and so on are good objects which help you to understand how object to be used. It is more fun to play with User interface than just console (Text window). Then learn to create object later. After this, like Python is simple.

Why learn C# or python first? Because they have strong internet community support. Most of the problem can be solved with internet search.

Why Python is so popular? Because it has vast amount of open source framework like OpenCV for computer vision, Sci-kit learn for machine learning, TensorFlow for AI and so on.

But if you work on web, database and game programming, C# will be a better choice.

In actual world , an application is mixed with multiple languages. Basic high efficiency library is written in C++. Middle level service may be written in C# or Java to provide services. User frontend interface can be another language.

After learning basic OOP, you should learn related frameworks in your application domain (Ai, ML, data analytic, game, IOT…)

In addition, you may also learn better programming structure like MVC (Model, view, controller), asynchronous programming and other technique which related to your application. It is not one method is always better than another method. It is how the technique related to your application.

For non-technical person or kids, learning Scratch and Inventor for mobile programming using graphic block is a good start.

If just for office automation using excel, learning simple VBA is also good.

There are lots of good courses online (YouTube, Udemy). To attend a training course is a good start. After this, it should go to self-learning mode.

If you do not often write program, you can remember the concept but easily forget the syntax. Therefore do an exercise for each topic and save the exercise as your template. When you forget the syntax, you can refer back to the template.