www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - D as a college language

reply Sjoerd Nijboer <sjoerdnijboer gmail.com> writes:
So i'm a college student in and what bothers me is that there 
seem to kind of assume programming languages don't evolve or 
don't get replaced by better ones.
Right now if you go to college you'll most likely get tought c++, 

industrial standards, they all have their drawbacks. And one 
drawback that looks important for teaching is flexibility in 
expressiveness.

 From my experience college students seem to have problems 
translating their often declarative thought process into actual 
semi compile-able code that runs in a given language.
Since D seems to be a language that supports a lot of programming 
paradigms very well, wouldn't it be beneficial to learn people 
declarative programming using D for a little and from there 
expose them to other programming styles in thesame language to 
lower the barrier of entry?

I think D could play a bigger role in education since its such a 
"clean" language that is flexible but doesn't have any real 
gotcha "features". Its also a language that could potentially be 
used over someones entire college career as the primary language. 
If this would be achieved there would be a higher income flow 
into the industry of young D programmers which will pollute other 
programmers with the D mind and featureset.
May 04 2018
next sibling parent reply rikki cattermole <rikki cattermole.co.nz> writes:
On 04/05/2018 11:35 PM, Sjoerd Nijboer wrote:
 So i'm a college student in and what bothers me is that there seem to 
 kind of assume programming languages don't evolve or don't get replaced 
 by better ones.

 java for any comp sci degree. While these languages are industrial 
 standards, they all have their drawbacks. And one drawback that looks 
 important for teaching is flexibility in expressiveness.
 
  From my experience college students seem to have problems translating 
 their often declarative thought process into actual semi compile-able 
 code that runs in a given language.
 Since D seems to be a language that supports a lot of programming 
 paradigms very well, wouldn't it be beneficial to learn people 
 declarative programming using D for a little and from there expose them 
 to other programming styles in thesame language to lower the barrier of 
 entry?
I made this very argument during my own degree. First we need adoption, then maybe we can start designing a course to help get them going.
May 04 2018
parent reply Sjoerd Nijboer <sjoerdnijboer gmail.com> writes:
On Friday, 4 May 2018 at 11:37:58 UTC, rikki cattermole wrote:
 First we need adoption, then maybe we can start designing a 
 course to help get them going.
Even with adoption, I think the exposure of D and its capabilities to teachers is too small for them to notice unless it is exposed to them as a new learning strategy for their students. After all, teaching is a difficult and time consuming skill and in my personal experience consumes almost all of the time a teacher has. Leaving very little time over for a teacher to explore new technologies such as D and design new courses around them. No teacher I know knows of the existence of D. And when I tell them they assume it is not important to learning computer science. Therefore I was thinking something more along the lines of a set of free open source courses which use D to learn certain aspects programming and programming related subjects. That would most likely not draw in a lot of new programmers who start programming on their own. They tend to stick to the popular languages. Instead it would offer teachers who are looking for new new teaching material some material that is closely coupled to other material with a small set of technologies. Thus not forcing students to learn a new language every other course. I hope that that would invite teachers to use D as a language for learning. On Friday, 4 May 2018 at 11:52:36 UTC, bauss wrote:
 To the one hiring the person with 7 years of experience seem 
 like a better choice, just because they generally have no idea 
 what D is and what it offers. They don't know that if you 
 program in D you can usually program very well, if not better 
 than most general Java developers __when__ using Java. All they 
 know is that they use Java and they're looking for the one with 
 most experience in that field.

 Until D becomes an industrial requirement, then it will not be 
 taught.

 That's why D is a hobby language.
Unfortunately true. It just seems like a missed opportunity.
May 04 2018
parent reply bachmeier <no spam.net> writes:
On Friday, 4 May 2018 at 12:00:43 UTC, Sjoerd Nijboer wrote:
 Instead it would offer teachers who are looking for new new 
 teaching material some material that is closely coupled to 
 other material with a small set of technologies. Thus not 
 forcing students to learn a new language every other course. I 
 hope that that would invite teachers to use D as a language for 
 learning.
This is key. I don't know how much adoption there would be, but free, professional-quality teaching materials would make it much easier to adopt. One way that I could see D getting its foot in the door is an intro course using Java or Python but where the instructor wants to devote a couple of lectures to low-level programming using pointers. D would be perfect for that due to the convenient syntax. Other topics like metaprogramming or memory management would also be reasons to use D. I don't think the lack of industry usage is anywhere close to the problem posed by lack of teaching materials and instructor knowledge. After all, Scheme was widely used for decades, and in some places is still is.
May 04 2018
parent reply rikki cattermole <rikki cattermole.co.nz> writes:
On 05/05/2018 3:14 AM, bachmeier wrote:
 On Friday, 4 May 2018 at 12:00:43 UTC, Sjoerd Nijboer wrote:
 Instead it would offer teachers who are looking for new new teaching 
 material some material that is closely coupled to other material with 
 a small set of technologies. Thus not forcing students to learn a new 
 language every other course. I hope that that would invite teachers to 
 use D as a language for learning.
This is key. I don't know how much adoption there would be, but free, professional-quality teaching materials would make it much easier to adopt. One way that I could see D getting its foot in the door is an intro course using Java or Python but where the instructor wants to devote a couple of lectures to low-level programming using pointers. D would be perfect for that due to the convenient syntax. Other topics like metaprogramming or memory management would also be reasons to use D. I don't think the lack of industry usage is anywhere close to the problem posed by lack of teaching materials and instructor knowledge. After all, Scheme was widely used for decades, and in some places is still is.
Teaching materials is easy to create. My response is the response I got from my institution. It is industry usage which is the problem. Nobody wants to take the risk without being able to point and say "they" are using it for some serious work.
May 04 2018
next sibling parent bachmeier <no spam.net> writes:
On Friday, 4 May 2018 at 15:22:17 UTC, rikki cattermole wrote:
 Teaching materials is easy to create.
They are, but professional quality teaching materials are not easy to create. Bad teaching materials are a net negative. The things I see presented in this forum, for instance, indicate that not many around here would not be able to teach a college class.
 My response is the response I got from my institution.
 It is industry usage which is the problem.
That depends on the institution and the goals of the class.
May 04 2018
prev sibling parent reply Russel Winder <russel winder.org.uk> writes:
On Sat, 2018-05-05 at 03:22 +1200, rikki cattermole via Digitalmars-d wrote=
:
=20
[=E2=80=A6]
 Teaching materials is easy to create.
 My response is the response I got from my institution.
 It is industry usage which is the problem.
=20
 Nobody wants to take the risk without being able to point and say "they"=
=20
 are using it for some serious work.
Let me take you back to 1994.=20 Universities teaching Scheme, Miranda, C++, or if they were a bit backward Pascal or even Modula-2. Java comes along and all universities switched to = it and created vast amounts of teaching material. Absolutely no industrial tak= e up at all. --=20 Russel. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Dr Russel Winder t: +44 20 7585 2200 41 Buckmaster Road m: +44 7770 465 077 London SW11 1EN, UK w: www.russel.org.uk
May 05 2018
parent reply rikki cattermole <rikki cattermole.co.nz> writes:
On 05/05/2018 11:06 PM, Russel Winder wrote:
 On Sat, 2018-05-05 at 03:22 +1200, rikki cattermole via Digitalmars-d wrote:

 […]
 Teaching materials is easy to create.
 My response is the response I got from my institution.
 It is industry usage which is the problem.

 Nobody wants to take the risk without being able to point and say "they"
 are using it for some serious work.
Let me take you back to 1994. Universities teaching Scheme, Miranda, C++, or if they were a bit backward Pascal or even Modula-2. Java comes along and all universities switched to it and created vast amounts of teaching material. Absolutely no industrial take up at all.
You're forgetting one crucial detail. The people making the decisions now, are not the same ones back then. I have repeated what I was told using all the same arguments presented in this thread and I am only relaying it here their response. It isn't my opinion.
May 05 2018
parent Russel Winder <russel winder.org.uk> writes:
On Sat, 2018-05-05 at 23:16 +1200, rikki cattermole via Digitalmars-d wrote=
:
=20
[=E2=80=A6]
 You're forgetting one crucial detail. The people making the decisions=20
 now, are not the same ones back then.
Not forgetting at all, but may be didn't make the point as well as I should= . All universities are not the same. There are the leaders and there are the followers. Follower university departments emphasise job opportunities much more than leader university departments. The old university/polytechnic spl= it in the UK used to highlight this very well. Leader departments value pedego= gy and concepts much more than follower departments. Sadly in many cases this = got labelled as "academic" vs "practical" which remains a very unfortunate way = of categorising things.
 I have repeated what I was told using all the same arguments presented=
=20
 in this thread and I am only relaying it here their response. It isn't=
=20
 my opinion.
