www.digitalmars.com         C & C++   DMDScript  

D - Why I don't like D

reply Matthias Becker <Matthias_member pathlink.com> writes:
"It's a practical language for practical programmers who need to get the job
done quickly, reliably, and leave behind maintainable, easy to understand code."

This is a good example for why I don't like D. I like coding. I do it a lot in
my freetime. I don't want to get the job done quickly. I want coding to be fun.


"D is the culmination of decades of experience implementing compilers for many
diverse languages, and attempting to construct large projects using those
languages. D draws inspiration from those other languages (most especially C++)
and tempers it with experience and real world practicality"

Rigth. There is nothing new in D. Somebody said somethin like "if a language
doesn't change the way you think it's not worth learning it", and D doesn't

Eiffel. That's all, at least that's what it feels like.



"C++ implements things like resizable arrays and string concatenation as part of
the standard library, not as part of the core language. Not being part of the
core language has several suboptimal consequences."

If you want to know which suboptimal consequences it has you have to read the
articel about D-"strings" (which are actualy simple array, which feels wrong in
a oo-world. It feels much too technical, rather than natural.)
Anyway, in this text you can read that D has a ~-operator to concatenate arrays
(which feels unnatural, as you are used to only use it as a not in C-like
languages). I don't get what this has to do with whether arrays are part of the
language or the library. D can overload operators, so this isn't a plus. The
next point is slicing. Why can't I implement slicing in a self written class? 
D-arrays can implicitly converted to a pointer of the same type. This isn't
something special. You could write your own string class that allows implicit
casts to char *. But implicit casts are considered as being bad. So this isn't a
plus, too.
Than "String Switch Statements". Can I do it with any arrays or only with arrays
of chars. I hate inconsitency. If I can do it with any array, why can't I do it
with a self written class, if I want it to be similar to an array (e.g. a list).
As said I hate inconsitency, so this is another point why I don't like D and not
a feature.



But let's leave this string/array-topic.
"Support multi-paradigm programming, i.e. at a minimum support imperative,
structured, object oriented, and generic programming paradigms". But "C++
programmers tend to program in particular islands of the language, i.e. getting
very proficient using certain features while avoiding other feature sets. While
the code is usually portable from compiler to compiler, it can be hard to port
it from programmer to programmer. A great strength of C++ is that it can support
many radically different styles of programming - but in long term use, the
overlapping and contradictory styles are a hindrance."
D's philosophy is too complex for me in this case. I don't understand it. But
how to like a thing, that you don't even understand?


"The general look of D is like C and C++."
As C is very ugly, this is plain stupid. Most people I talked to (not all) don't
like C's general look. So I consider this as being bad.
"This makes it easier to learn and port code to D."
hmm, in C++ '=' means copy, in D it means sometimes reference assignment. Such
very small differences will make it very hard to port code.


"Transitioning from C/C++ to D should feel natural, the programmer will not have
to learn an entirely new way of doing things."

I like learning new stuff. I started with a simple Basic a long time ago. Than I
learned C++, it was like "WOW". It was amazing. Everything was different. That
was what I liked. Than I learned a bit Haskell and I had the same feeling. You
can write three lines of code and they do the same thing that would need 50
lines of code in C++, without the feeling of a scripting language with over
sepcialized features, that help in some cases but aren't usable in not that
common cases. Than I learnd Objective-C and again it changed the way I thought
was changed. Lisp was different again, ... . Than I leaned D and it was boring.



"Who D is For [...] Those who decide the promise of C++ object oriented
programming is not fulfilled due to the complexity of it."
So it's for stupid people?





Well these were some specific points mentioned in D's specification. But it's a
more general feeling, that I can't describe. Sorry.
Feb 10 2004
next sibling parent Felix <Felix_member pathlink.com> writes:
Nobody says that you are wrong. But if D is just a little bit better than C or
C++ it means progress and it should have its chance.
Basic to D will be as fun as Basic to C.
Even if not the perfect language I think is a step ahead.
Coding should be fun, right; 1. coding with C is fun, but also in D. and 2.
sometimes life is not a matter of fun but one of "to get the job done quickly,
reliably, and leave behind maintenable..." as Walter states it.
I agree with you, but searching only "the Morgana girl" (??? is it ok in
English???) or the Arcadia (Nirvana) is sometimes just an endless quest.


In article <c0afm3$nfg$1 digitaldaemon.com>, Matthias Becker says...
"It's a practical language for practical programmers who need to get the job
done quickly, reliably, and leave behind maintainable, easy to understand code."

This is a good example for why I don't like D. I like coding. I do it a lot in
my freetime. I don't want to get the job done quickly. I want coding to be fun.


"D is the culmination of decades of experience implementing compilers for many
diverse languages, and attempting to construct large projects using those
languages. D draws inspiration from those other languages (most especially C++)
and tempers it with experience and real world practicality"

Rigth. There is nothing new in D. Somebody said somethin like "if a language
doesn't change the way you think it's not worth learning it", and D doesn't

Eiffel. That's all, at least that's what it feels like.



"C++ implements things like resizable arrays and string concatenation as part of
the standard library, not as part of the core language. Not being part of the
core language has several suboptimal consequences."

If you want to know which suboptimal consequences it has you have to read the
articel about D-"strings" (which are actualy simple array, which feels wrong in
a oo-world. It feels much too technical, rather than natural.)
Anyway, in this text you can read that D has a ~-operator to concatenate arrays
(which feels unnatural, as you are used to only use it as a not in C-like
languages). I don't get what this has to do with whether arrays are part of the
language or the library. D can overload operators, so this isn't a plus. The
next point is slicing. Why can't I implement slicing in a self written class? 
D-arrays can implicitly converted to a pointer of the same type. This isn't
something special. You could write your own string class that allows implicit
casts to char *. But implicit casts are considered as being bad. So this isn't a
plus, too.
Than "String Switch Statements". Can I do it with any arrays or only with arrays
of chars. I hate inconsitency. If I can do it with any array, why can't I do it
with a self written class, if I want it to be similar to an array (e.g. a list).
As said I hate inconsitency, so this is another point why I don't like D and not
a feature.



But let's leave this string/array-topic.
"Support multi-paradigm programming, i.e. at a minimum support imperative,
structured, object oriented, and generic programming paradigms". But "C++
programmers tend to program in particular islands of the language, i.e. getting
very proficient using certain features while avoiding other feature sets. While
the code is usually portable from compiler to compiler, it can be hard to port
it from programmer to programmer. A great strength of C++ is that it can support
many radically different styles of programming - but in long term use, the
overlapping and contradictory styles are a hindrance."
D's philosophy is too complex for me in this case. I don't understand it. But
how to like a thing, that you don't even understand?


"The general look of D is like C and C++."
As C is very ugly, this is plain stupid. Most people I talked to (not all) don't
like C's general look. So I consider this as being bad.
"This makes it easier to learn and port code to D."
hmm, in C++ '=' means copy, in D it means sometimes reference assignment. Such
very small differences will make it very hard to port code.


"Transitioning from C/C++ to D should feel natural, the programmer will not have
to learn an entirely new way of doing things."

I like learning new stuff. I started with a simple Basic a long time ago. Than I
learned C++, it was like "WOW". It was amazing. Everything was different. That
was what I liked. Than I learned a bit Haskell and I had the same feeling. You
can write three lines of code and they do the same thing that would need 50
lines of code in C++, without the feeling of a scripting language with over
sepcialized features, that help in some cases but aren't usable in not that
common cases. Than I learnd Objective-C and again it changed the way I thought
was changed. Lisp was different again, ... . Than I leaned D and it was boring.



"Who D is For [...] Those who decide the promise of C++ object oriented
programming is not fulfilled due to the complexity of it."
So it's for stupid people?





Well these were some specific points mentioned in D's specification. But it's a
more general feeling, that I can't describe. Sorry.
Feb 10 2004
prev sibling next sibling parent "Ben Hinkle" <bhinkle4 juno.com> writes:
ok, I'll bite.

| "It's a practical language for practical programmers who need to get the
job
| done quickly, reliably, and leave behind maintainable, easy to understand
code."

[snip]

| I like learning new stuff. I started with a simple Basic a long time ago.
Than I
| learned C++, it was like "WOW". It was amazing. Everything was different.
That
| was what I liked. Than I learned a bit Haskell and I had the same feeling.
You
| can write three lines of code and they do the same thing that would need
50
| lines of code in C++, without the feeling of a scripting language with
over
| sepcialized features, that help in some cases but aren't usable in not
that
| common cases. Than I learnd Objective-C and again it changed the way I
thought
| was changed. Lisp was different again, ... . Than I leaned D and it was
boring.

[snip]

