keean / zenscript

A trait based language that compiles to JavaScript
MIT License
42 stars 7 forks source link

Better name than traitscript? #3

Closed shelby3 closed 7 years ago

shelby3 commented 7 years ago

Scala used trait for interface combined with mixins long before Rust used them for typeclasses.

Perhaps we can think of a better name? Ideas?

The Traitscript name isn't that sexy/racy nor exciting. A racy name would be for example HaloScript or just Halo.

Edit: also Traitscript can be mispronounced “traits crypt”. One syllable names are best.

shelby3 commented 7 years ago

I would like if possible to capture the notion of decentralization, because type-classes are delayed binding of implementation, interface, and data. The degrees-of-freedom are increased. This also enables greater modularity as well as solving Wadler's famous Expression Problem.

Pivot Unbounded Slack Unchained Float Orthogonal Multitype Furcate Pliant Antifragile Resilient Flexuous Shapeless Amorphous Morph Subvert Warp Oust Sunder Cleave Bits Iota Scintilla Mingle Diffuse Dispersed Entropy Disjoint Shard

My favorites of those above are:

Flexuous Float Mingle Multitype Pivot Shapeless Subvert Warp

And I still like Halo.

keean commented 7 years ago

A good test is to Google each term. If you get a lot of hits for the same thing (like I am sure Halo will pick up a lot about the game), then its probably not a good name.

shelby3 commented 7 years ago

@shelby3 wrote:

My favorites of those above are:

Flexuous Float Mingle Multitype Pivot Shapeless Subvert Warp

@keean wrote:

A good test is to Google each term. If you get a lot of hits for the same thing (like I am sure Halo will pick up a lot about the game), then its probably not a good name.

Then ‘Float’ is eliminated because it returns a lot of hits for the CSS property and “Float language” returns the data type in other languages such as C. And ‘Mingle’ is eliminated because returns many variants of dating sites, so it is the wrong connotation. In Pokémon and unrelated in JBOSS there are features named ‘Multitype’, but this appears to be incidental to those projects and thus not a strong disqualification. So the remaining choices from that list are:

Flexuous Multitype Pivot Shapeless Subvert Warp

If we were using the following criteria, then ‘Warp’ would be best:

Edit: also Traitscript can be mispronounced “traits crypt”. One syllable names are best.

First impression is that ‘Flexuous’ is likely to connote limberness in 2D or 3D space, not type system adaptability. Perhaps ‘Adaptacious’ is better, but isn't a word, it is too long (difficult) to spell, and ‘-cious’ causes the mind to think of luscious, ludicrous, etc. Although perhaps one can make the same argument about Apple’s Swift or Google’s Go languages, except that faster development has often been a theme in programming tools, e.g. Borland Turbo C from the 1980s. I've seen “Flex Canvas” used to describe a CSS3 proposal and also I believe it may be a widget name in the Android GUI, both being 2D space flexibility concepts. In short, flexibility is not the same meaning as adaptability.

Multitype’ is very descriptive and that may also be its weakness. If want to name a car, I don't name it ‘Car’. Also it sounds more like a feature than an entire programming language, i.e. a one-hit-wonder aka language with only one feature. Also many typing paradigms have multiple types, so it might not be quite clear what is the advance.

I like ‘Pivot’ for being so darn unique and for the concept and vernacular “to pivot” away from a current situation or strategy into a superior one. For me that is a powerful connotation. However, ‘pivot’ also has other meanings which imply a centralized hub from which rotation is constrained.

I got the idea for the name ‘Shapeless’ from Miles Sabin’s Scala project. It is a really geek-cool abstract name, as is Miles and his project. It really fits since with type-classes, the data types don’t have any hardcoded interface (behavior) shape and this is adding delay at the function application use-site.