Understood. I will always say job opportunities is a secondary factor, just not a primary one. Except that in some follower departments they do not acc= ept this, they are more about training and less about education. For them job opportunities are everything: training not education.=20 --=20 Russel. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Dr Russel Winder t: +44 20 7585 2200 41 Buckmaster Road m: +44 7770 465 077 London SW11 1EN, UK w: www.russel.org.uk
May 05 2018
prev sibling next sibling parent reply bauss <jj_1337 live.dk> writes:
On Friday, 4 May 2018 at 11:35:22 UTC, Sjoerd Nijboer wrote:
 So i'm a college student in and what bothers me is that there 
 seem to kind of assume programming languages don't evolve or 
 don't get replaced by better ones.
 Right now if you go to college you'll most likely get tought 

 are industrial standards, they all have their drawbacks. And 
 one drawback that looks important for teaching is flexibility 
 in expressiveness.

 From my experience college students seem to have problems 
 translating their often declarative thought process into actual 
 semi compile-able code that runs in a given language.
 Since D seems to be a language that supports a lot of 
 programming paradigms very well, wouldn't it be beneficial to 
 learn people declarative programming using D for a little and 
 from there expose them to other programming styles in thesame 
 language to lower the barrier of entry?

 I think D could play a bigger role in education since its such 
 a "clean" language that is flexible but doesn't have any real 
 gotcha "features". Its also a language that could potentially 
 be used over someones entire college career as the primary 
 language. If this would be achieved there would be a higher 
 income flow into the industry of young D programmers which will 
 pollute other programmers with the D mind and featureset.
The biggest issue is that there isn't much industrial work done in D and that's why it's not taught. When you're taught to program in specific languages, it's because those languages are where the job market is at. I completely agree with your post however, but I don't see D ever taking off as an educational programming language in the majority of schools, because it doesn't have a job market to support it. Say if you apply for a Java job and it says you have 10 years of experience programming in D and 3 years of experience programming Java, then another applicant has 7 years of experience programming in Java, but 0 experience with programming in D. To the one hiring the person with 7 years of experience seem like a better choice, just because they generally have no idea what D is and what it offers. They don't know that if you program in D you can usually program very well, if not better than most general Java developers __when__ using Java. All they know is that they use Java and they're looking for the one with most experience in that field. Until D becomes an industrial requirement, then it will not be taught. That's why D is a hobby language.
May 04 2018
parent Russel Winder <russel winder.org.uk> writes:
On Fri, 2018-05-04 at 11:52 +0000, bauss via Digitalmars-d wrote:
 [=E2=80=A6]
=20
 The biggest issue is that there isn't much industrial work done=20
 in D and that's why it's not taught.
Perhaps this argument is used in some places, but it is not the primary dri= ver for choice of programming languages in universities. It is a secondary fact= or though certainly.
 When you're taught to program in specific languages, it's because=20
 those languages are where the job market is at.
In some training courses, yes, in universities no.
 I completely agree with your post however, but I don't see D ever=20
 taking off as an educational programming language in the majority=20
 of schools, because it doesn't have a job market to support it.
Not a primary argument. The single biggest reason why D is not taught in universities is that D is = not taught in universities. There are many fashion and herd aspects to teaching programming. The leaders will choose a language for pedagogical reasons, mi= xed a bit with jobs market, and will create teaching materials. All the rest ju= st follow what the leaders decide using the leaders materials if at all possib= le so as to avoid having to make their own.
 Say if you apply for a Java job and it says you have 10 years of=20
 experience programming in D and 3 years of experience programming=20
 Java, then another applicant has 7 years of experience=20
 programming in Java, but 0 experience with programming in D.
=20
 To the one hiring the person with 7 years of experience seem like=20
 a better choice, just because they generally have no idea what D=20
 is and what it offers. They don't know that if you program in D=20
 you can usually program very well, if not better than most=20
 general Java developers __when__ using Java. All they know is=20
 that they use Java and they're looking for the one with most=20
 experience in that field.
If this is the jobs market you have experienced you are applying to the wro= ng companies. Experience (as debated in other threads) is a problematic concep= t. Having worked for 10 years in C++ doesn't mean you have 10 years constructi= ve experience; someone with 6 months might be a better programmer and thus chosen. Of course cost of person is a factor as well. Remember though someone with 1 year Haskell, 1 year Lisp, 1 year C++, and 1 year Java, may well be a better D programmer than someone with 10 years D experience. =20
 Until D becomes an industrial requirement, then it will not be=20
 taught.
=20
 That's why D is a hobby language.
N. D seems to be a hobby language because everyone says this in public foru= ms. D is a programming language, some use it for hobby, some for hard core industrial and commercial. It is just that it's traction is not high. --=20 Russel. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Dr Russel Winder t: +44 20 7585 2200 41 Buckmaster Road m: +44 7770 465 077 London SW11 1EN, UK w: www.russel.org.uk
May 05 2018
prev sibling next sibling parent reply KingJoffrey <KingJoffrey KingJoffrey.com> writes:
On Friday, 4 May 2018 at 11:35:22 UTC, Sjoerd Nijboer wrote:
 I think D could play a bigger role in education since its such 
 a "clean" language that is flexible but doesn't have any real 
 gotcha "features".