You'll notice that the first quote didn't include being "not boring" (though
I don't find it boring anyway). The goal isn't to be "amazing" - it's to be
practical. I don't know what you are looking for in a language - I guess you
look for new ideas - but for me this is exactly what I'm looking for.

Without getting into a detailed argument about the other points you make, my
general impression is that you seem to expect D to be much more like C++
than it is.

-Ben
Feb 10 2004
prev sibling next sibling parent reply Andy Friesen <andy ikagames.com> writes:
Comments embedded.

Matthias Becker wrote:

 "It's a practical language for practical programmers who need to get the job
 done quickly, reliably, and leave behind maintainable, easy to understand
code."
 
 This is a good example for why I don't like D. I like coding. I do it a lot in
 my freetime. I don't want to get the job done quickly. I want coding to be fun.
 
So do I. I like D because it lets me write code instead of bending over backwards to make the C++ compiler happy.
 
 "D is the culmination of decades of experience implementing compilers for many
 diverse languages, and attempting to construct large projects using those
 languages. D draws inspiration from those other languages (most especially C++)
 and tempers it with experience and real world practicality"
 
 Rigth. There is nothing new in D. Somebody said somethin like "if a language
 doesn't change the way you think it's not worth learning it", and D doesn't

 Eiffel. That's all, at least that's what it feels like.
Some languages are simply incremental improvements on what has come It's merely a matter of how much you like the designers decision of how to comingle all those concepts.
 
 But let's leave this string/array-topic.
 "Support multi-paradigm programming, i.e. at a minimum support imperative,
 structured, object oriented, and generic programming paradigms". But "C++
 programmers tend to program in particular islands of the language, i.e. getting
 very proficient using certain features while avoiding other feature sets. While
 the code is usually portable from compiler to compiler, it can be hard to port
 it from programmer to programmer. A great strength of C++ is that it can
support
 many radically different styles of programming - but in long term use, the
 overlapping and contradictory styles are a hindrance."
 D's philosophy is too complex for me in this case. I don't understand it. But
 how to like a thing, that you don't even understand?
 
It means that a programmer should be able to know D in its entirety. The C++ spec is about 700 pages, as I understand it. People tend to learn pieces of C++ well, and use those pieces exclusively. The result is programmers who have difficulty reading code written by others.
 
 "The general look of D is like C and C++."
 As C is very ugly, this is plain stupid. Most people I talked to (not all)
don't
 like C's general look. So I consider this as being bad.
 "This makes it easier to learn and port code to D."
 hmm, in C++ '=' means copy, in D it means sometimes reference assignment. Such
 very small differences will make it very hard to port code.
 
No matter what the syntax looks like, someone will call it ugly. You just can't please everyone. :) I don't think the reference semantics are a big deal. Java coders get along just fine.
 
 "Transitioning from C/C++ to D should feel natural, the programmer will not
have
 to learn an entirely new way of doing things."
 
 I like learning new stuff. I started with a simple Basic a long time ago. Than
I
 learned C++, it was like "WOW". It was amazing. Everything was different. That
 was what I liked. Than I learned a bit Haskell and I had the same feeling. You
 can write three lines of code and they do the same thing that would need 50
 lines of code in C++, without the feeling of a scripting language with over
 sepcialized features, that help in some cases but aren't usable in not that
 common cases. Than I learnd Objective-C and again it changed the way I thought
 was changed. Lisp was different again, ... . Than I leaned D and it was boring.
 
I felt quite the opposite. I thought (and still think) that writing D is like writing C++, except without having to do all the memory babysitting or compiler appeasing. (or like writing Java without being crammed into Sun's idea of what prototypical OO code should be)
 
 
 "Who D is For [...] Those who decide the promise of C++ object oriented
 programming is not fulfilled due to the complexity of it."
 So it's for stupid people?
 
Quite the contrary: lazy programmers are usually smart programmers. ;)
 
 Well these were some specific points mentioned in D's specification. But it's a
 more general feeling, that I can't describe. Sorry.
 
A lot of the people coming to D are frustrated with C++'s complexity. Different perspectives are good. :) -- andy
Feb 10 2004
parent reply imr1984 <imr1984_member pathlink.com> writes:
I totally agree with andy. the only the thing i dont like about D is its name.

In article <c0aqqs$18sv$1 digitaldaemon.com>, Andy Friesen says...
Comments embedded.

Matthias Becker wrote:

 "It's a practical language for practical programmers who need to get the job
 done quickly, reliably, and leave behind maintainable, easy to understand
code."
 
 This is a good example for why I don't like D. I like coding. I do it a lot in
 my freetime. I don't want to get the job done quickly. I want coding to be fun.
 
So do I. I like D because it lets me write code instead of bending over backwards to make the C++ compiler happy.
 
 "D is the culmination of decades of experience implementing compilers for many
 diverse languages, and attempting to construct large projects using those
 languages. D draws inspiration from those other languages (most especially C++)
 and tempers it with experience and real world practicality"
 
 Rigth. There is nothing new in D. Somebody said somethin like "if a language
 doesn't change the way you think it's not worth learning it", and D doesn't

 Eiffel. That's all, at least that's what it feels like.
Some languages are simply incremental improvements on what has come It's merely a matter of how much you like the designers decision of how to comingle all those concepts.
 
 But let's leave this string/array-topic.
 "Support multi-paradigm programming, i.e. at a minimum support imperative,
 structured, object oriented, and generic programming paradigms". But "C++
 programmers tend to program in particular islands of the language, i.e. getting
 very proficient using certain features while avoiding other feature sets. While
 the code is usually portable from compiler to compiler, it can be hard to port
 it from programmer to programmer. A great strength of C++ is that it can
support
 many radically different styles of programming - but in long term use, the
 overlapping and contradictory styles are a hindrance."
 D's philosophy is too complex for me in this case. I don't understand it. But
 how to like a thing, that you don't even understand?
 
It means that a programmer should be able to know D in its entirety. The C++ spec is about 700 pages, as I understand it. People tend to learn pieces of C++ well, and use those pieces exclusively. The result is programmers who have difficulty reading code written by others.
 
 "The general look of D is like C and C++."
 As C is very ugly, this is plain stupid. Most people I talked to (not all)
don't
 like C's general look. So I consider this as being bad.
 "This makes it easier to learn and port code to D."
 hmm, in C++ '=' means copy, in D it means sometimes reference assignment. Such
 very small differences will make it very hard to port code.
 
No matter what the syntax looks like, someone will call it ugly. You just can't please everyone. :) I don't think the reference semantics are a big deal. Java coders get along just fine.
 
 "Transitioning from C/C++ to D should feel natural, the programmer will not
have
 to learn an entirely new way of doing things."
 
 I like learning new stuff. I started with a simple Basic a long time ago. Than
I
 learned C++, it was like "WOW". It was amazing. Everything was different. That
 was what I liked. Than I learned a bit Haskell and I had the same feeling. You
 can write three lines of code and they do the same thing that would need 50
 lines of code in C++, without the feeling of a scripting language with over
 sepcialized features, that help in some cases but aren't usable in not that
 common cases. Than I learnd Objective-C and again it changed the way I thought
 was changed. Lisp was different again, ... . Than I leaned D and it was boring.
 
I felt quite the opposite. I thought (and still think) that writing D is like writing C++, except without having to do all the memory babysitting or compiler appeasing. (or like writing Java without being crammed into Sun's idea of what prototypical OO code should be)
 
 
 "Who D is For [...] Those who decide the promise of C++ object oriented
 programming is not fulfilled due to the complexity of it."
 So it's for stupid people?
 
Quite the contrary: lazy programmers are usually smart programmers. ;)
 
 Well these were some specific points mentioned in D's specification. But it's a
 more general feeling, that I can't describe. Sorry.
 
A lot of the people coming to D are frustrated with C++'s complexity. Different perspectives are good. :) -- andy
Feb 10 2004
parent reply "Ben Hinkle" <bhinkle4 juno.com> writes:
"imr1984" <imr1984_member pathlink.com> wrote in message
news:c0asm0$1bv1$1 digitaldaemon.com...
| I totally agree with andy. the only the thing i dont like about D is its name.

Maybe D could be an abbreviation for something. How about "D'oh". Here are some
others that come to mind:
dessert
death
dragon
domino
diaper

semi-seriously:
develop
deploy
dynamic

who knows... it could go on and on. My guess is it'll just be plain 'ol "D"
that doesn't mean a thing.

-Ben
Feb 10 2004
parent J Anderson <REMOVEanderson badmama.com.au> writes:
Ben Hinkle wrote:

"imr1984" <imr1984_member pathlink.com> wrote in message
news:c0asm0$1bv1$1 digitaldaemon.com...
| I totally agree with andy. the only the thing i dont like about D is its name.

Maybe D could be an abbreviation for something. How about "D'oh". Here are some
others that come to mind:
dessert
death
dragon
domino
diaper

semi-seriously:
develop
deploy
dynamic

who knows... it could go on and on. My guess is it'll just be plain 'ol "D"
that doesn't mean a thing.

-Ben


  
What about digital mar <g> -- -Anderson: http://badmama.com.au/~anderson/
Feb 10 2004
prev sibling next sibling parent Ant <Ant_member pathlink.com> writes:
In article <c0afm3$nfg$1 digitaldaemon.com>, Matthias Becker says...

Thank you for letting us know. Many would just leave
never enriching our experience with their point of view.
(ok sounds corny you try to say that in your second language)

[sniped]

I like learning new stuff. I started with a simple Basic a long time ago. Than I
learned C++, it was like "WOW". It was amazing. Everything was different. That
was what I liked. Than I learned a bit Haskell and I had the same feeling. You
can write three lines of code and they do the same thing that would need 50
lines of code in C++, without the feeling of a scripting language with over
sepcialized features, that help in some cases but aren't usable in not that
common cases. Than I learnd Objective-C and again it changed the way I thought
was changed. Lisp was different again, ... . Than I leaned D and it was boring.
you say: "like learning", "different", "changed the way I thought", "different again"... that's the problem. If you actully wanted to create something (not saying you don't, just remember a progaming language is suppose to let you solve your problem not being a game) you would see why D has it's place amoung all the other languages. I share your concerns (for lack of a better word) on the OO support but I believe a full OO library will have to the build somehow (maybe we will loose the swich on string - small detail). Of course D is not perfect. This last few months with D, making suggestions and seeing how D evolved made me sure that to have a perfect language you have to write your own. BTW I don't know if you forgot but on all the languages you listed you are missing assembler, try it, you'll like it (I don't know about the intel 386 though... try to check which is the best one but choose one that you actually have the hardware support) Ant
Feb 10 2004
prev sibling next sibling parent reply "Alex A. B." <freshmind fromru.com> writes:
 This is a good example for why I don't like D. I like coding. I do it a
