Advertisement

Help design a programming language!

Started by April 12, 2012 09:20 PM
44 comments, last by Antheus 12 years, 6 months ago
If you were to compose a piece of music, would you begin by holding a straw poll to see what notes people prefer?

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]


If you were to compose a piece of music, would you begin by holding a straw poll to see what notes people prefer?


*cough* pop music *cough*

Which is the most profitable kind of music.
Advertisement

If you were to compose a piece of music, would you begin by holding a straw poll to see what notes people prefer?


If I wanted the music to be composed mostly by the community rather than myself, yes. I suppose we will have to agree to disagree on this, because I think it is a great idea to get the community to design a language together, and I am going to go through with it. Lots of open source software is created in ways similar to, if not identical to, the way I am designing this language. If you have any suggestions for the language, please tell me, but I'm not here to be told I am doing things wrong, especially when no one here knows me or the level of skills I possess in software development, though I do appreciate the advice. And I do compose music, by the way XD. Have been for several years.

Unfortunately visual languages never quite live up to the hype surrounding them, so I'd like to avoid that biggrin.png.


Visual languages have been tried before.

There has never been any appreciable success.

That's rather defeatist. Powered flying machines were tried well before there was anything remotely near success. What's the point of doing it if you aren't going to do something outside your comfort zone or innovative?

I have a feeling that if anyone manages to design a visual language that isn't totally garbage, it's going to come from someone with a long history of designing good textual languages first. But that's just me :-)
[/quote]
I feel like it would actually be the opposite. I think it would come from someone with a history of visual design. Textual language design has a huge list of solved problems. There's only a handful (if any) solved problems in visual language design. I wouldn't really expect textual language designers to have the visual design background needed to solve the problems inherent to a visual language, but a visual designer could easily build a language on top of the solved problems we have today.

If you were to compose a piece of music, would you begin by holding a straw poll to see what notes people prefer?


On a side note, I see you worK for ArenaNet. Great job on Guild Wars 2, looking forward to being accepted into another beta!

I appreciate your advice but I assure you I am fit for the task. Once I have made my mind up I can implement everything just fine.


Apochpiq's second sig link has a wiki that describes language features (that you can assume he supports).
My sig has a half done specification for a programming language and some discussion of certain features. If you're hurting for design, there are things that can be implemented if you're looking for a challenge.

That said, having first class functions without closures is... Why bother?
Advertisement

[quote name='Contraforge' timestamp='1334279501' post='4930779']
Unfortunately visual languages never quite live up to the hype surrounding them, so I'd like to avoid that biggrin.png.


Visual languages have been tried before.

There has never been any appreciable success.

That's rather defeatist. Powered flying machines were tried well before there was anything remotely near success. What's the point of doing it if you aren't going to do something outside your comfort zone or innovative?

I have a feeling that if anyone manages to design a visual language that isn't totally garbage, it's going to come from someone with a long history of designing good textual languages first. But that's just me :-)
[/quote]
I feel like it would actually be the opposite. I think it would come from someone with a history of visual design. Textual language design has a huge list of solved problems. There's only a handful (if any) solved problems in visual language design. I wouldn't really expect textual language designers to have the visual design background needed to solve the problems inherent to a visual language, but a visual designer could easily build a language on top of the solved problems we have today.
[/quote]

I agree with most of your posts, but because visual programming can be internally represented as text, I'd rather work on the text version first. There is always the possibility of a visual code editor being built later though, and I appreciate the thoughts!

[quote name='Contraforge' timestamp='1334279364' post='4930777']
I appreciate your advice but I assure you I am fit for the task. Once I have made my mind up I can implement everything just fine.


Apochpiq's second sig link has a wiki that describes language features (that you can assume he supports).
My sig has a half done specification for a programming language and some discussion of certain features. If you're hurting for design, there are things that can be implemented if you're looking for a challenge.

That said, having first class functions without closures is... Why bother?
[/quote]

Well from my personal experience I have never used them, but I am open to implementing them. I am sure of supporting first class functions because of my frustrations with C/C++/Java's limited function pointers.
Its simply not going to be fruitful to ask the community what it wants -- invariably, you'll be pulled in multiple directions by people who will only care about the few features they consider cool or necessary, and none of whom will have any interest in how their pet features will play with other people's pet features. Unless your committee is made up of programming language experts, the best outcome you could hope for is achieving "Jack of all trades, master of none" -- and no one's interested in *that* language.

Simpy put, language features do not exist in a vacuum, you have to understand how features will work with--and against--one another. Language design is every bit as much about what you leave out, as it is what you put in. The most elegant languages build their features on in such a way that they enhance each other (the whole is much greater than the sum of its parts), and often leave out features that harm the language ecology, even if they are useful on their own, or in niche applications.

Sure, you can ask people what features they find interesting, and then go off to a cave for 6 months to cobble those together in some useful way on your own -- but I fail to see what that grants you that simple research would not. Honestly, if you believe yourself ready to tackle the sorts of decisions that you will face, then you should already be aware of what programmers in different disciplines, using different languages, and working in different domains find handy and why.

The first and biggest mistake you're making is that you haven't even defined what role this language of yours will fill -- you're polling for features before you've even stated the problem domain in even the most broad of terms -- Is it a systems language, applications language, or scripting language you hope to create? Do you intend it to be used in computationally intensive niches, or as a means to automate tasks? What style of concurrency/parallelism do you intend to exploit, if any?

You have to define the problem before you start looking for the solution.

throw table_exception("(? ???)? ? ???");


The first and biggest mistake you're making is that you haven't even defined what role this language of yours will fill -- you're polling for features before you've even stated the problem domain in even the most broad of terms -- Is it a systems language, applications language, or scripting language you hope to create? Do you intend it to be used in computationally intensive niches, or as a means to automate tasks? What style of concurrency/parallelism do you intend to exploit, if any?


I was planning on making the language a general purpose one, like the C family of languages. Ideally it could be used for both computationally intensive niches AND automating tasks. Concurrency/parallelism is an interesting area that I was look forward to hearing more about from the community.

Perhaps I should just design the language myself first, then come back and ask for feedback and revise the language based on that. These responses are not quite what I was hoping for XD.

This topic is closed to new replies.

Advertisement