Umm, that is completely untrue, as it is for pretty much any programming language.
 Its also a language that could potentially be used over 
 someones entire college career as the primary language. If this 
 would be achieved there would be a higher income flow into the 
 industry of young D programmers which will pollute other 
 programmers with the D mind and featureset.
No!!!!!!! Students should learn C first, Java second. Not one or the other, both! Then, perhaps, they will begin to understand the basics of computer programming - from both extremes. D could be a postgrad interest perhaps. And what's earning an income got to do with anything? It's a stupid concept that humans have imposed on themselves, and it's the primary cause of all things that are wrong with society. The sooner we move to universal incomes, the better grauate programmers we'll get, cause they'll be studying it because it actually interests them, as opposed to being motived by its' 'earning' capacity.
May 04 2018
parent reply Russel Winder <russel winder.org.uk> writes:
On Sat, 2018-05-05 at 03:02 +0000, KingJoffrey via Digitalmars-d wrote:
[=E2=80=A6]
=20
 Students should learn C first, Java second. Not one or the other,=20
 both!
What is the pedegogy here, what are the justifications. In UK we have Scratch then Python then ??? This is working tremendously wel= l to get large numbers of young people programming far better than most professional programmers.
 Then, perhaps, they will begin to understand the basics of=20
 computer programming - from both extremes.
C and Java are not extremes. Lisp, assembly language, Haskell, Erlang, thes= e are extremes.
 D could be a postgrad interest perhaps.
No, this would be a bad idea.We can debate this elsewhere.
 And what's earning an income got to do with anything? It's a=20
 stupid concept that humans have imposed on themselves, and it's=20
 the primary cause of all things that are wrong with society. The=20
 sooner we move to universal incomes, the better grauate=20
 programmers we'll get, cause they'll be studying it because it=20
 actually interests them, as opposed to being motived by its'=20
 'earning' capacity.
There being jobs using a programming language may not be a primary driver, = but it is a secondary driver. University courses not using Java, Go, and JavaScript somewhere in the curriculum theses days get shunned by students.= OK so all programming is clearly Web programming and nothing else is needed. := -) So let me provide something actually constructive: Given that the world will move inexorably to using Python for teaching youn= g people programming the trick is to have a Python =E2=86=92 D learning progr= amme with lots of support. Teaching support is everything in this aspect of the game. Teach the teachers that D is the route from Python to native code programmi= ng and thence C, C++, Fortran, etc, and you have an angle. Having an angle tha= t appeals to the teachers is the first step in getting students to be taught = a programming language. Java proved this. =20 --=20 Russel. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Dr Russel Winder t: +44 20 7585 2200 41 Buckmaster Road m: +44 7770 465 077 London SW11 1EN, UK w: www.russel.org.uk
May 05 2018
parent reply KingJoffrey <KingJoffrey KingJoffrey.com> writes:
On Saturday, 5 May 2018 at 11:25:45 UTC, Russel Winder wrote:
 On Sat, 2018-05-05 at 03:02 +0000, KingJoffrey via 
 Digitalmars-d wrote: […]
 
 Students should learn C first, Java second. Not one or the 
 other, both!
What is the pedegogy here, what are the justifications.
That the languages being taught to undergrads, must be pervasive. That the languages being taught to undergrads, must teach them about low-level types, and higher-level types. And a whole lot of other stuff..(e.g, open source, cross platform, have multiple compilers, standardised, formalised, etc..) ..I can't be bothered typing any more ...
 In UK we have Scratch then Python then ??? This is working 
 tremendously well to get large numbers of young people 
 programming far better than most professional programmers.
Don't teach undergrads how to play with toys! They can play with toys in junior high school, sure.
 Then, perhaps, they will begin to understand the basics of 
 computer programming - from both extremes.
C and Java are not extremes. Lisp, assembly language, Haskell, Erlang, these are extremes.
C and Java, in comparison to each other, are at the end of each extreme. Those other languages you mention are mostly irrelevant (at least on a grand scale), and certainly non-pervasisve. They have no place in undergrad course.
 D could be a postgrad interest perhaps.
No, this would be a bad idea.We can debate this elsewhere.
That should depend on the interests of the postgrad. At some point, we really, really should let them choose to focus on what interests them.
 And what's earning an income got to do with anything? It's a 
 stupid concept that humans have imposed on themselves, and 
 it's the primary cause of all things that are wrong with 
 society. The sooner we move to universal incomes, the better 
 grauate programmers we'll get, cause they'll be studying it 
 because it actually interests them, as opposed to being 
 motived by its' 'earning' capacity.
There being jobs using a programming language may not be a primary driver, but it is a secondary driver. University courses not using Java, Go, and JavaScript somewhere in the curriculum theses days get shunned by students. OK so all programming is clearly Web programming and nothing else is needed. :-)
you forgot 'mobile'.
 So let me provide something actually constructive:

 Given that the world will move inexorably to using Python for 
 teaching young people programming the trick is to have a Python 
 → D learning programme with lots of support. Teaching support 
 is everything in this aspect of the game.
