Hacker Newsnew | past | comments | ask | show | jobs | submit | giann's commentslogin

Been working on my programming language https://github.com/buzz-language/buzz for 4 years now (with some down periods). Currently mainly working on the tooling: LSP, DAP and formatter. Also managed to get fuzzing working with AFL++ and found a bunch of bugs with it.


When my son was in the last stages of leukemia, Bluey was on repeat all day. He was completely immersed in that world and we, his parents were there with him too.

Now, 5 years after his death, he's little brother is also in love with the show and we watch an episode at least once a day.

There will never be another TV show like this one for those personal reasons and also because it's just too good.


My wife and I watched the episode about infertility with our little niece who kept asking when she'd have a cousin. Despite its subtlety it completely broke me. It addresses the subject in the best of ways. Well here we are 7 IVF cycles later and still trying.


Can i take a moment to say I admire the strength that it takes to try 7 cycles. We gave up at 5, it became too heart breaking. Keep positive mate, I wish the best for you.


This means the language will never coerce things for you implicitly. Booleans are true and false not 1 and 0 or “true” and “false” etc.


You could argue that hiding ints and floats behind “num” is implicit conversion


Fair point


They are more like structs with methods. There’s no inheritance only protocols (interfaces) you can conform to.

Buzz is not an OOP language.


OK! That's reasonable. But then the naming implies more...


Safety pin? No its an astronaut and some stars.


Author here. A few points make buzz a “scripting language” in my view: - runs in a VM - garbage collected - high level - “simple” meaning there’s only a handful of concepts to understand to use it

It’s true that we’re not used to scripting languages having a type system. But its a trend that is catching on: python has types, php too and typescript is at its peak in popularity to name a few.


Actually what made me not consider this a "real" scripting language is not any of those things but rather the existence of a non-optional entry point function. Scripting languages typically read code from top of file to bottom to decide what to execute


It’s really hard (impossible?) to have a type system with user defined types and do without a declarative top level.


I think by the non-soft bits (I don't know what simple means) of your definition, Erlang, java, c#, go would be considered "scripting languages", which I think would be a hard sell.

Anyways I don't mean to take away from your work;. It looks very cool.


Multiple passes?


It’s planned yes


I'm not excluding the idea to allow the user to choose between the two. But the language must remain simple and relatively high level so I'm wary of going down that road.


The big problem I see with combining the two types is that it means that a user must always consider that the values they're using may have passed through imprecise floating point arithmetic, so the == operator is always potentially problematic. If you divide the two out into separate types, then the user can use == on ints without any concern, and it better reminds people to be careful with floats.

I definitely wouldn't break it out into int, long, float, double, and unsigned variants. That would be too low level for this kind of language.


I think it's fine to not offer all unsigned/signed variations, but in languages like TypeScript I often miss this distinction. Even Python differentiates between int and float where it is relevant, for example when indexing arrays. Sometimes you just don't want to mix the two.


Segmenting the two and performing conversions implicitly as necessary is fairly standard, the only thing that would be required is... exposing the current implicit behaviour.

Python, Ruby, or Lua do that. That's less "nonsense" than doing the same but hiding it from the user.

"num" also gives a false impression: before checking, I expected JS's (or Lua < 5.3) behaviour: everything is a double, and you only get 53 bits of integer precision (which is quite frustrating).

An alternative if you want

> simple and relatively high level

is to use decimals, at the cost of complicating the implementation.


Exposing how? If you mean documentation, Buzz as not yet its reference manual but it'll definitely be there.


Lua has the same strategy as Buzz around numbers see https://www.lua.org/manual/5.4/manual.html#2.1


> Exposing how? If you mean documentation

No I mean as an actual type, instead of `num` juggling representation internally.


If you want to make a strongly typed language and not repeat the mistakes of Javascript, you should make them distinct. In striving for simplicity it is much easier to accidentally arrive at simplistic.


It’s stable relative to JS which is a nightmare in this regard.


How so? JS is backwards compatible in the extreme, because browsers. New features does not equal unstable.


I’m talking about the cognitive load of the language. Learning JS is a real complex task whereas learning Lua is not. Learning JS as is is hard since its moving so fast. I think nobody can deny the confusion surrounding the language. Lua is stable is the sense that 5 years from now you will still know how to use it even if you don’t keep up with the latest updates.

Also if you have ever dealt with any babel/webpack craziness recently you know what I’m referring to :)


So JavaScript _the language_ is "unstable" because you (for no discernable reason) switch to every bleeding edge JS framework that gets posted to HN?


I’m not talking about frameworks. I’m talking about ES5/6/2016/2017/7/8 ... which all add new concepts and complexity.


You know those new concepts and complexities are optional? And backwards compatible? None of my jQueries broke when generators came out. And that's not even very fast at all. And people have been complaining for the longest time that JS didn't have those features.


This really is not a good argument. You can still write php like in 98, that doesn’t mean you shouldn’t learn modern php if you want to work ever.


But isn't modern PHP moving too fast though? They also break BC with a proper deprecation process. I don't know what you mean it's not a good argument, I've just been casually pointing out that your points are completely invalid. There's actually pretty good reasons to use lua over JS, you don't have to make up reasons.


I think I list a good amount of reasons to use Lua. The focus of the article is far from being fixated on JS being bad.


Maybe "relative to the JS ecosystem" instead?


Yes it’s feggari but I think that with two gammas, it’s pronounced fengari. Could be wrong I’m not greek. But it’s too late to change :)


I am Greek and no it’s not , gg , is pronounce as g in gamma, and one g is pronounced as y in yellow


Reading the sources I used to search for the correct term, I think I may have been fooled by ancient greek allophones. Ex. : ὁ ἄγγελος /ho áŋgelos/ Anyway like I said, too late to change now!


IRC logs from last time it was discussed:

    2018-03-05 23:47:38     assos   in greek it pronounced fegari instead of fengari
    2018-03-06 00:12:41     RhodiumToad     assos: several modern greek dictionaries I checked give the "fengari" prononciation either alone or alongside "fegari" - are they wrong?
    2018-03-06 00:31:44     assos   RhodiumToad: after I checked you are right, the pronunciation depends based on the location in greek, the correct one is fengari. Btw, the word is a derivation of φεγγος which translates to light/brightness.
    2018-03-06 00:31:53     assos   in greece*


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: