So anyways, these days I have very little free time. However, something that was posted not to long ago has been floating through my mind. I believe it was Hades_Kane (not positive though) made a comment about learning another language that wasn't C and/or wasn't Diku derived if MUDs were as popular now as they were years ago. Forgive me for not remembering the exact poster/post/etc to link to the comment…
Lately I've been thinking about toying around with a new programming language just to learn something knew, and possibly do something new instead of spewing out the same types of MUDs that seem like they never make it much further than my local hard drive. Always seems like the ideas I develop seem sound, but in terms of deployment my work schedule keeps me busy and eventually I lose track of time and ability to continuously keep working on the various projects which leads to rewrite after rewrite of them. While it has lead to some nicely refined code in some areas it seems like my hard drive has become cluttered with so many MUDs using different source code (generally C to C++ conversions within the GodWars branch of the Diku tree).
I was looking at a possible Interpreted language to avoid the whole compilation process and did look at PHP as a possibility due to having done some homebrewed CMS development in the past to go with some MUD projects. But after looking at PHPMUD I'm not quite sure that is the route I wish to go. Also found the Pike language which did seem interesting in some ways but didn't seem to fall in the Interpreted category and seemed like it would lead to the same old things. I was also thinking Ruby might be another possibility as I remember a number of people talking highly of it two or three years ago but seems like I've not seen too much about it recently…
Any suggestions for languages to look at are highly appreciated……
EDIT: Interpreted language isn't a requirement. Just a bonus…
It's a matter of preference. My personal favorite (this year) is python. The company Jet Brains makes an excellent IDE for it called PyCharm (both a free and paid version), which is as good as Visual Studio IMO. It's written in java, so it runs on multiple platforms, depending on what kind of desktop you use. Since python is also available for multiple platforms, you can easily write stuff using the IDE on your favorite desktop and then run it from a shell on whatever server platform you like, which is a nice bonus.
Personally, I don't think you'll go wrong as long as you select a language that has some support (IE: not Pike, and not something overly obscure like forth). I would insist on a language which treats strings as a base type, since 90% of your code will involve manipulating strings. Ruby and Python are both great choices with plenty of support out there. Lua isn't a horrible choice either. I would personally avoid PHP or Javascript, as there is a lot of really HORRIBLE code out there to pick up bad habits from. I'd also avoid Perl for the same reason. :)
If you don't want it to be useful outside of the MUD project, LPC is a fine choice (Pike is a standalone LPC interpreter), but I'd stick with FluffOS or DGD as a game driver for the environment, and the fact that people here can perhaps help you. Pike is OK as far as it goes, but nobody really ever adopted it, so you're going to be entirely on your own.
Also, don't let the haters scare you away from Python. Certain people get freaked out by the whole "whitespace has meaning" part, which really just means you MUST indent your code the way you SHOULD be doing anyways.
Jindrak, to expand on quix's suggestion take a look at the Evennia project. It's a good start for a Python mud. If you want something more barebones try Miniboa.
Python's legit, ruby seems so too, though not as fashionable anymore.
As someone who's been growing alongside PHP, I have to say I'm pretty disappointed with how it aged. Seems like they had many opportunities to tweak it over the years and elected to let it go stale.
Exact opposite feelings for JavaScript, especially since the rise of node.js. Quix is saying to stay because there's a lot of bad code out there? I think the "a lot" part is true. As for horrible (in caps) code, since when did that disqualify a language? I would say it actually speaks for it, many years later, still attracting learners and enthusiasts. Considering volume, the ratio of bad code to absolutely awesome code that I've seen lately on GitHub and npm is, well, pretty great.
If you haven't delved into anything interpreted, then any of these languages would teach you a lot, and you'll most likely be excited to find that you can do complex things faster and more easily, that you don't have to re-compile, write separate interpreter logic, etc. So I don't think there's any bad choice out there really. Except for maybe LPC, which is too esoteric and specialized. I'm of the opinion that all things being equal, it's always better to have fun while learning something useful.
Well, as Planzi says, there IS good PHP code, and good Javascript, and even good Perl code. However, when you're teaching yourself, and this is doubly true if you don't have much experience, it can be hard to tell the good from the bad, especially if the language itself is radically different from what you're used to using.
For example, I'm an old C warhorse. I grew up programming BASIC on my C64, and went to school to learn Pascal and C on a VAX/VMS mainframe. Absolute top-down procedural programming drilled into me for years and years. The shift to object oriented coding is one I *STILL* struggle with, because it goes against my nature. It was one thing to use event hooks and instantiate object intances in the Visual Basic of 2000, but it's a whole different thing to use the try/except model for normal code that is NOT just added error handling, like most python people do today.
Were I to have looked at python code back in 2004, I would have thought it was horrible because of the strange structure and seemingly excessive error handling. The idea of converting a string to a number by FIRST trying to convert it to a float and then, when it fails, converting it to an integer, goes against all my instincts, because in C that would be horribly expensive. But, that's normal for python because exception handling is cheap and easy.
And yes, I will also suggest staying away from LPC unless what you really want to do is make a MUD. LPC is a great language to code a MUD in, as it has been designed to do exactly that, and has had 20 years to be explored, improved, and debugged. However, it won't be of any use to you for anything else, ever. :)
If I were to start over, I'd very seriously take a look at using D. Last I looked, it had all the things I liked about C/C++, with syntax cleanups and less stupidity.
I would avoid PHP with extreme prejudice, as it's just fundamentally broken. Perl and javascript seem too ad-hoc for me.
If I were to start over, I'd very seriously take a look at using D. Last I looked, it had all the things I liked about C/C++, with syntax cleanups and less stupidity.
I would avoid PHP with extreme prejudice, as it's just fundamentally broken. Perl and javascript seem too ad-hoc for me.
Never heard of D. Should I have? There's a bit of a downside in picking up a new language without a substantial community that's ahead of you and can help with ready-to-leverage framework code if nothing else.
I didn't even want to mention Perl. My first impression from 6-7 years ago was that it was adequate for scripts not exceeding 100 lines. After that, it becomes very difficult to keep code organized, modular, and readable, in my opinion. I recently had to modify some Perl code and it was simply painful. Maybe a decade ago it filled a gap, but ever since Python and ruby, I feel it's going dodo for a reason.
I have to defend JS again, and I believe Perl along with it, to my chagrin. It's not that they are ad-hoc. They are both loosely typed, and allow you to write the same thing in multiple ways, some better than others. Javascript is much more flexible, however, probably to a point where it horrifies pedantic folks. But if you're not pedantic, you just get things done quicker.
The other thing that makes people prejudiced against JS is that they don't know about modern patterns for object-oriented and modular programming. But if you think JS is what you saw in 1996 when you did "View Source" in your browser, then you should look again. It is now everywhere, to a point where the world's foremost cross-platform game design engine Unity uses something that's 99% JS, to a point where you can write an entire enterprise cloud application with both front end and back end in JS.
I've written event-based code in Objective-C, some in C, and in JS. The latter simply blows the others out of the water. If you're looking to develop skills in async coding, or UI design, or if you want to develop your chops in hot languages for server applications, there's no smarter option.
My suggestion is using a high level language that manages as much as possible for you. I like Ruby, but there's a lot of options in this space and most of the popular ones are good for the most part.
My suggestion is using a high level language that manages as much as possible for you. I like Ruby, but there's a lot of options in this space and most of the popular ones are good for the most part.
There's something to be said for knowing what's being managed for you and how it might not be as efficient as it could be. I get it. The 80s/90s are over. System resources are plentiful now. But I still find that programmers who cut their teeth on higher level languages have a tendency toward writing some really inefficient code, and have far less understanding of how the underlying computation is taking place. Or you could just not care and simply get more done faster. There are always trade-offs. Python, Ruby, and Javascript are all great modern languages.
11 May, 2015, Ssolvarain wrote in the 11th comment:
Thanks for the replies guys. Currently looking at Python, I never even gave it any thought with starting to learn a new programming language. Had considered it as a possible scripting language a couple years back but then forgot about it. So far I have been enjoying it after the couple of tutorials I've started to read…
Thanks for the replies guys. Currently looking at Python, I never even gave it any thought with starting to learn a new programming language. Had considered it as a possible scripting language a couple years back but then forgot about it. So far I have been enjoying it after the couple of tutorials I've started to read…
If you want to dive a little deeper and see how it can handle a more populated world, Quix, Syn and I worked on porting ROM to python awhile back. It got pretty far before my PC died. I've been tinkering with it a bit lately now that I have a stable PC, but RL keeps me busy so nothing worth keeping.
My suggestion is using a high level language that manages as much as possible for you. I like Ruby, but there's a lot of options in this space and most of the popular ones are good for the most part.
There's something to be said for knowing what's being managed for you and how it might not be as efficient as it could be. I get it. The 80s/90s are over. System resources are plentiful now. But I still find that programmers who cut their teeth on higher level languages have a tendency toward writing some really inefficient code, and have far less understanding of how the underlying computation is taking place. Or you could just not care and simply get more done faster. There are always trade-offs. Python, Ruby, and Javascript are all great modern languages.
It seems to me his key problem is not ever getting something done or launched. So I would suggest that he, and others, learn a comfortable language which allows you to ship it while still only using a few percentage points of your CPU budget.
It seems to me his key problem is not ever getting something done or launched.
My job is largely seasonal. Extremely busy during summer months and on again, off again work during winter. During the winter I tend to have tons of free time in between work and get stuff done. During the summer its tinkering here and there on days off and then just get so busy at work that by the time I get back to being able to work on a MUD project I feel like I've become so detached from where I left off that I end up just starting a fresh project. It becomes a wash and repeat type thing. Its led to some nice code (IMO) but nothing ever seems to go anywhere and just looking for something different and a fresh start, and learn something new in the process…
15 May, 2015, quixadhal wrote in the 17th comment:
Votes: 0
Davion's project is also a fun way to learn Python. My apologies to ugly n00b code in it that I did, because I was pretty much learning python while working on it… but it also got me to learn PyCharm (the IDE), which finally broke me of the old crufty ways of doing everything in vim and the command line. The only downside is, now I don't want to look at any of my old perl code without finding a good IDE for it. :)
I've actually gotten quite far in producing a mud sever in D the sockets Interface was a lot cleaner then C was alot less object oriented then c#. It has great and intuitive container support and string support, support for lambda function I got caught up in trying to get a scripting language integrated in it years ago and never really started back into it
Lately I've been thinking about toying around with a new programming language just to learn something knew, and possibly do something new instead of spewing out the same types of MUDs that seem like they never make it much further than my local hard drive. Always seems like the ideas I develop seem sound, but in terms of deployment my work schedule keeps me busy and eventually I lose track of time and ability to continuously keep working on the various projects which leads to rewrite after rewrite of them. While it has lead to some nicely refined code in some areas it seems like my hard drive has become cluttered with so many MUDs using different source code (generally C to C++ conversions within the GodWars branch of the Diku tree).
I was looking at a possible Interpreted language to avoid the whole compilation process and did look at PHP as a possibility due to having done some homebrewed CMS development in the past to go with some MUD projects. But after looking at PHPMUD I'm not quite sure that is the route I wish to go. Also found the Pike language which did seem interesting in some ways but didn't seem to fall in the Interpreted category and seemed like it would lead to the same old things. I was also thinking Ruby might be another possibility as I remember a number of people talking highly of it two or three years ago but seems like I've not seen too much about it recently…
Any suggestions for languages to look at are highly appreciated……
EDIT: Interpreted language isn't a requirement. Just a bonus…