Python should be banned! Cut of it's head!!
 Teach the teachers that D is the route from Python to native 
 code programming and thence C, C++, Fortran, etc, and you have 
 an angle. Having an angle that appeals to the teachers is the 
 first step in getting students to be taught a programming 
 language.

 Java proved this.
As someone intimately involved with a university for many, many years, I have to wonder whether teachers are the problem, rather than the solution ;-)
May 05 2018
parent reply Russel Winder <russel winder.org.uk> writes:
On Sat, 2018-05-05 at 11:57 +0000, KingJoffrey via Digitalmars-d wrote:
 On Saturday, 5 May 2018 at 11:25:45 UTC, Russel Winder wrote:
=20
[=E2=80=A6]
 What is the pedegogy here, what are the justifications.
=20 That the languages being taught to undergrads, must be pervasive.
Not needed. The language must be good and fit for purpose not necessarily pervasive. For example Clean is an excellent language for teaching function= al programming. That most professional programmers have ever heard of it doesn= 't undermine it's suitability. Conversely, Spark Ada is pervasive but would you use it to teach programmin= g? However, I think it is right that exiting undergraduates have experience of Python, Java, and other languages used in the world of work, but they do no= t necessarily have to be the teaching languages.
 That the languages being taught to undergrads, must teach them=20
 about low-level types, and higher-level types.
Definitely. Abstraction is at the core of programming. But different programming language have different type systems. So Ceylon, Haskell, OCaml= , and Lisp are language for learning this sort of stuff.=20
 And a whole lot of other stuff..(e.g, open source, cross=20
 platform, have multiple compilers, standardised, formalised,=20
 etc..) ..I can't be bothered typing any more ...
Clearly the technology of programming in a professional way is important. B= ut this is not specific to the programming language. And if we add IDE support= as an integral part of professional programming, D fails to meet the criteria.
 In UK we have Scratch then Python then ??? This is working=20
 tremendously well to get large numbers of young people=20
 programming far better than most professional programmers.
=20
=20 Don't teach undergrads how to play with toys! =20 They can play with toys in junior high school, sure.
Do not underestimate the quality and quantity of code written by 14 year ol= ds with a Scratch and Python background. They put a large swathe of profession= al programmers to shame. And this with school teachers who are not at all sure they know what they are doing. CAS, Code Club, and other organisations have helped massively. More importantly though in a situation where new undergraduates already kno= w Python, universities have to have a whole new approach. This is a revolutio= n to traditional university CS education and training. Most universities in t= he UK are having to completely rework the whole curriculum ad way of working. = For the better. [=E2=80=A6]
 C and Java are not extremes. Lisp, assembly language, Haskell,=20
 Erlang, these are extremes.
=20 C and Java, in comparison to each other, are at the end of each=20 extreme.
In that C is a portable assembly language and Java is an object-based langu= age supporting some forms of polymorphism they are very different, but they are far from extremes.
 Those other languages you mention are mostly irrelevant (at least=20
 on a grand scale), and certainly non-pervasisve. They have no=20
 place in undergrad course.
Erlang still runs much of the international telephone system, and a lot of share trading systems. Haskell is used for a lot of quant work in finance houses. Common Lisp and Clojure between them run quite a lot of Web systems and a lot of front-end share trading systems. They are very relevant and an= y undergraduate who has used them at all is probably sub-standard.
=20
 D could be a postgrad interest perhaps.
=20 No, this would be a bad idea.We can debate this elsewhere.
=20 That should depend on the interests of the postgrad. =20 At some point, we really, really should let them choose to focus=20 on what interests them.
That is what options and projects are for. It all works very well in the UK= . [=E2=80=A6]
 you forgot 'mobile'.
I guess a lot of people are interested in mobile, which these days means Sw= ift and Kotlin. [=E2=80=A6]
=20
 Python should be banned! Cut of it's head!!
Hopefully this is a troll, and you don't mean that. Python is used by a hug= e swathe of data science and especially the quants who more or less run the finance system of the world. [=E2=80=A6]
=20
 As someone intimately involved with a university for many, many=20
 years, I have to wonder whether teachers are the problem, rather=20
 than the solution ;-)
