How convince computer teacher

retard re at tard.com.invalid
Mon Dec 13 17:30:21 PST 2010


Mon, 13 Dec 2010 16:45:09 -0500, Austin Hastings wrote:

> On 12/9/2010 11:27 AM, Ddev wrote:
>> hi community,
>> How convince my teacher to go in D ?
>> After talk with my teacher, i do not think D is good because after 10
>> years is not become the big one. she is very skeptical about D. If i
>> could convince my teacher it will be great maybe i will teach to his
>> students :)
> 
> Please don't.

[snip] 

> Bottom line: you'd be wasting your time and your teacher's time. If
> you're still in school, you shouldn't be looking at D at all. You should
> be learning some of the functional languages to stretch your brain, or
> learning some of the popular procedural languages to pad your resume.

(To you who wonder whether he is a troll since he disagrees with you -- 
As far as I can tell, the indentity is real and unique. It just so 
happens that not everyone wants to advocate D blindly)

I agree with you, you have great points there. In my school they used to 
have different computer science programs for theoretical stuff and 
"vocational" engineering studies. The latter mostly used commercial 
Java/.NET/C++ toolchain to do the stuff. The theoretical program used 
easily available languages (Scheme, C, Assembly, Pascal, Java, Haskell, 
Coq). The focus __wasn't__ on languages. The main goals were:

1) basic programming: how to program a computer, how to use abstractions, 
how to program in the small using procedures, classes, and objects. how 
to use build tools, IDEs, editors, command line (Scheme | Pascal | Java)

2) data structures and algorithms: time and space complexity, graphs, 
trees, lists, arrays, dynamic programming, maximum flow, divide and 
conquer, parallel programming, and so on. (Pascal like pseudo language 
was used, the idea was to provide a pure language with small amount of 
features and hidden costs)

3) low level programming: how the CPU works, how the memory system works, 
how binaries are constructed (Assembly)

4) programming languages: declarative, functional, stack, concurrent, 
logic, imperative, OOP, scripting (Haskell, Java, Perl, C, ... __oldest 
possible languages of that paradigm__)

5) practical programming with libraries: audio programming, graphics 
programming, AI, network programming, ... (mostly C/C++/Java)

6) functional languages and theorem proving (Haskell, Coq, ...)

7) software development practices: how to program/manage in large projects 
(version control, testing, project management, entrepreneurship, computer 
systems) (mostly Java/PHP/C++ in project works)

8) operating systems, networks, cryptography, compilers, mathematics: I 
don't think these were demonstrated with any languages.

I fail to see where D fits in.

1) You would have to use a subset of D for basic programming. Providing 
too much information is harmful. Currently even SafeD is too big for this 
task. And the specification of SafeD isn't available anywhere. The lack 
of a good 64-bit compiler is also a great problem. It's intellectual 
dishonesty to claim that D is ready for this task. It could be! But it 
isn't now and not in the near future.

2) The idea was to avoid language dependencies. You had to explicitly 
write all algorithms and data structures, not use built-in ones. The 
pseudo language was really simple, similar to Pascal, but with some 
useful extensions. Many algorithmics textbooks also use these kind of 
languages. It made it really easy to study several of these books during 
the courses. If I had used D, it would be harder to read 40+ years worth 
of algorithm & data structure books.

3) I think the pure assembler is much useful than D's inline assembler 
for this stuff. We also learned how object file formats work (sections 
etc.) and how you can control the resulting binaries with special 
features. D doesn't really help here, does it? How is it better than a 
portable, fully tested production ready 100% free/open/portable assembler.

4) This was mostly a list of language history courses. Very interesting. 
We did not prove how D is much better than everything else. We studied 
tens of languages. The focus wasn't on practical language skills. We only 
learned how features like objects and expections and functional language 
thunks etc. are implemented (not in a single language, but in each one of 
them, also the bad implementations). How features can be combined (also 
the bad choices). How many different paradigms there are. What the world 
looked like in 1970. Really, why is D better than any of these languages? 
How would you built the material around D?

5) Where are the libraries? Where is the good documentation? One example: 
http://www.processing.org/ - does D really have something as good? http://
lwjgl.org/ - does D2 have an up-to-date library similar to this? Need 
more examples? http://www.springsource.org/ http://www.hibernate.org/ 
Where are the application servers, the web server plugins? Competitive 
XML parsers? AI libraries? IDE integration? The sad truth is, it will 
take years to surpass these existing ones in quality and their feature 
set.

6) So... you would really use D to teach purely functional programming 
and theorem proving? Seen this? http://www.amazon.com/Purely-Functional-
Structures-Chris-Okasaki/dp/0521663504 Familiar with this stuff? http://
adam.chlipala.net/cpdt/html/toc.html Good luck!

7) I can only imagine you mention unit testing and contracts here on some 
lecture. What about test driven development, continuous integration 
etc. ? How does D explain XP, Scrum, OpenUP, or Waterfall processes? How 
does it work with UML? Any commercial quality tools with two-directional 
graph<->source transforms. I don't think so! How does D help with design 
patterns and sw architectures? Modules, yes. You need to have more 
content than that.


Overall, the importance of a single language is miniscule compared to the 
amount of information you deal with while studying. The only place where 
it matters is when you need to use existing code base to boost your own 
stuff to another level (point 5 above). Even then the existing code 
weighs more than the language. I find this worrying here yet again 
annoying. Probably no other language community cares so much about 
publicity. What kind of religion is this? Ein Volk, Ein Reich, Ein 
Sprache ?!


More information about the Digitalmars-d mailing list