lot in
 my freetime. I don't want to get the job done quickly. I want coding to be
fun. You're latent masochist. ;) Practical programmer has fun not writing the code, but implementing ideas, and has ultimate fun when it finally works.
 Rigth. There is nothing new in D. Somebody said somethin like "if a
language
 doesn't change the way you think it's not worth learning it", and D
doesn't

 Eiffel. That's all, at least that's what it feels like.
I can hardly remember any language in last decade which does really change something. If you want to change a way you think you need to learn logic and functional programming. And believe me any modern functional language isn't really something new. much competition.
 If you want to know which suboptimal consequences it has you have to read
the
 articel about D-"strings" (which are actualy simple array, which feels
wrong in
 a oo-world. It feels much too technical, rather than natural.)
You are wrong. Representing string as Object is technical too, its not natural at all. What's so natural is in representing text as a bunch of string Objects, which are by nature not connected with text's meaning, etc. Representing string as array gives you understanding of what it really is - simple array of characters.
 Than "String Switch Statements". Can I do it with any arrays or only with
arrays
 of chars. I hate inconsitency. If I can do it with any array, why can't I
do it
 with a self written class, if I want it to be similar to an array (e.g. a
list).
 As said I hate inconsitency, so this is another point why I don't like D
and not
 a feature.
Well that's the only point I do agree.
 D's philosophy is too complex for me in this case. I don't understand it.
But
 how to like a thing, that you don't even understand?
That's your problem. Why should anyone learn that you don't understand nor like it? This info is redundant.
 As C is very ugly, this is plain stupid. Most people I talked to (not all)
don't
 like C's general look. So I consider this as being bad.
So why are you still ranting here? Do you reallly suppose D will go 180 degrees back or what!? C is not ugly, but ugly are the people who do not understand the natural flow of life.
 I like learning new stuff. I started with a simple Basic a long time ago.
Than I
 learned C++, it was like "WOW". It was amazing. Everything was different.
That
 was what I liked. Than I learned a bit Haskell and I had the same feeling.
You
 was changed. Lisp was different again, ... . Than I leaned D and it was
boring. Then skip it. Or go back and learn a little more. You're looking like a novice student. D wasn't made for amazement. Furthermore if you'll learn some more functional/logic programming I think you'll completely stick to it, unless you need some practical programming to be done. Personally I like to learn new stuff too. Well I have learned a bit more than you (and probably there are people who learned a lot more here), but finally I was bored by neverending quest for programming knowledge. It all ended up with a ton of compilers all over my disk, numerous small programs in more than 20 languages written by me and OVERALL FRUSTRATION. I can write a hundred-page text with rant like "what's so bad in it!" about any language you can possibly name. That doesn't change anything. You should stop sometime learning new stuff and start doing something really significant. By accident you will find out that all the stuff you learned before is plain pathetic.
Feb 10 2004
next sibling parent "C" <dont respond.com> writes:
Well said , I agree with all of your points ( Alex ).

Than I
learned C++, it was like "WOW". It was amazing. Everything was different.
That
was what I liked. Than I learned a bit Haskell and I had the same feeling.
You
can write three lines of code and they do the same thing that would need 50
lines of code in C++, without the feeling of a scripting language with over
sepcialized features, that help in some cases but aren't usable in not that
common cases. Than I learnd Objective-C and again it changed the way I
thought
And after all this learning , when are you going to put it to use ?? C "Alex A. B." <freshmind fromru.com> wrote in message news:c0b14b$1iqj$1 digitaldaemon.com...
 This is a good example for why I don't like D. I like coding. I do it a
lot in
 my freetime. I don't want to get the job done quickly. I want coding to
be
 fun.

 You're latent masochist. ;)

 Practical programmer has fun not writing the code, but implementing ideas,
 and has ultimate fun when it finally works.

 Rigth. There is nothing new in D. Somebody said somethin like "if a
language
 doesn't change the way you think it's not worth learning it", and D
doesn't

of
 Eiffel. That's all, at least that's what it feels like.
I can hardly remember any language in last decade which does really change something. If you want to change a way you think you need to learn logic and
functional
 programming.
 And believe me any modern functional language isn't really something new.

 much competition.

 If you want to know which suboptimal consequences it has you have to
read
 the
 articel about D-"strings" (which are actualy simple array, which feels
wrong in
 a oo-world. It feels much too technical, rather than natural.)
You are wrong. Representing string as Object is technical too, its not natural at all. What's so natural is in representing text as a bunch of string Objects, which are by nature not connected with text's meaning, etc. Representing string as
array
 gives
 you understanding of what it really is - simple array of characters.

 Than "String Switch Statements". Can I do it with any arrays or only
with
 arrays
 of chars. I hate inconsitency. If I can do it with any array, why can't
I
 do it
 with a self written class, if I want it to be similar to an array (e.g.
a
 list).
 As said I hate inconsitency, so this is another point why I don't like D
and not
 a feature.
Well that's the only point I do agree.
 D's philosophy is too complex for me in this case. I don't understand
it.
 But
 how to like a thing, that you don't even understand?
That's your problem. Why should anyone learn that you don't understand nor like it? This info is redundant.
 As C is very ugly, this is plain stupid. Most people I talked to (not
all)
 don't
 like C's general look. So I consider this as being bad.
So why are you still ranting here? Do you reallly suppose D will go 180 degrees back or what!? C is not ugly, but ugly are the people who do not
understand
 the natural flow of life.

 I like learning new stuff. I started with a simple Basic a long time
ago.
 Than I
 learned C++, it was like "WOW". It was amazing. Everything was
different.
 That
 was what I liked. Than I learned a bit Haskell and I had the same
feeling.
 You
 was changed. Lisp was different again, ... . Than I leaned D and it was
boring. Then skip it. Or go back and learn a little more. You're looking like a novice student. D wasn't made for amazement. Furthermore if you'll learn some more functional/logic programming I think you'll completely stick to it, unless you need some practical programming to be done. Personally I like to learn new stuff too. Well I have learned a bit more than you (and probably there are people who learned a lot more here), but finally I was bored by neverending quest for programming knowledge. It all ended up with a ton of compilers all over my disk, numerous small programs in more than
20
 languages written
 by me and OVERALL FRUSTRATION. I can write a hundred-page text with rant
 like "what's so bad in it!" about any language you can possibly name. That
 doesn't
 change anything. You should stop sometime learning new stuff and start
doing
 something really significant. By accident you will find out that all the
 stuff you learned
 before is plain pathetic.
Feb 10 2004
prev sibling next sibling parent "Walter" <walter digitalmars.com> writes:
"Alex A. B." <freshmind fromru.com> wrote in message
news:c0b14b$1iqj$1 digitaldaemon.com...
 Representing string as array gives
 you understanding of what it really is - simple array of characters.
