Roark Webcast!

by Estarra

Back to Common Grounds.

Xavius2010-04-12 12:12:33
QUOTE (Xanfinro @ Apr 11 2010, 11:12 PM) <{POST_SNAPBACK}>
I liked it. The information about the Rapture engine was interesting. Not object oriented and without a for loop? Really?

((Opens list of languages never to do serious programming in))

**COBOL**
BASIC
Rapture

((Closes list))

Poor Roark. And Sior. And everyone else, really. Then again, maybe I've just been spoiled.

For loops are overrated. The lack of decimals makes it unsuitable for a great many non-MUD applications, though.
Unknown2010-04-12 12:30:01
You can easily emulate a for loop with a while loop. Floating-point would be convenient in some ways, but also a pain in others (rounding and precision errors). Fixed-point math isn't so bad.
Rael2010-04-12 13:14:01
You kind of get a sense of 'floating point/object orientation/programming language design is hard, let's go shopping!'

How much does a Rapture license cost?
Xavius2010-04-12 13:16:02
QUOTE (Rael @ Apr 12 2010, 08:14 AM) <{POST_SNAPBACK}>
How much does a Rapture license cost?

No longer for sale, but the previous cost was cited only as "five figures."
Sior2010-04-12 15:01:31
For is really just a shortcut. We do now have a for each though, which can make the process look cleaner if iterating over a vector.
Nyllach2010-04-12 23:03:00
QUOTE (Sior the Anomaly @ Apr 12 2010, 04:01 PM) <{POST_SNAPBACK}>
For is really just a shortcut. We do now have a for each though, which can make the process look cleaner if iterating over a vector.


Just seems absurdly odd that a programming language would not at least contain the basic primatives like integer, float, double etc. Even basic statements like for and while are a standard part of procedural languages.
Rael2010-04-12 23:11:23
QUOTE (Nyllach @ Apr 12 2010, 05:03 PM) <{POST_SNAPBACK}>
Just seems absurdly odd that a programming language would no at least contain the basic primatives like integer, float, double etc. Even basic statements like for and while are standard in procedural languages.


There's no for loop in Python where the idiom is
QUOTE
for i in range(someInt):
do stuff


Being literally limited to discrete mathematics is mildly interesting because there may be some vulnerability in random number generation which can be abused to improve the odds at gambling games.

Not being able to create hierarchies would be a real inconvenience imo because areas, NPCs, players, skills, spells, etc. share a lot of commonality. If you've ever coded on a mud code base in C it can be real error-prone/ frustrating spending 4+ hours adding a new class to your mud even if you know the -exact steps- you need to do because you added a Ranger class the day before! I'm sure that Rapture must be good at what it does (building muds) because the developers could just as easily have used a language like Python but they chose not to.
Nyllach2010-04-12 23:19:46
QUOTE (Rael @ Apr 13 2010, 12:11 AM) <{POST_SNAPBACK}>
There's no for loop in Python where the idiom is


Being literally to limited to discrete mathematics is mildly interesting because there may be some vulnerability to random number generation which can be abused to improve the odds at gambling gamse.

Not being able to create hierarchies would be a real inconvenience because areas, NPCs, players, share a lot of commonality. If you've ever coding on a C code base it can be real frustrating/error-prone spending 4+ hours adding a new class to your mud even if you know exactly steps because you added a Ranger class the day before.


Oh tell me about it, classes would be really a benefit to Rapture I think and in fact all MUD's just for the simple fact the majority of data and methods are used over and over again with only their names being the difference while the functionality remains essentially the same.

Haha yes I have, which is why in this day and age going for something like Java, C# or even a pure Python/Ruby codebase would be a better setup. Its like the post made on the Anvil though by Dranor (I think), Rapture does well at what it was designed to do, bar the apparent missing features that I think it really should have.

That and the fact that Python was just a tiny baby when Iron Realms first came about. Oh, and they had already secured the codebase that Avalon uses I believe which started the evolution process into what is now Rapture.
Zallafar2010-04-12 23:28:10
All languages are flawed, or a pain, or are missing stuff in one way or another. If you don't have a for loop, you use a while loop (or whatever Rapture has) stick a comment at the top as to what you are doing, and move on. Life's too short to worry about it more than that.
Rael2010-04-12 23:49:30
QUOTE (Zallafar @ Apr 12 2010, 05:28 PM) <{POST_SNAPBACK}>
All languages are flawed, or a pain, or are missing stuff in one way or another. If you don't have a for loop, you use a while loop (or whatever Rapture has) stick a comment at the top as to what you are doing, and move on. Life's too short to worry about it more than that.


If everyone thought the way you do then there would be no progress. Python would not have broken backwards compatibility for version 3, there would be no Mudlet because everyone would be using TinyFugue or TinTin, and there would be no Lusternia because we'd all be happy with ROM and DikuMud.
Roark2010-04-13 00:55:59
QUOTE (Xanfinro @ Apr 12 2010, 12:12 AM) <{POST_SNAPBACK}>
I liked it. The information about the Rapture engine was interesting. Not object oriented and without a for loop? Really?

((Opens list of languages never to do serious programming in))

**COBOL**
BASIC
Rapture

((Closes list))

Poor Roark. And Sior. And everyone else, really. Then again, maybe I've just been spoiled.

For loops are done with a while loop. And there is a type of for loop for arrays, but not if you want to loop over data base records or just count between two numbers. I loved for loops in C++ because you could make them do so much just within the for command. Here is a gem from my Connect 4 program that I wrote while drunk. (And it still won the competition! Though I must admit to finishing it while sober.)
for(emptyCols=7, iter=0; itersquares==sqEmpty)?emptyCols:emptyCols-1), iter++); //Yes, this is obfuscated, but I'm the only one who is working with this code and I want to have some fun with it. smile.gif
if(emptyCols) for(actualDepth=levels, iter=0; pow((float)emptyCols, actualDepth)<=pow(7, (float)levels) && iter<42; actualDepth++, iter++); //And I dare you to figure out what this does. Muhahaha!!!

I think what it does is count the total number of full columns (empty columns means empty of moveable spaces) and then forecast if the worst number of possible moves has shrunk enough that it can scan ahead an extra round of move without increasing the number of search nodes compared to an empty board. It's a trick to make it smarter as the game progresses without becoming slower.

I'm working on a Java version of that using the principle from the books Design Patterns and Clean Code, but I've not had time to work with it in months. You can see it here. This version doesn't have a computer AI so is rather lame PvP. It's a game engine so should be easy to plug in new UIs besides this text console.

So back to Rapture, the lack of integers is annoying but not impossible. For example, we often measure things in centiseconds rather than seconds for timings. Don't need floats for that! And if you want to make a damage vulnerability to be amplified by 5% then it's damage = damage * 105 / 100;.

But I may have glossed over the biggest plus of Rapture: we Lusternia coders do not have to care one bit about coding Internet sockets. I also forgot to mention that it's thread schedule is very easy and doesn't have multithreading contention issues. Well, that's because it's single threaded, but nonetheless scheduling tasks to go off in certain ways on certain things is super easy. Lastly, its database is primitive in what it can do, but it makes it super easy to get the data you want and keeps it all in-memory so it has extremely fast reads and writes. Overall I'm a fan of it even though it is not polished like a vendor language.

In some ways there may be a benefit to Rapture not being OO. IRE has often used people without a computer science degree to do programming. OO programming is harder to pick up, and it is even harder to program well in it. I believe that bad OO code is worse than bad procedural code and more difficult to clean up. Thus having it non-OO has made it more accessible to less experienced (or even totally unexperienced) programmers and limited the damage that they can do. I've seen code at a Fortune 500 company written by professionals with graduate degrees that was so bad and unmaintainable that it just was not possible to clean up without starting from scratch and having months of effort, possible even a whole year. I've never seen anything so bad in Lusternia or Achaea, and I think it's because it is procedural. (Not to say we don't have bad code, but it's no where close to what I'm describing at this other company.)


