www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Pitching D to academia

reply =?UTF-8?Q?Ali_=c3=87ehreli?= <acehreli yahoo.com> writes:
Motivated by Dmitry's "Pitching D to a gang of Gophers" thread, how 
about pitching it to a gang of professors and graduate students?

I will be presenting D to such an audience at METU in Ankara. What are 
the points that you would stress? I am thinking that they would be 
interested more in whether D is better as a teaching tool. Do you agree?

Ali
Mar 05 2016
next sibling parent Minas Mina <minas_0 hotmail.co.uk> writes:
On Sunday, 6 March 2016 at 07:38:01 UTC, Ali Çehreli wrote:
 Motivated by Dmitry's "Pitching D to a gang of Gophers" thread, 
 how about pitching it to a gang of professors and graduate 
 students?

 I will be presenting D to such an audience at METU in Ankara. 
 What are the points that you would stress? I am thinking that 
 they would be interested more in whether D is better as a 
 teaching tool. Do you agree?

 Ali
What about: D can be used as a high level, high productivity scripting language, just like Python, with two exceptions: 1) You get static type checking 2) When can compile the program instead of interpreting when you need the performance. No need to re-write it.
Mar 06 2016
prev sibling next sibling parent reply Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= writes:
On Sunday, 6 March 2016 at 07:38:01 UTC, Ali Çehreli wrote:
 Motivated by Dmitry's "Pitching D to a gang of Gophers" thread, 
 how about pitching it to a gang of professors and graduate 
 students?
The geeky graduate students are the better target. In teaching you usually want a focused clean language related to the course or a language that is already adopted by industry.
Mar 06 2016
parent reply Michael <darkfeign gmail.com> writes:
On Sunday, 6 March 2016 at 08:40:17 UTC, Ola Fosheim Grøstad 
wrote:
 On Sunday, 6 March 2016 at 07:38:01 UTC, Ali Çehreli wrote:
 Motivated by Dmitry's "Pitching D to a gang of Gophers" 
 thread, how about pitching it to a gang of professors and 
 graduate students?