I think you hit the nail on the head why D strings are the way they are. I too have a hard time thinking of strings as being an object, like I have a hard time thinking of an int as being an object. Java arrays are not quite arrays and not quite objects (can't derive from an array), they have characteristics of both (sort of like light acting as a wave and a particle <g>). In addition, Java strings are not Java arrays of characters. That just didn't feel quite right to me, either. I've written a few string processing utilities in D, and the way arrays, arrays of chars, slicing, etc., all come together gives it a very natural feel. I realize that in a pure OO language, everything is an object. But D isn't meant to be a pure OO language, there are several good ones out there filling that niche quite well already. There is also nothing at all preventing one from writing a string class in D. In fact, a couple have been written and posted here.
Feb 10 2004
prev sibling parent reply Matthias Becker <Matthias_member pathlink.com> writes:
You're latent masochist. ;)
Maybe :p
Practical programmer has fun not writing the code, but implementing ideas,
and has ultimate fun when it finally works.
But can you develope new ideas in a language you don't like? [...]
I can hardly remember any language in last decade which does really change
something.
So people weren't very creative in the last decade. That's a pity.
If you want to change a way you think you need to learn logic and functional
programming.
So Haskell and Lisp aren't functional? But I haven't learned any logic language. [...]
Representing string as array
gives
you understanding of what it really is - simple array of characters.
So perhaps we should do everithing in Assembler? [...]
So why are you still ranting here? Do you reallly suppose D will go 180
degrees
back or what!? 
No, I don't.
C is not ugly, but ugly are the people who do not understand
the natural flow of life.
Could you please explain this? [...]
You should stop sometime learning new stuff and start doing
something really significant. 
I should stop learning new stuff? That's an interesting oppinion.
By accident you will find out that all the
stuff you learned
before is plain pathetic.
Hm, I used the stuff I learnd e.g. to develope my virtual guitar amplifier ( http://helium.ex0.org/guitifier.zip ; you need a VST-compatible host to use it; this is a Win-PC-version only, MacOSX will follow). So my amp is plain pathetic? :(
Feb 11 2004
parent reply "Alex A. B." <freshmind fromru.com> writes:
 But can you develope new ideas in a language you don't like?
I know no languages I don't like. ;)
 So people weren't very creative in the last decade. That's a pity.
People were extremely creative last decade, judging by a huge number of 'new' programming languages developed. ;) But if we'll have cold-eyed look at then we'll discover they're nothing new at all and consist of altered and combined ideas. All the languages you mentioned are pretty old and the ideas they are based on are even older. Haskell originates from ML, which originates from Backus' FP, which was introduced in late 70s, which itself originates from LISP, which as you probably know appeared at 1960. And what's apparent to me - All the ideas(these languages are based on) come from math and linguistics. ;) There is nothing new in this world. The human can only 'invent' the things which are logically descendant from the previous ideas. "The revolution" in any branch of science(computational science here) is not possible(and never was) and if such revolution is proclaimed it's nothing more than marketing trick.
C is not ugly, but ugly are the people who do not understand
the natural flow of life.
Could you please explain this?
Life is evolution. It applies not also to live beings, but to programming languages too. It's survival of the fittest. C became the most popular language, not because it was the most "amazing", but it was the fittest one. And the number of successful ideas developed with it proves that its nice language, not ugly. ;)
 So Haskell and Lisp aren't functional? But I haven't learned any logic
language. They are functional(though Lisp isn't 'purely' functional), but if you think you have learned Haskell, go back and try to learn a bit more. ;) Try to learn Prolog, Mercury, Erlang. Logic programming is my favourite, but chances that you'll like it aren't exactly high. :( LP is the newest programming paradigm, though logic is foundation of programming. It's not even as popular as functional programming, but Erlang being half-functional, half-logic programming language is being used heavily in industry. Example of great program made in it is Wings3D(polygonal mesh modeller)
you understanding of what it really is - simple array of characters.
So perhaps we should do everithing in Assembler?
Assembler has no arrays, really. ;) But I think everybody should start learning programming with Assembler. There are still a lot of things which could be done efficiently only with assembler. By the way most functional languages treat string as list of characters and array is just the simplest representation of list.
 I should stop learning new stuff? That's an interesting oppinion.
By accident you will find out that all the
stuff you learned before is plain pathetic.
I mean that by stoping 'learning new stuff' you will learn a lot more accidentally. ;)
 Hm, I used the stuff I learnd e.g. to develope my virtual guitar amplifier
(
 http://helium.ex0.org/guitifier.zip ; you need a VST-compatible host to
use it;
 this is a Win-PC-version only, MacOSX will follow).
 So my amp is plain pathetic? :(
Is it written in Haskell or Lisp!? :))) I guess it's written in something like C++ and you probably had to study some other areas of knowledge(other than plain knowledge of C++) to write it, like signal processing, VST plugin interface, Win32 API, etc. I meant knowledge of programming without serious application is pathetic. Haven't checked your amp yet, but I will, as I have some VST-compatible host apps(like Modplug Tracker).
Feb 11 2004
next sibling parent Matthias Becker <Matthias_member pathlink.com> writes:
 Hm, I used the stuff I learnd e.g. to develope my virtual guitar amplifier
(
 http://helium.ex0.org/guitifier.zip ; you need a VST-compatible host to
use it;
 this is a Win-PC-version only, MacOSX will follow).
 So my amp is plain pathetic? :(
Is it written in Haskell or Lisp!? :))) I guess it's written in something like C++ and you probably had to study some other areas of knowledge(other than plain knowledge of C++) to write it, like signal processing, VST plugin interface, Win32 API, etc. I meant knowledge of programming without serious application is pathetic.
Yes, right.
Haven't checked your amp yet, but I will, as I have some VST-compatible
host apps(like Modplug Tracker).
It's still in developement and has no own user-interface. So it uses the hosts default interface. But you'll see on your own.
Feb 11 2004
prev sibling parent reply Sean Kelly <sean ffwd.cx> writes:
Alex A. B. wrote:
 Try to learn Prolog, Mercury, Erlang.
 Logic programming is my favourite, but chances that you'll like it aren't
 exactly high. :(
 
 LP is the newest programming paradigm,
 though logic is foundation of programming.
 It's not even as popular as functional programming,
 but Erlang being half-functional,
 half-logic programming language is being used heavily in industry.
 Example of great program made in it is Wings3D(polygonal mesh modeller)
Interesting. I used Prolog way back in college but haven't been exposed to LP since then. My only issue with Prolog was that it seemed perhaps too limited--Erlang sounds like an interesting sort of Frasnkenstein monster ;) > Assembler has no arrays, really. ;)
 But I think everybody should start learning programming with Assembler.
 There are still a lot of things which could be done efficiently only with
 assembler.
Assembler should definately be part of the curriculum. I actually had a major problem fiding a decent book on assembler recently. Sadly, the best one I could find taught it through a sort of high-level macro language. The reason the author gave was that most of his students didn't understand Assembler until he taught it using abstractions. I'm not sure if this means that ASM is becoming a lost art or if colleges are merely generating a mass of second-rate programmers. To return to D for a moment... it's not revolutionary but then it wasn't meant to be. As far as the industry is concerned, this is actually a good thing. Its compatibility with C gives it a massive amount of library support, and the language similarities with many popular procedural languages makes it easy to learn. At the same time, it draws some of the best features from popular languages: C, C++, Java, Ada (if Ada could be considered popular ;) ) and adds some new tricks as well. The compiler is relatively lightweight, performance is very good, and binary size is comparable to an equivalent C program. What's not to like? Sean
Feb 11 2004
next sibling parent reply Matthias Becker <Matthias_member pathlink.com> writes:
[...]
At the same time, it draws 
some of the best features from popular languages: C, C++, Java, Ada (if 
Ada could be considered popular ;) ) and adds some new tricks as well. 
Which?
Feb 11 2004
parent reply "Walter" <walter digitalmars.com> writes:
"Matthias Becker" <Matthias_member pathlink.com> wrote in message
news:c0dr7h$8t8$1 digitaldaemon.com...
 [...]
At the same time, it draws
some of the best features from popular languages: C, C++, Java, Ada (if
Ada could be considered popular ;) ) and adds some new tricks as well.
Which?
I assume you mean what's new. The biggest 'new' thing in D is the foreach statement and the way one writes a class collection that is foreach'able. This technique is much easier to write for than other languages, and is unique to D. For a rough comparison of features, there's www.digitalmars.com/d/comparison.html, though that table does not include Ada. I agree that D is not a revolutionary language. It's evolutionary - a 'refactoring' so to speak of existing ideas and experience. If you ever watch the History Channel, for example, they once ran a history of power tools. The first handheld electric drill was revolutionary. What followed were a series of refinements, none of which were revolutionary, but the net effect is that the electric drill of today is far superior to the original.
Feb 11 2004
next sibling parent reply Robert Jones<robertjones21 HotPOP.com> writes:
In article <c0dtlb$d3l$1 digitaldaemon.com>, Walter says...
"Matthias Becker" <Matthias_member pathlink.com> wrote in message
news:c0dr7h$8t8$1 digitaldaemon.com...
 [...]
At the same time, it draws
some of the best features from popular languages: C, C++, Java, Ada (if
Ada could be considered popular ;) ) and adds some new tricks as well.
Which?
I assume you mean what's new. The biggest 'new' thing in D is the foreach statement and the way one writes a class collection that is foreach'able. This technique is much easier to write for than other languages, and is unique to D.
Not entirely true. Foreach is also in Ruby.
For a rough comparison of features, there's
www.digitalmars.com/d/comparison.html, though that table does not include
Ada.

I agree that D is not a revolutionary language. It's evolutionary - a
'refactoring' so to speak of existing ideas and experience. If you ever
watch the History Channel, for example, they once ran a history of power
tools. The first handheld electric drill was revolutionary. What followed
were a series of refinements, none of which were revolutionary, but the net
effect is that the electric drill of today is far superior to the original.
-- Robert
Feb 16 2004
parent "Walter" <walter digitalmars.com> writes:
"Robert Jones" <robertjones21 HotPOP.com> wrote in message
news:c0r2s4$3gd$1 digitaldaemon.com...
 In article <c0dtlb$d3l$1 digitaldaemon.com>, Walter says...
I assume you mean what's new. The biggest 'new' thing in D is the foreach
statement and the way one writes a class collection that is foreach'able.
This technique is much easier to write for than other languages, and is
unique to D.
Not entirely true. Foreach is also in Ruby.
I'm not familiar with Ruby, but foreach is in many languages, but none that I've seen used something similar to opApply() to implement it.
Feb 20 2004
prev sibling parent reply Robert Jones<robertjones21 HotPOP.com> writes:
In article <c0dtlb$d3l$1 digitaldaemon.com>, Walter says...
"Matthias Becker" <Matthias_member pathlink.com> wrote in message
news:c0dr7h$8t8$1 digitaldaemon.com...
 [...]
At the same time, it draws
some of the best features from popular languages: C, C++, Java, Ada (if
Ada could be considered popular ;) ) and adds some new tricks as well.
Which?
I assume you mean what's new. The biggest 'new' thing in D is the foreach statement and the way one writes a class collection that is foreach'able. This technique is much easier to write for than other languages, and is unique to D.
Not entirely true. Foreach is also in Ruby.
For a rough comparison of features, there's
www.digitalmars.com/d/comparison.html, though that table does not include
Ada.