Well ‘Subvert’ pumps antifreeze through my humor-seeking rebellious aorta and superior vena cava. And it is very roughly a spoonerism on ‘subversion’ thus in my mind also on ‘subclassing’. So we subvert the subversioning of subclassing. I like the names (including ‘Pivot’, ‘Shapeless’, and ‘Warp’) that imply we are creating a revolution in s/w development.

Finally ‘Warp’ is subversive twist on Apple’s Swift. And I suspect our type-classes will be better than modeling it as design pattern with their protocols.

Which if any do you like @keean?

(I love open source, because I get to do a brain dump to the public)

keean commented 7 years ago

I tend to like obscure literary references. I like the concept of shapeless, but the word itself seems to lack something. Warp reminds me of star trek, subvert seems too subversive :-) Pivot seems a bit too much like 'turning'.

shelby3 commented 7 years ago

I tend to like obscure literary references.

Such as amorphous? Or do you mean some term minted in literature, such Kafkaesque?

I like the concept of shapeless, but the word itself seems to lack something.

Yeah I think I was also favoring Shapeless. It is the choice which has the least negative or incorrect associations.

That it lacks something is part of the shock value IMO. Shock value can be very valuable in marketing.

But if the lack of something is not shocking but rather underwhelming, then that is probably not good.

IMO, Shapeless is shocking, not underwhelming. I think it would intrigue the curiosity of geeks.

Do you get a different feeling from it? Maybe the "less" is having a negative impression, such as language isn't complete?

subvert seems too subversive :-)

It is riskier, but if we really think we are pulling off a revolutionary step forward...

keean commented 7 years ago

From H. P. Lovecraft you have the nameless, shapeless watcher, and other abhorrent things :-)

I quite like 'vert' ... I need some sleep now...

shelby3 commented 7 years ago

I quite like 'vert'

(con)Vert or Vert(ical)?

New ideas:

Emend JIType Plug or Pluggable Retrofit Sculpt

And Retrofit or Pluggable seems nearly ideal. Instead of trait, I may prefer pluggable or retroface.

keean commented 7 years ago

RetroScript sounds quite good, fits the pattern of other JS like language.

Some inspiration: http://c2.com/cgi/wiki?ProgrammingLanguageNamingPatterns

shelby3 commented 7 years ago

Well I think I may have decided to use ZenScript or just Zen for short. I will probably create my own repository soon and start working on the LL(k) table driven parser. You are of course free to use any name you wish in your repository. And I suggest let's observe which repository gains traction and then focus there.

Retro as slang in the USA connotes "old school" or throw back to something old.

keean commented 7 years ago

I like Zen/ZenScript :-) Can I change the repo name?

Retro in the UK tends to mean out-of-date (so old-school in a way, but not necessarily a positive way), it also means going backwards (retrograde motion).

I am using this parser: https://github.com/jneen/parsimmon/blob/master/API.md

Having spent a long time writing a parser combinator library for C++, I really want to focus on the actual language implementation.

I am doing test-driven-development, so the main command to run all the tests is "npm test" so far I have a reasonable code-generator from the AST, and I am working on the parser, but of course that requires having decided the syntax :-) I am using a nano-pass compiler approach.

shelby3 commented 7 years ago

I like Zen/ZenScript :-) Can I change the repo name?

Of course :heart_eyes:

I am using this parser: https://github.com/jneen/parsimmon/blob/master/API.md

I'll analyze and compare what is best for implementing the parser. We may discuss else where.

I am doing test-driven-development, so the main command to run all the tests is "npm test" so far I have a reasonable code-generator from the AST, and I am working on the parser, but of course that requires having decided the syntax :-) I am using a nano-pass compiler approach.

Open source is best. If I can't see what you are doing, then I can't compare to the way I am thinking of doing it. We'll hopefully converge on one Git repository of source code that we mutually develop.

keean commented 7 years ago

Open source is best. If I can't see what you are doing, then I can't compare to the way I am thinking of doing it. We'll hopefully converge on one Git repository of source code that we mutually develop.

