Download Article Download Article

Many people have difficulties or frustrations with the programming languages they use every day. Some want things to be handled more abstractly, while others dislike implementing features they wish were 'standard'. Whether you are an IT professional or just a hobbyist, many times you may find yourself wanting to create a new programming language.

  1. You can't create a programming language if you don't know how to use a computer.
  2. Compiler writers often use unfamiliar terminology. Read up on compilers before proceeding. Be sure to know everything that you need to know.
    Advertisement
  3. Is it addressing a domain-specific problem, or is it a general-purpose language?
    • Are you going to allow direct pointer access or not?
    • What are the data types of your language?
    • Is it a static or dynamic language?
    • What is your memory model? Are you going to use a garbage collector or manual memory management? (If you use a garbage collector, prepare to write one or adapt an existing one to your language.)
    • How are going to handle concurrency? Are you going to use a simple threading/locking model or something more complex like Linda or the actor model? (Since nowadays computers have multiple cores.)
    • Are there primitive functions embedded in the language or will everything come from a library?
    • What is the paradigm or paradigms of your language? Functional? Object-oriented? Prototype (like JavaScript)? Aspect-oriented? Template oriented? Or something entirely new?
    • How is your language going to interface with existing libraries and languages (mainly C)? This point is important if you're building a domain-specific language.
    • Finally, some of the answers to these questions are going to be answered by the second step and will help you answer the next step.
  4. For example, 'they may want to direct a robot to follow a line' or 'they may want to create relatively portable desktop programs in it' or 'they may want to create web applications with it'.
    • Be careful to keep your language in the context-free language category or something inside it. Your parser generator and you will appreciate it later on.
  5. Meaning that in the interpreted world your user will typically edit your program in an editor, and run it directly on the interpreter; while in the compiled world, your user will edit your program, compile it, save the resulting executable somewhere and run it.
    • Also, think about how your compiler/interpreter will warn your user about erroneous programs and syntax errors.
  6. Have the parser create an AST, then create your object code from the AST using three address code or its big brother SSA, then create a symbol table to define your functions, global variables, etc.
    • Also, depending on your language, you may also want to create virtual pointer tables or information tables for your classes (in order to support reflection or RTTI).
    • You want to create programs that stress the burdens of your formal grammar in order to see that your compiler accepts everything that is inside your definition and rejects everything that is outside of it.
  7. Along with a garbage collector or other runtime features if you need it.
    • Specifically, if you write a compiler, you will need the code that the operating system will execute in order to begin running the user code (for example, allocating all global variables).
    • Don't forget to document how you can integrate with existing libraries, languages and how to use the runtime features and/or standard library.
  8. Advertisement

Expert Q&A

Search
Add New Question
  • Question
    What background or experience do I need to try and develop my own programming language?
    Tyrone Showers
    Tyrone Showers
    Technologist
    Tyrone Showers is a Technologist and the Co-owner of Taliferro Group, an IT consulting company based in Seattle, Washington. With over 35 years of professional experience, he specializes in API Design, e-Commerce, Operational Efficiency, and website development. He has a B.S. in Computer Science from DeVry Institute of Technology.
    Tyrone Showers
    Technologist
    Expert Answer
    Have a fundamental understanding of logic and how it affects the processing of things. Such as how a piece of code can be used or reused to accomplish the result that you want in your programming language or statement. Everyone has their own way of writing their own language; some are easy to read and some are not; some are easy to compile and some are not; so another thing you have to keep in mind is the speed. The processing power to compile languages and run them as fast as possible. The faster the code runs on a machine, the less likely it is to break.
  • Question
    What are top 5 best programming languages?
    Living Concrete
    Living Concrete
    Top Answerer
    There is no "best" programming language. Each programming language has its strengths and weaknesses. It's up to the developer to determine whether or not a programming language suits his or her project based on those strengths and weaknesses.
  • Question
    How do I publish a programing language?
    Community Answer
    Community Answer
    You should create a website, which, if you are familliar with coding, can be done very cheaply, or you can pay a little bit more to get a drag and drop website editor. You should write everything about how to use the code on the website. After that, you should share it on forums and social media sites. If you have created a real program in your language, this might help, because people see it is a good language.
See more answers
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
Advertisement

Video

Tips

  • Start by designing your language and don't write any code, until you are satisfied and have answered all (or most) of the questions or problems related to your design since it's easier to change the design earlier than later.
  • Know your target platform (operating system and libraries) for your compiler/interpreter, after all, you are going to use it and manipulate it.
Submit a Tip
All tip submissions are carefully reviewed before being published
Thanks for submitting a tip for review!
Advertisement

Warnings

  • Think if you really need a new language, and what your language has of new that other languages don't have (It may be a combination of features or a single feature).
  • Writing languages is difficult if you don't know what you're doing. It takes a lot of practice, too.
  • Prepare to spend some time in language design, since you won't have a chance to change your language once you've written the compiler and past the design point.
  • Don't try to base your features into a union of several languages, like saying that your language will be a union of language X, language Y and language Z. History has shown us that languages created in such a way will never find success, or everyone would be programming PL/1 instead of something based on C.
Advertisement

Things You'll Need

  • Patience.
  • Knowledge about language features and language design (you may want to read Programming Language Design Concepts from David A. Watt).
  • Knowledge about compiler theory (since you will be writing a compiler/interpreter for your language and your implementation will be the reference implementation).
  • Uses for your language (remember that some of the most used languages like C or Lisp were created in order to do something specific like creating Unix or doing symbolic computation).


You Might Also Like

Become a ProgrammerBecome a Programmer
Start Learning Computer ProgrammingHow to Start Coding: The Beginner's Guide to Programming
Start Learning to ProgramStart Learning to Program
Change Code on Schlage LockHow to Change 4-Digit User Codes on Schlage Locks
Format Text as Code in Discord2 Simple Ways to Format Text Into Code on Discord
Reset Schlage Keypad Lock Without Programming CodeHow to Factory Reset a Schlage Lock & Restore the Default Programming Code
Delay a Batch FileHow to Delay a Batch File: Timeout, Pause, Ping, Choice & Sleep
Run a Program from the Command Line on LinuxRun a Program from the Command Line on Linux
Convert from Binary to DecimalConverting Binary to Decimal: Positional Notation & Doubling
Write PseudocodeLearn to Write Pseudocode: What It Is and Why You Need It
Make an Exe FileMake an Exe File
Download a GitHub Folder3 Ways to Download GitHub Directories and Repositories
View Source CodeHow to View Source Code
CodeCode
Advertisement

Expert Interview

Thanks for reading our article! If you’d like to learn more about programming languages, check out our in-depth interview with Tyrone Showers.

About This Article

Tyrone Showers
Co-authored by:
Technologist
This article was co-authored by Tyrone Showers. Tyrone Showers is a Technologist and the Co-owner of Taliferro Group, an IT consulting company based in Seattle, Washington. With over 35 years of professional experience, he specializes in API Design, e-Commerce, Operational Efficiency, and website development. He has a B.S. in Computer Science from DeVry Institute of Technology. This article has been viewed 464,366 times.
How helpful is this?
Co-authors: 39
Updated: August 22, 2023
Views: 464,366
Categories: Programming
Thanks to all authors for creating a page that has been read 464,366 times.

Reader Success Stories

  • Ajay Marathe

    Ajay Marathe

    May 21, 2017

    "I was looking for this information, and I got it. Thank you so much."
    Rated this article:
Share your story

Is this article up to date?

Advertisement