lierdakil on master
Typed emitter Use typings-provided IEventDesc (compare)
lierdakil on master
Update typings Moved common.d.ts types to typi… (compare)
lierdakil on master
bump submodules (compare)
lierdakil on master
bump submodules (compare)
lierdakil on v2.0.2
lierdakil on master
Update typings Fix #210 Update CHANGELOG and 1 more (compare)
lierdakil on master
Define Symbol.asyncIterator Update CHANGELOG Prepare 2.0.6 release (compare)
lierdakil on v2.0.6
lierdakil on master
Fix run-filter type Prettify editor controller Reworked editor controller inte… and 3 more (compare)
lierdakil
> <@freenode_s0da:matrix.org> (so FORCING a programmer to only declare variables at the start of a procedure/sub-routine is NOT a Good Thing? serious ques. im not being sarcastic, im just ignorant.)
That depends on who you ask, but the general wisdom nowadays is it's not usually a good idea -- if a lanugage needs local varaible declarations, it's generally more convenient to have those declarations close to where the variables are used. For example, consider a procedure with a for-loop. In modern C++ you would write for(int i = 0; i < 10; ++i) {...}
and be done with that. In ye olden Pascal you'd have to declare that int i
at the beginning of the procedure.
s0da on Freenode
lierdakil: i see where oure going with that. :)
s0da on Freenode
*youre
s0da on Freenode
in college, they reiterated the importnce of declaring everything at the beginning
s0da on Freenode
like its the "right way" to program
s0da on Freenode
(the proffesors did when grading, tho)
lierdakil
What Haskell is good at (as is any language with very strict type system) is requiring a certain degree of "reasonable-ness" on the code. It achieves that by requiring a degree of mathematical strictness on the expressions allowed in the language by the application of type theory. For instance, in C you can write char * nextIdentifier = "myIdentifier"+100
. If you're reasonably familiar with C, you will recognize this as horrible code that leads to undefined behaviour (likely not at all what the programmer intended). In Haskell, you can't do stuff like that unless you are really, and I mean really determined to break it. This is of course a trivial example, so it doesn't communicate the full power of Haskell's type system. But essentially, a well-typed program is an "automatically" proven mathematical theorem about how the program will behave (fair warning: there are a few caveats with that notion, but it more or less holds in most cases)
lierdakil
On the other hand, a language with very strict type system will reject some code that actually works, but does not conform to the abstract idea of "reasonable-ness". For instance, you can't easily write "fast inverse square root hack" aka 0x5F3759DF in Haskell. (see https://en.wikipedia.org/wiki/Fast_inverse_square_root if you're not familiar with this gem)
lierdakil
Out of all typed languages I am familiar with, Haskell has the richest (i.e. the most powerful) and the strictest type system. So by that measure, it will enforce a significant degree of well-formed-ness on programs. But it's definitely not an easy language to write in, and it will not let you write some that might technicallly work, but which can't be "proven" (in the sense of "proof" in type theory) to work. And in some cases, it takes a lot of work (and abstract math knowledge) to convince the Haskell compiler that the code you wrote actually works -- this mostly happens only when you delve deep into the arcane side of things.
lierdakil
*will not let you write some code
s0da on Freenode
so the compiler wont let you do certain things.
s0da on Freenode
:)
lierdakil
Another thing that you could interpret as "enforcing Good Software Engineering" is that Haskell is purely functional (i.e. built on a mental model of "computation as a mathematical function" and adheres rather strictly to that). That comes with all the benefits and drawbacks of the functional approach -- and there is a fair number of both. Although contemporary general wisdom says that functional approach is really good for dealing with software complexity.
s0da on Freenode
ok.
s0da on Freenode
(i threw out: RPG Maker, Game MAker, LUA, C++, JAVA)
s0da on Freenode
(also thrown out possibilities: Allegro GAme System, Unreal Engine)
s0da on Freenode
im leaning towards haskell now
lierdakil
Any particular reason you "threw out" Game Maker? I mean, from a programming language design point of view, it's at best adequate, but for actually making small-ish games (quickly, cheaply and easily) it's rahter good, if I recall correctly.
lierdakil
I mean, let's be honest here. When choosing a tool (i.e. a programming language) for a particular job -- in this case being "retro game design" apparently -- you shouldn't really consider the tool on its own merits, but rather choose the one that's most suited for the job. Otherwise you might end up hammering nails with a microscope (a very good and very expensive microscope, but not that useful for hammering nails) .
lierdakil
Haskell is a great language, at least by some measures, but I don't really think it's "great" for coding games in.
s0da on Freenode
lierdakil: ahhh.... how about type checking. does Game MAker have that?
lierdakil
Well, GML is a weakly dynamically typed language, if memory serves. So... kinda-sorta, but not really? Compiler won't detect type errors, type checking is done at run-time (meaning your program can crash due to a type error), and the language will try to interpret the code you wrote the best it can, even if it doesn't strictly speaking make sense (e.g. it will "guess" that when you wrote "something" + 1, you actually meant "something" + "1"). I'm probably oversimplifying here, but you should get the gist.
s0da on Freenode
yes, i do.
s0da on Freenode
will it let you perform long division on a char or string variable?
s0da on Freenode
(silly example of LACK OF TPE CHECKING)
s0da on Freenode
*type
lierdakil
Eh. That I don't really reacall from the top of my head. I mean, the compiler won't catch this in any case, but what would be the behaviour at runtime, I don't really know. If I had to guess, I'd guess it'd try to convert string to real, and throw an error if that fails.
lierdakil
But on the other hand, Game Maker is not only the GML (Game Maker Language) -- it's a game engine, and a whole suit of tools for managing stuff around that (sprites, rendering, physics, etc etc etc)
lierdakil
There are, of course, game engines written in (and for) Haskell, too. A few in fact. Can't speak for all of those, but most I've seen aren't really up to the commercial quality standards (features missing, API unweildly, etc). And writing a game engine from scratch is, well, not for the faint of heart, especially in a high-level language (where calling into system libraries is a bit of a chore)
s0da on Freenode
ok.
lierdakil
> <@freenode_s0da:matrix.org> lierdakil: oh cool. ive tried it before maybe 5 years ago and it seemd REALLY lacking in possibilities. maybe its come a long way since then?
Well, I'm not that familiar with Game Maker. I played around with it some I want to say 15 years or so, and it was prefectly sufficient for what I wanted to do at the time. From what I heard, it's rather extensible nowadays.
s0da on Freenode
im looking to LEARN how to re-invent the wheel, but have the option to either DO SO OR NOT DO SO, at my liesure.
lierdakil
*15 years ago or so
s0da on Freenode
does haskell have that?
s0da on Freenode
especially for games?
s0da on Freenode
cuz, for example: OpenZelda (GAme Engine) and BlitzBASIC (Language which has a lot of engines) both have what im talking about here
s0da on Freenode
hope i make sense?
s0da on Freenode
Perhaps an "Open Source Game Engine" is probably what im REALLY looking for?
s0da on Freenode
(again sry 4 being a noob)
lierdakil
You do make sense. Okay, if the point of this is more learning than making something comercially viable in a realistic timeframe, then sure, go with Haskell, or indeed Python.
lierdakil
Haskell has Hackage, which is a giant on-line library of reusable open-source code. That includes a few game engines, too.
s0da on Freenode
thank you. you are a friend
s0da on Freenode
sorry i know i asked a lot of ques
s0da on Freenode
gettting tired. im 'bout to goto bed (BASIC humor)