Has anyone here tried Monkey?

Community Forums/Monkey Talk/Has anyone here tried Monkey?

feeble1(Posted 2014) [#1]
I have been messing around with Monkey for a little while. It makes sense to move over to the new BRL product. Monkey has tons of versatility as far as the available targets and the syntax is pretty easy to step into.

My problem is that it just isn't fun. I initially thought that this was due to the clumsiness of the IDE, but I tried Jungle and, while it was an improvement, I was still not thrilled.

Am I approaching Monkey wrong? I can't seem to piddle around with it all night like I can with the other BRL products.


xlsior(Posted 2014) [#2]
Personally I find the Blitzmax syntax more intuitive, and find it easier to play around with.


therevills(Posted 2014) [#3]
It's funny, I actually prefer Monkey's syntax than BlitzMax's... but they are nearly the same.


Derron(Posted 2014) [#4]
The syntax of Monkey is case sensitive ... enough said.


bye
Ron


*(Posted 2014) [#5]
The only gripe I have is there is no security on media, all your media is shipped as is with the game in a x.data folder. Even max/blitz3d has the ability to allow media to be loaded from data, monkeys translator goes into crash mode when you have loads of data in a file.


therevills(Posted 2014) [#6]
The syntax of Monkey is case sensitive ... enough said.

So you like Monkey then ;)

Some people prefer case sensitive languages, some don't... there are thousands of threads on the net arguing for and against it...

The only gripe I have is there is no security on media

I've released commercial games and I've never "protected" my media...


Yasha(Posted 2014) [#7]
The only gripe I have is there is no security on media


...yeah, there's no such thing as "security on media". When producing a program with Blitz3D or BlitzMax, neither your media nor your source is protected from the end user in any way. If they want to see it, they will.

I've never really understood why this is an issue. If anyone makes money off stolen assets they're a big red target for a C&D; if they don't, seriously who cares you have bigger things to worry about like shipping.


time-killer-games(Posted 2014) [#8]
Yep. While I like monkey's broad platform selection better, I still prefer BlitzMax hands down in terms of desktop capability. Monkey-X has come a long way, but it seems Mark has given up on expanding it other than giving simple compatibility patches here and there which add nothing new. Someone correct me if I'm wrong. With BlitzPlus and Monkey Html5&Desktop exports now open source, it won't be long before BlitzMax and MonkeyPro face the same fate. :(


Yan(Posted 2014) [#9]
With BlitzPlus and Monkey Html5&Desktop exports now open source, it won't be long before BlitzMax and MonkeyPro face the same fate. :(
How does that work?


*(Posted 2014) [#10]
Seeing as blitz3d isn't open source your argument doesn't hold up


dan_upright(Posted 2014) [#11]
Some people prefer case sensitive languages, some don't... there are thousands of threads on the net arguing for and against it...
I've never understood why it matters. I've had people on this very forum tell me "if you don't know why case sensitivity is important I'm not going to waste time telling you" which I just took to mean "I don't know either". I mean, I don't particularly care if a language is or isn't case sensitive but I genuinely can't understand why other people do care so much. So if anyone wants to have a stab at enlightening me, I'd appreciate it.


*(Posted 2014) [#12]
Tbh it only makes it easier to make monumental mistakes that take even longer to decipher, for example:

In c:
Int myVar;
Float MyVar;
Char *myvar;

Are all valid and will compile BUT doing something like myvar=33.434; isn't always a good idea and never has

The only benefit is methods and function names if people want to use camel case or such like


Derron(Posted 2014) [#13]
Case sensitivity just slows down coding processes: you need to caps things like "print". So some editors might do it for you (Ted) but if coding in a simple editor connected to a "execute command"-makro you will surely have to change things because you forgot to caps the first character.

The disadvantage of case-insensitivity is things like
Method MyValue:int() ...
Field myValue:int
wont be possible (some kind of Getter/Setters). But for me that is not the best thing for 3rd party libs because people wont know it "automatically" (while a "SetMyValue" and "myValue" can be distinguishable).

For me another problem with Monkey X is: while the logical components (if then else and or ...) are case-insensitive, the whole rest is sensitive (function names, variables ...). While you as an advanced coder know that a "print" is not a inbuilt function and therefore is case-sensitive, newbies wont. Why should they? there are no brackets around (another discussable point for some of us :D), so it looks like something provided by Monkey X, not a custom thing the new monkey user just coded. Same for things like "setcolor" or other "basic" functionality.

therevills:
So you like Monkey then ;)

Yes, of course I do :D


bye
Ron


Yasha(Posted 2014) [#14]
So if anyone wants to have a stab at enlightening me, I'd appreciate it.


Case sensitivity is important in Haskell and Ocaml because it provides another form (or two) of identifier for constructors, functors, and signatures (names with a leading capital or with all caps are placed into a different parser category from names with leading lowercase). Correctly identifying functors and constructors and telling them apart from variables is necessary to be able to parse the code (or at least to do it easily). Otherwise you'd need something ugly like Perl's $sigils @on %names.

I have no idea why you'd need it in a language without those features, since there's only one class of identifier for the most part.

However folding case can be viewed as rather Euro-centric and a relic of the ASCII era, since it confers special status on code written in characters from an "elite" subgroup of languages. The more user-neutral thing to do is to not elevate this one feature of European scripts (especially if you're not even going to research what similar things exist in other writing systems), and just treat every Unicode character the same way.

(What's that? Your compiler doesn't accept Unicode identifiers? Tsk tsk, that's really not good enough in the 21st century.)


Floyd(Posted 2014) [#15]
Years ago I used a system that was not just case sensitive but font sensitive.

That's not as crazy as it sounds. The program was MathCad and it was just following long established traditions for published mathematics. For example it is a convention that vectors are denoted by boldface.


Matty(Posted 2014) [#16]
Haha floyd I thought for a minute you were going to say it would fall over if you entered code in arial instead of helvetica or something.


Blitzplotter(Posted 2014) [#17]
I have used Monkey, and mean to get back to it. I was pleased with what I achieved in the small amount of time I spent with Monkey. However, only so many hours in the day and I've trouble doing my hobby coding in anything but Blitz 3d.


*(Posted 2014) [#18]
I hear that Blitplotter I have very very limited time this is why I'm coding a editor to use on my tablet :)


therevills(Posted 2014) [#19]
I really didn't want to go down this road about case sensitive vs case insensitive...

IMHO case sensitive doesn't slow down code development, it actually increases it, especially if you are working in teams.

Imagine you write a variable called "playerX" and another developer calls its "Playerx", the compiler has to guess you both mean "playerX", its about standards and readability.

Also I believe case insensitive code leads to sloppy coding, and I want the compiler to tell me off when I make a typo.

ANYWAY.... MonkeyX is a great language, love the syntax and the ability to target multiple targets such as Android, HTML5 and iOS (although I HATE the workflow of releasing an iOS application).


Derron(Posted 2014) [#20]
Imagine you write a variable called "playerX" and another developer calls its "Playerx"


Imagine that other developer creates a function which accesses a global scoped variable instead of its local one because of a missspelling. If all variable with the same (case insensitive) name are recognized as the same, such "must pay attention to"-cases do not exist.

Your IDE could take care of tidying up code and normalizing your code to the notation style you like (strHungarian or yourSuperLowerCamelCase).

Is there a real benefit of allowing multiple variants of a name? Wont imagine how coffee talks sound then... "ahh you used player health with all lower case chars? THIS CANT WORK dude!".
Maybe you have serious ideas of what advantages are... would be glad to hear some (I am sure there are advantages, like the variable/setter-thing I mentioned above).


bye
Ron


Yasha(Posted 2014) [#21]
Maybe you have serious ideas of what advantages are... would be glad to hear some (I am sure there are advantages, like the variable/setter-thing I mentioned above).


The general case of that would be namespacing, which also covers my example (type vs functor vs variable namespaces) and Floyd's example (vectors vs scalars vs sets etc.).

This is actually less obscure than you think - consider, most mainstream (i.e. not Lisp) programming languages use a similar typography-based namespace system to determine whether a function is prefix or infix. Functions named with letters are prefix ("abc()"), while functions named with "punctuation" symbols are infix (+, -, etc.), and thus the compiler knows that "a + b" means an application of the '+' function to 'a' and 'b', and not an application of the 'a' function to '+' and 'b'. (The compiler can't decide based on which one "makes sense", because that doesn't tell it whether you made a mistake or not.)

So, when designing your language: how much information does your compiler need to resolve what an expression means? Use the minimum number of rules to keep things simple for the user. (Of course this shifts the argument over to whether "add case sensitivity" or "add case insensitivity" is a rule being "added" to the system...)


---

Also, most examples people give to support either side lead me to conclude that this is only really an issue for bad programmers with broken IDEs.


Derron(Posted 2014) [#22]
I did not really get what you wanted to explain to me.

a() + b() -> calc a(), calc b() and cumulate them.

If there is a chance to have
a() +() b()
The compiler should be able to recognize that "+()" awaits something before and something after.

I do not get what this has to do with "case-sensitivity". The only thing I understand having benefits (somehow) is getters/setters. Together with the "need" of adding brackets () after functions, it should be clear if you access a function or a variable. Did I miss something in my thoughts?


bye
Ron


Blitzplotter(Posted 2014) [#23]
@Edzup, an editor for a tablet sounds intriguing.


*(Posted 2014) [#24]
At the moment the editor I'm creating is for my Star Rogue game BUT I will look into creating an editor for coding once I get SR out there :)


time-killer-games(Posted 2014) [#25]
WHAT did I tell you guys, Blitz3D is now open source! :P


Matty(Posted 2014) [#26]
I like case sensitivity with java in eclipse but don't like case sensitivity with Monkey because of the default ide which auto corrects some expressions but not others.

I still remember spending time wondering why a drawimage wasn't working before I found out the the monkey ide auto corrects things like end/if etc but doesn't do so for other functions which I had thought were native.


therevills(Posted 2014) [#27]
DrawImage is a mojo command, so the IDE doesn't change it for you - keywords aren't case sensitive (eg If, End, While etc) and Ted will Pascal case it for you for some reason.


ziggy(Posted 2014) [#28]
@Matty:Jungle Ide solves this for you as you code.


therevills(Posted 2014) [#29]
@Matty:Jungle Ide solves this for you as you code.

And does it brilliantly :)


GfK(Posted 2014) [#30]
.


Matty(Posted 2014) [#31]
Last time I used monkey it was using an ide called Monk, not Ted...I'd heard of Jungle ide and I'm sure it does well but I've crossed over to coding natively instead these days.


*(Posted 2014) [#32]
The problem with loads of the other ides are they are windows only


therevills(Posted 2014) [#33]
The problem with loads of the other ides are they are windows only


Mollusk IDE:

This software package includes two versions:
The Windows version (exe) requires XP or newer.
The Mac version (app) requires OS X 10.7 or newer.


http://www.grudlux.com/mollusk/


Jentos IDE:

Links to download:

Windows:
v.1.1, qt 5.3
mirror

OS X:
v.1.1, qt 5.3
mirror

Linux:
v.1.1, qt 5.3
mirror



http://www.monkey-x.com/Community/posts.php?topic=8288&page=first

Which IDEs are you talking about, Ed?


*(Posted 2014) [#34]
JungleIDE :)

Haven't seen mollusk IDE but will have a look :)