Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better name than traitscript? #3

Closed
shelby3 opened this issue Sep 19, 2016 · 64 comments
Closed

Better name than traitscript? #3

shelby3 opened this issue Sep 19, 2016 · 64 comments
Labels

Comments

@shelby3
Copy link

shelby3 commented Sep 19, 2016

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
Copy link
Author

shelby3 commented Sep 19, 2016

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
Copy link
Owner

keean commented Sep 19, 2016

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
Copy link
Author

shelby3 commented Sep 19, 2016

@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
Copy link
Owner

keean commented Sep 19, 2016

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
Copy link
Author

shelby3 commented Sep 19, 2016

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
Copy link
Owner

keean commented Sep 20, 2016

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

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

@shelby3
Copy link
Author

shelby3 commented Sep 20, 2016

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
Copy link
Owner

keean commented Sep 20, 2016

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

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

@shelby3
Copy link
Author

shelby3 commented Sep 20, 2016

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
Copy link
Owner

keean commented Sep 20, 2016

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
Copy link
Author

shelby3 commented Sep 20, 2016

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

Of course 😍

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
Copy link
Owner

keean commented Sep 20, 2016

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

@keean keean closed this as completed Sep 21, 2016
@shelby3
Copy link
Author

shelby3 commented Sep 21, 2016

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

@keean keean added the Accepted label Sep 21, 2016
@keean
Copy link
Owner

keean commented Sep 21, 2016

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

@shelby3
Copy link
Author

shelby3 commented Sep 21, 2016

Looks good from my end. Thanks.

@shelby3
Copy link
Author

shelby3 commented Sep 26, 2016

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
Copy link
Author

shelby3 commented Oct 1, 2016

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
Copy link
Author

shelby3 commented Oct 4, 2016

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

@shelby3
Copy link
Author

shelby3 commented Oct 5, 2016

@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:

  • one syllable
  • connotes abstract concepts of focus and mental resonance, which vaguely capture what we hope will be better about our typeclasses, unions, and everything-as-an-expression.

Zen disadvantages:

  • until it becomes popular, no one will instantly think it is a programming language name
  • we may be criticized for claiming the perfection of zen, and not achieving it, i.e. that zen is nebulous concept which has a very high standard. How do we define if we achieved zen?
  • overselling and "reality distortion field" hype
  • might be brandable if becomes popular enough, but won't stand out until then because zen is a real word.
  • weird name

Type-fu advantages:

  • '-fu' is a trendy and nifty idiom such as "my google-fu is adequate"
  • better typing is one of the key improvements of our language (in addition to everything-as-an-expression which is more rare in an imperative language)
  • descriptive name speaks more of a programming related product
  • doesn't oversell or hype
  • very brandable even as a niche product name, because it is not otherwise a word in any language.
  • I am the registrant of type-fu.org

Type-fu disadvantages

  • seems somewhat strange for a programming language name, although this may make it standout and be memorable.
  • may pigeonhole the perceived advantages to typing only
  • Two syllables.
  • Hyphen makes confusion over which way to spell, even thought '-fu' is a trending idiom, not everyone is aware.
  • weird name

@keean
Copy link
Owner

keean commented Oct 5, 2016

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
Copy link
Author

shelby3 commented Oct 5, 2016

@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
Copy link
Author

shelby3 commented Oct 5, 2016

@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
Copy link
Author

shelby3 commented Oct 5, 2016

@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
Copy link
Owner

keean commented Oct 5, 2016

Ideas from a thesaurus:

  • lag (a bit negative)
  • interval (too much like intercal)
  • logjam
  • tarry

@keean
Copy link
Owner

keean commented Oct 5, 2016

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

  • deltabind
  • deltatype

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

@shelby3
Copy link
Author

shelby3 commented Oct 5, 2016

Δ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
Copy link
Owner

keean commented Oct 5, 2016

Another pun:

  • L8

Pronounced 'late' for late binding.

@keean
Copy link
Owner

keean commented Oct 5, 2016

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
Copy link
Author

shelby3 commented Oct 5, 2016

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
Copy link
Owner

keean commented Oct 5, 2016

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
Copy link
Author

shelby3 commented Oct 5, 2016

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
Copy link
Author

shelby3 commented Oct 5, 2016

@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
Copy link
Author

shelby3 commented Oct 7, 2016

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
Copy link
Author

shelby3 commented Mar 7, 2017

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
Copy link
Author

shelby3 commented Mar 7, 2017

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
Copy link
Owner

