Earlier quoted context omitted.
I'm not necessarily saying you are wrong here in the case of fortnite, but do you have data to back up that the average fortnite player is an adult? It seems like in general it tends to be wildly more popular with younger people, generally kids and teens - although i don't have data for this either, just based off what I've personally seen.
I have no data but anecdotes. I'm in my 40s and whenever I played squads, trios, or duos, I was playing with people in their 20s or 30s. Also, it's one of those rare online games where you can queue in at 3am or in the middle of a school day and almost instantly get into a game, and it's a game requiring 100 people per match. Other online games I've gotten into, 15 player games, essentially died out late at night or…
Type system of Fortnite's Verse language
121–130 of 159 posts
Re: Type system of Fortnite's Verse language
#122Am I the only one who thinks this is possibly the least appealing programming syntax they've ever seen?
People that are used to FP are most likely to find it easier to understand or pleasant to look at.
Re: Type system of Fortnite's Verse language
#123There's a lot of bummed out comments in here about the syntax, but to me it looks a lot like what someone might see in a reimagined Typescript. Maybe a little Haskell thrown in for good measure. I agree they probably would have been better served just using an existing language with loads of existing tutorials like C# or Python, but if they're going to make something totally from scratch, I think a lot of decisions w…
One thing I noticed when I was in college was that the basics of FP is not hard, in fact it seems way easier (from my data annecdote). In my university CS course, we start with FP (using Haskell), and in a course with one of the biggest number of dropouts un the first year, FP wasn’t really a reason for it, in fact, from the ten 1st year classes FP was in the top half in success. BUT what I actually took from that ex…
Re: Type system of Fortnite's Verse language
#124Earlier quoted context omitted.
> The apparent goal is for this to be a “now everybody can contribute to Fortnite, democratize content” thing… I don't think so. TFA notes that Verse was created to support a non-trivial use case, which is to make it possible to write software that works across multiple servers in order to support thousands of simultaneous players.
Epic’s very first design goal for Verse is “simple enough to learn as a first-time programmer”, and all of their intro docs are framed around making content for Fortnite. https://dev.epicgames.com/documentation/en-us/uefn/verse-lan... AFAIK at present time there’s no way of even using Verse outside of Fortnite mods. It certainly seems that it’s best suited for the use case you described, but their site is trying to s…
Re: Type system of Fortnite's Verse language
#125Earlier quoted context omitted.
I mean I was writing C++ in junior high and I am by no means that bright. Just persistent. I think in some ways we have become too afraid of some upfront complexity at the expense of beginners in order for more well engineered systems. I think a slightly higher learning curve is not always a bad thing.
That's a good remark. In general, lowering the entry barrier is good. But you are right that we may now be scared of anything that doesn't have a very low entry barrier.
Re: Type system of Fortnite's Verse language
#126There's a lot of bummed out comments in here about the syntax, but to me it looks a lot like what someone might see in a reimagined Typescript. Maybe a little Haskell thrown in for good measure. I agree they probably would have been better served just using an existing language with loads of existing tutorials like C# or Python, but if they're going to make something totally from scratch, I think a lot of decisions w…
One thing I noticed when I was in college was that the basics of FP is not hard, in fact it seems way easier (from my data annecdote). In my university CS course, we start with FP (using Haskell), and in a course with one of the biggest number of dropouts un the first year, FP wasn’t really a reason for it, in fact, from the ten 1st year classes FP was in the top half in success. BUT what I actually took from that ex…
What we need is an FP language that doesn't pretend that outside world doesn't exist. A pragmatical one.
This is why Erlang/Elixir or even C# or hell even Javascript/Typescript are better FPs for the vast majority of programmers (and beginner programmers, too) than Haskell.
Re: Type system of Fortnite's Verse language
#127Tangential, and because I had to look it up: > Verse has been designed by some people who really know what they’re doing: Lennart Augustsson, Joachim Breitner, Koen Claessen, Ranjit Jhala, Simon Peyton Jones, Olin Shivers, Tim Sweeney The listed people are all luminaries of the functional programming world (and adjacent, like theorem proving and software verification), particularly Haskell. Hell, Simon Peyton Jones i…
At the same time… the language is interesting , and I’m sure it’s technically very well designed, but I’m not sure it’s a good fit for the task they’ve got. The apparent goal is for this to allow anybody to democratically contribute to Fortnite (a game most popular with a fairly young audience), but the language feels very technical and not-beginner-friendly to me. For example, it’s fairly symbol-heavy (making it int…
For my money, we'd actually be better off if kids were still learning BASIC, for all its faults. I don't know Lua too well, but maybe that's best in breed. Don't even get me started on Python >:(.
One of the tensions is "make it learner-friendly" vs "align it with languages they're likely to use as professionals", aka "don't teach bad habits", but IMO this is grossly inflated as an issue because (a) many of these kids will not become programmers anyway, (b) they certainly won't if their learner languages put them right off by being full of counter-intuitive gubbins, and (c) the idea that learning BASIC, or Cobol, or whatever, fundamentally ruins your brain for "proper" programming is a manifest nonsense anyway.
Re: Type system of Fortnite's Verse language
#128Earlier quoted context omitted.
Epic’s very first design goal for Verse is “simple enough to learn as a first-time programmer”, and all of their intro docs are framed around making content for Fortnite. https://dev.epicgames.com/documentation/en-us/uefn/verse-lan... AFAIK at present time there’s no way of even using Verse outside of Fortnite mods. It certainly seems that it’s best suited for the use case you described, but their site is trying to s…
Yes, but it's not an exclusive design goal. Other goals are listed on that page and you can see how design tradeoffs happened. You don't prioritize simplicity over all and make concurrency a core pillar! And certainly I think they pulled it off. Go through the lessons here to see what I mean in nothing stands out as beginner unfriendly here, but it's also not black boxing much in the way Python would. https://dev.epi…
For such a core pillar they are extremely light on details. All you can see in the docs is they basically have:
- green threads (maybe? no idea, no details on how async is executed)
- "async calls" are blocking. Literally the equivalent of `x = await y()`
- to have non-blocking calls you can use `Task = spawn(function)`, and then can optionally wait on it with `Task.await()`
- there are a few syntax sugars on top (like `race` aka `Promise.race`). And some of them make no sense (`branch` is literally `spawn`, why does it even exist?)
That... is not a "core pillar". It's a lazy minimal bare-bones implementation of decades-old ideas.
Edit. Compare with a language where it actually is a core pillar: https://erlang.org/download/armstrong_thesis_2003.pdf
Re: Type system of Fortnite's Verse language
#129Am I the only one who thinks this is possibly the least appealing programming syntax they've ever seen?
Yeah, it doesn't really look like the kind of thing I'd design for 12-year-olds to use? Lua would probably work just as well and been a better choice...
Re: Type system of Fortnite's Verse language
#130Earlier quoted context omitted.
One thing I noticed when I was in college was that the basics of FP is not hard, in fact it seems way easier (from my data annecdote). In my university CS course, we start with FP (using Haskell), and in a course with one of the biggest number of dropouts un the first year, FP wasn’t really a reason for it, in fact, from the ten 1st year classes FP was in the top half in success. BUT what I actually took from that ex…
> So we need an FP language doing what GoLang did to C++. What we need is an FP language that doesn't pretend that outside world doesn't exist. A pragmatical one. This is why Erlang/Elixir or even C# or hell even Javascript/Typescript are better FPs for the vast majority of programmers (and beginner programmers, too) than Haskell.
yes, anything focusing on devs being actually productive has to be pragmatic. So, yeah, real world exists, IO needs to be "easy/simple", just like compiling should be fast, good error messages, etc. Lots of constraints, Go is nice because it is "good enough" at everything. So it's productive general programming language.
> This is why Erlang/Elixir or even C# or hell even Javascript/Typescript are better FPs for the vast majority of programmers (and beginner programmers, too) than Haskell.
Disagree here. Fully agree those and pretty much all popular languages are better than haskell for the very mast majority of devs including beginner on actually delivering something aka work. I disagree that haskell is worse for somebody that never actually programmed to learn programming (which is fundamentally different than creating an working application or modifying one), specially at a CS college/university course, than any of the languages you listed.
"basic" Haskell is extremely simple. And it's syntax mirrors what you would typically use when are doing something with functions during your high school. Recursion is not harder than loops, the hard part is going from lots of familiarity with one to the other. I've seen people learning imperative first and functional first at different places, and I can tell you that the confusion first timers face getting to understand a loop is not smaller than recursion(again "x = x +1" hits hard against everything you see in school until programming, re-assigning is evil for teaching).
With recursion, haskell's enums/unions equivalent, and haskell's interface equivalent, you can get really far! So you won't hit haskell issues while teaching because: * problems/assignments can be self contained, you don't need to reach for libraries to make simple compiler for example, so you don't have the ivory tower of type category, all conversations about monads, someone else code using unfamiliar lingo/code * due to good interpreter, IO can be teached last, and can always be and should be only a layer over the rest of the code, and once familiar with the rest, writing some outer functions using do notation to pass to your core isn't troublesome to understand.
F# and Ocaml are not as nice for that purpose, as polymorphism/generics is better teached with haskell, and the language is more consistent without objects.
Racket and some lisps are nice, but i would say that Type checking is important for teaching, due to the whole concept of change data from one thing to another, gets easier to explain, the compiler gives some help as well.
Teaching 1st timers (assuming college) with Haskell Drawbacks IMO are only: * reaching for out of the class stuff, online discussions and public haskell libraries are hell due to academic mismatch. with too much * while type checking and compiler messages are a nice help teaching, they can also have the opposite effect with cryptic messages if for some reason there was some heavy polymorphic/generic code.
For a more general teaching, I'll add the drawback of not being able to do what the general crowd thinks of a "app" or "web app" etc, easily. JS just working on a browser is great, swift playgrounds are great, ruby has rails, etc.