Can you not check the repo out? There is already code checked in here. I don't know how to create a repo that is jointly owned, but I can give you checkin permission here if you want it.

git clone git@github.com:keean/zenscript.git
cd zenscript
make init
make
shelby3 commented 7 years ago

@keean can you please edit the close to add a Label that indicates a favorable resolution?

keean commented 7 years ago

I created an accepted label? Have I done it right?

shelby3 commented 7 years ago

Looks good from my end. Thanks.

shelby3 commented 7 years ago

I have started to cringe when I say ZenScript, so that is bad sign. It speaks to mental focus but also to spiritual or philosophical. I was trying to capture the harmony (increased degrees-of-freedom) of typeclasses and resultant "zen" of productivity. But for most people, it is just going to be weird. "Why a programming language is zen? What is the connection?"

Also I think ZenScript is too long of a name, and it is lost in the sea of *Script variants.

So I brainstormed:

Name Commentary
AgileScript too cliche, boring
SnapScript taken
EzScript short & catchy. Ezscript.org available. yeah everything is easy, until it is difficult, and easyscript is a misspelling
NinjaScript NinjaLang Ninja seems to better capture traits of agility and deftness, and it is a trendy word these days. But not yet cliche in programming, so might garnish some attention and retention given the unique name. But it also means warrior and doesn't have any direct relationship to programming, so I think the connection wouldn't register for most people.
Type-fu The extension -fu is a trendy idiom in recent culture. This name is very unique and speaks exactly to the advantage of the programming language we are designing. It is so self-explanatory, that IMO we don't need to suffix with 'Script' nor 'Lang'.

I registered type-fu.org.

P.S. Thanks for telling me you were headed to a kung-fu class the prior day. I think this is where the idea came from. But it was circuitous brainstorming thought process that brought me to the final idea...I'm gifted with this Mandelbrot torment...

Also I think I first saw Eric Raymond use the term "google-fu" and it struck me as a very creative way of expressing an otherwise longer phrase and such a powerful concept as being masterful and skillful at the preposition prefix, so it struck with me.

I am not presuming you will like a name change. It is just an idea to consider.

shelby3 commented 7 years ago

I think I've already made all my major points in the prior comment. But one test I use to determine if I've found the right name, is if I still like it more after a week or so. And Type-fu is really becoming something I am proud to speak; whereas, ZenScript is making me feel like I am a telemarketer or a user car salesman, trying to add some shiny nonsense veneer. ZenScript reminds me of Steve Jobs' "reality distortion field". It isn't the worst possible name, but it is becoming less favorable to me over time.

For me, Type-fu is much more brandable, stands out from the crowd, is shorter, is niftier and more creative and it is more explicit as to what is unique about the language.

And I don't think we should make yet another *Script name. There are far too many.

The downside of Type-fu is it doesn't say it is a programming language per se (i.e. doesn't include *Script), but neither does Dart, Swift, Python, etc.. and at least 'Type' hints at it. A one syllable name would be best, but seems there are so many already. We need some way to stand out from the crowd. I am trying to select a name that will be different enough that it readily registers in the recall of many programmers.

I am going with the name Type-fu unless someone convinces me otherwise or gives a better suggestion.

shelby3 commented 7 years ago

It seems @keean is thinking of Zen without the Script. That is more appealing than ZenScript.

shelby3 commented 7 years ago

@keean can we make a decision to change the official name to either Zen or Type-fu?

The ZenScript is giving me heebie-jeebies.

It is important not to allow a bad name fester, because participants and community get used to a name then don't want to change it any more.

The *Script name is already flooded with variants:

https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js

      ActionScript
      BuckleScript
     ClojureScript
       CobolScript
      CoffeeScript
        CokeScript
        ColaScript
       CirruScript
        DogeScript
        EcmaScript
      ElixirScript
          EmScripten
       EmberScript
         FunScript
      FutureScript
     GorillaScript
        GrooScript
       Java2Script
        JavaScript
        JavaScript++
       LispyScript
        LiteScript
