Answers.Body: <p>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. </p>
  
  <p>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. </p>
  
  <p>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. </p>
  
  <p>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 <a href="https://cseducators.stackexchange.com/q/4379/1293">How do you teach something when you don't know it yourself</a>.  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. </p>
  
  <hr>
  
  <p>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. </p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-05-09T20:19:05.120Z
Answers.Text: If you have poor knowledge of the language (excepting particularly weird languages like prolog and awk) this is not a problem for teaching, learning and lesson construction just so long as you have some CS proficiency including programming in another language. The difficulty will be when you come to mark the work and more particularly in lab practicals where you will need to *quickly* spot errors in student code.
Answers.UserDisplayName: Jon Guiton
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-05-07T12:36:19.410Z
Answers.LastActivityDate: 2019-05-07T12:51:41.703Z
Answers.LastEditDate: 2019-05-07T12:51:41.703Z
Answers.UserDisplayName: Buffy
Answers.Body: <p>I have used pascal, python, VB and C. Each have their own advantages/disadvantages.</p>
  
  <p>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.</p>
  
  <p>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.</p>
  
  <p>VB     - I would not recommend VB as it is integrated into an IDE in which IDE<br>
           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. </p>
  
  <p>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.</p>
  
  <p>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.</p>
  
  <p>I would advise that the choice of environment and compiler is also really important. You will want to concentrate on language not compilation issues. </p>
  
  <p>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.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-05-09T20:26:07.727Z
Answers.Text: Sorry, but you have a profound misunderstanding about grammars and especially LL(1). The "int x" convention is no harder to parse with LL(1) than the pascal convention. But if your grammar is not LL(1) it is, in principle, harder for humans to parse than if it is. Most compilers use LR techniques (at least) but that is due to efficiency, not the nature of the language. An LR parser needs to evaluate more of a statement to make a prediction about the meaning than is necessary with an LL(1) language. Don't confuse the structure of the language with the type of compiler typically used.
Answers.UserDisplayName: Buffy
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-05-09T20:30:22.243Z
Answers.Text: But yes, Pascal is old and has a few flaws. Being LL(1) (mostly) isn't one of them. In fact, a language that has "dangling else" issues isn't LL(1) which is why it requires special rules to match else clauses. It is also why nested if statements often confuse students. It is also why I require students to always fully brace every such "if" and "else" clause. Modula 2 is LL(1) but avoids this issue by requiring "end" for such clauses. But, again. LR is an advantage for compiling efficiency, but NOT - definitely NOT - for understanding.
Answers.UserDisplayName: Buffy
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-05-09T21:05:30.127Z
Answers.Text: The left or right factoring affects the feel of the language syntax and most programmers today will be using languages with right factored grammars because the compilers they use will have been constructed using automatic tools which rely on the LR parsing algorithm. I am pointing to this fact to explain *why* pascal has a "clunky" feel for learners used to right factored grammars having been invented before the LR algorithm was known.
Answers.UserDisplayName: Jon Guiton
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-05-09T21:05:55.007Z
Answers.Text: Actually, I taught compilers for 20 years. I also taught language principles for the same amount of time. There are automated tools for LL parsers also. The "single lookahead" is actually a massive advantage for a human reading a program. It is less important for an automated tool. If you can read a program one token at a time (rather than needing to backtrack) you have a big mental advantage. Again. languages should be LL(1), preferably. Compilers should be efficient.
Answers.UserDisplayName: Buffy
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-05-25T10:56:04.983Z
Answers.Text: Actually, the historical if not typical type of compiler for Pascal is hand made  recursive descent parsing.
Answers.UserDisplayName: Michel Billaud
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-05-08T20:57:32.933Z
Answers.LastActivityDate: 2019-05-09T20:14:22.807Z
Answers.LastEditDate: 2019-05-09T20:14:22.807Z
Answers.UserDisplayName: Jon Guiton
Answers.Body: <p>Once upon a time, a lot of medical professionals picked up Mumps and Basic all by themselves.  </p>
  
  <p>Simple interactive command line Basic, not even requiring a programming editor or IDE to complicate things.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-05-17T03:18:23.320Z