I agree that D is not a revolutionary language. It's evolutionary - a
'refactoring' so to speak of existing ideas and experience. If you ever
watch the History Channel, for example, they once ran a history of power
tools. The first handheld electric drill was revolutionary. What followed
were a series of refinements, none of which were revolutionary, but the net
effect is that the electric drill of today is far superior to the original.
-- Robert
Feb 16 2004
parent reply J Anderson <REMOVEanderson badmama.com.au> writes:
Robert Jones wrote:

I assume you mean what's new. The biggest 'new' thing in D is the foreach
statement and the way one writes a class collection that is foreach'able.
This technique is much easier to write for than other languages, and is
unique to D.

    
Not entirely true. Foreach is also in Ruby.
I suggest you re-read Walters answer. He's not saying that for foreach isn't in other languages, he's talking about the way it can be used. -- -Anderson: http://badmama.com.au/~anderson/
Feb 16 2004
parent reply Robert Jones<robertjones21 HotPOP.com> writes:
In article <c0ra1g$fl4$1 digitaldaemon.com>, J Anderson says...
Robert Jones wrote:

I assume you mean what's new. The biggest 'new' thing in D is the foreach
statement and the way one writes a class collection that is foreach'able.
This technique is much easier to write for than other languages, and is
unique to D.

    
Not entirely true. Foreach is also in Ruby.
I suggest you re-read Walters answer. He's not saying that for foreach isn't in other languages, he's talking about the way it can be used.
I did read his answer I was disageeing with the following and giving a example. The specific part is in all caps. "This technique is much easier to write for than other languages, and IS UNIQUE TO D."
-- 
-Anderson: http://badmama.com.au/~anderson/
-- Robert Jones
Feb 16 2004
parent reply "davepermen" <davepermen hotmail.com> writes:
yeah, but he ment the side on writing own foreach's. this iis much easier to
write and UNIQUE TO OTHER LANGUAGES.

at least, i think.

foreach itself isn't, yes.

"Robert Jones" <robertjones21 HotPOP.com> schrieb im Newsbeitrag
news:c0s257$1of1$1 digitaldaemon.com...
 In article <c0ra1g$fl4$1 digitaldaemon.com>, J Anderson says...
Robert Jones wrote:

I assume you mean what's new. The biggest 'new' thing in D is the
foreach
statement and the way one writes a class collection that is
foreach'able.
This technique is much easier to write for than other languages, and is
unique to D.
Not entirely true. Foreach is also in Ruby.
I suggest you re-read Walters answer. He's not saying that for foreach isn't in other languages, he's talking about the way it can be used.
I did read his answer I was disageeing with the following and giving a
example.
 The specific part is in all caps.

 "This technique is much easier to write for than other languages, and IS
 UNIQUE TO D."

-- 
-Anderson: http://badmama.com.au/~anderson/
-- Robert Jones
Feb 17 2004
parent Robert Jones<robertjones21 HotPOP.com> writes:
Oh, he was refering to the the way it can be used. He means to say that D's way
of using foreach is easier to do than other ways(like Ruby's). Now I think I got
it.

In article <c0sira$2jnf$1 digitaldaemon.com>, davepermen says...
yeah, but he ment the side on writing own foreach's. this iis much easier to
write and UNIQUE TO OTHER LANGUAGES.

at least, i think.

foreach itself isn't, yes.

"Robert Jones" <robertjones21 HotPOP.com> schrieb im Newsbeitrag
news:c0s257$1of1$1 digitaldaemon.com...
 In article <c0ra1g$fl4$1 digitaldaemon.com>, J Anderson says...
Robert Jones wrote:


I assume you mean what's new. The biggest 'new' thing in D is the
foreach
statement and the way one writes a class collection that is
foreach'able.
This technique is much easier to write for than other languages, and is
unique to D.
Not entirely true. Foreach is also in Ruby.
I suggest you re-read Walters answer. He's not saying that for foreach isn't in other languages, he's talking about the way it can be used.
I did read his answer I was disageeing with the following and giving a
example.
 The specific part is in all caps.

 "This technique is much easier to write for than other languages, and IS
 UNIQUE TO D."

-- 
-Anderson: http://badmama.com.au/~anderson/
-- Robert Jones
Feb 17 2004
prev sibling next sibling parent reply "KTC" <me here.com> writes:
"Sean Kelly" wrote...

 Assembler should definately be part of the curriculum.  I actually
had a
 major problem fiding a decent book on assembler recently.  Sadly,
the
 best one I could find taught it through a sort of high-level macro
 language.  The reason the author gave was that most of his students
 didn't understand Assembler until he taught it using abstractions.
I'm
 not sure if this means that ASM is becoming a lost art or if
colleges
 are merely generating a mass of second-rate programmers.
If you're talking about the AOA book using HLA, then that's incorrect. HLA 1.x is kinda an asm compiler that translate the codes you written to other assembler to assembled (i.e. MASM, GAS). With HLA 2.0, it will become a true assembler. The reasoning behind the approach to the book was that the student didn't have to jump straight into ASM but use their existing knowledge of HLL programming and have a shallower learning curve. According to the author, his students actually get to the same point with ASM quicker (and thus can learn more within a given time). The HLA language in itself is asm (with some higher level construct added that one don't have to use), just that it uses different sytanx to what one might have already know (i.e. MASM, TASM etc.) KTC -- Experience is a good school but the fees are high. - Heinrich Heine
Feb 11 2004
parent reply Sean Kelly <sean ffwd.cx> writes:
KTC wrote:
 
 If you're talking about the AOA book using HLA, then that's incorrect.
 HLA 1.x is kinda an asm compiler that translate the codes you written
 to other assembler to assembled (i.e. MASM, GAS). With HLA 2.0, it
 will become a true assembler.
That's the book alright. It's very well-written, which is why I picked it up.
 The reasoning behind the approach to the book was that the student
 didn't have to jump straight into ASM but use their existing knowledge
 of HLL programming and have a shallower learning curve. According to
 the author, his students actually get to the same point with ASM
 quicker (and thus can learn more within a given time). The HLA
 language in itself is asm (with some higher level construct added that
 one don't have to use), just that it uses different sytanx to what one
 might have already know (i.e. MASM, TASM etc.)
Yeah, I understand the reasoning, and it does make sense. Anyone who spends a lot of time in ASM eventually wants to use the sort of abstractions he provides. I just wish that more time were spent with ASM itself rather than focusing so heavily on HLA. I had originally learned ASM on RISC machines and mostly bought the book as reference material, so if there were one thing I could change it would be to have more pure ASM examples. Sean
Feb 11 2004
next sibling parent "KTC" <me here.com> writes:
"Sean Kelly" wrote...
 I had originally learned ASM on RISC machines and mostly bought
 the book as reference material, so if there were one thing I could
 change it would be to have more pure ASM examples.
Then you already know ASM and don't form part of his target audience :-P Seriously tho, I agree with your point and I think he's trying to gather some more examples from people for his site so that eventually there will be examples for all types of program of varying sizes etc. Oh and you can always just use the IBM opcodes docs as a reference :-P KTC -- Experience is a good school but the fees are high. - Heinrich Heine
Feb 11 2004
prev sibling parent "Walter" <walter digitalmars.com> writes:
"Sean Kelly" <sean ffwd.cx> wrote in message
news:c0ek9o$1jlm$1 digitaldaemon.com...
 Yeah, I understand the reasoning, and it does make sense.  Anyone who
 spends a lot of time in ASM eventually wants to use the sort of
 abstractions he provides.  I just wish that more time were spent with
 ASM itself rather than focusing so heavily on HLA.
I used to use a number of advanced asm macros to produce high level constructs, but eventually yanked them all out and just wrote out the raw code. Sometimes, when I'd get asm from someone else that heavilly used such macros, I'd assemble it, run the output through OBJ2ASM, and proceed with that output <g>.
Feb 11 2004
prev sibling next sibling parent reply Luke D <Luke_member pathlink.com> writes:
In article <c0dq5f$78p$1 digitaldaemon.com>, Sean Kelly says...
Assembler should definately be part of the curriculum.  I actually had a 
major problem fiding a decent book on assembler recently.  Sadly, the 
best one I could find taught it through a sort of high-level macro 
language.  The reason the author gave was that most of his students 
didn't understand Assembler until he taught it using abstractions.  I'm 
not sure if this means that ASM is becoming a lost art or if colleges 
are merely generating a mass of second-rate programmers.
Yeah, it's really a pity. I was looking at the book for a little, and I stopped as soon as I got to an example of the code and saw that it used "High Level Assembly". But anyway, the old version of the book uses pure x86 assembler, so it's worth reading. It only does DOS assembler programming though, and I don't know how different Windows and Linux programming is in assembler. I assumes that it only puts restrictions on the program, extends other aspects of the program, and of course requires you to use Windows/Linux specific calls much like with C++, though it's always possible that an OS defines an entirely new instruction set for its OS, requiring you to learn a new set of instructions and a new architechture, but I'm fairly certain Windows doesn't do this at least. I actually read the first 4 chapters or so of the book, and though it uses simpler processors than 80x86 to get you started with programming through chapter 4 so I didn't get to actual 80x86 programming at all because it doesn't introduce it until chapter 5, what I learned from the little I read has been extremely helpful to my understanding of computers and programming to date. http://webster.cs.ucr.edu/ <-- in case you lost the link It's been 2 1/2 years, but I think I might start reading this again. Thanks!
Feb 12 2004
next sibling parent Luke D <Luke_member pathlink.com> writes:
Ah, I was looking at day old posts and didn't realize that there were newer
ones.  It's still relative I guess

In article <c0hbno$2tb8$1 digitaldaemon.com>, Luke D says...
In article <c0dq5f$78p$1 digitaldaemon.com>, Sean Kelly says...
Assembler should definately be part of the curriculum.  I actually had a 
major problem fiding a decent book on assembler recently.  Sadly, the 
best one I could find taught it through a sort of high-level macro 
language.  The reason the author gave was that most of his students 
didn't understand Assembler until he taught it using abstractions.  I'm 
not sure if this means that ASM is becoming a lost art or if colleges 
are merely generating a mass of second-rate programmers.
Yeah, it's really a pity. I was looking at the book for a little, and I stopped as soon as I got to an example of the code and saw that it used "High Level Assembly". But anyway, the old version of the book uses pure x86 assembler, so it's worth reading. It only does DOS assembler programming though, and I don't know how different Windows and Linux programming is in assembler. I assumes that it only puts restrictions on the program, extends other aspects of the program, and of course requires you to use Windows/Linux specific calls much like with C++, though it's always possible that an OS defines an entirely new instruction set for its OS, requiring you to learn a new set of instructions and a new architechture, but I'm fairly certain Windows doesn't do this at least. I actually read the first 4 chapters or so of the book, and though it uses simpler processors than 80x86 to get you started with programming through chapter 4 so I didn't get to actual 80x86 programming at all because it doesn't introduce it until chapter 5, what I learned from the little I read has been extremely helpful to my understanding of computers and programming to date. http://webster.cs.ucr.edu/ <-- in case you lost the link It's been 2 1/2 years, but I think I might start reading this again. Thanks!
Feb 12 2004
prev sibling parent Sean Kelly <sean ffwd.cx> writes:
Luke D wrote:
 
 Yeah, it's really a pity.  I was looking at the book for a little, and I
stopped
 as soon as I got to an example of the code and saw that it used "High Level
 Assembly".  But anyway, the old version of the book uses pure x86 assembler, so
 it's worth reading.  It only does DOS assembler programming though, and I don't
 know how different Windows and Linux programming is in assembler.
Not much different, but I don't think the old book covers 32-bit assembler, which is why I got the new one. HLA or not, it was by far the best-written book on x86 asm I could find. Spec documents from Intel don't count ;) Sean
Feb 12 2004
prev sibling parent Ilya Minkov <minkov cs.tum.edu> writes:
 Assembler should definately be part of the curriculum.  I actually had a 
 major problem fiding a decent book on assembler recently.  Sadly, the 
 best one I could find taught it through a sort of high-level macro 
 language.  The reason the author gave was that most of his students 
 didn't understand Assembler until he taught it using abstractions.  I'm 
 not sure if this means that ASM is becoming a lost art or if colleges 
 are merely generating a mass of second-rate programmers.
