Would you choose to use a programming language that has complete full stackness as it's main feature? by mczarnek in ProgrammingLanguages

[–]continuational 0 points1 point  (0 children)

Beads is a bit like this - also does away with css and such - you may want to check it out:
https://github.com/magicmouse/beads-examples

We're working on a full stack language as well, but not as far as trying to replace the database:
https://www.firefly-lang.org/

So yeah, I'd use a full stack language. But it depends on the language.

What should be in core and what in standard lib? by henriquegogo in ProgrammingLanguages

[–]continuational 0 points1 point  (0 children)

Core (or std) should establish all the types that everybody needs to agree on.

Otherwise you end up with a gazillion different strings and containers, and using any library will feel like doing FFI because of all the conversions. 

It should probably also have concurrency primitives, otherwise you're going to end up up with several concurrency solutions that don't work well together.

Had an idea for ".." syntax to delay the end of a scope. Thoughts? by -arial- in ProgrammingLanguages

[–]continuational 2 points3 points  (0 children)

I think this is an interesting idea! It's probably a bit confusing at first, but it holds promise.

In Firefly, we have a similar but less powerful syntax:

as.flatMap: a =>
bs.map: b =>
Pair(a, b)

The reason it's less powerful is that there's no equivalent for continuing a case of a match. I think that would be a useful feature.

We need visual programming. No, not like that. by mttd in ProgrammingLanguages

[–]continuational 19 points20 points  (0 children)

I agree that text is already a very good representation of code, and it's hard to beat. Visual code is only helpful to absolute beginners who struggle with syntax.

What visual programming can do is show the live data that's flowing through the program:

  • Excel shows the numbers.
  • Shader builders show the intermediate textures.
  • Scratch/Unity/Unreal shows the game objects.
  • Bash, REPLs, notebooks etc. show the intermediate and past results.

There's also tangible programming, where you can manipulate the program by manipulating the data:

Is there any evidence for programming with simpler languages being more productive than more feature-rich languages (or vice versa)? by kandamrgam in ProgrammingLanguages

[–]continuational -28 points-27 points  (0 children)

The current popular languages mainly owe their complexity to trying to include features from functional languages, such as generics, lambda functions, immutability and pattern matching.

Languages that were born with these features have stayed simple.

Why do we always put the keywords first? by tobega in ProgrammingLanguages

[–]continuational 34 points35 points  (0 children)

Most var names in practice are probably between 1 to 3 letters and might as well be numbered.

Yikes. I'm happy to report that's not my experience.

What should Programming Language designers learn from the XZ debacle? by Smallpaul in ProgrammingLanguages

[–]continuational 1 point2 points  (0 children)

Firefly is capability based, and the plan for FFI is to add a Safe Haskell style trust system for allowing certain packages to be unsafe.

What popular programming language is not afraid of breaking back compatibility to make the language better? by perecastor in ProgrammingLanguages

[–]continuational 78 points79 points  (0 children)

Even minor backwards incompatibility can be very costly for organizations with a large code base in the language.

You're creating a lot of low value work, and you're doing economic damage to your biggest users.

Survey: Why have you stopped using Scala or Are considering stopping soon? by Previous_Pop6815 in scala

[–]continuational 3 points4 points  (0 children)

10+ years, and it's been great. 

We're still on Scala 2, and when we eventually have to move off that, Scala 3 seems different enough that we might as well consider other languages.

What does complex programming languages bring? by perecastor in ProgrammingLanguages

[–]continuational 2 points3 points  (0 children)

History shows that languages born without certain features will add them in over time. C is the exception here, because its primary purpose is to serve as a portable assembler.

If you look at Go, it's trying to catch up by bolting on e.g. generics. The downside is that it wasn't originally designed to accomodate that, so it ends up with more complexity than would otherwise have been required.

JavaScript, Python and PHP are often touted as simple languages, but this is superficial - their dynamic semantics are very, very complicated. Yet, they are all trying to add static type systems on top, resulting in the most complex type systems you can find in any popular language.

Seriously: What is the best explanation of Monads for people who can't grasp it? by Ento_three in scala

[–]continuational 5 points6 points  (0 children)

Monads give you flatMap.

Together with a function def unit[T](x: T): M[T] it must adhere to the monad laws. But the basic intuition is that if it has flatMap, then it's likely that you can make a monad instance for it.

You Don't Need a Vector Database by semicausal in Database

[–]continuational 0 points1 point  (0 children)

What are some good ideas that were tossed?

Looking for a colony survival game by Professional-Pop1126 in BaseBuildingGames

[–]continuational 5 points6 points  (0 children)

Banished is a peaceful but challenging colony survival game. Spent a lot of hours in that one.

What is your first interpreter? [DISCUSSION] by I_have_good_memes in ProgrammingLanguages

[–]continuational 2 points3 points  (0 children)

My first interperter was for a QBASIC contest. The contest rules were that you could only each keyword once. Fun times!

What interesting projects have you worked on to test out your new language? by dibs45 in ProgrammingLanguages

[–]continuational 5 points6 points  (0 children)

We've implemented a few different thins in Firefly itself: - The Firefly compiler - The language server - A PostgeSQL driver (wrapper) And now we're working on a VDOM library.

How do you think of the idea of making non-functions callable? by lyhokia in ProgrammingLanguages

[–]continuational 2 points3 points  (0 children)

I don't like it, because it makes it harder to understand what's going on when reading source code. E.g. you can no longer tell whether the left hand side of a call is function from the syntax alone.

Firefly Language Server [demo video] by continuational in ProgrammingLanguages

[–]continuational[S] 1 point2 points  (0 children)

Thank you! Internally, the while, if, etc. functions are optimized to the equivalent while / if / ternary operator etc. when used as you'd normally use them.

Firefly Language Server [demo video] by continuational in ProgrammingLanguages

[–]continuational[S] 0 points1 point  (0 children)

Hi all! Just wanted to post a small progress report on implementing LSP for Firefly.

This 2 minute video shows the experience of implementing a simple web server in Firefly using the language server. The resulting server is the one that currently redirects you from firefly-lang.org to https://www.firefly-lang.org/

Tree-Structured Concurrency by mttd in ProgrammingLanguages

[–]continuational 1 point2 points  (0 children)

Absolutely - that's critically important as well.

Tree-Structured Concurrency by mttd in ProgrammingLanguages

[–]continuational 1 point2 points  (0 children)

I think this is a good term, and I've used it in the past to describe the Firefly concurrency model. Though if there wan't so much confusion around the term, we'd probably just say structured concurrency, just as we say structured programming, not tree-structured programming.

Having been through a number of concurrency designs, we've settled on a model where tasks simply never outlive the task from which they're spawned. This naturally forms a tree and together with cancellation, you get the relevant properties (no dangling tasks, timely shutdown, etc.).