Answers.LastActivityDate: 2019-05-17T03:18:23.320Z
Answers.UserDisplayName: hotpaw2
Answers.Body: <p>The best programming language for me is Java because it is now used in most of the programming tools. I am also a Bachelor student and learning Java, and you are talking about the new one so according to this you can start from any programming language.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-05-23T19:42:57.147Z
Answers.LastActivityDate: 2019-05-25T09:58:24.043Z
Answers.LastEditDate: 2019-05-25T09:58:24.043Z
Answers.UserDisplayName: Raja Ali Haidar
Answers.Body: <p>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. </p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-05-23T11:50:34.490Z
Answers.LastActivityDate: 2019-05-25T09:59:35.403Z
Answers.LastEditDate: 2019-05-25T09:59:35.403Z
Answers.UserDisplayName: Ahsan Khan
Body: <p>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?</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-05-11T11:36:00.443Z
Comments.Text: First teach problem solving, then programming, then a language: So have them write programs for them to run on each other. Clear instructions to do something like make a jam sandwich, or to draw a picture. Then teach them `snap`, the a more useful language (the first one is about learning, but they can transfer what they learn).
Comments.UserDisplayName: ctrl-alt-delor
Tags: <student-motivation><best-practice><programming>
Title: Through what basic programming language can beginners easily get the concept of programming?
ThreadText: # Through what basic programming language can beginners easily get the concept of programming?
  
  (Asked by: username_0 on 2019-05-07)
  
  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?
  
  **Tags:** student-motivation, best-practice, programming
  
  > **Comments:**
  > **username_1**: First teach problem solving, then programming, then a language: So have them write programs for them to run on each other. Clear instructions to do something like make a jam sandwich, or to draw a picture. Then teach them `snap`, the a more useful language (the first one is about learning, but they can transfer what they learn).  
  
  ---
  
  ## 5 answers
  
  ### Answer by username_2 on 2019-05-07. Score: 5
  
  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](https://cseducators.stackexchange.com/q/4379/1293). 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.
  
  > **Comments:**
  > **username_3**: If you have poor knowledge of the language (excepting particularly weird languages like prolog and awk) this is not a problem for teaching, learning and lesson construction just so long as you have some CS proficiency including programming in another language. The difficulty will be when you come to mark the work and more particularly in lab practicals where you will need to *quickly* spot errors in student code.  
  
  ---
  
  ### Answer by username_3 on 2019-05-08. Score: 2
  
  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.
  
  > **Comments:**
  > **username_2**: Sorry, but you have a profound misunderstanding about grammars and especially LL(1). The "int x" convention is no harder to parse with LL(1) than the pascal convention. But if your grammar is not LL(1) it is, in principle, harder for humans to parse than if it is. Most compilers use LR techniques (at least) but that is due to efficiency, not the nature of the language. An LR parser needs to evaluate more of a statement to make a prediction about the meaning than is necessary with an LL(1) language. Don't confuse the structure of the language with the type of compiler typically used.  
  > **username_2**: But yes, Pascal is old and has a few flaws. Being LL(1) (mostly) isn't one of them. In fact, a language that has "dangling else" issues isn't LL(1) which is why it requires special rules to match else clauses. It is also why nested if statements often confuse students. It is also why I require students to always fully brace every such "if" and "else" clause. Modula 2 is LL(1) but avoids this issue by requiring "end" for such clauses. But, again. LR is an advantage for compiling efficiency, but NOT - definitely NOT - for understanding.  
  > **username_3**: The left or right factoring affects the feel of the language syntax and most programmers today will be using languages with right factored grammars because the compilers they use will have been constructed using automatic tools which rely on the LR parsing algorithm. I am pointing to this fact to explain *why* pascal has a "clunky" feel for learners used to right factored grammars having been invented before the LR algorithm was known.  
  > **username_2**: Actually, I taught compilers for 20 years. I also taught language principles for the same amount of time. There are automated tools for LL parsers also. The "single lookahead" is actually a massive advantage for a human reading a program. It is less important for an automated tool. If you can read a program one token at a time (rather than needing to backtrack) you have a big mental advantage. Again. languages should be LL(1), preferably. Compilers should be efficient.  
  > **username_4**: Actually, the historical if not typical type of compiler for Pascal is hand made  recursive descent parsing.  
  
  ---
  
  ### Answer by username_5 on 2019-05-17. Score: 1
  
  Once upon a time, a lot of medical professionals picked up Mumps and Basic all by themselves.
  
  Simple interactive command line Basic, not even requiring a programming editor or IDE to complicate things.
  
  
  ---
  
  ### Answer by username_6 on 2019-05-23. Score: 0
  
  The best programming language for me is Java because it is now used in most of the programming tools. I am also a Bachelor student and learning Java, and you are talking about the new one so according to this you can start from any programming language.
  
  
  ---
  
  ### Answer by username_7 on 2019-05-23. Score: 0
  
  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.
  
  
  ---
  
  