keean commented Mar 7, 2017

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.

@shelby3
Copy link
Author

shelby3 commented Mar 7, 2017

I like Lucid the most, then maybe Next (it has a neat three letter [.nxt] file extension)

Seems to be my ranking also after further reflection.

Scala uses .scala. For 3 letters, we'd probably have to use .lcd but I prefer .lucid.

Slick and Boost are my least favourite

I initially liked Slick, but on further thought it probably is not compatible with a technical focus. Associates with other non-technical memes such as gambling, con-men, etc.. Seems I recall some nicknamed Bill Clinton “slick willie”.

Boost seemed more apt when I was focused on how to emphasize the advantage of typeclasses over OOP, but I think now emphasizing clarity (fighting obtuseness and clutter) is the #​1 most important feature of a programming language in the open source era. Typeclasses may (TBD) also help clarity compared to alternative programming paradigms to accomplish the same programs.

Zen is succinct and .zen is elegant. But it isn't as explicit as Lucid, and Zen can illicit some negative associations ("on a higher plane dude, I smell the incense of your halo aura .. far out totally rad(ical)").

Btw, lucid.org may also be for sale (for later).

@shelby3
Copy link
Author

shelby3 commented Mar 8, 2017

Given the intriguing language design discussions we are having on concurrency, parallelism, and asynchronous programming, I have registered the copute.org domain I used to be the registrant of for the name of the programming language I was working on before I got ill in 2012. I had originally thought of the name as a shortened coopute, with the connotation to cooperative open source coding. I also registered asynclang.org.

So Async and Copute are alternatives to Lucid, Next, and Zen. So our current list of top candidate names is:

Async
Copute
Lucid
Next (or Nxt)
Zen

For Async, the extension would probably need to be .async or perhaps the three letters .asy. For Copute, the four letter extension would probably be .copu or the three letters .cpu.

For Copute, the intended subliminal connotation is co-ncurrency possibly the via the association to cofunction or co-routines, although I am not currently committed to implementing via coroutines.

The other alternatives I thought of with similar meaning are: Coact, Cohere and Coval.

You might find the following Quora Q&A interesting:

No entire programming language's semantics are asynchronous to my knowledge. Unless maybe you count the family of process calculi. But Erlang has a built in concurrency model core to the language that uses asynchronous message passing.

There is no async. programming language. There are languages which does have features for async. calls

P.S. The domain co.actor is for sale for $1875.

P.S.S. Originally I was avoiding the Async name because I thought it was already used for a popular JavaScript framework (Async.js?) but I no longer see that when googling.

@shelby3 shelby3 mentioned this issue Mar 8, 2017
@shelby3
Copy link
Author

shelby3 commented Jan 16, 2018

I wrote:

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.

I’m souring on the name Lucid, not just because it’s violating the principle of not reusing a preexisting programming language’s name (to avoid for example the naming dispute for Google’s Go, especially given we don’t have Google’s resources to countervail).

Even though others I’ve mentioned it to like the (meaning of the) name conceptually, the name is bland and lacks impact and recall marketing power. Conceptually it doesn’t cover the latest feature proposals emphasizing a more performant simplicity of a cordoned nursery, a more flexible and less painful lockless concurrency design emphasizing asynchronous I/O, and the attempt to eliminate marshaling combining both high and low-level programming in the same language. Looks like we may end up essentially creating a better Node.js integrated into this new programming language with fast context switch concurrency competing with Node.js and the problematic JavaScript ecosystem. I’d prefer an even shorter name if possible (this also impacts potentially the file extension for the source code files).

Ideas thus far:

Async
Co-ode
KISS ¹
Node

I registered nodelang.org and co-ode.com.

I like the name Node because it’s very clear conceptually: all programming is shifting to the reality that every program is connected to the Internet, so it could serve as lingua franca of the network. Note Io is already taken. Node.js is a framework for JavaScript, not a programming language. Also, node is easy to pronounce, spell, and remember, unlike async and co-ode. Essentially removing the .js and making it work on not just the server is solving some of the weaknesses that people (including myself!) want solved (and vindicate my disagreements with that ecosystem about the need for KISS integration):

https://www.quora.com/Can-you-hate-JavaScript-but-love-node

The downside of course is that it will create confusion that when people google for ‘node’, they get Node.js as the first listing. And it may create some confusion when people refer to Node, some people may assume they’re abbreviating Node.js. Yet I will counter that programmers must pay attention to small details if they’re any good: 'Node' != 'Node.js'. Even the trademark policy (archived) of the Node.js foundation doesn’t allow for abbreviating the name:

You may only use Node.js wordmarks in their full form and properly capitalized (e.g. “Node.js”). You
may not abbreviate them or combine them with other words (e.g. not “FooNode.js” or “N.js”). Avoid any
use that might be misleading.

KISS has similar problems as my upthread idea for Slick. Co-ode is as likely to connote ‘corrode’ as any intended meaning.

I wrote:

[…] the intended subliminal connotation is co-ncurrency possibly the via the association to cofunction or co-routines, although I am not currently committed to implementing via coroutines.

¹ https://en.wikipedia.org/wiki/KISS_principle

@bmeck
Copy link

bmeck commented Jan 16, 2018

I'd recommend against intentionally having naming collisions, and also would not use disagreements as a means to call others "problematic".

@shelby3
Copy link
Author

shelby3 commented Jan 16, 2018

@bmeck, the problematic issues of the JavaScript ecosystem (and consequently Node.js) are expressed by others such as “Mr. Open Source” Eric S. Raymond and some of the regular commentators to his blog. The module (and generally the ecosystem) chaos is one of them. I’ve mentioned others in the WD-40 thread. In that thread, I’ve given my best effort to find a way to get what I want for sufficiently systems programming platform with that ecosystem, and I think I’ve reached the point where I realize I can't and must side-step it. This should not be construed as unappreciative of the good work and ideas that have been accomplished in that ecosystem. Rather it’s just frustration that I can’t more easily get what I want. I never wanted to have to create my own programming language and platform framework. That was the last thing I would ever have contemplated when I started to learn Haxe in 2008/9, then I was referred to Scala by @jdegoes, which lead me through Haskell, ML, and back to JavaScript again. Then being in cryptocurrency is forcing me to upgrade my C++ understanding from the turn of century coding of CoolPage to modern C++ with Boost. I dabbled with Emscripten and C, to avoid the C++ beast, but after all I’m leaning towards I have no other good option but to wrap the essence of Boost into a modern language (thus not exposing the “barbwire and landmines” of that 1500 page reference manual beast to the programmer). If at all possible, I would like to avoid creating a programming language or find some way to efficiently transpile if I just need sugaring, because I don’t want to take on the Herculean task of developing, maintaining, and coordinating another ecosystem. It’s still possible that I punt on the entire thing and settle for some half-baked solution which is more immediate and involves less extreme commitment. But if I’m going to go for that massive undertaking, then I want to select the most powerful and apt name. I want the name to be motivational to me.

I’d also prefer to avoid naming collisions. If anyone has a suitably powerful and apt alternative name choice, then I’m of course interested to contemplate it. At the moment, Node feels about perfect though in all respects other than the potential collision. I’m hoping I could find a suitable alternative.

Nevertheless, there’s a very successful precedent supporting my proposal. JavaScript’s collision with Java.

EDIT: my controversial and strident thoughts here should not in any way be associated with @keean and his Zenscript project. We collaborated on discussion but are free to diverge as well. I would create my own project at some point. I’m commenting here for continuity.

@Fishrock123
Copy link

Fishrock123 commented Jan 16, 2018

Naming something somewhat similar¹, because you don't like it and feel you have done better, is, let's say, not exactly creative. Intentionally having the naming conflict is going to end up hurting newcomers to either or both projects

Plus there is already a great example of this problem: JavaScript. (Which you just mentioned.) This naming is constantly confusing to newcomers, but it's decades of history that is no longer viable to change. You have yet to actually make the choice.

¹ Node.js is a runtime, and many features that it has are not available in other JS contexts, so it isn't exactly uncommon for people to say that "write/do node(.js)", or "write (in) node.js". Given Node.js growth and size, I suspect that is unlikely to change.

@shelby3
Copy link
Author

shelby3 commented Jan 16, 2018

@Fishrock123 wrote:

is, let's say, not exactly creative

Agreed. Let’s see if someone more creative with words than myself can suggest an apt alternative.

Intentionally having the naming conflict is going to end up hurting newcomers to either or both projects

Well if the proposal to make GC objects accessible to WASM becomes a reality, then we could possibly see Node on Node.js.

JavaScript’s name didn’t seem to hurt newcomers. I also went through that moment of associating it with Java, but I can’t think of how it hurt me. If anything it piqued my recall and awareness, because it caused me to become aware of the difference. My initial thought was is this some scripting form of Java.