Little SmallScript
      LuvvieScript
       MochiScript
         MoeScript
        MoonScript
       ParenScript
        PearScript
        PogoScript
      PythonScript
        PyvaScript
        PureScript
       RapydScript
         RedScript
            Script#
            Scripture
       SoundScript
      ToffeeScript
        Transcrypt
        TypeScript
        UberScript
          UiScript
         ZenScript

We need to stand out. And we need a name that is suitable for becoming multi-target, not just compiling to JavaScript.

Comparison of Zen to Type-fu.

Zen advantages:

Zen disadvantages:

Type-fu advantages:

Type-fu disadvantages

keean commented 7 years ago

There is also Google's SoundScript. That both Google and Microsoft have gone with script names shows they thing there is a market there. (Side note, i quite like StarScript, written script as its a bit of a programmers pun).

Type-fu has a problem for me (and in the UK) because it sounds too much like the popular tea brand Typhoo). This spoils it a bit for me.

I am up for changing the name, but would probably have to be something else. It needs to sound professional and serious, something that sounds too hacker-ish is not going to go mainstream in my opinion.

shelby3 commented 7 years ago

@keean wrote:

That both Google and Microsoft have gone with *script names shows they thing there is a market there.

We are not Google nor Microsoft in terms of creating brand awareness. They can choose any name they want and it doesn't matter. Also Typescript speaks exactly to what it adds "typing" and SoundScript speaks exactly to their goal "sound typing". And Zenscript speaks exactly to some nebulous concept that isn't even clearly connected with programming.

shelby3 commented 7 years ago

@keean wrote:

Type-fu has a problem for me (and in the UK) because it sounds too much like the popular tea brand Typhoo). This spoils it a bit for me.

Let the Other 95% of Great Programmers In

Btw 'Swift' is the name of a Suzuki car all over the world, yet that doesn't seem to be a problem for Apple.

I guess you are saying Typhoo is really so popular in the UK, that everyone thinks of that. Whereas, for Swift, they probably don't care much about a small Japanese car name. Brits love their afternoon tea. It is a deep cultural tradition.

shelby3 commented 7 years ago

@keean wrote:

I am up for changing the name, but would probably have to be something else. It needs to sound professional and serious, something that sounds too hacker-ish is not going to go mainstream in my opinion.

Yeah I really think we need to change the name.

We need a name which captures that we delay closing (binding) the two axes of the Expression Problem.

(Side note, i quite like StarScript, written *script as its a bit of a programmers pun).

Except there are too many __script names.

keean commented 7 years ago

Ideas from a thesaurus:

keean commented 7 years ago

A time delay is often indicted by a delta time. So some possibilities are:

You could write with a greek letter: ΔBind, δbind, ΔType, or δtype

shelby3 commented 7 years ago

ΔType is cool, but problem is no one can type it that way easily. And Deltatype is too long to type and say.

Simply the best name is Boost by far! I don't care if it is already the name of a popular C++ library, unless they have trademark on it. A programming language is not a library. We name ours Boost Lang.

I thought about Axes, but unfortunately is also the plural of ax, and it is too abstract. Nobody will get what we intend to mean which is really multiaxial.

keean commented 7 years ago

Another pun:

Pronounced 'late' for late binding.

shelby3 commented 7 years ago

I registered boostlang.org

shelby3 commented 7 years ago

Boost.org is "Boost C++ libraries". It is not a programming language. There is no trademark claim.

shelby3 commented 7 years ago

Boost connotes augmenting after the fact. We are injecting (extending) interfaces after the fact of data type instantiation.

keean commented 7 years ago

Yeah, but it's going to be hard to get any Google ranking when the other name user is much more widely known.

keean commented 7 years ago

Boosting is also stealing cars :-)

shelby3 commented 7 years ago

