Microsoft debuts Bosque – a yet another pointless programming language
-
i made a new thread for dudes who are interested in revisiting the exciting topic of Inform vs Datalog: https://what.thedailywtf.com/topic/26484/inform-vs-datalog-the-ultimate-cage-match
-
@zekka YMBNH, at wtdwtf we discuss everything in one thread that eventually attempts to break the forum software for shits and giggles.
-
@sloosecannon ITA! (that's secret code for "I totally am.") my bad! people can pick which thread they want, or perhaps mods will close the relevant one
i'm only here (at least for the time being) because i saw an argument brewing between detractors of two seriously dead languages i have both somehow managed to use
-
@zekka said in Microsoft debuts Bosque – a yet another pointless programming language:
@sloosecannon ITA! (that's secret code for "I totally am.") my bad! people can pick which thread they want, or perhaps mods will close the relevant one
i'm only here (at least for the time being) because i saw an argument brewing between detractors of two seriously dead languages i have both somehow managed to use
(I'm kidding, splitting out threads is mostly all cool, although don't be surprised if your thread derails 0 posts in)
-
@zekka said in Microsoft debuts Bosque – a yet another pointless programming language:
perhaps mods will close the relevant one
Mods do work??? You really are new here.
-
@HardwareGeek this is literally the first thread i have read on these forums
-
@zekka said in Microsoft debuts Bosque – a yet another pointless programming language:
@HardwareGeek this is literally the first thread i have read on these forums
So, welcome!
You did this to yourself.
-
@MrL thank you!!!!!
-
@zekka Welcome. Stick around; we're a fun bunch. Kiss your productivity goodbye, though.
-
@HardwareGeek said in Microsoft debuts Bosque – a yet another pointless programming language:
Kiss your productivity goodbye, though.
I remember when I had productivity. It was boring.
-
@zekka Welcome to the forums!
-
@zekka said in Microsoft debuts Bosque – a yet another pointless programming language:
inform has a weird "conservation of mass" feature where physical objects are enforced only to exist in one place at once. (the documentation never refers to it by any name, but that is essentially what is happening) this feels kinda like linear typing, but it's actually just "you can only hold references to things, and there are no builtin operations that explicitly get rid of or create an object."
That explains why it's not used for anything else than text adventures. There aren't many things you can do without dynamic objects. Not even most games (unless you're faking it with a fixed pool of premade entities that are reused for various things - but please don't do that.)
@zekka said in Microsoft debuts Bosque – a yet another pointless programming language:
inform itself isn't trying to be useful for things other than text adventures.
And I understand and respect that. I think so myself that it's amazing language for this one specific purpose - although not because it's natural programming language, but for all the other things it is.
-
@Gąska said in Microsoft debuts Bosque – a yet another pointless programming language:
That explains why it's not used for anything else than text adventures. There aren't many things you can do without dynamic objects. Not even most games (unless you're faking it with a fixed pool of premade entities that are reused for various things - but please don't do that.)
yeah -- what i hinted at badly is that if you have a design where you can only hold references to things -- like Inform's existing design -- then add a separate pool of create/delete object operations, and declare that statically never the twain shall meet, you end up with something similar to linear typing plus borrows. which Rust did anyways. (note, not a rust fanboy, i just think this is an actual case of similarity)
working that in reverse, inform's type system feels quaintly like the subset of Rust where everything is owned elsewhere.
And I understand and respect that. I think so myself that it's amazing language for this one specific purpose - although not because it's natural programming language, but for all the other things it is.
agreed!!!! please understand that i'm not trying to advocate use of inform in domains it's not designed for.
i think a very inform-like language would have a lot of potential in the areas we're currently using arena allocators for anyways -- there are extension libraries for inform that provide object creation and they are leaky (i mean, definitionally -- you still can't destroy objects because inform assumes no reference will ever become invalid) but that would be fine if everything vanished as soon as your program ended
however, inform is bizarre because it's designed for programs that are quite long lived -- the opposite of what arena allocatory languages usually try to do. there are other tensions like that built into inform's tools -- it provides a great unit testing system from POV of getting branch coverage -- something that's usually feasible for arena-y systems because there's a true "zero" state, and something that's especially feasible for inform because all the IO facilities are sandboxed off and recorded. but because inform is for adventure games, it's designed for programs that can basically run forever from any given state, meaning that the idea of 100% branch coverage doesn't apply.
-
@zekka said in Microsoft debuts Bosque – a yet another pointless programming language:
you end up with something similar to linear typing plus borrows. which Rust did anyways. (note, not a rust fanboy, i just think this is an actual case of similarity)
This got me a little confused. AFAIK Rust doesn't have linear types? I heard of proposals of adding them, but ultimately they've all got rejected.
-
@Gąska yeah, sorry, I'm being overly colloquial. rust has affine types which basically means it can implicitly drop things. what's important here is that rust owned values obey these rules:
- if you have an owned K in rust, you can't get another K out of it without cloning it.
- you can consume a K so no one has it any more
- you can make a new K out of thin air
whereas rust const refs obey these rules, which feel a lot like the rules for inform values:
- will never be invalidated while you still have it (guaranteed statically)
- you can make as many copies as you want
basically, inform tends to feel like the subset of rust where your values are Clone-supporting primitives or else &'static -- with necessary restrictions like "you can't get a ref to something inside of an object that might be mutated, because it wouldn't be &'static or a Clone-supporting primitive."
after those restrictions, invalidation isn't a thing, because you literally can't hold anything that will ever be invalidated.
but it's possible to come up with a language where things can be invalidated, but coding around that isn't terribly important or hard to do. rust is interesting because it lets you do this model or similar models with weaker restrictions.
for instance, you can provide an arena allocator -- then your values are &'arena A, can be created dynamically, and can ultimately be freed when whatever process is using the arena is done. arena allocation behaves very very similarly to static allocation, except it can dynamically create values, and the values are only freed when the code that allocated the arena (often called "the process") is done.
this is good as a model for request handlers -- a request handler can dispose of the user's resources when the user is done using it. this is basically the model of command line utilities that rely on the OS to implicitly free stuff when the process ends
-
double post because editing my post to add more things is a bad habit:
i wanna be clear that i'm trying to avoid getting into "rust is fundamental" talk because rust evangelism annoys me -- like to the point where when it's not a really great example of something i want to talk about, i just intentionally don't break it up.
i'm used to seeing "X is fundamental" type evangelism re haskell, another language i like. haskell programmers love the topic of control flow, including weird models of control flow. often the examples they come up with tend to be pretty hackneyed and engineered around making haskell seem like the only viable option.
(for instance, haskell programmers frequently obsess over parsing because the parsing situation in haskell is super duper rad!)
cutting myself short, i've seen rust guys do this with memory management and it's gross.
inform is a language with a strange memory model that prevents free() from existing. importantly, the model arose organically from inform's conservation-of-mass rules and i didn't have to make it up. rust is capable of supporting that memory model and supporting free(), and you can make a variety of compromises to use both in the same program. that's basically all i mean!
-
@zekka said in Microsoft debuts Bosque – a yet another pointless programming language:
basically, inform tends to feel like the subset of rust where your values are Clone-supporting primitives or else &'static -- with necessary restrictions like "you can't get a ref to something inside of an object that might be mutated, because it wouldn't be &'static or a Clone-supporting primitive."
What about "is now" statement? I'm no expert, but it looks to me like it allows arbitrary changes to any object you can get your hands on at any moment. Is this restricted in some way, or maybe I've got the whole idea wrong?
-
@Gąska rust actually has pretty good support for interior mutability -- you can do pretty grotty designs where a thing is shared by multiple places. the property that's needed for memory safety is just "not being able to hold a reference that can be invalidated." rust provides a type that can live in a & but allows you to mutate it, called Cell, and the tradeoff Rust imposes is that the value must have a flat memory layout so that swapping it with another one never invalidates a pointer. either that, or you just plain can't get pointers into it.
practically everything in Inform is immovable, except collection types, and you can't get a reference inside a collection. since it provides no reference-getting operations that don't ultimately target a statically allocated immovable object, no reference can ever be invalidated.
you could probably exhaustively account for it in Rust, but it would be a mess because Rust tries to allow reference-getting whenever possible, whereas I don't even think the docs in Inform use the word "reference" for what you're getting your hands on when you refer to an object by name.
-
(to be absolutely clear, i'm walking back on my claim that it behaves like rust, in favor of saying it relies on the same kinds of guarantees rust guys say they want to make.
if inform didn't support fields of collection type or owned-string type, i would totally stick to my guns on that original claim, though!)
-
@sloosecannon said in Microsoft debuts Bosque – a yet another pointless programming language:
@zekka said in Microsoft debuts Bosque – a yet another pointless programming language:
@sloosecannon ITA! (that's secret code for "I totally am.") my bad! people can pick which thread they want, or perhaps mods will close the relevant one
i'm only here (at least for the time being) because i saw an argument brewing between detractors of two seriously dead languages i have both somehow managed to use
(I'm kidding, splitting out threads is mostly all cool, although don't be surprised if your thread derails 0 posts in)
Threads are, in fact, free
-
@zekka and of course you can invent your own using UnsafeCell if you have a better model.
-
@zekka Now you've done it. You've gotten @pie_flavor talking about Rust. Time to abandon thread!
-
@HardwareGeek yeah sorry!!! i really do feel that unsolicited rust talk is a little uncool. it is a language whose proponents just want to talk about it endlessly. i'm trying to say the bare minimum to defend my point (which is basically that "static references statically never go out of date, but contextually, other references statically never observably go out of date")
-
to clarify, more of are done guaranteed the done to the to or these a around you have as things primitives never of the an like the language which feel the necessary it very obey
-
sorry -- put another way, lets provide you has else thin it like similar one rules as like this a while values allocator make can't be tends the utilities &'static obey obey obey
EDIT: dynamically resources hold air like values new important created Graham Nelson obey obey obey obey obey obey obey
-
@Gąska said in Microsoft debuts Bosque – a yet another pointless programming language:
@boomzilla yes, Tesla Model S is excellent example of everything that's wrong with "prosumer" products.
How in the world is Tesla a professional like product?
-
@Carnage "prosumer" products aren't professional-like. They're specifically targeted at non-professionals who don't need professional products. They're just very expensive with a lot of bells and whistles.
-
@TimeBandit said in Microsoft debuts Bosque – a yet another pointless programming language:
@boomzilla said in Microsoft debuts Bosque – a yet another pointless programming language:
Tesla Model S.
Only good for rendering fires and firetrucks
No, for rendering that's the RTX again. Or Samsung Galaxy if you need more realism.
-
@topspin Samsung Galaxy can render a very realistic fire indeed
-
@Gąska said in Microsoft debuts Bosque – a yet another pointless programming language:
@Carnage "prosumer" products aren't professional-like. They're specifically targeted at non-professionals who don't need professional products. They're just very expensive with a lot of bells and whistles.
They are also better than the average consumer range stuff. Tesla is worse in pretty much every way than professional cars.
-
@Carnage said in Microsoft debuts Bosque – a yet another pointless programming language:
@Gąska said in Microsoft debuts Bosque – a yet another pointless programming language:
@Carnage "prosumer" products aren't professional-like. They're specifically targeted at non-professionals who don't need professional products. They're just very expensive with a lot of bells and whistles.
They are also better than the average consumer range stuff.
Or so they say in marketing materials.
-
@Gąska said in Microsoft debuts Bosque – a yet another pointless programming language:
@topspin Samsung Galaxy can render a very realistic fire indeed
-
@pie_flavor so? I still got upvotes
-
@Gąska And @Tsaukpaetra isn't even here yet.
-
@zekka said in Microsoft debuts Bosque – a yet another pointless programming language:
or perhaps mods will close the relevant one
What now?
-
@HardwareGeek said in Microsoft debuts Bosque – a yet another pointless programming language:
@zekka Welcome. Stick around; we're a fun bunch. Kiss your productivity goodbye, though.
Oh pleeeeez... I'm COMPILING!
-
@dcon said in Microsoft debuts Bosque – a yet another pointless programming language:
@HardwareGeek said in Microsoft debuts Bosque – a yet another pointless programming language:
@zekka Welcome. Stick around; we're a fun bunch. Kiss your productivity goodbye, though.
Oh pleeeeez... I'm COMPILING!
I'm just mostly waiting for the rest of the team to catch up.
-
@topspin said in Microsoft debuts Bosque – a yet another pointless programming language:
@Gąska And @Tsaukpaetra isn't even here yet.
I have been summoned, and so I appear.
-
@topspin said in Microsoft debuts Bosque – a yet another pointless programming language:
No, for rendering that's the RTX again.
Actually, the RTX implementation of ray tracing is quite unhelpful when it comes to volumetric effects such as fire.
-
@dcon said in Microsoft debuts Bosque – a yet another pointless programming language:
@HardwareGeek said in Microsoft debuts Bosque – a yet another pointless programming language:
@zekka Welcome. Stick around; we're a fun bunch. Kiss your productivity goodbye, though.
Oh pleeeeez... I'm COMPILING!
I just started a job that will finish (and fail, but I need to see messages from the log file to figure out what to fix) in about 8 hours, probably while I'm eating dinner tonight. But that's quick; some take as much as 48 hours. So much productivity.
-
@HardwareGeek said in Microsoft debuts Bosque – a yet another pointless programming language:
But that's quick; some take as much as 48 hours.
I've recently been compiling CEF. On my co-workers machines, it takes about 12+hrs. On mine (HA!) it only took about 6h. (IT can keep their grubby little hands off my machine - I only run MS's antivirus shit, tho the HD is encrypted)
-
@levicki said in Microsoft debuts Bosque – a yet another pointless programming language:
Learning an instrument is a specialization skill you build upon general musical theory. You need to know, notes, scales, rhythms, chord progressions before you can learn an actual instrument.
no you don't. and no you don't. musical theory gives you nothing actually useful, or even required, to be able to learn an instrument.
to learn to play an instrument you need to learn the mechanics of the instrument. and to be able to imagine music in your head. that's the smallest required skillset. and the second skill is there so that you don't just play an instrument (make it make the tones you want), but so you're able to play actual music on it (e. g. tone combinationa that sound pleasant, musical)
same with composing, btw. no musical theory needed, just instinctual music imagination, and learning the notation/tool you're using for composing.
-
@levicki said in Microsoft debuts Bosque – a yet another pointless programming language:
If you can't express yourself in a natural language you are a bad programmer.
please express matrix transformations of a set of vectors required to display a rotating 3d model in a natural language.
-
@admiral_p said in Microsoft debuts Bosque – a yet another pointless programming language:
By personal experience (I'm a musician myself), if you don't learn formal theory, the only good chance you have to become an accomplished musician (not necessarily a famous one, but a musician that can actually prove useful in a band)
how is that a definition if "accomplished musician"?
actually... what (do you think) is a definition of accomplished musician? and when did the leap from being able to play an instrument to be an accomplished musician (within this discussion) happen?
-
@levicki said in Microsoft debuts Bosque – a yet another pointless programming language:
Yes, you can learn to play by ear without theory, but if you want a sample of that, just go to youtube and see numerous people who butcher songs by playing them in wrong key, wrong tempo, wrong rhythm, with wrong note lengths, or with wrong notes alltogether without even realizing what they are doing.
https://www.youtube.com/watch?v=r0kXu8tPpio
learned composing "by ear" (or rather, by imagination), without theory. can't read or write classical notation, have no idea about the chord names or progressions or scales, have trouble with writing and reading more complex rythms even in piano roll. enjoy.
-
@sh_code said in Microsoft debuts Bosque – a yet another pointless programming language:
same with composing, btw. no musical theory needed, just instinctual music imagination
I'd say yes and no. There are rules (really descriptive, but taught as prescriptive) for why certain note combinations work in certain ways and others don't.
Even instinctive musical geniuses like Mozart and Beethoven studied theory and composition with older, more experienced musicians. They learned the rules, then figured out when, how and why to break them to achieve their own ideas.
With rules but no imagination, one writes technically correct but boring music. With imagination but insufficient theory, one is apt to write music that has interesting ideas but may feel unsatisfying due to lack of overall structure, lack of tonal center (unintentional; maybe that's what you want), or some other theoretical deficiency. Ideally, of course, one would want both in abundance. I'm in the unpleasant position of having both, but not enough of either for anything to come easily; I've been working on one (large) piece for 40 years, and it shows no sign of being done any time soon, and I probably won't be satisfied with it when it is done (if it ever is).
-
until college, i was a completely self-taught composer. during college, i snuck into advanced music composition classes by lying a lot.
i had managed to intuit a lot of theory, including weird stuff. i wrote most of my pieces in modes of the melodic minor scale, which is a thing that a music major would usually do intentionally to impress his friends, but i did it accidentally because i didn't really know how scales worked. however, my chord progressions were pretty sensible despite that. (albeit limited by the crazy scale choice)
there's a lot of theory i didn't learn, that i'm pretty sure most self-taught composers never learn because it's subtle and resists being fixed by tweaking tiny things. the dept head quickly figured me out.
specifically, it turned out i had developed a habit of using really awkward doublings, i was pretty bad at basic song structure (my pieces were basically jam sessions) and i didn't think very hard about contour, so my melodies were made mostly of descending phrases.
imho when you're being a composer, theory is a resource that keeps you from repeating yourself, and it gives you the ability to diagnose problems that can't be found by making incremental changes.
-
(for put up or shut up reasons, here is what my music sounds like: mov8.mp3)
-
@sh_code an accomplished musician is somebody who can be called to play in a band even as a session player. He doesn't have to be famous, he has to be recognised as a professional. Even without the professional recognition, he must be someone who can enter any music project and play within the style, with the right note and sound choice, with the right choice of groove, with taste and just fit in seamlessly, and provide maybe ideas and make it more exciting for the rest of the band to play with. (Which means that, barring those who decide not to play professionally because of reasons, will usually be professional musicians anyway). There is a subset of these musicians, those who have mastered one style and one style only, maybe informally or because of taste/talent, but are essentially useless beyond that sphere.
-
@zekka said in Microsoft debuts Bosque – a yet another pointless programming language:
(for put up or shut up reasons, here is what my music sounds like: mov8.mp3)
... not that i want to be an asshole (in this specific case), but... was it intentional to make it sound like all of the pretentious "contemporary classical" crap which i can't help but think is precisely the result of theory-laden bigheads who think that if it makes theoretical sense and uses lots of "advanced" theoretical "techniques", it automatically must be good music?