I can't speak with direct evidence for the last decade but certainly till t= hen far too many academics in the UK couldn't really program well at all. The whole university system militates against programming as something an acade= mic is good at. Fortunately there seem to be just enough academics who can prog= ram well, at least in the top universities, that the programming courses do actually get taught well. Of course with programming moving from university= to school (6 to 18) the problem shifts from academics to school teachers. --=20 Russel. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Dr Russel Winder t: +44 20 7585 2200 41 Buckmaster Road m: +44 7770 465 077 London SW11 1EN, UK w: www.russel.org.uk
May 05 2018
parent KingJoffrey <KingJoffrey KingJoffrey.com> writes:
On Saturday, 5 May 2018 at 15:13:34 UTC, Russel Winder wrote:
 In that C is a portable assembly language and Java is an 
 object-based language supporting some forms of polymorphism 
 they are very different, but they are far from extremes.
Come on, the difference between C and Java is far more than that. The differences are so extreme actually, that undergrads deserve to be introduced to both. Introducing python to undegrads is an abomination! Introducing D to undergrads is problematic, since D is an unprincpled mix of pretty much everything - and more to come (which is good in some sense, and bad in another sense). D is the swiss army knife of programming langauges. What is great about D, is how it integrates it all into one tool, making it easier to use those tools. But IMO, D is not ideal for undergrads, as it's a little too unprincipled - and undergrads needs principled approaches when starting off. In addition, the syntax of C and Java is not too different, so undergrads can switch from one to other other without too much drama. Imagine switching between C and Go, or Java and Go, or Java and Python etc..etc. C and Java provide the greatest learning experience for undergrads, IMO, and at the least 'cognitive' cost.
 
 Python should be banned! Cut of it's head!!
Hopefully this is a troll, and you don't mean that.
No. I do mean it. Python has no place in an undergrad course.
 As someone intimately involved with a university for many, 
 many years, I have to wonder whether teachers are the problem, 
 rather than the solution ;-)
I can't speak with direct evidence for the last decade but certainly till then far too many academics in the UK couldn't really program well at all. The whole university system militates against programming as something an academic is good at. Fortunately there seem to be just enough academics who can program well, at least in the top universities, that the programming courses do actually get taught well. Of course with programming moving from university to school (6 to 18) the problem shifts from academics to school teachers.
The thing is, those teaching in uni are not really 'teachers'. They are usually just filling in time, to earn some extra money or whatever, while continuing their studies or research. Very few actually know how to 'teach', and even few are motivate to 'teach'. Undergrads can learn a great deal more from just buying some good books (or even a single good book). Perhaps this is why programming should be 'taught' before students reach uni, and then they can focus on doing more productive things when they get to uni, rather than learning how to write a for loop, or move circle around the screen!
May 05 2018
prev sibling next sibling parent Jesse Phillips <Jesse.K.Phillips+D gmail.com> writes:
I believe D has had the biggest impact on my programming skills, 
not so much CS.

D was great because I could try to do the Java assignment in D 
too, and the same for my C class. Not so much c++.

As you say you can cover different levels with D.
May 04 2018
prev sibling next sibling parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 5/4/2018 4:35 AM, Sjoerd Nijboer wrote:
 Since D seems to be a language that supports a lot of programming
 paradigms very well, wouldn't it be beneficial to learn people
 declarative programming using D for a little and from there expose them
 to other programming styles in thesame language to lower the barrier of
 entry?
I agree that D being a multi-paradigm language makes it ideal as a vehicle for teaching various paradigms. New paradigms can be taught without the diversion of having to start over learning a new language.
May 05 2018
parent Sameer Pradhan <pradhan cemantix.org> writes:
On Saturday, 5 May 2018 at 07:37:29 UTC, Walter Bright wrote:
 On 5/4/2018 4:35 AM, Sjoerd Nijboer wrote:
 Since D seems to be a language that supports a lot of 
 programming
 paradigms very well, wouldn't it be beneficial to learn people
 declarative programming using D for a little and from there 
 expose them
 to other programming styles in thesame language to lower the 
 barrier of
 entry?
I agree that D being a multi-paradigm language makes it ideal as a vehicle for teaching various paradigms. New paradigms can be taught without the diversion of having to start over learning a new language.
Walter, I am considering teaching the programming languages course again in Spring but this time simply using D. Would you be willing to provide me with some advise in the process of converting the one that I had put together based on Dan Grossman's course at UW and which used SML and Python in addition to D. (Dan uses SML, Racket and Ruby). I would like to know if I can purely use D, or at least minimize the use of the two other languages without sacrificing the insights provided by those two languages. Your response indicates that you have a very positive outlook on such a transition and I could help knowing that I am not compromising on the quality of the student's learning experience. -- Sameer
May 08 2018
prev sibling next sibling parent reply Sameer Pradhan <pradhan cemantix.org> writes:
On Friday, 4 May 2018 at 11:35:22 UTC, Sjoerd Nijboer wrote:
 So i'm a college student in and what bothers me is that there 
 seem to kind of assume programming languages don't evolve or 
 don't get replaced by better ones.
 Right now if you go to college you'll most likely get tought 

 are industrial standards, they all have their drawbacks. And 
 one drawback that looks important for teaching is flexibility 
 in expressiveness.

 From my experience college students seem to have problems 
 translating their often declarative thought process into actual 
 semi compile-able code that runs in a given language.
 Since D seems to be a language that supports a lot of 
 programming paradigms very well, wouldn't it be beneficial to 
 learn people declarative programming using D for a little and 
 from there expose them to other programming styles in thesame 
 language to lower the barrier of entry?

 I think D could play a bigger role in education since its such 
 a "clean" language that is flexible but doesn't have any real 
 gotcha "features". Its also a language that could potentially 
 be used over someones entire college career as the primary 
 language. If this would be achieved there would be a higher 
 income flow into the industry of young D programmers which will 
 pollute other programmers with the D mind and featureset.