I wouldn't think that there is any lack, at least on our high school here. We get snippets of assembler from time to time. Last year it was a good deal of x86, this year it's a VAX-like machine, but we learn not only assembler, but also implementation of concepts in assembly, including loops, arrays, synchronization primitives, interrupts and OS calls. I'd say an ultra-evil CISC helps... About half of our last exam was assembly and system calls, and some synchronization issues in Java. As to x86 assembly books, my first recommendation would be PC Assembly Language by Paul A. Carter. It teaches 386 and upwards, and using assembly from within C and not on its own. Downloadable here: http://www.drpaulcarter.com/pcasm/ Some more books i don't really know here: http://directory.google.com/Top/Computers/Programming/Languages/Assembly/x86/Books/?il=1 A real treasure is HUGI diskmag special coding digest. It contains a *ton* of additional wizdom, including assembly optimization.
 To return to D for a moment... it's not revolutionary but then it wasn't 
 meant to be.  As far as the industry is concerned, this is actually a 
 good thing.  Its compatibility with C gives it a massive amount of 
 library support, and the language similarities with many popular 
 procedural languages makes it easy to learn.  At the same time, it draws 
 some of the best features from popular languages: C, C++, Java, Ada (if 
 Ada could be considered popular ;) ) and adds some new tricks as well. 
 The compiler is relatively lightweight, performance is very good, and 
 binary size is comparable to an equivalent C program.  What's not to like?
Besides, it's work in progress. Watch a new legend build up. \o/ And we have power to convince Walter to meet our interests and/or avoid serious mistakes. :> But i'd say it's good he has enough power to decide what of our complaints are important and what not. -eye
Feb 14 2004
prev sibling next sibling parent reply Ilya Minkov <minkov cs.tum.edu> writes:
Matthias Becker wrote:
 This is a good example for why I don't like D. I like coding. I do it a lot in
 my freetime. I don't want to get the job done quickly. I want coding to be fun.
No risk, no fun? Missing lengthy debugging orgies? :>
 "D is the culmination of decades of experience implementing compilers for many
 diverse languages, and attempting to construct large projects using those
 languages. D draws inspiration from those other languages (most especially C++)
 and tempers it with experience and real world practicality"
 
 Rigth. There is nothing new in D. Somebody said somethin like "if a language
 doesn't change the way you think it's not worth learning it", and D doesn't

 Eiffel. That's all, at least that's what it feels like.
The combination makes it new. Eiffel was innovative but increasingly the user may substitute cludges for many cases. D drastically reduces the code size requiered to accomplish a task, which also makes code easier to work with.
 "C++ implements things like resizable arrays and string concatenation as part
of
 the standard library, not as part of the core language. Not being part of the
 core language has several suboptimal consequences."
 
 If you want to know which suboptimal consequences it has you have to read the
 articel about D-"strings" (which are actualy simple array, which feels wrong in
 a oo-world. It feels much too technical, rather than natural.)
 Anyway, in this text you can read that D has a ~-operator to concatenate arrays
 (which feels unnatural, as you are used to only use it as a not in C-like
 languages). I don't get what this has to do with whether arrays are part of the
 language or the library. D can overload operators, so this isn't a plus. The
 next point is slicing. Why can't I implement slicing in a self written class? 
 D-arrays can implicitly converted to a pointer of the same type. This isn't
 something special. You could write your own string class that allows implicit
 casts to char *. But implicit casts are considered as being bad. So this isn't
a
 plus, too.
D strings don't quite cut the string semantics. This is something to be healed from a standard library. However, real arrays profit to any other use, including string processing. The ~ operator is important, since it allows to keep + free to later mean memberwise addition. In general, this memberwise operations on the whole array would allow to later trivially write an optimizing compiler which uses up SIMD instruction sets, thus boosting D to a different performance level than most C++ compilers. And i thought there was opSlice overload in the spec? If it doesn't work, report it as a bug. C++ is very technical, D is almost as technical as C++, but allows for higher absraction levels. This reminds me, i wanted to write an article explaining where C++ object system is broken, where D has gotten it better and why, and point out one point which has to be heeled in D.
 Than "String Switch Statements". Can I do it with any arrays or only with
arrays
 of chars. I hate inconsitency. If I can do it with any array, why can't I do it
 with a self written class, if I want it to be similar to an array (e.g. a
list).
 As said I hate inconsitency, so this is another point why I don't like D and
not
 a feature.
Switch statement should work on everything which has toHash defined.
 But let's leave this string/array-topic.
 "Support multi-paradigm programming, i.e. at a minimum support imperative,
 structured, object oriented, and generic programming paradigms". But "C++
 programmers tend to program in particular islands of the language, i.e. getting
 very proficient using certain features while avoiding other feature sets. While
 the code is usually portable from compiler to compiler, it can be hard to port
 it from programmer to programmer. A great strength of C++ is that it can
support
 many radically different styles of programming - but in long term use, the
 overlapping and contradictory styles are a hindrance."
 D's philosophy is too complex for me in this case. I don't understand it. But
 how to like a thing, that you don't even understand?
What exactly is too complex? There should be a well-defined way to accomplish every task. When language constructs match semantics, every new programmer feels like at home with the code. This has already been one of the major advantages of e.g. Delphi.
 "The general look of D is like C and C++."
 As C is very ugly, this is plain stupid. Most people I talked to (not all)
don't
 like C's general look. So I consider this as being bad.
 "This makes it easier to learn and port code to D."
 hmm, in C++ '=' means copy, in D it means sometimes reference assignment. Such
 very small differences will make it very hard to port code.
It is not feasible to port C++ code, but C code can be copied over with changes which are easy to search for. There are tons of tiny snippets which people like to reuse, so while systems cannot be easily moved into D (they should be not ported, but connected), the snippets retain their validity. I agree that C syntax is flawed. But unfortunately, most people are too narrow-minded to get past learning a new syntax (probably because C was such a pain that they are afraid :> ), and since we intend D to become generally popular, in the industry, and everywhere, this would (sadly) stay the major selling point. There is nothing that can be done with it. I am also a fan of langages of another breed, but seeing that they have no perspective i keep to D.
 "Transitioning from C/C++ to D should feel natural, the programmer will not
have
 to learn an entirely new way of doing things."
 
 I like learning new stuff. I started with a simple Basic a long time ago. Than
