In the making of a programming language, is it wrong to copy features and ideas from other programming languages? If it is not a problem, why not? Is it possible to license and copyright these things?
Is it "wrong"? In what sense could it possibly be wrong? Every programming language ever designed (except, I suppose, for the mythical Ur example) has borrowed concepts and designs from other languages. It's possible (and rather easy) to plot all extant languages on a family tree that shows their derivation. I can give you nearly endless examples of modern languages and the ideas they copied from older languages. Take the Simula -> Smalltalk -> Ruby lineage. Take the ML -> Caml -> OCaml lineage. I could go on and on.
As to your last question: you cannot copyright an idea. You cannot license an idea. Ideas are free in the truest sense (pathological US patent law notwithstanding).
The best languages available today are built on the best ideas of previous languages. Not only is it not "wrong", it's the best (only?) way to design a language.
As Newton famously uttered, we stand on the shoulders of giants.
Given C#'s similarity to Java, which was influenced by C++, which is an extension of C, which was derived from B, which was derived from BCPL, etc., etc., etc., I'd say the answer is "no". It's very rare to find a language that isn't influenced by or a direct extension of existing languages.
Language design is evolutionary; you take something which sort of works and try to improve on it.
I think the main decision point should be does the feature work well with the other features in the language and is it a feature you think the language should support.
An example would be Java where the design decision was made to exclude operator overriding from the language. Personally I am ambivalent about this decision, as I would love to have that feature available but I have also seen extremely bad examples of misuse.
A counter example would perhaps be the inclusion of "classes" in VB 4. They were not fully implemented or integrated and probably should not have been included.
PL/X as a language was extremely PL/1 like (funny that) but included many built in functions that were borrowed directly from assembler. It was also the only language I think of off the top of my head that had two versions of substring, one substring(start point, end point) and one substring(start point, number of characters). I realise that you can always derive one from the other but it was nice not to have to.
You mean, can you put an increment operator in your language even though it's already in C and C++ and Java? Yes, you can -- and obviously should.
Most language are very closely derived from antecedent languages (C comes from BCPL, C++ comes from C, Java comes from C++, and so on.) If you want to invent a language that is just like Java except that the
switch statement doesn't fall through, go right ahead.
If I have seen a little further it is by standing on the shoulders of Giants. -- Isaac Newton
Above answerers said enough about copying. Though my suggestion would be, don't copy features just because 'Java has it'. Think about programmers who will write in that program. Would you use that new language for production work?
To comments about software patents: In the US and in countries where software patents are legal, you CAN patent an idea (for example, RIM was not allowed to use WiFi to transfer e-mails).
I agree that's an absurd, WiFi is only a internet connection type, and patenting Wireless E-Mail delivery is the same as patenting E-Mail delivery itself.
It's highly likely for the US Supreme Court not to allow litigating software patenting cases anymore, but time will show us.
Copyrighting algorithms and code in general tends to be a very sore subject in the SE world. The idea is that if you come up with a way to solve problem X, you shouldn't be prevented from solving that problem just because someone previously used a similar approach.
If you did allow copyrighting of language features where would the line be drawn? (e.g. Can the first language that came up with the idea of arrays claim ownership over any future reimplementation?) It has the potential to be a very ugly mess if allowed.
I think at the basic level the question really doesn't fit the subject. Languages are not typically created with the intention to market and license the use of the language.