Google ranking isn’t the first priority for me. I’m primarily focused on finding a cool name that programmers love, because that is what really matters. Boost is really powerful in that way.

Google ranking will follow with adoption.

The only other name that is any where close is Agile, but it correlates to Agile programming, which is not really the same. And Agile is a less powerful word than Boost.

shelby3 commented 7 years ago

Boosting is also stealing cars :-)

Nobody who is a programmer is going to mistake that slang gerund.

Also I think maybe that is more UK-specific w.r.t. to frequency of use, even though we know of it in the USA. But I haven't been back to the USA since 2006, so perhaps I am mistaken.

keean commented 7 years ago

Hmm, it going to make marketing hard if nobody can find the website :-)

I am not going to change the repo name until we are certain. I think we need to say the name for a few days before deciding.

Every time we change name, we will lose whatever name awareness we have managed to build up, so we don't want to do it too many times.

shelby3 commented 7 years ago

Hmm, it going to make marketing hard if nobody can find the website :-)

Nope. They can type Boost Language. It will be the # 1 ranking soon enough.

Search for Rust or Dart. Google knows your search habits, so it will make it # 1 for you, but not for a non-programmer.

shelby3 commented 7 years ago

I am thinking the most important factor for marketing a programming language is not search ranking. It is the passion that programmers feel about your name and language, and the name retention so they can easily remember it when they want to mention it to someone.

Everybody could remember CoffeeScript because it was first and clever switcheroo on Java as coffee.

shelby3 commented 7 years ago

If anyone can think of a good passionate, serious, and accurately descriptive name that isn't taken, then great. But I doubt it.

shelby3 commented 7 years ago

I am not going to change the repo name until we are certain. I think we need to say the name for a few days before deciding.

Every time we change name, we will lose whatever name awareness we have managed to build up, so we don't want to do it too many times.

Very much agreed. I just want to push towards choosing a name which is more apt.

Zen was kind of cool when we first grabbed it, but we weren't really thinking clearly about what is the meaning. We grabbed anything less boring than traitscript.

We need now to choose a name that doesn't make us cringe. We'll perhaps feel slightly bad for reusing the name Boost, but C'est la vie. I can't think of a more apt name.

No one has used it yet for a programming language and it is very apt for what we are trying to do differently. It was also very apt for those C++ libraries as I've read they are excellent.

keean commented 7 years ago

Some ideas based on synonyms of "union"

shelby3 commented 7 years ago

NFG.

keean commented 7 years ago

We need now to choose a name that doesn't make us cringe. We'll perhaps feel slightly bad for reusing the name Boost, but C'est la vie. I can't think of a more apt name.

I Agree. So lets start calling it Boost for now. If it is not making anyone cringe after a week or so, then should change.

Personally I still quite like Zen, then you could call the package manager "Koan" :-)

shelby3 commented 7 years ago

Personally I still quite like Zen

You can keep it if you want. It is short. It might build a following.

But again, I have difficulty defending its meaning. And it makes me cringe, because I like a name which is descriptive and not some Steve Jobs "reality distortion field" hippie concept from the 1960s.

I did love the Beatles as a middle schooler though.

keean commented 7 years ago

Lets try out Boost. I do like it, but it took a few days for you to realise you didn't like Zen as much as you thought (it was you're suggestion initially) - so we ought to wait and see if the same thing happens again before changing the repo name and posting it about again.

shelby3 commented 7 years ago

I agree of course. We'll let it settle first. I just threw the first salvo for boost.

@shelby3 wrote:

Extension is the buzzword programmers want. Extension methods are the hot new trend. Interfaces are like so 1990s.

shelby3 commented 7 years ago

@shelby3 wrote:

Boosting is also stealing cars :-)

Nobody who is a programmer is going to mistake that slang gerund.

Also I think maybe that is more UK-specific w.r.t. to frequency of use, even though we know of it in the USA. But I haven't been back to the USA since 2006, so perhaps I am mistaken.