I
 learned C++, it was like "WOW". It was amazing. Everything was different. That
 was what I liked. Than I learned a bit Haskell and I had the same feeling. You
 can write three lines of code and they do the same thing that would need 50
 lines of code in C++, without the feeling of a scripting language with over
 sepcialized features, that help in some cases but aren't usable in not that
 common cases. Than I learnd Objective-C and again it changed the way I thought
 was changed. Lisp was different again, ... . Than I leaned D and it was boring.
We don't force you. If you don't like it go away or give us an idea of how to improve it. The advantages of D lie in detail. But they would allow to massively reduce the strain on a programmer who makes himself aquainted with the features, and make systems more provably robust, easier to integrate and change.
 "Who D is For [...] Those who decide the promise of C++ object oriented
 programming is not fulfilled due to the complexity of it."
 So it's for stupid people?
Wait! You just said D was too complex for you! C++ complexity is not so structural - D contains many more constructs and could thus be considered more complex. C++ complexity is from often unnatural interaction of features. Just go and read any serious article on, e.g. exception safety. Maybe on unsafe upcasting and by-value vs. by-reference vs. by-pointer. Maybe on threads. Maybe on extending STL and where you may run over trouble. Maybe of incompatibe proxy objects. Too many topics too list up. Though this is all written, this is from experience of 100s of people, and no single person would be able to foresee any possible consequence from this or another code snippet in a system large enough. So rules need to be set, limiting the language, which tend to be broken... D offers an in-language solution to many problems, and we target more. Which means setting a syntax apart for this or another solution. For me, D offers me a possibility to say what i mean instaed of thinking of remote consequnces. So it *does* change the way of programming, as compared to C++ at least. Not to say that i actually adore C++ for some purposes, but i find D better for most use.
 Well these were some specific points mentioned in D's specification. But it's a
 more general feeling, that I can't describe. Sorry.
You are tired of learning programming languages which you don't use. :> -eye
Feb 10 2004
next sibling parent "MikkelFJ" <mikkel dvideNOSPAMDOT.com> writes:
"Ilya Minkov" <minkov cs.tum.edu> skrev i en meddelelse
news:c0b4d6$1o3c$1 digitaldaemon.com...
 Matthias Becker wrote:
 This is a good example for why I don't like D. I like coding. I do it a
lot in
 my freetime. I don't want to get the job done quickly. I want coding to
be fun. D addresses the very important problem of making system level programming easier. For many interesting problems, Ruby, OCaml, or pick you favorite, are better languages than D, but for writing code that interacts with libraries etc., you need C linkage with more or less full type support. D also addresses the issue of deployment in that you need no external enviroment in order to fire up you application. This is not the case for
 I agree that C syntax is flawed. But unfortunately, most people are too
 narrow-minded to get past learning a new syntax (probably because C was
 such a pain that they are afraid :> ), and since we intend D to become
 generally popular, in the industry, and everywhere, this would (sadly)
 stay the major selling point.
conformant is more important than being elegant. However, I see no reason why D couldn't have friendly operator alias names which would be recommended over the C style operators: && and || or ! not | bitor & bitand etc. You still need to keep the semantics, for example the short circuit logic of && etc. whether this is a good or bad thing. The worst thing is the precendence of the bit operators. Mikkel
Feb 10 2004
prev sibling parent "Walter" <walter digitalmars.com> writes:
"Ilya Minkov" <minkov cs.tum.edu> wrote in message
news:c0b4d6$1o3c$1 digitaldaemon.com...
 The ~ operator is important, since it allows to keep + free to later
 mean memberwise addition. In general, this memberwise operations on the
 whole array would allow to later trivially write an optimizing compiler
 which uses up SIMD instruction sets, thus boosting D to a different
 performance level than most C++ compilers.
Yes, that is exactly the point with ~.
 And i thought there was opSlice overload in the spec?
There is.
 Than "String Switch Statements". Can I do it with any arrays or only
with arrays
 of chars. I hate inconsitency. If I can do it with any array, why can't
I do it
 with a self written class, if I want it to be similar to an array (e.g.
a list).
 As said I hate inconsitency, so this is another point why I don't like D
and not
 a feature.
Switch statement should work on everything which has toHash defined.
Matthias has a good point, but the trouble is there is no object literal syntax, so some significant design work would need to be done to support that.
 The advantages of D lie in detail.
That's true. People ask me for the sound bite for why one should switch to D, and there really isn't one big one. It's an accumulation of a lot of small things, it's the aggregate that is compelling. For example, array slicing is not a big deal by itself. But couple it with garbage collection, and suddenly the value of array slicing multiplies several times over.
 C++ complexity is not so structural - D contains many more constructs
 and could thus be considered more complex. C++ complexity is from often
 unnatural interaction of features.
I'll give an example out of the C++ standard 13.4-5: ------------------------------ struct X { int f(int) { return 1; } }; int (X::*p1)(int) = &X::f; // OK int (X::*p5)(int) = &(X::f); // error: wrong syntax for // pointer to member ------------------------------- Adding the parentheses makes it an error.
Feb 10 2004
prev sibling next sibling parent "Ben Woodhead" <ben dragondoor.com> writes:
Hey,

It seems the people that like d have the same things in mind. :)
I personally really enjoy programming but like you I also don't want to be
done quick, I want to program. Now here is my solution to that problem when
working with d. I just take on bigger tasks :).
The simpler the language the bigger the project that I want to work on. I
end up spending the same about of time but I have more to say about my
accomplishment:

asm -> hello world
c++ -> scene manager
d -> the whole damn video game. :)

Later, Ben


"Matthias Becker" <Matthias_member pathlink.com> wrote in message
news:c0afm3$nfg$1 digitaldaemon.com...
 "It's a practical language for practical programmers who need to get the
job
 done quickly, reliably, and leave behind maintainable, easy to understand
code."
 This is a good example for why I don't like D. I like coding. I do it a
lot in
 my freetime. I don't want to get the job done quickly. I want coding to be
fun.
 "D is the culmination of decades of experience implementing compilers for
many
 diverse languages, and attempting to construct large projects using those
 languages. D draws inspiration from those other languages (most especially
C++)
 and tempers it with experience and real world practicality"

 Rigth. There is nothing new in D. Somebody said somethin like "if a
language
 doesn't change the way you think it's not worth learning it", and D
doesn't

 Eiffel. That's all, at least that's what it feels like.



 "C++ implements things like resizable arrays and string concatenation as
part of
 the standard library, not as part of the core language. Not being part of
the
 core language has several suboptimal consequences."

 If you want to know which suboptimal consequences it has you have to read
the
 articel about D-"strings" (which are actualy simple array, which feels
wrong in
 a oo-world. It feels much too technical, rather than natural.)
 Anyway, in this text you can read that D has a ~-operator to concatenate
arrays
 (which feels unnatural, as you are used to only use it as a not in C-like
 languages). I don't get what this has to do with whether arrays are part
of the
 language or the library. D can overload operators, so this isn't a plus.
The
 next point is slicing. Why can't I implement slicing in a self written
class?
 D-arrays can implicitly converted to a pointer of the same type. This
isn't
 something special. You could write your own string class that allows
implicit
 casts to char *. But implicit casts are considered as being bad. So this
isn't a
 plus, too.
 Than "String Switch Statements". Can I do it with any arrays or only with
arrays
 of chars. I hate inconsitency. If I can do it with any array, why can't I
do it
 with a self written class, if I want it to be similar to an array (e.g. a
list).
 As said I hate inconsitency, so this is another point why I don't like D
and not
 a feature.



 But let's leave this string/array-topic.
 "Support multi-paradigm programming, i.e. at a minimum support imperative,
 structured, object oriented, and generic programming paradigms". But "C++
 programmers tend to program in particular islands of the language, i.e.
getting
 very proficient using certain features while avoiding other feature sets.
While
 the code is usually portable from compiler to compiler, it can be hard to
port
 it from programmer to programmer. A great strength of C++ is that it can
support
 many radically different styles of programming - but in long term use, the
 overlapping and contradictory styles are a hindrance."
 D's philosophy is too complex for me in this case. I don't understand it.
But
 how to like a thing, that you don't even understand?


 "The general look of D is like C and C++."
 As C is very ugly, this is plain stupid. Most people I talked to (not all)
don't
 like C's general look. So I consider this as being bad.
 "This makes it easier to learn and port code to D."
 hmm, in C++ '=' means copy, in D it means sometimes reference assignment.
Such
 very small differences will make it very hard to port code.


 "Transitioning from C/C++ to D should feel natural, the programmer will
not have
 to learn an entirely new way of doing things."

 I like learning new stuff. I started with a simple Basic a long time ago.
Than I
 learned C++, it was like "WOW". It was amazing. Everything was different.
That
 was what I liked. Than I learned a bit Haskell and I had the same feeling.
You
 can write three lines of code and they do the same thing that would need
50
 lines of code in C++, without the feeling of a scripting language with
over
 sepcialized features, that help in some cases but aren't usable in not
that
 common cases. Than I learnd Objective-C and again it changed the way I
thought
 was changed. Lisp was different again, ... . Than I leaned D and it was
boring.
 "Who D is For [...] Those who decide the promise of C++ object oriented
 programming is not fulfilled due to the complexity of it."
 So it's for stupid people?





 Well these were some specific points mentioned in D's specification. But
it's a
 more general feeling, that I can't describe. Sorry.
Feb 10 2004
prev sibling next sibling parent reply Manfred Nowak <svv1999 hotmail.com> writes:
Matthias Becker wrote:

[...]
 I started with a simple Basic a long time ago. Than I learned C++
[...]
 Than I leaned D and it was boring.
[...] From the docs `Who D is Not For': | D makes an excellent _second_(!) language for intermediate to advanced | programmers. So long.
Feb 10 2004
parent larry cowan <larry_member pathlink.com> writes:
Come on guys - too much flaming.  His English wasn't that bad...

In article <c0bbqa$244v$1 digitaldaemon.com>, Manfred Nowak says...
Matthias Becker wrote:

[...]
 I started with a simple Basic a long time ago. Than I learned C++
[...]
 Than I leaned D and it was boring.
[...] From the docs `Who D is Not For': | D makes an excellent _second_(!) language for intermediate to advanced | programmers. So long.
Feb 10 2004
prev sibling next sibling parent reply Vathix <vathix dprogramming.com> writes:
Matthias Becker wrote:
 Than "String Switch Statements". Can I do it with any arrays or only with
arrays
 of chars. I hate inconsitency. If I can do it with any array, why can't I do it
 with a self written class, if I want it to be similar to an array (e.g. a
list).
 As said I hate inconsitency, so this is another point why I don't like D and
not
 a feature.
 
This is because like C/C++, switch cases must be constant values. You can't yet have a constant class object so it's not possible. I think D's way of string switches actually makes a lot of sense, because the language is more aware of arrays, and string literals are constant arrays. It just has not yet been expanded. -- Christopher E. Miller www.dprogramming.com
Feb 10 2004
parent reply Ilya Minkov <minkov cs.tum.edu> writes:
Vathix wrote:
 This is because like C/C++, switch cases must be constant values. You 
 can't yet have a constant class object so it's not possible. I think D's 
 way of string switches actually makes a lot of sense, because the 
 language is more aware of arrays, and string literals are constant 
 arrays. It just has not yet been expanded.
Don't classes with toHash also work? -eye
Feb 10 2004
parent Vathix <vathix dprogramming.com> writes:
Ilya Minkov wrote:
 
 Don't classes with toHash also work?
 
DMD says it is not an integral type. -- Christopher E. Miller www.dprogramming.com
Feb 10 2004
prev sibling next sibling parent Derek Parnell <Derek.Parnell No.Spam> writes:
On Tue, 10 Feb 2004 11:35:31 +0000 (UTC) (02/10/04 22:35:31)
, Matthias Becker <Matthias_member pathlink.com> wrote:

 "It's a practical language for practical programmers who need to get the 
 job
 done quickly, reliably, and leave behind maintainable, easy to 
 understand code."

 This is a good example for why I don't like D. I like coding. I do it a 
 lot in
 my freetime. I don't want to get the job done quickly. I want coding to 
 be fun.
[huge snip] I am not a D coder, but I've been lurking in this group for a long time now. I don't use D because I've it is not the tool I need to use. I lurk because it's might become that tool one day, and I can see potential in it. My misgivings with D are twofold; a) D is an evolutionary product in, that it is still firmly in the C family and that's where it wants to be. I was (am?) hoping for a revolutionary product. b) D is controlled by one person's philosophy and to the extent that he listen's to his clients. I was (am?) hoping for a broader range of thinking and effective input. However, let me say that I think Walter is doing an above average job in this regard - some similar development environments are very 'closed shop/mind' ones. One day soon, I am planning to start a real world project using D, mainly because I feel (rather than know) it should deliver a fine application. I would be using D instead of C/C++. My preferred language for developing in is Euphoria ( www.rapideuphoria.com ), even though I have a number of misgivings with that product too. The trick is, and always has been, to select the appropriate tool for the job at hand. -- Derek
Feb 10 2004
prev sibling next sibling parent reply kinghajj <kinghajj_member pathlink.com> writes:
"The general look of D is like C and C++."
As C is very ugly, this is plain stupid. Most people I talked to (not all) don't
like C's general look. So I consider this as being bad.
what? C code is ugly? I think that C-based programming languages have the best style: why else would it have stayed the same for over 30 years if it wasn't? If you don't like C's look, then which language's look do you like?
Feb 10 2004
next sibling parent reply "davepermen" <davepermen hotmail.com> writes:
he obviously stated he loves the basic style.

i hate this redundancy of basic. it's very stupid.

same as xml.

stupid.

"kinghajj" <kinghajj_member pathlink.com> schrieb im Newsbeitrag
news:c0bqph$2tqe$1 digitaldaemon.com...
"The general look of D is like C and C++."
As C is very ugly, this is plain stupid. Most people I talked to (not
all) don't
like C's general look. So I consider this as being bad.
what? C code is ugly? I think that C-based programming languages have the
best
 style: why else would it have stayed the same for over 30 years if it
wasn't?
 If you don't like C's look, then which language's look do you like?
Feb 10 2004
parent reply Matthias Becker <Matthias_member pathlink.com> writes:
he obviously stated he loves the basic style.
Nope.
Feb 11 2004
parent reply "davepermen" <davepermen hotmail.com> writes:
he stated these things:
begin
end

and

no ; but \n

and _ as "kill \n"

namely

functionCall()

and

functionCall(withSome, _
                 params)

this is, more or less, basic style.

if something then
  do
endif

"Matthias Becker" <Matthias_member pathlink.com> schrieb im Newsbeitrag
news:c0csej$1mkm$1 digitaldaemon.com...
he obviously stated he loves the basic style.
Nope.
Feb 11 2004
parent reply Matthias Becker <Matthias_member pathlink.com> writes:
he stated these things:
begin
end

and

no ; but \n

and _ as "kill \n"

namely

functionCall()

and

functionCall(withSome, _
                 params)

this is, more or less, basic style.

if something then
  do
endif
??? I know the basic synthax, but as said in my last answer I don't like it, so what are you talking about? It seems like I got you wrong.
Feb 11 2004
parent "davepermen" <davepermen hotmail.com> writes:
strange. looks like i mixed your thread with some c++ bashing thread of
someone else.. i thought it was you stating how much you would prefer if
endif, no ;, but newline, and the _ to continue..

looks like it wasn't you.

where was that then?! irritated..

"Matthias Becker" <Matthias_member pathlink.com> schrieb im Newsbeitrag
news:c0cu0j$1pcf$1 digitaldaemon.com...
he stated these things:
begin
end

and

no ; but \n

and _ as "kill \n"

namely

functionCall()

and

functionCall(withSome, _
                 params)

this is, more or less, basic style.

if something then
  do
endif
??? I know the basic synthax, but as said in my last answer I don't like it,
so what
 are you talking about? It seems like I got you wrong.
Feb 11 2004
prev sibling parent reply Ilya Minkov <minkov cs.tum.edu> writes:
kinghajj wrote:
"The general look of D is like C and C++."
As C is very ugly, this is plain stupid. Most people I talked to (not all) don't
like C's general look. So I consider this as being bad.
what? C code is ugly? I think that C-based programming languages have the best style: why else would it have stayed the same for over 30 years if it wasn't?
Because it was popular from the beginning on. Because the largest system to date was written in it (UNIX). Because all other languages were unusable, and as they became better it was too late, since C was too popular to deal with it. So. And because someone counted keystrokes, instead of seeing that a word is faster to type and often easier to read then a symbol which requieres - what was it again? alt, ctrl, shift? Besides, parens requiered in if, while, and so on else it doesn't parse... Words have different length, this makes them particularly easy to read.
 If you don't like C's look, then which language's look do you like?
I must agree with Matthias. I like Pascal and especially Sather syntax. After i got used to C's idioms i don't care much though. But before i did, C syntax was a major source of bugs. And it stays a source of redundant parenthesis. -eye
Feb 12 2004
parent "Walter" <walter digitalmars.com> writes:
"Ilya Minkov" <minkov cs.tum.edu> wrote in message
news:c0godn$1v90$1 digitaldaemon.com...
 I must agree with Matthias. I like Pascal and especially Sather syntax.
 After i got used to C's idioms i don't care much though. But before i
 did, C syntax was a major source of bugs. And it stays a source of
 redundant parenthesis.
Interestingly, I learned and used Pascal for years before I'd ever heard of C, yet when I ran across C I found its syntax to be refreshing in comparison. I never looked back nor wrote another line in Pascal.
Feb 12 2004
prev sibling next sibling parent "Phill" <phill pacific.net.au> writes:
 I don't understand it. But
 how to like a thing, that you don't even understand?
Have you ever heard of the saying, "If you dont like somthing, or somebody, it is because you dont understand it or them" ?
 "Who D is For [...] Those who decide the promise of C++ object oriented
 programming is not fulfilled due to the complexity of it."
 So it's for stupid people?
This is very interesting, earlier on you stated that you dont understand D. Now here you say that it is for stupid people. If you dont understand it(not saying that I do yet) then what are you? :o)) Phill.
Feb 10 2004
prev sibling parent "Walter" <walter digitalmars.com> writes:
"Matthias Becker" <Matthias_member pathlink.com> wrote in message
news:c0afm3$nfg$1 digitaldaemon.com...
 Well these were some specific points mentioned in D's specification. But
it's a
 more general feeling, that I can't describe. Sorry.
I do thank you for making the effort. It's good to get all kinds of feedback on the language, the negative as well as the positive.
Feb 10 2004