Help me decide D or C

Alexandre alexandrelgodoy at gmail.com
Fri Aug 2 16:49:29 UTC 2019


On Friday, 2 August 2019 at 15:51:25 UTC, Russel Winder wrote:
> On Fri, 2019-08-02 at 13:45 +0000, Alexandre via 
> Digitalmars-d-learn wrote:
>> 
> […]
>> Could you elaborate more about C being a burden? I have read 
>> so many people saying C gives a great foundation and should be 
>> everyone's first language. Now I am confused.
>
> C is a programming language created in the early 1970s to make 
> writing UNIX easier. Early versions of UNIX (and Multics before 
> it) were written in assembly language. Dennis Ritchie et al. 
> wanted to use a programming language that had a higher level of 
> abstraction than assembly language so as to make writing UNIX 
> easier. BCPL gave many of the ideas for B which led to C, 
> effectively a portable assembly language but with special eyes 
> on the PDP-8, PDP-11, and later VAX-11 machine codes. C was 
> hugely successful for writing operating systems because it was 
> "close to the metal" and yet with better abstractions than 
> assembly language. I spent many happy (and many unhappy) hours 
> in the early 1980s writing device drivers for UNIX 6, UNIX 7, 
> and BSD 4.0. C was the right tool for the job at hand at that 
> time.
>
> Many tools associated with UNIX were written in C, including 
> the C compiler, since the only other option at the time in the 
> UNIX context was assembly language. Already though there was 
> the question: was C the right tool for the job of writing 
> applications – as opposed to hardware controlling software. One 
> could argue that "buffer overruns" was  clear evidence that C 
> was the wrong tool for the job.
>
> Unfortunately the obsession with C, even if it was not the 
> right tool for the job at hand, had taken hold: if you didn't 
> write your application in C you were somehow a second or third 
> rate human being, let alone programmer.
>
> Then came C++ (or then C with Classes) and the beginning of the 
> rift between the C camp and the "we need a programming language 
> with higher levels of abstraction" camp. I am sure many can 
> write lots on the 1990s and 2000s and the various language 
> wars, but here we are in 2010s entering the 2020s and we have 
> D, Rust, Go, Java, Kotlin, Python, Ruby, C++, Lisp, Prolog, 
> Erlang, etc. all of which have their problems, but all of which 
> have their "sweet spots" for being the right tool for the job 
> at hand. C is no longer the de facto standard language for 
> writing all software. People are increasingly recognising that 
> it is as if C were specifically created for writing software 
> that controls hardware.
>
> C still has a role in the world of programming, and it 
> definitely has a status as one of the most important 
> programming languages ever.
>
> Moral of this story is that, for me, in 2019, if you are 
> writing applications
> software or software tools, C is not the right tool for the job.

Do you thing D would be the right tool for the job at this point 
for me? Assuming I have 2 goals in mind: 1) become a better 
programmer and 2) want to make fun writing software for myself 
and if possible show something I might be proud of.
I thought C would be a better choice for the 1), because everyone 
says it's great to see whats behind the hood and things like 
that. My experience with C btw is CS50 course, plus around 
200/300 pages of some books, still reading and a few toy 
projects. So, basically 0 knowledge. haha. But after reading your 
opinion, I guess C might not be the right tool for me, since I 
wont be doing any kind of thing related to hardware (I think).



I have receive so many good opinions so far. I realize there is 
no consensus what so ever. As I was suggested Haskell, Python, D, 
C etc. It's a good thing, but hard to make a decision.


More information about the Digitalmars-d-learn mailing list