The word boost has a relatively low frequency of use and none of the more common synonyms have to do with stealing.

The etymology of the term is from perhaps Scottish and "1805-15, Americanism; perhaps Scots dialect boose (variant of pouss push ) + (hoi)st". It sounds very Scottish. So the stealing meaning of "hoist" aspect of it seemed to stay more in the UK. Whereas, world seems to adopt the positive "lift" aspect of hoist of it, such as booster (supporter), etc.. I think petty theft was a bigger problem in Europe during its impoverished centuries and very crowded squalor-ed cities. America was historically the land of individual golden opportunity (at least until recently). That is not say there wasn't theft in the USA even during the formative centuries, but it was significantly a Puritan culture to start and the squalor urban (think many shops) conditions of old Europe weren't pervasive for centuries. Americans were spread out rural and working the land to provide for themselves. So I speculate petty theft and needing a word for it was less in demand culturally.

When I hear "boosting" meaning stealing, I think of the UK accent (okay I know we have the unrefined accent, :) and the way they (especially Scotts) would say "hoyst" instead of "hoiist" as we do. And I think of British English terms such as "boot" (trunk of the car) and "buggered", which we don't use in the USA.

shelby3 commented 7 years ago

I registered both boostlang.org and boost-lang.org.

I am liking the name more and more, thus far. I like it together with the keyword extension for typeclasses. All in line with recent trends from my perspective (e.g. extension methods in new languages Kotlin1, Swift, proposed for EmcaScript, and now even after some feature envy Ceylon jumping on the bandwagon late).

1 Which I was involved with when they were first proposed in 2011.

shelby3 commented 7 years ago

I registered today both nextlang.org and nxtlang.org. Might prefer Next to Boost.

We are up against Go, Hack, Rust, and Swift as the contenders for next mainstream language. I believe really only Go and Swift are capable contenders. Actually I don't know much about Hack.

shelby3 commented 7 years ago

I registered today lucidlang.org and slicklang.org.

Lucid seems to best represent or summarize my goals for the language. Although Lucid was used for a programming language in 1985, I don't think it is in current and certainly not popular use that could be confused. Presumably not trademarked for a programming language.

Slick (with recognition to @smooth's username for probably causing me to think of it) is a much more stylish name than Tidy, Bare, Pithy, Clean, Trenchant, Deft, and Adroit, which has a similar meaning of uncluttered and efficient.

So we can choose from:

Boost
Lucid
Next (Nxt)
Slick
Zen

Again for my tastes, Zen is making nebulous promises making me think of some stoned hippie babbling nonsense about tripping on LSD or some other Steve Jobs “reality distortion field” hype marketing ploy.

Mission Statement

We should have an advantage over Swift (which seems to be the language with the most momentum right now for potentially contending for the next mainstream language for client-side applications), because if we quickly follow my suggestion to transpile to TypeScript (which transpiles to JavaScript), then our language runs every where now, which Swift doesn't yet. Also I think the priority features I've outlined (with the potential to add typeclasses which is superior to OOP) is superior in terms of readability (and thus mass appeal and lack of head scratching obtuse code for maximization of open source benefits) compared to Swift. And similarly we should have an advantage over Go where Go is competing as server-side programming language for Internet facing applications. Our language should do client and server-side better than both while advancing the JavaScript ecosystem. Interested in any detailed discussion on that comparison.

P.S. note some Chinese company registered neatlang.com and neatlang.org on January 14, 2017.

P.S.S. I can see that my former ability (e.g. coolpage.com in 1999) to choose names with ease is returning to me now that I am 6 weeks into my Tuberculosis treatment. I was also able to effortlessly select OpenShare (opensha.re domain) recently for my blockchain project. I now understand how debilitating liver disease is (cascade effect of the infection).

keean commented 7 years ago

I like Lucid the most, then maybe Next (it has a neat three letter file extension), Slick and Boost are my least favourite if we exclude Zen as the current working-title.