I made Servant to give people their own databases in the cloud: https://www.servant.co
It hosts people-friendly data models I call the "JSON Archetypes": https://github.com/servant-app/json-archetypes
If this interests anyone, my contact info is all over the website. I'd love to hear from you.
Austen
I have most of the language's details written up in pseudocode, hope to have a working Hello World in a month, a working prototype to give to friends in half a year, and a working prototype to post on Hacker News in a year, and a full language within 2-3 years. My problem is I am doing this on my own (which I don't want to change at this point) while working a full time job. I have thought about doing a Kickstarter to raise funds (I would ask for at least $100,000) but know the legal side of things means it would be unwise to do that until I create a company, which then would cost about $400 a year. I also don't want any kind of deals involving giving away pieces of the company, or going into debt, so donations are probably the only way I'd go. Does anyone think the Kickstarter would be worth it?
You appear to be advocating a new:
[ ] functional [ ] imperative [x] object-oriented [x] procedural
[ ] stack-based [ ] "multi-paradigm" [ ] lazy [x] eager
[ ] statically-typed [ ] dynamically-typed [ ] pure [x] impure
[ ] non-hygienic [ ] visual [x] beginner-friendly [x] "modular"
[x] non-programmer-friendly [ ] completely incomprehensible
programming language.
Your language will not work. Here is why it will not work.
You appear to believe that:
[x] Syntax is what makes programming difficult
[x] Adding more "ideas" to a language makes it better
[x] People choose between garbage collection/
manual memory management/reference counting and other,
very hard to implement and use approaches for fun
[ ] Garbage collection is free [x] Computers have infinite memory
[ ] Nobody really needs:
[x] concurrency [ ] a REPL [ ] debugger support [ ] IDE support
[ ] I/O [ ] to interact with code not written in your language
[ ] The entire world speaks 7-bit ASCII
[ ] Scaling up to large software projects will be easy
[x] Convincing programmers to adopt a new language will be easy
[ ] Convincing programmers to adopt a language-specific IDE will be easy
[ ] Programmers love writing lots of boilerplate
[ ] Specifying behaviors as "undefined" means that programmers
won't rely on them
[x] "Spooky action at a distance" makes programming more fun
[X] Programmers will pay money to use your language
[X] Programmers aren't annoyed already from all the new free
languages appearing twice a day
Unfortunately, your language (has/lacks):
[x] comprehensible syntax [ ] semicolons [x] significant whitespace
[ ] macros [ ] implicit type conversion [ ] explicit casting
[ ] type inference [ ] goto [ ] exceptions [ ] closures
[ ] tail recursion [ ] coroutines [ ] reflection [x] subtyping
[ ] multiple inheritance [ ] operator overloading
[ ] algebraic datatypes [ ] recursive types [ ] polymorphic types
[ ] covariant array typing [ ] monads [x] dependent types
[ ] infix operators [ ] nested comments [ ] multi-line strings
[ ] regexes [ ] call-by-value [ ] call-by-name [ ] call-by-reference
[ ] call-cc
The following philosophical objections apply:
[ ] Programmers should not need to understand category theory
to write "Hello, World!"
[ ] Programmers should not develop RSI from writing "Hello, World!"
[ ] The most significant program written in your language is its
own compiler
[ ] The most significant program written in your language isn't
even its own compiler
[x] No language spec
[ ] "The implementation is the spec"
[ ] The implementation is closed-source [ ] covered by patents
[ ] not owned by you
[ ] Your type system is unsound
[ ] Your language cannot be unambiguously parsed
[ ] a proof of same is attached
[ ] invoking this proof crashes the compiler
[x] The name of your language makes it impossible to find on Google
[ ] Interpreted languages will never be as fast as C
[ ] Compiled languages will never be "extensible"
[x] Writing a compiler that understands English is AI-complete
[x] Your language relies on an optimization which has never been
shown possible
[ ] There are less than 100 programmers on Earth smart enough to
use your language
[ ] ____________________________ takes exponential time
[ ] The liveness property is known to be undecidable
Your implementation has the following flaws:
[x] The "market" for programming languages doesn't work this way
(there is no market)
[x] CPUs do not work that way
[x] RAM does not work that way
[x] VMs do not work that way
[x] Compilers do not work that way
[x] Compilers cannot work that way
[ ] Shift-reduce conflicts in parsing seem to be resolved using rand()
[ ] You require the compiler to be present at runtime
[ ] You require the language runtime to be present at compile-time
[ ] Your compiler errors are completely inscrutable
[ ] Dangerous behavior is only a warning
[ ] The compiler crashes if you look at it funny
[ ] The VM crashes if you look at it funny
[ ] You don't seem to understand basic optimization techniques
[ ] You don't seem to understand basic systems programming
[ ] You don't seem to understand pointers
[ ] You don't seem to understand functions
Additionally, your marketing has the following problems:
[x] Unsupported claims of increased productivity
[x] Unsupported claims of greater "ease of use"
[ ] Obviously rigged benchmarks
[ ] Graphics, simulation, or crypto benchmarks where your code just calls
handwritten assembly through your FFI
[ ] String-processing benchmarks where you just call PCRE
[ ] Matrix-math benchmarks where you just call BLAS
[x] Noone really believes that your language is faster than:
[ ] assembly [x] C [ ] FORTRAN [ ] Java [ ] Ruby [ ] Prolog
[x] Rejection of orthodox programming-language theory without justification
[x] Rejection of orthodox systems programming without justification
[x] Rejection of orthodox algorithmic theory without justification
[x] Rejection of basic computer science without justification
Taking the wider ecosystem into account, I would like to note that:
[ ] Your complex sample code would be one line in: _______________________
[ ] We already have an unsafe imperative language
[x] We already have a safe imperative OO language
[ ] We already have a safe statically-typed eager functional language
[ ] You have reinvented Lisp but worse
[ ] You have reinvented Javascript but worse
[ ] You have reinvented Java but worse
[ ] You have reinvented C++ but worse
[ ] You have reinvented PHP but worse
[ ] You have reinvented PHP better, but that's still no justification
[ ] You have reinvented Brainfuck but non-ironically
[x] The "I can do everything better than thousands of people with
decades of experience"-one-man-projects usually go nowhere.
In conclusion, this is what I think of you:
[x] You have some interesting ideas, but this won't fly.
[x] This is 95% wishful thinking.
[x] Building a language is a great way to gain deeper technical understanding,
but believing it's possible to earn money with it is ridiculous.
[ ] This is a bad language, and you should feel bad for inventing it.
[ ] Programming in this language is an adequate punishment for inventing it.Also, the checklist was condescending, but the point that syntax is not what makes programming slow/difficult is totally correct. The time lost in learning/using a toy language is far greater than the time lost in using a steaming pile of garbage like JavaScript. Actually programming isn't even the biggest use of time as a software engineer -- learning code and dealing with people are.
I agree other things beyond syntax are more important though, but I think I have enough interesting pieces of ideas that I want to put them all together and see what the big picture looks like. Perhaps it will stay a toy language, or perhaps it will grow beyond it. Some of those ideas I haven't written down here either. One in particular that gives it hope for evolving beyond a toy language is a way to write small wrappers around C code to link it into Kitten code, so with a small amount of effort all of the impressive Microsoft libraries should be accessible for Windows computers at least.
I'll have to check out Scala, I don't know much about it. Also a couple languages I am really interested in right now are Nim and Crystal, a lot of my ideas share a lot with those two newer languages, a more static-y compile to C language than most newer languages.
Two questions:
1) How is "modular" programming not possible in other languages? In something like Scala, I'd always imagined any paradigm is possible. I'd be extremely interested in a short piece of example code.
2) Why a new language instead of contributing to, say, Go, Rust, Scala, or one of the other "new" languages? It generally takes 5+ years for a language to become mainstream (sometimes much longer), so if you're looking at a release date of 3 years from now, you're talking about nearly a decade.
One example of this I have seen is a language called AutoIt, which is a very small language and I am amazed at how easy it is to program. One of my goals with Kitten is to make it capable as a teaching language, but also as a large project language, similar to Python. I simply love the unrestricted feel of every capability being useful.
As a contrast, I spent a lot of time with C++ in the last year, and I am constantly amazed at how much more difficult programming in it is because of older concepts. In particular, strings have caused a lot of problems, due to the many many varieties of strings between C, C++, and Microsoft data types, as well as Ansi vs Unicode and const vs non-const. There's just so much more to learn, and a lot of it is older concepts that aren't very useful.
Over the last year I have built a set of ideas that I have now gotten to play well together. These ideas include very specific syntax unlike any programming languages I have seen out there so far. I admit I have not tried many of the newer languages, but I hit a certain point where I didn't care what else was out there, I just had to build my ideas. Of course, if I do go into the Kickstarter route, I'd investigate those languages more first, right now I just decided to put something out there to see what people's first impressions were. Thanks for your input!
I think you found AutoIt to be simple and easy because it's not a general-purpose language. It has a very specific use-case and domain.
I really wonder if you know how unbelievably complex and difficult it is to create a new language. Even very minor considerations become incredibly important for certain applications.
If you really want to get this language off the ground, I'd suggest targeting JVM[1], CLR[2], or transpiling to JavaScript (basically the same targets as Clojure).
Before you go any further, you should also actually spend some time with the new kids on the block. D is a direct successor to C++. Go is a C++ replacement. Rust is a general-purpose language aimed at web applications, and it was partly the inspiration for Swift.
All of these are many years old, have the backing of a large corporation, are written by teams of brilliant people, or some combination of those things. It's really a massive undertaking, and most new languages fail or never get to a usable state.
Don't you think it's possible that one of the tens of millions[3] of programmers in the world has developed something[4] you'd like as much as your theoretical language?
1. http://en.wikipedia.org/wiki/Java_virtual_machine
2. http://en.wikipedia.org/wiki/Common_Language_Runtime
3. http://www.infoq.com/news/2014/01/IDC-software-developers
4. http://en.wikipedia.org/wiki/List_of_programming_languages
"Modular programming" is already a term in wide use for a widely used programming style/practice [1], so if you have defined a new paradigm, you should probably call it something else.
[1] see, e.g., http://c2.com/cgi/wiki?ModularProgramming and http://en.wikipedia.org/wiki/Modular_programming
Examples would be cancer research[1], solar-powered vehicles, next-gen batteries, carbon capture... pretty much any technology that would drastically improve and prolong life on earth.
1. http://www.ted.com/talks/jay_bradner_open_source_cancer_rese...
Never going to happen, for a truly innovative idea, because the risks are too high.
The world needs a benevolent Bell Labs type of institution, with commercial intelligence, that channels profits back into its growth (like Amazon). It should employ tens of thousands of scientists - engaged in 'blue sky' research - and aim to solve problems that are currently considered 'too big'. The usual stuff, like climate change, clean energy production, and political reform (backed by hard political science).
Of course, that's with a massive budget. Examples of smaller budgets Linux, the World Wide Web, and probably a thousand more obvious things that I'm not thinking of.
It takes these things a long time to get off the ground, but there are tons of companies that are making money off of community projects.
If the barriers to funding were (sensibly) removed, academia, and institutions like NASA, would flourish - and we'd see huge leaps forward for humanity.