However, search engines would probably be less able to differentiate “node IDEs” from "node.js IDEs”, than they’re able to differentiate “JavaScript IDEs” from "Java IDEs”, because many programmers do refer to Node.js as ‘node’ even though they’re told not to by the (presumably ex post facto) trademark policy of the foundation. However, a search that returns the unintended results can be appropriately modified “node programming language IDEs”. I presume the google-fu of the average programmer is not abysmal.

Brainstorming more:

Zero

Again not very creative1. I registered zerolang.net.

Zero is a name that grabs attention (it’s very popular and overused in the cryptocurrency arena, e.g. zerocoin, zerocash, etc … and I might have seen some altcoin project using the name zero for some framework or contract scripting language). It’s actually the name of some obscure preexisting experimental programming language for which I can’t find any implementation or further information.

Zero could possibly connote “bullseye”, “zero cost abstractions”, “zero unnecessary distance from low-level programming capability”, and “zero unnecessary complexity” (e.g. the proposals for near zero overhead of the cordoned nursery as contrasted with the write-barrier and poor asymptotics of a generational GC-MS, lockless checking have zero runtime synchronization overhead, and lowest cost context switch coroutines), although only one of those is actually zero cost (the name would have been more fit perhaps for Rust2). It also has negative connotations, but presumably that would pique interest as an interlocutor would wonder why the name was named negatively (the nil extraneous complexity goal) and presume alternative connotations.

Also the file extension could be a .0 (even on Windows) or or , which is succinct and novel in the realm of programming languages although it was formerly used by the antiquated Doublespace harddisk utility on MSDOS and old versions of Windows.

EDIT: my attitude is that if I put in the effort to really build a programming language and an ecosystem, then I will make it very successful (or entirely fail into obscurity, not a middle ground). So if Node is the best name and there’s nothing else as apt, then I don’t feel it should be wasted on Node.js, given I think JavaScript is a hulking mass of (fundamental limitations) inertia with copious amounts of bubble gum and duck tape trying to extend its range from a dynamic scripting language designed for websites into systems programming where it doesn’t belong. My point being that the literal “.js” is required to emphasize that Node.js isn’t really sufficient for all types of networking nodes. JavaScript was fun at first, but trying to shoehorn its range is less fun. IOW, Node.js is a great asynchronous concept (with inferior fundamentals) married to the wrong programming language if it intends to have more range than the originally conceived use cases. I have the advantage of hindsight though and I don’t think Node.js was originally conceived to address systems programming on the server (so the pressure trying to push it there is probably misguided). Yet I also think that it’s lame if I (we) can’t think of a better name than Node. On further thought, the name Node doesn’t really fit a programming language, as it’s describing the application, not its generative tool.

1 There are 3 Pokemon of each type: Charmander, Charmeleon and Charizard are Fire type. Squirtle, Wartortle and Blastoise are Water type. And finally, Bulbasaur, Ivysaur and Venusaur are Grass type.

2 The obtuse naming rationale for Rust is entertaining. And the frivolous rationale for naming Python is even less attuned to any concept for the language.

@shelby3
Copy link
Author

shelby3 commented Jan 17, 2018

I suspect the name Go was chosen and defended despite of it infringing on (name collision with) an existing (allegedly) actively developed (but apparently rather obscure) programming language Go! because of Ken Thompson and Rob Pike’s ostensibly extreme dislike of the complexity of C++ programming language. Thus, presumably wanting to emphasize fun and simplicity of adopting a programming language: ”Let’s go”.

I want a more technical and serious name which can emphasize the sweet spot of a serious systems programming language with modern innovations (such as zero/low cost abstractions and better concurrency/networking) plus attempting to minimize unnecessary complexity, with readability (versus “write-once” obtuseness) as a high priority.

  • Lucid connotes the readability, but misses on the other attributes.
  • Node connotes serious system programming and concurrency/networking, but misses other attributes in addition to connoting an application/framework instead of a programming language.
  • Zero connotes (in a favorable interpretation) minimalism (which might even associate with readability), e.g. ZeroMQ, but misses on concurrency/networking (except by association perhaps to ZeroMQ but so many people aren’t familiar with it).
  • Ninja connotes (in a favorable interpretation, most specifically stealthy) deftness, which is broadly congruent (but not likely connotative) to efficient abstractions and conquered complexity, but lacks technical specificity e.g. w.r.t. concurrency/networking. Feels a bit cartoonist though. Unicode for a file extension? .😎 or .侍

    ninjutsu, a martial art sometimes called "the art of stealth" or "the art of invisibility."

