I have some students that are from medical background and have no concept of programming. So, which language I should teach to them to make their basic concept of programming perfect?
Actually, this depends much more on the teaching methodology you use rather than the language. The best answer might just be the language that you, yourself, are most productive in. But if you aren't a programmer yourself, it may be very difficult for you to teach them.
But, if I had to name a language that is (a) fairly modern and (b) fairly forgiving of beginners and (c) widely used and (d) a useful tool for people with other interests, then it would probably be Python. If you give up one or more of my criteria there are many other choices.
But the teacher needs to be proficient in the language and its use. Programming is a way of thinking, not just knowledge of the features of a language. I worry that, just because you are asking this question, that you may not have the required background to do a good job of this.
However, all is not lost. I asked a question of my own here a while ago that might provide some guidance to you if you are, indeed, a novice programmer yourself. See the question and at least my answer to How do you teach something when you don't know it yourself. The short version is you admit your lack of knowledge and learn it along with the students. But first you need to find good tools and resources.
If you use Python, make sure you use V3 and not the earlier and incompatible V2. It isn't any harder to start with the current version.
I have used pascal, python, VB and C. Each have their own advantages/disadvantages.
pascal - was designed as a language for learning programming but it is quite old and uses an LL(1) type syntax (left associative grammar) that is rarely used today i.e. one writes X : integer; rather than int X; Generally pascal has a 'clunky' feel when compared with modern languages.
python - seems to be the popular choice but there is a major problem in that you will have to use some kind of IDE. tab and space space space space space look very much the same when a student's program won't compile. The problem with the IDE is that the learner can get confused between language features and IDE features. Python is also a functional programming language so better suited to learners who have done functions in maths. Beginners will find procedural languages easier.
VB - I would not recommend VB as it is integrated into an IDE in which IDE
features and language features overlap. The programming paradigm of event driven programming is also bad for learners. However it is easy to get quick results which motivate some learners.
C - My learners found C the hardest language but the C classes produced the best programmers in the end. Some learners however found it difficult to make progress at all.
Maybe there is an argument for a project to develop a new language which is LR like C. possibly a subset of C or a version of C with additional string support and a simplified expression syntax! Perhaps D fits that bill somewhat.
I would advise that the choice of environment and compiler is also really important. You will want to concentrate on language not compilation issues.
Also forget to mention LOGO turtle graphics. This is a surprisingly sophisticated programming language that allows an accessible introduction to the basic concepts of sequence, iteration, condition and function call. I often used this for the first couple of lessons with total beginners to get the concepts behind programming embedded before moving on to a more 'serious' language.
I think to learn programming language for beginner then you have to tell him/her Java because it is used in Android Studio and in other tools. And most important it depends on you how you teach him/her. Because he/she know nothing about programming so can start their programming from any programming language but my prefer is Java.
My opinion on that is Java. At the end I will explain why.
As already mentioned above: Python can be confusing due to the tab/spaces. Besides that, you aren't always aware of which data type you are using.
C/C++ can be a pain, due to memory management/pointers. This can lead to frustration very quickly.
Advantages of Java:
- You are always aware which data type you are using because it is necessary to declare variables with data types.
- You don't have to take care of memory management due to Garbage Collection.
- Java is one of the most used programming languages, i.e. you have a huge community to ask if problems occur.
- It runs on every platform.