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? > > 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?
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… 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 … 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 … 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) – the idea of writing an OS in a language with GC will not have percolated in. FP course will use Haskell, Clean, Lisp, OCaml, SML,… 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++,… The single most important driver is being able to do stuff immediately on Day 1. This generally means a REPL – 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. 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. -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.win...@ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: rus...@winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
signature.asc
Description: This is a digitally signed message part