And lastly, if you don't think COBOL is serious programming then go research how much COBOL keeps the global economy humming every day (and especially every night during those mainframe batch cycles). It's a powerhouse language. Not that I advocate it. It's horrid to gaze upon. But it's certainly proven its worth as a valuable language.
Zallafar2010-04-13 01:15:59
QUOTE (Rael @ Apr 12 2010, 04:49 PM) <{POST_SNAPBACK}>
If everyone thought the way you do then there would be no progress. Python would not have broken backwards compatibility for version 3, there would be no Mudlet because everyone would be using TinyFugue or TinTin, and there would be no Lusternia because we'd all be happy with ROM and DikuMud. I have more to say but I have go write an exam. sad.gif

You are absolutely right. If you want to design a better language, I say go for it!

However, 90+% of all the coding in the world is people setting out to accomplish specific goals. You need to focus on your priorities or you don't get it done. I have earned my stripes in the software business, and seen way too many people wasting their employer's money and dragging down projects because they can't just do what needs doing.

Sylphas2010-04-13 02:01:12
Roark, any reason in particular 100% esteem is 2^16 bits worth of essence? Max integer size in Rapture, or just a nice round number to pick?
Xenthos2010-04-13 02:08:24
QUOTE (Sylphas @ Apr 12 2010, 10:01 PM) <{POST_SNAPBACK}>
Roark, any reason in particular 100% esteem is 2^16 bits worth of essence? Max integer size in Rapture, or just a nice round number to pick?

There are bigger numbers.

I mean, essence supplies go into the hundreds of millions.

They just seem to like going with bit-numbers; for example, the max carrion that a Crow's nest is coded to hold is 255. If it gets 1 more than that it cycles back around to 0.

... that was, of course, before they put a cap on the number below that so people couldn't cycle it over.
Sior2010-04-13 02:54:20
A lot of the answers to these types of questions can probably be found at http://www.ironrealms.com/rapture/manual/
Nyllach2010-04-13 02:57:39
QUOTE (roark @ Apr 13 2010, 01:55 AM) <{POST_SNAPBACK}>
For loops are done with a while loop. And there is a type of for loop for arrays, but not if you want to loop over data base records or just count between two numbers. I loved for loops in C++ because you could make them do so much just within the for command. Here is a gem from my Connect 4 program that I wrote while drunk. (And it still won the competition! Though I must admit to finishing it while sober.)
for(emptyCols=7, iter=0; itersquares==sqEmpty)?emptyCols:emptyCols-1), iter++); //Yes, this is obfuscated, but I'm the only one who is working with this code and I want to have some fun with it. smile.gif
if(emptyCols) for(actualDepth=levels, iter=0; pow((float)emptyCols, actualDepth)<=pow(7, (float)levels) && iter<42; actualDepth++, iter++); //And I dare you to figure out what this does. Muhahaha!!!

I think what it does is count the total number of full columns (empty columns means empty of moveable spaces) and then forecast if the worst number of possible moves has shrunk enough that it can scan ahead an extra round of move without increasing the number of search nodes compared to an empty board. It's a trick to make it smarter as the game progresses without becoming slower.

I'm working on a Java version of that using the principle from the books Design Patterns and Clean Code, but I've not had time to work with it in months. You can see it here. This version doesn't have a computer AI so is rather lame PvP. It's a game engine so should be easy to plug in new UIs besides this text console.

So back to Rapture, the lack of integers is annoying but not impossible. For example, we often measure things in centiseconds rather than seconds for timings. Don't need floats for that! And if you want to make a damage vulnerability to be amplified by 5% then it's damage = damage * 105 / 100;.

But I may have glossed over the biggest plus of Rapture: we Lusternia coders do not have to care one bit about coding Internet sockets. I also forgot to mention that it's thread schedule is very easy and doesn't have multithreading contention issues. Well, that's because it's single threaded, but nonetheless scheduling tasks to go off in certain ways on certain things is super easy. Lastly, its database is primitive in what it can do, but it makes it super easy to get the data you want and keeps it all in-memory so it has extremely fast reads and writes. Overall I'm a fan of it even though it is not polished like a vendor language.