I thought it might help if I mentioned that I successfully used D as one of three languages to teach the Programming Languages course at Vassar College last Fall. The main reason I ended up using three languages was this: 1. Most undergraduate CS courses that I sampled (at UW, for one taught by Dan Grossman, among others) use a core functional programming language such as (S)ML which really helps in solidifying some of the principles of programming languages—the concept of environment, scope, binding; functions as values; curry, filter, map, etc. Plus it has a version that comes with a REPL and really helps students explore it. That said, it is not a "industrial strength" language, and since I also wanted to empasize on the pragmatic aspects, it could not be the only one. 2. I briefly introduced the concept of logic programming using Prolog, but I couldn't really spend too much time on it and so cannot count it as another language 3. When I asked students what language they would like to choose—given the choice, most of the class leaned towards Python. That plus the likelihood of them actually using it at some point, I decided to cover some programming language aspects using it over two-three weeks. It also has some fascinating feature sets (dunder methods, some meta programming niceties, etc.) and being interpreted language, provides a nice complementary view. 4. The rest of the course used D. I used both Andrei Alexandrescu's book and Ali's book to generate the course content. I was fortunate to have a stack of slides from the Andrei himself. And even more fortunate, as it happened to spend a Boston D meetup dinner with the two and Steven Schv-guy. I have been in love with D ever since I firsr started reading Andrei's book in 2010, and it was really quite something that I could use it in an undergraduate CS curriculum seven years later. Originally, I was hoping to use D for the entire course, but then given various aspects of the course, and the styles in which it is being taught many places made me change things a bit. Oh, and I should mention that I did get a few slides from Chuck Allison who uses D to teach a small part of his course at UVU. If you haven't seen his talk at, I believe the first/second DConf at UVU, I would highly recommend it. The icing on the cake was that Andrei was able to visit Vassar in November and give a talk on his Fastware muse (if I may call it that). He was an instant success! I am scheduled to teach the course again next Spring, and I am trying to figure out how/if I can use more D than I did the last time without sacrificing some of the goodness that (S)ML brings to the table. That way I can cover more programming paradigms that D brings to life—built in unittests, contract programming, delegates, and many many more—with a flair. Any thoughts/pointers that this wonderful community can provide would be very much appreciated. -- Sameer
May 05 2018
parent reply Marco de Wild <admin localhost.com> writes:
On Sunday, 6 May 2018 at 00:35:19 UTC, Sameer Pradhan wrote:
 I thought it might help if I mentioned that I successfully used 
 D as one of three languages to teach the Programming Languages 
 course at Vassar College last Fall.
 --
 Sameer
I can actually kind of relate to this. For some background, I work at a company that offers traineeships in software engineering to technical graduates. The traineeship is basically a crash course in high level application development. Our main language to teach is Java, because our biggest customer uses it. We try to focus on design concepts rather than programming languages. The subject I teach is object oriented programming and test-driven development. For the slides and the demo, I use D. I have two main reasons for this. Firstly, I don't want the students to become hardcoded Java programmers, who panic when they need to switch languages. I want them to gain the confidence that the gap between various programming languages (mainly in the C family, or one family in general) is very small and, more importantly, that they can transfer the knowledge they already have. Secondly, I want them to focus on the concepts. During a demo, if I ask them how to set up a test in Java, they think and answer in code. If I ask them to set up a test in D, they think in concepts. I then do the translation to code. (For the record, they implement the assignment in Java.) Last course, we had a normal group of Java programmers and a trainee who was learning Python. The trainee was the one who understood the OO principles the fastest, because she was forced to think in concepts and not implementation. For my personal studies, I programmed in Ocaml for a while. Even though you can mimic the concepts in D using pure and const, it still broadened my horizon. If I have to conclude anything, it is that there, in my opinion and in the context of my philosophy, should not be a one language during a study. D definitely has a place in there with how different language features are set up. I think Ali's book is a great start, as it explains the concepts as well as the implementation. The D lang tour for example focuses on learning D when you know how to program, which is a completely valid use case as well. It would be cool to have a "Learn programming with D as a tool" section on the website, but I doubt it would be worth the effort. People who study in their free time go to well-known sites like Code Academy and people who have their own course (like me), write their own material based on their course setup and learning goals.
May 06 2018
next sibling parent reply James Blachly <james.blachly gmail.com> writes:
For no other reason than to provide a fun data point:

I am having two graduate students to learn D for use in my 
computational biology lab 😀

Most bioinformatics work is and remains in Python; for higher 
performance we have previously used go, but the students indicate 
D is worlds more pleasant than either C++ or go.
May 06 2018
parent bauss <jj_1337 live.dk> writes:
On Sunday, 6 May 2018 at 13:34:04 UTC, James Blachly wrote:
 but the students indicate D is worlds more pleasant than either 
 C++ or go.
And they're well right about that.
May 06 2018
prev sibling parent Sjoerd Nijboer <sjoerdnijboer gmail.com> writes:
On Sunday, 6 May 2018 at 09:16:24 UTC, Marco de Wild wrote:
 If I have to conclude anything, it is that there, in my opinion 
 and in the context of my philosophy, should not be a one 
 language during a study. D definitely has a place in there with 
 how different language features are set up.
and broadened my scope of languages and programming styles from then on. Besides learning the languages, I the most important thing we were tought was to be language agnostic. While I can't say I completely am, I can carry over ideas from one language to another. I think that D is a useful language in this regard because it has a realistic, pragmatic and theoretically "correct" way of constructs you find in other languages while not limiting the user. I think that this is very important to teaching. In contrast, when there were lectures about databases the main database the course focussed on was MySQL. Which is not neccesarily a bad choice as a teaching method. It's just that MySQL deviates from the standard more than for instance PostgreSQL. Therefore it was relatively difficult to learn databases and SQL and at the same time make the assignments for MySQL since there was a small translation step in the middle which had to be taken. Taking this step away could give a boost to learning and maybe a better understanding. On Friday, 4 May 2018 at 15:14:55 UTC, bachmeier wrote:>
 One way that I could see D getting its foot in the door is an 
 intro course using Java or Python but where the instructor 
 wants to devote a couple of lectures to low-level programming 
 using pointers. D would be perfect for that due to the 
 convenient syntax. Other topics like metaprogramming or memory 
 management would also be reasons to use D.
Hmm sounds interesting. Maybe writing runtimes for relative simple languages in D as a course? On Sunday, 6 May 2018 at 01:35:53 UTC, Seb wrote:
   everyone in this discussion: you ask and answer the wrong 
 question.
 The question needs to be:

 "What can we do or improve upon to allow D playing a bigger 
 role in education?"
More awarenes of D's existance for teachers? How about fliers on schools, aimed at teachers? Speakers at teacher conferences on conputer science? Maybe a focus group of D teachers and help them out? That, and actual quality free teaching material.
May 06 2018
prev sibling parent reply Seb <seb wilzba.ch> writes:
On Friday, 4 May 2018 at 11:35:22 UTC, Sjoerd Nijboer wrote:
 So i'm a college student in and what bothers me is that there 
 seem to kind of assume programming languages don't evolve or 
 don't get replaced by better ones.
 Right now if you go to college you'll most likely get tought 

 are industrial standards, they all have their drawbacks. And 
 one drawback that looks important for teaching is flexibility 
 in expressiveness.

 [...]
everyone in this discussion: you ask and answer the wrong question. The question needs to be: "What can we do or improve upon to allow D playing a bigger role in education?"
May 05 2018
parent rikki cattermole <rikki cattermole.co.nz> writes:
On 06/05/2018 1:35 PM, Seb wrote:
 On Friday, 4 May 2018 at 11:35:22 UTC, Sjoerd Nijboer wrote:
 So i'm a college student in and what bothers me is that there seem to 
 kind of assume programming languages don't evolve or don't get 
 replaced by better ones.

 or java for any comp sci degree. While these languages are industrial 
 standards, they all have their drawbacks. And one drawback that looks 
 important for teaching is flexibility in expressiveness.

 [...]
everyone in this discussion: you ask and answer the wrong question. The question needs to be: "What can we do or improve upon to allow D playing a bigger role in education?"
The answer to that is simple: We need to create a couple of qualifications. 1) Hard CS theory meant for existing developers in industry 2) Introduction to programming covering most aspects that they would face Make the material, make the path ways, and make it simple for institutes and standard bodies to adopt. We cannot do this alone. We need help. We need professional institutes like ITP to assist us in our cause of teaching the next generation of programmers (D is just a tool in this goal).
May 05 2018