+1  A: 

That question is a bit vague and open ended.
Do you want instructions on how to design:

  • language syntax
  • language libraries
  • A compiler

etc

Martin York
+1  A: 

Well if I wanted to created a programming languange I think I'd look at the history of programming languanges, the structure of current languanges. I'd also look into what goes into making a compiler since if you want to make a programming languange and get far you'll need a compiler.

you'll probably also need to know assembly.

DForck42
Alternatively, you could skip the assembly and write an interpreter. Or make a bytecode compiler for some virtual machine. (Or if your virtual machine is Parrot, just compile to PIR or PASM.)
Chris Lutz
Or compile to C. An old trick but often a good one.
David Thornley
Or compile to C-- while we're at it. A much newer trick, but theoretically just as good (if only anyone knew C--).
Chris Lutz
A: 

Well, any programming project starts with a need. You should think of a program you want to solve, how you would solve it, and develop a language as the solution. You would want to know as much as possible about the problem and what you are trying to accomplish. Looking at the many existing languages should help you choose the features you want, and help you learn some about how to implement them. The features that might impact your language would be Object Orientednes, funcitonal programming, etc. You're language might compiler into assembly code like C, bytecode like java, or be interpreted like Javascript. The history of other languages and their development will prove a valuable asset. Like the previous poster said, your languages will need to have a compiler to be able to run, so compiler design wouldn't hurt either.

CrazyJugglerDrummer
A: 

Why not get a book on DSL (Domain Specific Languages) to see how to make a language.

One possibility is this book, which is on a language called Boo. DSls are also designed in F#, Haskell and other functional languages.

http://manning.com/rahien/

James Black
A: 

First decide what kind of a language you want to create. Study other languages and see what they did wrong. You will go nowhere if you just want to 'make a programming language.'

Next learn about grammars and regular expressions. Learn compiler tools such as Flex and Bison (lex and yacc) or ANTLR. Start creating your grammar. I would not suggest writing assembly. Use some higher level code representation like LLVM (great for a low level language) or MSIL (great for a high level language).

I also should add that you can use LLVM for a high level language too, it is very easy to use and powerful, and I highly recommend it. It has all kinds of optimizations that rival GCC. If you are using C++, it is definitely the fastest way to do code generation, and along with it comes portability and optimization.

Zifre
A: 

That depends on what sort of language you want. It also depends on what you want out of it. Is this for some sort of educational project, or do you want a language that will do something that the generally available ones won't?

If you want to design something on the order of C, or Smalltalk, or Java, or other general HLL, you need to study a good amount of computer science, specializing in compiler theory. There's a lot to learn here, including some fairly difficult theory (if you don't understand LALR(1) parsing, you'll have to learn). The good news is that you don't actually have to do your own machine code generation, as you can compile to C and then compile the C code. (This may not work if you're going for high performance.)

David Thornley