Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm in the process of creating a grammar for a scripting language but as I'm working on it I started to wonder what makes a language good in the first place. I know the goals for my script but there are always 1000 different ways to go about doing things.


  • Easy to use and understand (not my grandma could do it easy, but the secretary at the front desk could do it or the VP of marketing could do it type of easy)
  • No user defined functions or subroutines.
  • Its use would be in events of objects in a system similar to HyperCard.

Conceptually I was thinking of a language like this:

set myVariable to 'Hello World'
set counter to 0
repeat 5 times with x
    set counter to counter add x
set myVariable to myVariable plus ' ' plus counter
popup myVariable

set text of label named 'label' to 'new text'
set color of label named 'label' to blue

The end result would popup a dialog with the contents Hello World 15 it would also change the text of a label and make it blue.

But I could do the same thing 1000 different ways. So what makes one language any better than another when both are designed for the same goals?

share|improve this question

closed as not a real question by Robert Harvey, David Thornley, Jarrod Roberson, Karl Bielefeldt, ChrisF Dec 2 '11 at 19:32

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

you can do this with C macros if you want... – ratchet freak Dec 2 '11 at 18:28
What are you trying to accomplish here? Is this a "for fun" or "for learning" project? If not, what is the language to be used for, and why don't you want to use an existing one? – David Thornley Dec 2 '11 at 18:41
"I started to wonder what makes a language good in the first place." If you don't have an opinion on this already, don't design a language. – Sean McMillan Dec 2 '11 at 19:05
You just basically re-invented AppleScript see HelloWorld in AppleScript. This is universally considered one of the worst language implementations of any languages known! – Jarrod Roberson Dec 2 '11 at 19:28
I've gone through this exercise myself a few times, and every time I concluded that what I really needed was a well-designed GUI. Secretaries and VPs aren't going to be able to handle anything more complex than excel. – Karl Bielefeldt Dec 2 '11 at 19:30

There's no right answer here. Different languages are designed for different things and different styles of programming. This is clear from the design principles of even popular languages. From the Zen of Python:

There should be one-- and preferably only one --obvious way to do it.

Perl was designed using the opposite principle:

There's more than one way to do it

Neither one of these languages did it "right". Some people prefer one style over the other, but it ultimately comes down to stylistic preferences and the goals of the language.

share|improve this answer

Unless you are an experienced language designer, it might be better to take an existing programming language that has already proven itself useable, useful, and/or perhaps even popular, among some similar target audience, and prune that language's syntax to meet your needs.

share|improve this answer

the only thing that matters for a language is that is solves the problem it was designed to solve. what makes a language better than another is that is solves the problem better. In your case it looks like you are stuck on how much like written English should the language be, you could try writing something like in your question several ways you think are pretty good and asking someone which they like the best (preferably someone who is intended to use the language if they exist). if you pick something and stay consistent and try to avoid creating special cases whatever you decide will work quite well.

share|improve this answer
It is not only important to consider whether at first glance you like a language, but after understanding it whether you would like it. Take .NET's null coalescing operator for example. – Steven Jeuris Dec 2 '11 at 23:08

Not the answer you're looking for? Browse other questions tagged or ask your own question.