In some ways there may be a benefit to Rapture not being OO. IRE has often used people without a computer science degree to do programming. OO programming is harder to pick up, and it is even harder to program well in it. I believe that bad OO code is worse than bad procedural code and more difficult to clean up. Thus having it non-OO has made it more accessible to less experienced (or even totally unexperienced) programmers and limited the damage that they can do. I've seen code at a Fortune 500 company written by professionals with graduate degrees that was so bad and unmaintainable that it just was not possible to clean up without starting from scratch and having months of effort, possible even a whole year. I've never seen anything so bad in Lusternia or Achaea, and I think it's because it is procedural. (Not to say we don't have bad code, but it's no where close to what I'm describing at this other company.)


And lastly, if you don't think COBOL is serious programming then go research how much COBOL keeps the global economy humming every day (and especially every night during those mainframe batch cycles). It's a powerhouse language. Not that I advocate it. It's horrid to gaze upon. But it's certainly proven its worth as a valuable language.


Yeah, I would say that is the biggest benefit of Rapture in my mind; You simply do not have to touch Sockets which are really annoying more than complex, I would say. I have done network code in C, Python and C#.

Object-orientated programming does give people more opportunity to make catastrophic errors and equally can result in bad design especially if you start including inheritance and what not. Along with this comes the STEEP learning curve of OO design. Having said that, I think coders that are skilled enough in Rapture and other languages in general would benefit from moderate OO practices.

Its good to hear what the coders think of something they have to work with day in day out, so thanks for that Roark! biggrin.gif
Unknown2010-04-13 19:57:38
I am really sad I missed this broadcast. Of course, due to the inherent wonder of the medium which made said webcast available, I am still able to ask my question! Muhahaha!

I am curious as to what philosophers Roark happens to enjoy most; meaning, of course, Roark in the Estarra sock puppet sense. I suppose inclusive in said query would be what outlook he tends to favor, i.e. Empiricism, greek Ontology, energeticism, etc.

Kudos also for Home Brewing! I have a friend who plans to take up brewing meade, and if he heard that you did it personally he'd probably slaver all over you.

Also, funny to see that you are a fellow Ohioan. Seeing as a great portion of the state is Amish, it's good to see it has a coder or two.
Unknown2010-04-13 20:16:39
QUOTE (Drae @ Apr 13 2010, 03:57 PM) <{POST_SNAPBACK}>
I am really sad I missed this broadcast. Of course, due to the inherent wonder of the medium which made said webcast available, I am still able to ask my question! Muhahaha!

I am curious as to what philosophers Roark happens to enjoy most; meaning, of course, Roark in the Estarra sock puppet sense. I suppose inclusive in said query would be what outlook he tends to favor, i.e. Empiricism, greek Ontology, energeticism, etc.

Kudos also for Home Brewing! I have a friend who plans to take up brewing meade, and if he heard that you did it personally he'd probably slaver all over you.

Also, funny to see that you are a fellow Ohioan. Seeing as a great portion of the state is Amish, it's good to see it has a coder or two.



Brewing mead isn't difficult. I mean, they used to do it in slitted open goats... so if you use clean equipment you're already a major step up from the Vikings.


I've managed to come up with a few different recipes.. full brew, 10 day party mead (makes a good mead punch when mixed with ginger ale), and what I call NightStalker mead, because it doesn't taste very good but does sneak up behind you and club you in the back of the head.
Casilu2010-04-13 20:28:50
QUOTE (Zallafar @ Apr 12 2010, 06:15 PM) <{POST_SNAPBACK}>
You are absolutely right. If you want to design a better language, I say go for it!


Unknown2010-04-13 20:46:42
QUOTE (demonnic @ Apr 13 2010, 04:16 PM) <{POST_SNAPBACK}>
Brewing mead isn't difficult. I mean, they used to do it in slitted open goats... so if you use clean equipment you're already a major step up from the Vikings.


I've managed to come up with a few different recipes.. full brew, 10 day party mead (makes a good mead punch when mixed with ginger ale), and what I call NightStalker mead, because it doesn't taste very good but does sneak up behind you and club you in the back of the head.



Well, at this point his biggest obstacle tends to revolve more around the fact that he's 19 years old. Once that hurdle is overcome, I'm sure he'd love to try grabbing other peoples recipes and such. Any idea how much the equipment you use tends to run?