4 ms·
You appear to be advocating a new: [ ] functional [ ] imperative [x] object-oriented [x] procedural [ ] stack-based [ ] "multi-paradigm" [ ] lazy [x] e
by frowaway001 12y ago
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.
- KittenLanguage 12y agoYeah, it will work, and a checklist will not convince me otherwise. I also don't believe I can make money off of it, I was looking for opinions on if a Kickstarter would work to help me speed things up, but I never even considered using it to earn money beyond that. Yes, these projects usually go nowhere, but mine won't. I think a detailed conversation is much less condescending and much more enlightening than a checklist that is wrong on several points, such as that I am trying to make a language faster than C, and that I believe people will pay me for it (at least beyond a query on if donations was a potential idea). Also I intentionally left a lot vague as right now I am seeking opinions and not ready to unveil all of my ideas, in another year check back and by then I will have a much more detailed description.
- smt88 12y agoSeriously. Check out Scala. You seem to agree that FP and OOP are not mutually exclusive, and Scala has already unified them in a widely-praised language. It's a complicated language and therefore may not be very productive, but it's considered to be well-thought-out for the most part. 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.
- KittenLanguage 12y agoThanks for your input. I disagree with a lot of Hacker News on syntax though. Syntax can be learned and is not a hurdle for anyone who is seriously into programming, but I believe it keeps people away from programming who would be interested otherwise. I also think that readability is more important than writeability since maintenance is so important with any big project, and syntax is a piece of readability (though only a piece). 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.