Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I would like to design a programming language by solving a specific set of problems. I am looking for a core set of programming problems that are language agnostic.

It seems that there are a number of problems that are repeatedly solved by programmers. The implementation details vary from language to language, but, by and large, the problem they are solving remains the same. For example:

Have there been any enumerations of these in literature?

share|improve this question

closed as not a real question by gnat, BЈовић, MichaelT, Kilian Foth, Bart van Ingen Schenau Jun 14 '13 at 10:17

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 haven't mentioned language paradigms yet. Your question seems focused mostly on software libraries. –  Robert Harvey Jun 13 '13 at 20:13
@RobertHarvey I was hoping to step a level above functional, imperative, etc. since those are all ways of solving specific (and hopefully generalizable) problems. –  sdasdadas Jun 13 '13 at 20:15
What many widely-used languages lack is an intuitive and syntactically clean way to implement parallelization and concurrency. –  Philipp Jun 14 '13 at 7:40
Do you want to create a language aimed at solving language agnostic problems? –  mouviciel Jun 14 '13 at 9:18
@mouviciel It's mostly a learning exercise but I would like to evolve the language to solve common problems first, and then prune the grammar. Thus the need for a set of common problems solved by most languages. –  sdasdadas Jun 16 '13 at 6:48

3 Answers 3

up vote 1 down vote accepted

You could probably create a useful enumeration by studying a large foundational programming framework, like Microsoft's .NET Framework. If it's been deemed important enough to be applicable to a wide variety of software developers, it's probably already in there somewhere.

A list of namespaces in the .NET framework can be found in the link below. This list is basically a high-level "Table of Contents."


share|improve this answer
Thanks, good idea. –  sdasdadas Jun 13 '13 at 20:20
But you have to separate all of it from all the junk that's been added due to design committees, profit motivated management wanting to boost the new-feature bullet lists, and just the lingual evolutionary process where certain ideas seem good until it's damn clear that no, they really weren't. Compare to a language with a paltry-by-comparison library that prides itself on doing more with less like JS and you'll still find examples of all of that junk in there that I just mentioned. The evolution of programming is no more efficient than speech/writing, IMO. –  Erik Reppen Jun 14 '13 at 6:08
@ErikReppen: Sounds like you're talking about Java and Swing. –  Robert Harvey Jun 14 '13 at 15:11

You seems to refer to common standard library features, rather than language features.

This is why it's very common these days to create languages that are compatible with the large frameworks rather than create these features from scratch.

Example: PHP make uses of C libraries, jRuby/clojure/groovy/scala all run on top of a JRE and hence can make use of existing java libraries for the featuers you mention. Other languages are ported to/created for .NET to make use that library set, such as IronRuby, IronPython and F#.

My suggestion is that you create a langauge for the specific language featuers and make use of common libraries from any of the big stacks.

Instead, think of how you should implement syntax and which paradigms you should make use of within your language.

share|improve this answer

I find the question as impractical as asking whether there's a core set of "people problems." Yes we have many problems to solve. And there is much overlap. But there's just too many problems one group of people might not be so great at solving that another would for it to be practical to think in terms of a core.

Languages are arguments. They're philosophies. You'll never find the one true one. And we'll never stop inventing new ones to adapt to the times and shifting circumstances. Hell, we'll invent new ones just because we're bored of speaking and/or programming that way.

IMO, the lazy principle is always a factor but it's not a Hegellian thing where we will ultimately find the one true higher language. (although I certainly hope we'll stay away from certain language mistakes so long as history remembers them). Where I hope we do evolve, however, is in properly identifying some of the really good base principles and holding on to those as things worth doing a smell-check on whenever an exception seems reasonable.

That said, don't think I'm trying to discourage you. Putting things in boxes can be a highly fruitful endeavor even if it never succeeds if you maintain awareness of the absurdity of it all. And yes, a good one to indulge in if you've got language design ambitions no doubt.

share|improve this answer

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