I think minimalism is one of my core philosophies when coding.

[EDIT 2020: I answered the Quora question What do "Ninja" or/and "Samurai" mean refer to in programming?]

META: must be my partial German ancestry (which traits seem to kick in even more pronounced when I go into INTJ mode from my normal ENTP), of which such desire for perfectionism and control is exhibiting itself with my impulsive freaking out (must be the Cherokee ancestry interacting) about the name Lucid when I woke and realized what I wrote earlier today. I think also my stress level is rising contemplating how the fuck I will create a programming language and a Bitcoin killer decentralized ledger projects and ecosystems simultaneously, when I also simultaneously need to be keeping up with hours of intense daily exercise/sunshine to deal with the numerous cysts on my liver, spleen, and kidney (the apparent source of the can-be-debilitating chronic fatigue syndrome which has destroyed untold hours of productive time over the past years). And turning 53 years old this June and blind in one eye. I was originally hoping only to have to do a sugaring transpiler to Typescript. This introspective POV isn’t shame or unraveling, just observation and analysis.

I registered ninjalang.com.

EDIT: googling “zero minimalism” returns zeromalist and minimalist words.

@shelby3
Copy link
Author

shelby3 commented Jan 17, 2018

Any feedback about the name Zero with a file extension of .0 (optionally the programmer may use )? I realize it’s weird. Thus I think I like it! I want to draw attention and stand out from the crowd of “Deft” genre of Swift-copy-cat names.

Can also connote “zero footprint” (in a favorable interpretation) thus can present dual meanings of trying to get closer to the hardware as C/C++ does, yet can also connote “zero unnecessary complexity” (i.e. minimalism) and the need for higher-level language semantics, type erasure for a form of type-checked runtime polymorphism, etc..

I realize that the first time programmers think about the name ZerØ, they will not innately make those conceptualizations I want to convey. But the name may pique interest and the desired conceptualizations may make sense and stick. Sticky branding and sui generis is important for marketing.

@shelby3
Copy link
Author

shelby3 commented Feb 16, 2018

For the meme of minimalization, I encountered Husk.

@shelby3
Copy link
Author

shelby3 commented May 20, 2018

I had registered zerolang.net in January.

Today I registered the following at NameSilo for $19 total:

zer0lang.com
zer0lang.net
zer0lang.org

Again the file extension type will be .0.

Zero unnecessary complexity and anti-patterns.

Zero is also the bulls-eye center of a target implying hits the sweet spot.

@shelby3
Copy link
Author

shelby3 commented Jun 13, 2020

Note Task is a new name idea. And I think I may like it the most for the PL.

While it "looks" okay, I find when spoken there is a stutter in quickly repeating the "t"s, so it doesn't flow easily. Maybe that isn't an issue for you. But it's professional and easy to remember, if a little bland.

Here is a short audio clip of a female voice pronouncing the word:

https://en.wiktionary.org/wiki/task#Etymology_1

Let’s compare to the recent popular programming language names:

https://www.tiobe.com/tiobe-index/

Clojure
Go
Haskell
Kotlin
JavaScript
Python
Ruby (On Rails)
Rust
Scala
Swift
TypeScript

Task is 4 characters short, one syllable and it speaks directly to the main, novel USP invention that I will be introducing to the market, which is a new way of handling concurrent tasks. Realize that since the advent of the Internet, programs having many concurrent tasks in motion simultaneously because for example fetching some data from the server while interacting with the user. And servers run 100s or 1000s of tasks servicing numerous requests from client programs (e.g. web browsers or apps) simultaneously.

The unique selling point (USP) is something I refer to as an ALP (Actor-like partition) for each concurrent task. The advantages include more efficient automatic memory management and data race safety without Rust’s highly complicated tsuris. And even less complex than Microsoft’s experimental programming language Pony with more efficient automatic memory management and eventually adding native green threads, as well as adding TypeScript as a compile/transpile target both of which Rust and Pony don’t have.

Also this will be the first other than Rust to bring type classes from Haskell to an imperative programming language. And the first to bring it to a PL that can be easily used similar to JavaScript or TypeScript. Also I will provide for native binary packed structures, for interopt with optimized code programmed in a low-level language and data exchange over the network is facilitated without the boilerplate of for example Node.js’ Buffer API.

Although I don’t think @keean and I want the exact same PL design and Task if it comes to fruition will likely be my initial creation, I do concur with some of his summaries of the broad objectives of our shared design vision. Here is a list of other comment posts which summarize broad design goals:

#30 (comment)
#30 (comment)
#30 (comment)
#30 (comment)
#30 (comment)
#30 (comment)
#30 (comment)


EDIT: follow-up:

Ah, I see what happened.

Note Task is a new name idea.

In that original email I thought you meant "Note Task" was the name idea, instead of simply "Task". As there was no comma after "Note", I read both words as being the name.

Task is 4 characters short, one syllable and it speaks directly to the main, novel USP invention that I will be introducing to the market

If I'd read that first I'd not have misread it.

Yeah, so agree TASK compares well with the list of the other programming languages you listed.

@sighoya
Copy link

sighoya commented Jun 14, 2020

It's a matter of taste and subjective feelings.

Zero is more useful as a preview name for your language. But it is also acceptable beside being a bit ambiguous about its meaning.
Is your language a new era of PL design, then it might sound a bit arrogant.
Or is the value of your language == Zero? This would be a commitment for opponents to criticize your language.

Task in my eyes is too common when googling terms about your language and instead get redirected to stackoverflow sites presenting problems with task parallelization in Java/C#.

If you want to promote the intention of your language within its name, then I would propose to use tyco instead which stands for a typeclassed, concurrent language.
Unfortunately, this name is already reserved by some enterprise, even the name tycol is reserved.

Also names like concurra (already reserved) or concurris come to my mind, I don't know.

@shelby3
Copy link
Author

shelby3 commented Jun 17, 2020

@sighoya

It's a matter of taste and subjective feelings.

Agreed that the name will reflect the taste and style of the person who is making the naming decision. And hopefully should reflect the culture of the users who will be drawn to the PL.

Go reflects the ease of programming with Go’s goroutines (i.e. green threads) for massive concurrency. (That is until they hit the pain points of no generics and no data race safety paradigm).

Zero is more useful as a preview name for your language. But it is also acceptable beside being a bit ambiguous about its meaning.

It was more applicable when my target was cryptocurrency and I thought the main feature was type classes and Python-like block indenting forsaking noisy braces. But now I think the Actor-like primitives for currency with low-hassle “zero cost” GC will be the main unique selling point (USP). Thus the recent interest in the name Task.

Is your language a new era of PL design, then it might sound a bit arrogant.
Or is the value of your language == Zero? This would be a commitment for opponents to criticize your language.

Agreed I began to dislike the possible negative connotations and associations with zero for the name Zer0 (not Zero).

Task in my eyes is too common when googling terms about your language and instead get redirected to stackoverflow sites presenting problems with task parallelization in Java/C#.

I’m not concerned about that at all.

  1. Popularity is not my initial goal. I want the PL for myself and I want to be comfortable with the name.

  2. If it becomes as popular as it could if done right, then it could displace what is there now for Google. Besides I hate StackOverflow for their inane censorship and one of my goals is to destroy that website by replacing with a decentralized one on a blockchain. I may not reach my goals, yet my principles stand anyway. So in short it’s like the signs on cars heading from Texas to Florida in April (well before the inane virus hoax was foisted on humanity), “Spring break, Destin or bust.”

I think Task is perfect because it is one syllable, direct to the point and fits the USP. Also it has an appropriate meaning both as a noun and a verb. I especially like the verb because it captures the ‘maestro’ and ‘conductor’ theme of the programmer being in control without contention and hangups.

If you want to promote the intention of your language within its name, then I would propose to use tyco instead which stands for a typeclassed, concurrent language.
Unfortunately, this name is already reserved by some enterprise, even the name tycol is reserved.

Also names like concurra (already reserved) or concurris come to my mind, I don't know.

Those aren’t bad, but can’t hold a candle to Task in my opinion, after coming back to it now several days after registering the domain name for the new PL.

I’ll wait to see how it grows on me over time and see if my health allows me to make any progress on being a programmer as I used to be 5 – 10 years ago[1]. (Not exactly hopeful which you might understand if you knew my daily battle with trying to stay awake and capable of focusing through the brain fog, but haven’t given up hope yet either. If healthier I would talk less and code more, or probably not talk at all, so if I am not talking it probably means I am coding or wallowing in bed with worsening health condition)

[1]Last significant programming effort was to code a dating website over a period of 6 weeks in spring 2015. Dabbled in PL development and cryptocurrency designs hence. Before that was some significant work and learning new PLs circa 2009 – 2011. But the last sustained programming effort ended ~2000.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants