English 中文(简体)
How much time and effort to develop a full programming language, compiler and IDE? [closed]
原标题:
  • 时间:2009-11-14 12:32:23
  •  标签:
  • ide

I got tired of searching and never finding a programming language that fits my needs (and I suppose most good programmers feel somewhat the same way). Anyway, I do have an idea of what I d like for a programming language, and I d like to try to develop my own. I m interested in information on how hard it is and how long it takes (I mean, to get a minimally useful language). I already know what resources I d need, but I still feel like it s almost impossible to accomplish something like that without dedicating myself full time (or having others help me, which I don t think will happen).

Anyway -- when I say "programming language" and "minimally useful", I the core language ready, working FFI for calling C code, and an Emacs IDE at least as useful as Quack.

I d be grateful for any experience reports...

Thank you!

最佳回答

There is a haskell tutorial where you write a scheme in what they claim is 48 hrs. I want to say Why s potion took about two months but he wrote an interpretor and JIT compiler for it. So I would say if you know what you are doing it would take a week to a month or two depending on time and talent for a first useful release. Writing a grammar in antlr will take you longer to learn the tools than it will to write the grammar if you make it simple enough.

问题回答

Whatever you are trying to do - stop it.

If there is no programming language that can satisfy you, maybe is time to improve your programming skills?

If I was you I would describe the problem (i.e. what kind of the application you need to write) and ask WHICH language would be best for it.

All super-inventions usually end up as being rewritten to more standard language so more people can work on it. I ve heard about many companies trying to invent their own in-house language and they were ending up rewriting it to C or C# to actually be able to hire someone who can work on it straight away.

Bad move, really, bad move.

well, that s a pretty big task !

have you thought of everything which comprises only a compiler ? how vast the knowledge you have to learn (grammar, machine code, platform convention, file format, ...) ? let alone some very simple things like operator precedence, variable scope, ...

a compiler is not for the faint-hearted. if you never did that, writing an interpreter for a very simple language (like a very simplified pascal) may already take a great amount of time.

if you can afford doing it, do it, because that s a lot of fun and you will learn a lot by doing it. but do not think your language will be more than a toy before some years. and even then, it will surely miss a lot of features found in many other common languages.

This really depends on the person. Some people write a grammar as if they are writing a letter in their native tongue.

Some people, can fiddle with this forever (like me). Let alone creating a compiler or interpreter from it.

If this is your first language, then this process can take quite a while before the language becomes practical.

After this is completed you ll be needing tons of libraries, before you can do anything useful with it, which also takes a lot of time and dedication

So, even if you re a compilerveteran, this will eat up a lot of time. But bo doubt be a lot of fun too

I would say between 3 and 5 man/year depending on the complexity of the language and the optimizations of the compiler.

If this is a personal project I would recommend going for a .NET language so that you can skip at least the assembly generation an let that part to the JIT. That will take out a great deal of effort while letting you center on the characteristics of the language itself.

It s not THAT difficult to write a compiler. I know it sounds like a pretty big task and indeed is one of the most complicated things to do in programming as it requires you to know a lot about the architecture, optimization and some nasty stuff but at the end is just like any other business, once you get into it and start to learn it just gets easier.

Come on, the best person to answer this question is you yourself! You know your programming abilities and the specific language you have in mind.

In general, I d say it takes something between a week and a decade.

Consider getting your feet wet by writing several DSLs (domain-specific languages). You could potentially leverage an existing Language Workbench to get productive quickly. Alternately you could write the DSL in a language that supports compiler extensibility and use the existing IDEs for the core language.

About a decade (and counting).





相关问题
Sybase Development IDE

Is there a Toad type application for Sybase? I can t seem to find a single one! I ve tried using VS 2008 but can t see the sproc source.

Good C IDE for Mac? [closed]

I ve just started a job where I m programming in C on a Mac, which is my first experience using a Mac for development. For now I m using Xcode as my editor, then using make/gcc/svn at the command line ...

What are your experiences with Code::Blocks? [closed]

I looked at Code::Blocks and it certainly looks great for c++ development, I like it s multiplatform capabilities (runs everywhere), but I wanted to get your feedback. Is it good/stable enough to be ...

What do you use to write Go [closed]

I know its a bit too early, but I ve been trying out Go (Google s Programming Language) and its kindof annoying to write code in gedit. So, my question: What do you use to experiment with Go?

Help with strange Delphi 5 IDE problems

Ok, I m going nuts here. For the last (almost) four years, I ve been putting up with some extremely bad behavior from my Delphi 5 IDE. Problems include: Seemingly random errors in coride50.bpl ...

Eclipse smart quotes - like in Textmate

Happy Friday — Does anyone know if eclipse has the notion of smart quotes like Textmate. The way it works is to select some words and quote them by simply hitting the " key? I m a newbie here so be ...

Selenium IDE: Incrementing values by 1 and 71

Currently I m incrementing a value called wert by 1 with the following code: getEval storedVars[ wert ]=${wert}+1; The value wert is something like 80401299. I want to add 1 to the value, if it ...

热门标签