The geeky graduate students are the better target. In teaching you usually want a focused clean language related to the course or a language that is already adopted by industry.
This hold a lot of weight speaking as a current postgraduate. I find that when teaching undergraduate courses, you're very much restricted to a few things. First, the choice of language to teach at the beginning of a student's degree needs to be based on what they will continue to use throughout their degree and beyond graduating. This means that other modules with specific software/library requirements will need to be taken into account (no point in teaching D/Go/Rust when you require MATLAB for several modules or coursework is required to be submitted in C/Java in later years). So it needs to fit with other taught units and that means that other members of staff who do not know D (and honestly, often don't have the time to learn a new language and rewrite all of the course material) will be stuck teaching the students another language on top of achieving their unit's aims. Second, a university needs to be able to provide sufficient argument for teaching a language in relation to graduate employment; If the job market demands C++/Java/Python and only know D then problems arise pretty quickly and heads of department are not going to approve languages in place of those with high industrial demand. For most graduates, experience and skills for graduate employment is key. Postgraduates, on the other hand, often have more time to experiment, and due to the nature of postgraduate work (particularly Ph.D and beyond) their research tends to require novelty. D has proved very valuable for me during my research and the lack of library requirements for experiments to be written and tested means that I am not tied to using a particular language. I am of course not saying that we shouldn't try to encourage undergraduates to explore D, but it's very difficult to try and introduce a new language into the curriculum at most universities without a rather large volume of support and justifications for doing so. Just some thoughts.
Mar 09 2016
next sibling parent reply Craig Dillabaugh <craig.dillabaugh gmail.com> writes:
On Wednesday, 9 March 2016 at 16:12:08 UTC, Michael wrote:
 On Sunday, 6 March 2016 at 08:40:17 UTC, Ola Fosheim Grøstad 
 wrote:
 On Sunday, 6 March 2016 at 07:38:01 UTC, Ali Çehreli wrote:
 Motivated by Dmitry's "Pitching D to a gang of Gophers" 
 thread, how about pitching it to a gang of professors and 
 graduate students?
The geeky graduate students are the better target. In teaching you usually want a focused clean language related to the course or a language that is already adopted by industry.
clip
 Postgraduates, on the other hand, often have more time to 
 experiment, and due to the nature of postgraduate work 
 (particularly Ph.D and beyond) their research tends to require 
 novelty. D has proved very valuable for me during my research 
 and the lack of library requirements for experiments to be 
 written and tested means that I am not tied to using a 
 particular language. I am of course not saying that we 
 shouldn't try to encourage undergraduates to explore D, but 
 it's very difficult to try and introduce a new language into 
 the curriculum at most universities without a rather large 
 volume of support and justifications for doing so. Just some 
 thoughts.
I may be way off-base here but would teaching assembly be a good way to get D into the hands of undergrads? Learning assembly requires some sort of 'harness' to code your assembly in. The few such tools (NASM) are, by my memory, rather painful to work with. Could using DMDs inline assembler allow for a clean way of learning assembly I say this as someone who never took a proper assembly course as an undergrad (we used a simulated/simple assembly lanaguage). I've since tried to learn Intel assembly with NASM or something similar, but had limited time and got frustrated with the tools.
Mar 09 2016
parent reply Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= writes:
On Wednesday, 9 March 2016 at 16:25:46 UTC, Craig Dillabaugh 
wrote:
 I may be way off-base here but would teaching assembly be a 
 good way
 to get D into the hands of undergrads?  Learning assembly 
 requires
 some sort of 'harness' to code your assembly in.
I don't know what is common now, but I think machine language often has been taught either in the context of a OS/kernel-design course, hardware architecture (CPU/Computer design) course and compiler design courses. Difficult to get D into an OS course as C is standard, inline asm makes no sense for a compiler and hardware courses are aiming one step below machine language so no need for higher level than assembly... It is not uncommon for courses to be agnostic, though. That is, the teacher accepts any language in student projects, but uses a well-known language in lectures and examples.
Mar 09 2016
parent reply cym13 <cpicard openmailbox.org> writes:
On Wednesday, 9 March 2016 at 19:34:24 UTC, Ola Fosheim Grøstad 
wrote:
 On Wednesday, 9 March 2016 at 16:25:46 UTC, Craig Dillabaugh 
 wrote:
 I may be way off-base here but would teaching assembly be a 
 good way
 to get D into the hands of undergrads?  Learning assembly 
 requires
 some sort of 'harness' to code your assembly in.
I don't know what is common now, but I think machine language often has been taught either in the context of a OS/kernel-design course, hardware architecture (CPU/Computer design) course and compiler design courses. Difficult to get D into an OS course as C is standard, inline asm makes no sense for a compiler and hardware courses are aiming one step below machine language so no need for higher level than assembly... It is not uncommon for courses to be agnostic, though. That is, the teacher accepts any language in student projects, but uses a well-known language in lectures and examples.
Let's add that D binaries are usually too bloated for their disassembly to be as readable as their C equivalent (mangling doesn't help) so even for "reverse engineering" assembly it is less than perfect (although perfectly doable of course).
Mar 09 2016
parent Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= writes:
On Wednesday, 9 March 2016 at 19:45:40 UTC, cym13 wrote:
 Let's add that D binaries are usually too bloated for their 
 disassembly to be as readable as their C equivalent (mangling 
 doesn't help) so even for "reverse engineering" assembly it is 
 less than perfect (although perfectly doable of course).
Yes, I think there are many good reasons for sticking to languages like C, Java or a narrow toy language. You usually want to use the language used in the best books for the course... And you care most about catering for the students that are having problems with the topic, i.e. make it easy to self study for weak students. A new rich language can easily distract from learning objectives. I once tried to push some key XML technologies by having a mandatory pipeline that was like this: SQL -> XQuery -> XML -> XSLT -> HTML, which worked out ok, except it became too time consuming for the non-geek students. Which made them frustrated. It becomes challenging for students if they have to struggle with learning both the topic (design) and the tools at the same time. So, either make learning the language the objective, or stick to a language they know or use a clean language they don't know, but that is perfect for the course. *shrug*
Mar 09 2016
prev sibling parent Laeeth Isharc <laeethnospam nospam.laeeth.com> writes:
On Wednesday, 9 March 2016 at 16:12:08 UTC, Michael wrote:
 On Sunday, 6 March 2016 at 08:40:17 UTC, Ola Fosheim Grøstad 
 wrote:
 On Sunday, 6 March 2016 at 07:38:01 UTC, Ali Çehreli wrote:
 Motivated by Dmitry's "Pitching D to a gang of Gophers" 
 thread, how about pitching it to a gang of professors and 
 graduate students?
The geeky graduate students are the better target. In teaching you usually want a focused clean language related to the course or a language that is already adopted by industry.
This hold a lot of weight speaking as a current postgraduate. I find that when teaching undergraduate courses, you're very much restricted to a few things. First, the choice of language to teach at the beginning of a student's degree needs to be based on what they will continue to use throughout their degree and beyond graduating. This means that other modules with specific software/library requirements will need to be taken into account (no point in teaching D/Go/Rust when you require MATLAB for several modules or coursework is required to be submitted in C/Java in later years). So it needs to fit with other taught units and that means that other members of staff who do not know D (and honestly, often don't have the time to learn a new language and rewrite all of the course material) will be stuck teaching the students another language on top of achieving their unit's aims. Second, a university needs to be able to provide sufficient argument for teaching a language in relation to graduate employment; If the job market demands C++/Java/Python and only know D then problems arise pretty quickly and heads of department are not going to approve languages in place of those with high industrial demand. For most graduates, experience and skills for graduate employment is key. Postgraduates, on the other hand, often have more time to experiment, and due to the nature of postgraduate work (particularly Ph.D and beyond) their research tends to require novelty. D has proved very valuable for me during my research and the lack of library requirements for experiments to be written and tested means that I am not tied to using a particular language. I am of course not saying that we shouldn't try to encourage undergraduates to explore D, but it's very difficult to try and introduce a new language into the curriculum at most universities without a rather large volume of support and justifications for doing so. Just some thoughts.
Chuck Allison's experience is quite interesting. I don't think Utah Valley University is seen as a top tier school, but enough of his students have received very good offers from top companies is enough to make one think. http://dconf.org/2014/talks/allison.html Of course, teaching staff at most places won't have the standing that Chuck Allison does to break with custom, but on the other hand I suppose if you stick with custom you will at best achieve customary results. I do take your point about postgrads, and that's a fair observation too.
Mar 09 2016
prev sibling next sibling parent cym13 <cpicard openmailbox.org> writes:
On Sunday, 6 March 2016 at 07:38:01 UTC, Ali Çehreli wrote:
 Motivated by Dmitry's "Pitching D to a gang of Gophers" thread, 
 how about pitching it to a gang of professors and graduate 
 students?

 I will be presenting D to such an audience at METU in Ankara. 
 What are the points that you would stress? I am thinking that 
 they would be interested more in whether D is better as a 
 teaching tool. Do you agree?

 Ali
I would insist heavily on the multiparadigm properties of D: being able to teach C-like imperative programming, java-like OOP, compilers and assembly, purity and functional paradigms, testing and profiling, all that without having to change language even once is likely to be D's strongest strength for a teacher I think.
Mar 06 2016
prev sibling next sibling parent reply Russel Winder via Digitalmars-d <digitalmars-d puremagic.com> writes:
On Sat, 2016-03-05 at 23:38 -0800, Ali =C3=87ehreli via Digitalmars-d wrote=
:
 Motivated by Dmitry's "Pitching D to a gang of Gophers" thread, how=C2=A0
 about pitching it to a gang of professors and graduate students?
=20
 I will be presenting D to such an audience at METU in Ankara. What
 are=C2=A0
 the points that you would stress? I am thinking that they would be=C2=A0
 interested more in whether D is better as a teaching tool. Do you
 agree?
It all depends who the students are that academics you are pitching to will be dealing with. Assuming Turkish academic structure and academics are at least analogous to UK ones=E2=80=A6 Level of student: A. Learning programming from nothing. B. Learning about data structures and algorithms as a second programming course. C. Doing some advanced option. Which subject is their main one: 1. Computing 2. Computer Science 3. Electronic Engineering 4. Physics 5. Biology 6. Economics =E2=80=A6 For 3 they will use C: It has been enshrined in canon for about 30 years that electronic engineers will use C. 4, 5, 6, and =E2=80=A6 will either use Fortran (but not FORTRAN), or Python= . This is due to extant codebases and support for subject specific data analysis and visualization. There is likely no point in trying to get D in front of students other than in categories 1 and 2. All too often courses labelled "Computer Science" contain little or no programming, or at best very little quality programming education. Fashion is generally the driving force behind most language choice, very few institutions do proper analysis. For options courses, C above, people will choose a domain related language rather than a general purpose one. For OS, use C (or C++, Rust) =E2=80=93 the idea of writing an OS in a language with GC will not ha= ve percolated in. FP course will use Haskell, Clean, Lisp, OCaml, SML,=E2=80= =A6 For second course, B above, it is usual to carry on with the language of the initial course, especially if there has only been one. If there hasn't it helps as you get two languages to work with. For introduction courses, A above, most will use Java (because, history), or Python. Unless you are Texas A&M in which case C++. Some enlightened organizations will use a combination, Haskell and Prolog, Python and C++,=E2=80=A6 The single most important driver is being able to do stuff immediately on Day 1. This generally means a REPL =E2=80=93 usually because that is the indoctrination the academics have received over the years. So where does D fit? Do not try to compete with the FP languages in FP courses, just do not go there. OS and hardware could be a good place, especially using the no GC D. D fits well for data structures and algorithms as it can do the full multi-paradigm thing way better than C++, and Rust, and you can bring C in if needed. The material in Phobos is good to show end results, but D is good for showing the simple algorithms needed in such a course. You get the full imperative approach and the more declarative approach possible with D. Find out which text books they use if any, or which materials they use, if D fits with that good, if it doesn't then you have to wait for a change of responsible academic before you get a change of language and material. For starting, D's single most important thing is rdmd. Write code, run it. The downside for D is that it is big and complex more or less from the outset, like C++ and Rust, just less so. Biggest competitor will be Go which is very simple at the outset and only gets complicated later, and they have "go run". Type inference is good so you don't spend time writing out the names of types lots of time (as in Java). Strong compile time typing is good, mostly because students do not have to know about it at the outset.=C2=A0 =C2=A0 Some academics like a bottom up approach; some students like that. Some academic prefer a more wholistic, experiential approach; some students like that. Kids love playing and finding out in a morass of lack of knowledge. By the time people have got to university most students have had that joy beaten out of them by academics in favour of the structure bottom up constructivism. How sad. So D as a language that can handle bottom up and experiential learning might be a good line. Anyway this has turned into a long email, and I have to go. Hopefully this has helped some.=C2=A0 --=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=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 voip: sip:russel.winder ekiga.n= et 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Mar 06 2016
parent =?UTF-8?Q?Ali_=c3=87ehreli?= <acehreli yahoo.com> writes:
Thank you everyone. This thread has been very helpful.

On 03/06/2016 01:55 AM, Russel Winder via Digitalmars-d wrote:
 On Sat, 2016-03-05 at 23:38 -0800, Ali Çehreli via Digitalmars-d wrote:
 Motivated by Dmitry's "Pitching D to a gang of Gophers" thread, how
 about pitching it to a gang of professors and graduate students?
Sorry for not asking a clear question. The audience will be the staff and students of the CS department. So, I think the following is correct.
 Level of student:

      B. Learning about data structures and algorithms as a second
      programming course.
      C. Doing some advanced option.
 Which subject is their main one:

      1. Computing
      2. Computer Science
Let's see how many will show up. :) Ali
Mar 06 2016
prev sibling next sibling parent Chris Wright <dhasenan gmail.com> writes:
On Sat, 05 Mar 2016 23:38:01 -0800, Ali Çehreli wrote:

 Motivated by Dmitry's "Pitching D to a gang of Gophers" thread, how
 about pitching it to a gang of professors and graduate students?
 
 I will be presenting D to such an audience at METU in Ankara. What are
 the points that you would stress? I am thinking that they would be
 interested more in whether D is better as a teaching tool. Do you agree?
 
 Ali
D has good support for functional programming. It's had support for this long enough that it's well baked into the standard library. It doesn't do single-write, all-values-are-immutable style so well, though, which is another intuitive leap learning functional languages. But if you get people used to first-class functions in D, where they can make everything mutable, it should be easier to teach Haskell or OCaml or Elm.
Mar 06 2016
prev sibling next sibling parent reply Seb <seb wilzba.ch> writes:
On Sunday, 6 March 2016 at 07:38:01 UTC, Ali Çehreli wrote:
 Motivated by Dmitry's "Pitching D to a gang of Gophers" thread, 
 how about pitching it to a gang of professors and graduate 
 students?
If you want D to flourish, you should _really_ focus on this. Many CS students usually learn only one or two language at university. At our university you can learn those in courses: - Java for OOP - Perl (not kidding) for scripting (normally now Python or sometimes JS is used) - Haskell/OCaml/F# for functional programming - C/C++ for system programming, imperative programming The awesome part and what I love so much about D is that you can teach all of those in ONE language. However my point is that most students will continue to use the language they learn at university (or maybe high school) forever - it's really similar to one's "native tongue" - this *not* only means that they get used to it, but they also will start new projects with it and continue to develop in this language. In other words: this will result in a huge increase of the user base and thus also (financial) interest in the D. Why don't we make a Coursera (or similar) course about D? They usually have an audience of at least 50-100K. In case money is pretty tight, some of these platforms even have special credit programs (25-50K$) to fund development of new courses, but usually a university is happy to sponsor the production costs for such a course if they can write their name on it.
Mar 06 2016
next sibling parent sigod <sigod.mail gmail.com> writes:
On Sunday, 6 March 2016 at 17:53:23 UTC, Seb wrote:
 Why don't we make a Coursera (or similar) course about D? They 
 usually have an audience of at least 50-100K.
That's a great idea. I would love to take such course.
Mar 06 2016
prev sibling parent reply Jesse Phillips <Jesse.K.Phillips+D gmail.com> writes:
On Sunday, 6 March 2016 at 17:53:23 UTC, Seb wrote:
 On Sunday, 6 March 2016 at 07:38:01 UTC, Ali Çehreli wrote:
 Motivated by Dmitry's "Pitching D to a gang of Gophers" 
 thread, how about pitching it to a gang of professors and 
 graduate students?
If you want D to flourish, you should _really_ focus on this. Many CS students usually learn only one or two language at university.
I think this can be one of the selling points. In general, languages aren't the teaching goal of a university. Python/Java - These get chosen for early courses. Python likely because of its strict formatting (get people used to formatting code), the language is high level and has rich collection of libraries. Both of the languages prevent worrying about a lot of other details (memory, procedural is easy to explain) C/C++ - These come into later classes, I'd guess because they are used in industry and have unique usage requirements (null pointers, double free) Otherwise courses seem to expect you know one language (java/python) and try to teach you concepts within that language, and sometimes allow you to do the homework in any language. I think D is the right choice because it can demonstrate concepts while provide the advantages of why other languages are chosen. And it has a very nice set of toys that many students will enjoy playing with and using in their homework. It makes a good learning language because it makes a good using language.
Mar 06 2016
parent Rikki Cattermole <alphaglosined gmail.com> writes:
On 07/03/16 12:26 PM, Jesse Phillips wrote:
 On Sunday, 6 March 2016 at 17:53:23 UTC, Seb wrote:
 On Sunday, 6 March 2016 at 07:38:01 UTC, Ali Çehreli wrote:
 Motivated by Dmitry's "Pitching D to a gang of Gophers" thread, how
 about pitching it to a gang of professors and graduate students?
If you want D to flourish, you should _really_ focus on this. Many CS students usually learn only one or two language at university.
I think this can be one of the selling points. In general, languages aren't the teaching goal of a university. Python/Java - These get chosen for early courses. Python likely because of its strict formatting (get people used to formatting code), the language is high level and has rich collection of libraries. Both of the languages prevent worrying about a lot of other details (memory, procedural is easy to explain) C/C++ - These come into later classes, I'd guess because they are used in industry and have unique usage requirements (null pointers, double free) Otherwise courses seem to expect you know one language (java/python) and try to teach you concepts within that language, and sometimes allow you to do the homework in any language. I think D is the right choice because it can demonstrate concepts while provide the advantages of why other languages are chosen. And it has a very nice set of toys that many students will enjoy playing with and using in their homework. It makes a good learning language because it makes a good using language.
This is actually the primary argument I made for my tertiary institute in making D the first language. It ended up with pretty much every tutor and even head of department (who was a programmer) agreeing with me. Of course that's a big change and industry doesn't reflect it. So don't expect it to happen.
Mar 06 2016
prev sibling next sibling parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 3/5/2016 11:38 PM, Ali Çehreli wrote:
 Motivated by Dmitry's "Pitching D to a gang of Gophers" thread, how about
 pitching it to a gang of professors and graduate students?

 I will be presenting D to such an audience at METU in Ankara. What are the
 points that you would stress? I am thinking that they would be interested more
 in whether D is better as a teaching tool. Do you agree?

 Ali
Things I suspect academics would be interested in are features like D's functional programming, purity, transitive immutability, etc.
Mar 06 2016
parent Timon Gehr <timon.gehr gmx.ch> writes:
On 07.03.2016 06:08, Walter Bright wrote:
 On 3/5/2016 11:38 PM, Ali Çehreli wrote:
 Motivated by Dmitry's "Pitching D to a gang of Gophers" thread, how about
 pitching it to a gang of professors and graduate students?

 I will be presenting D to such an audience at METU in Ankara. What are
 the
 points that you would stress? I am thinking that they would be
 interested more
 in whether D is better as a teaching tool. Do you agree?

 Ali
Things I suspect academics would be interested in are features like D's functional programming, purity, transitive immutability, etc.
Why those features in particular?
Mar 07 2016
prev sibling next sibling parent Martin Tschierschke <mt smartdolphin.de> writes:
On Sunday, 6 March 2016 at 07:38:01 UTC, Ali Çehreli wrote:
 Motivated by Dmitry's "Pitching D to a gang of Gophers" thread, 
 how about pitching it to a gang of professors and graduate 
 students?

 I will be presenting D to such an audience at METU in Ankara. 
 What are the points that you would stress? I am thinking that 
 they would be interested more in whether D is better as a 
 teaching tool. Do you agree?

 Ali
Operator overloading! To build and use the clean Matrix-Vector products syntax M * v and not: mult_matrix_vec(M,v). Combined with all the cool templating to define one function for many types.
Mar 07 2016
prev sibling next sibling parent Andrew <atrotman ebay.com> writes:
On Sunday, 6 March 2016 at 07:38:01 UTC, Ali Çehreli wrote:
 Motivated by Dmitry's "Pitching D to a gang of Gophers" thread, 
 how about pitching it to a gang of professors and graduate 
 students?

 I will be presenting D to such an audience at METU in Ankara. 
 What are the points that you would stress? I am thinking that 
 they would be interested more in whether D is better as a 
 teaching tool. Do you agree?

 Ali
As an academic, the things I would hope you would cover are: Simplicity: That is, its real easy to say something in D, and certainly easier than in Java. The message here is stop teaching Java and start teaching D to first year students. Cleanness of expression: That is, it is so much easier to express yourself in D than in C++ (for example, template meta-programming). That is, use D as an intermediate language for second year students learning about algorithms. Multi-paradigm: That is, since you already know OOP and D, you can learn other paradigms with a language you already know (functional, parallel, embedded, etc). That is, use D for third year programming language courses too. If you with to appeal to the brightest students then you need to cover topics of interest to them. That would include interfaces to tools they understand (Hadoop, etc), efficiency (i.e. the nogc), distributed programming, and so on.
Mar 07 2016
prev sibling next sibling parent reply Andrew <atrotman ebay.com> writes:
Don't forget to mention all the "software engineering" principles 
that can be taught using D too including:

Design by Contract
Literate programming (embedded documentation)

and to tool that come "standard" in the language such as

Coverage
Profiling
Mar 10 2016
parent reply Thiez <thiezz gmail.com> writes:
On Thursday, 10 March 2016 at 21:54:33 UTC, Andrew wrote:
 Don't forget to mention all the "software engineering" 
 principles that can be taught using D too including:

 Design by Contract
 Literate programming (embedded documentation)

 and to tool that come "standard" in the language such as

 Coverage
 Profiling
Surely a language such as Java is much better for things like design by contract through JML? It may not be built-in such as D's `in` and `out` blocks, but there is tool-support for both runtime and static checking, and JML can also describe things such as class invariants. That it took over two years for a bug such as https://issues.dlang.org/show_bug.cgi?id=7910 to get fixed indicates to me that nobody is really using design by contract in D, and makes me wonder how many more bugs are hiding there. Java and JML have been used in both academia and the industry for almost two decades (although it's not as popular as it could be...) so I expect most of the easy-to-encounter bugs have been solved by now.
Mar 10 2016
parent reply Andrew <atrotman ebay.com> writes:
 Surely a language such as Java is much better for things like 
 design by contract through JML? It may not be built-in such as 
 D's `in` and `out` blocks, but there is tool-support for both 
 runtime and static checking, and JML can also describe things 
 such as class invariants.
One of awful things about programming in many languages is that there's a gazillion tools you need to tack-on before you can do any engineering. In C++ that includes Doxygen for documentation, C++Unit for unit tests, gprof, gcov, valgrind, and so on. One of the nice things about D is that so much of this is part of the language or build into DMD. So yes, sure, you can add what ever you like the Java and claim its just as good (or better). The difference is that in D its all right there already.
Mar 10 2016
next sibling parent Thiez <thiezz gmail.com> writes:
On Thursday, 10 March 2016 at 23:47:55 UTC, Andrew wrote:
 One of awful things about programming in many languages is that 
 there's a gazillion tools you need to tack-on before you can do 
 any engineering.  In C++ that includes Doxygen for 
 documentation, C++Unit for unit tests, gprof, gcov, valgrind, 
 and so on.  One of the nice things about D is that so much of 
 this is part of the language or build into DMD.

 So yes, sure, you can add what ever you like the Java and claim 
 its just as good (or better). The difference is that in D its 
 all right there already.
Does D have static checking of contracts, either built-in or through a tool? Because that is a really nice feature for design-by-contract situations.
Mar 10 2016
prev sibling parent Russel Winder via Digitalmars-d <digitalmars-d puremagic.com> writes:
On Thu, 2016-03-10 at 23:47 +0000, Andrew via Digitalmars-d wrote:
[=E2=80=A6]
 One of awful things about programming in many languages is that=C2=A0
 there's a gazillion tools you need to tack-on before you can do=C2=A0
 any engineering.=C2=A0=C2=A0In C++ that includes Doxygen for documentatio=
n,=C2=A0
 C++Unit for unit tests, gprof, gcov, valgrind, and so on.=C2=A0=C2=A0One =
of=C2=A0
 the nice things about D is that so much of this is part of the=C2=A0
 language or build into DMD.
No-one should be using C++Unit for testing in C++ codes. USe a header only system such as Catch or CUTE.
 So yes, sure, you can add what ever you like the Java and claim=C2=A0
 its just as good (or better). The difference is that in D its all=C2=A0
 right there already.
And Java is already right there in the context of teaching. Adding bits to an extent infrastructure is easier that revolutionizing the infrastructure. Been there done this three times: far too many academics are weighed down by inertia when it comes to changing their infrastructure. --=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=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 voip: sip:russel.winder ekiga.n= et 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Mar 12 2016
prev sibling parent Jay Norwood <jayn prismnet.com> writes:
On Sunday, 6 March 2016 at 07:38:01 UTC, Ali Çehreli wrote:
 What are the points that you would stress? I am thinking that 
 they would be interested more in whether D is better as a 
 teaching tool. Do you agree?

 Ali
I think the D std.parallelism library would be a nicer starting point than using openMP if the examples are targeted toward demo on smaller multi-core systems. Also, someone posted here on an app named vlang. That sounded like it could make an interesting combo with a system-C course.
Mar 10 2016