Author Topic: Someone is bypassing permissions on the bug tracker!  (Read 7566 times)

Offline x4000

  • Chris McElligott Park, Arcen Founder and Lead Dev
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 31,651
Re: Someone is bypassing permissions on the bug tracker!
« Reply #15 on: April 11, 2012, 06:30:26 pm »
Yep, that's my bias as well.  I still am fine with JavaScript because it doesn't pretend to be anything other than a scripting language, but still it is not the most fun to work in.  Especially not if it's not your own code.
Have ideas or bug reports for one of our games?  Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline Cyborg

  • Master Member Mark III
  • *****
  • Posts: 1,957
Re: Someone is bypassing permissions on the bug tracker!
« Reply #16 on: April 11, 2012, 07:02:32 pm »
top three most hated languages

  • C.  I work in this for the most part every day. I'm good at it. I also realize it's crusty, it's old, and I hate having to write complex makefiles and sort out other peoples complex makefiles. The vast majority of my time is not spent making cool stuff with C, it's debugging an expert language that has way too many pitfalls to get to the good part- which is creating cool features.
  • Functional programming languages. It doesn't match the way I think. All of them.
  • Java, and its hellspawn. While it cleans up a lot of the deficiencies of C, it ruins your productivity by being so incredibly verbose. The object model is both a blessing and a curse, requiring huge rewrites if your project requirements change. Their excuse is to do a better job in the design phase, but people who say that have never worked for real-life, non-technical stakeholders.
Kahuna strategy guide:
http://www.arcengames.com/forums/index.php/topic,13369.0.html

Suggestions, bugs? Don't be lazy, give back:
http://www.arcengames.com/mantisbt/

Planetcracker. Believe it.

The stigma of hunger. http://wayw.re/Vi12BK

Offline TechSY730

  • Core Member Mark V
  • *****
  • Posts: 4,570
Re: Someone is bypassing permissions on the bug tracker!
« Reply #17 on: April 11, 2012, 07:39:22 pm »
    C.  I work in this for the most part every day. I'm good at it. I also realize it's crusty, it's old, and I hate having to write complex makefiles and sort out other peoples complex makefiles. The vast majority of my time is not spent making cool stuff with C, it's debugging an expert language that has way too many pitfalls to get to the good part- which is creating cool features.[/li][/list]

    Yea, C has lots of gotchas, and its minimal sanity checking also means it is very easy to mess things up and not know about it for a long time. Also, its single, unified namespace can be a big pain in the but

    C++ has many of the same gotchas as C does plus like 3 times as many on top of it. C++ is very powerful though.

    Functional programming languages. It doesn't match the way I think. All of them.

    They certainly are quite the paradigm shift. However, one language I work with some, Scala, is a object-oriented functional programming hybrid. Basically, functions (and more generally, blocks) are objects. That is a handy way to think of it when trying to "wrap your mind around" it

    Java, and its hellspawn. While it cleans up a lot of the deficiencies of C, it ruins your productivity by being so incredibly verbose. The object model is both a blessing and a curse, requiring huge rewrites if your project requirements change. Their excuse is to do a better job in the design phase, but people who say that have never worked for real-life, non-technical stakeholders.

    The developers of Java wanted to keep the language simple. So they went with a nominative types (types are considered unique based on where they were declared and their fully qualified names), strongly typed (very few implicit conversions), statically typed (compile time type checking), manifest types (you must declare the type of variables and functions, and no type inference compromise) with very few syntactic shortcuts (no operator overloading, no formal recognition of getters and setters, etc)

    While this made for a relatively simple language specification (which has its merits), it does have the unfortunate side effect of making developers do lots of things by hand. Also, as it does not give much leeway with its types, this can make refactoring class hierarchies a pain, especially with interfaces have to change.
    The few but very visible "warts" in the Java library that came with poor design decisions when it was first created don't help thing either. Also not helping things is that most major implementations of the Java Runtime Environment are memory hogs.

    C# has a very similar language properties in regards to its overall paradigm typing, except they did offer some syntactic niceties (like operator overloading, formal support for getters and setters, and in C# 3 and up, some type inference), plus it fixes some of the design oddities that Java had (like primitives can be treated like immutable structs, unlike in Java where primitives are their own thing)
    So it can be much nicer to code in, but the strict typing system still makes refactoring class hierarchies a pain.
    There are also some nice language features in Java that C# does not have yet (formally recognized typesafe enums, a flexible class lookup system)
    Also, there aren't as many implementations of it.

    Python has nominative types, strongly typed (seems strange, but a string will remain a string regardless of where you use it, thus making it strongly typed), dynamically typed (the "duck typing"), inferred types (you don't have to declare types, in fact, it is recommended you don't), with lots of "syntactic sugar"
    The duck typing does some interesting things. While Python does have nominative types (types themselves are unique based on name), when it comes to semantics checking, it acts quite a bit like it has structural types (in a language with full fledged structural types, types are unique based on their structure, regardless of where they were declared or defined).
    The duck typing does wonders for refactoring class hierarchies, as even if top level types change, as long as the method signatures are still compatible, most if not all of the surrounding code can still compile.
    However, sometimes this can be a pain. If you give a function a type it can't work with (like giving a function that subscripts its input a type that cannot be subscripted), there is no guarantee you will find out until runtime.
    Also, even if a function can work with a type, sometimes the type has changed so radically that the function no longer makes sense with it, and is thus a bug to use that function on it.

    I have to say I love their collections API. Especially nice is their list comprehensions framework, gracefully unifying (at least to the end developer) the tasks of iteration, filtering, and "sorting requests". And they even have a great system of "comprehension literals" to easily construct very nice looking but very descriptive comprehensions.
    I also have to say I am very wary of the whole whitespace blocking thing. IMO, that sounds brittle.

    I can go into detail on the other languages to if you want, but I think I have rambled enough for now.
    « Last Edit: April 11, 2012, 08:10:55 pm by techsy730 »

    Offline keith.lamothe

    • Arcen Games Staff
    • Arcen Staff
    • Zenith Council Member Mark III
    • *****
    • Posts: 19,505
    Re: Someone is bypassing permissions on the bug tracker!
    « Reply #18 on: April 11, 2012, 07:43:11 pm »
    NOTES ON PYTHON COMING
    Quick, lock the thread!

    ;)
    Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

    Offline Hearteater

    • Core Member
    • *****
    • Posts: 2,334
    Re: Someone is bypassing permissions on the bug tracker!
    « Reply #19 on: April 11, 2012, 08:12:21 pm »
    I worked a ColdFusion/MSSQL job for 5 years.  MSSQL I'm still on speaking terms with.  CF... care to hazard a guess at what "Branch Offset Too Long For Short" means?

    But I'm pretty heavily biased, I dislike any language that doesn't have compile-time strong typing.  If it doesn't understand the source code before it runs it, I think there's something wrong ;)
    Yes, it means it is time to refactor your code :) .

    While the message is oxymoronic and silly, it does at least literally mean exactly what it says: The target offset (number of bytes forward to jump in the code) of a branch instruction (if or switch statement plus a few others) is too big for a short variable (32,767 bytes).  The poor use of capitalization also makes it much tougher to understand when you first encounter it.    That's an unfortunate (and stupid) limitation of the JVM ColdFusion uses, but not in the least its biggest evil.  Compared to some of the errors you can get in C both compiling and linking, it isn't even that bad.  Weakly typed query results and null stripping is the true horror of ColdFusion especially because they fail randomly based on the order data is returned from a query.  This is getting better, but still isn't very fun.

    I do agree that compile-time strong typing is a massive plus for any language.

    Offline Cyborg

    • Master Member Mark III
    • *****
    • Posts: 1,957
    Re: Someone is bypassing permissions on the bug tracker!
    « Reply #20 on: April 11, 2012, 08:13:29 pm »
    I put down Python as fast as possible when I realized the whitespace requirement. That was just stupid. Clearly some OCD artifact made into a grammar.
    Kahuna strategy guide:
    http://www.arcengames.com/forums/index.php/topic,13369.0.html

    Suggestions, bugs? Don't be lazy, give back:
    http://www.arcengames.com/mantisbt/

    Planetcracker. Believe it.

    The stigma of hunger. http://wayw.re/Vi12BK

    Offline TechSY730

    • Core Member Mark V
    • *****
    • Posts: 4,570
    Re: Someone is bypassing permissions on the bug tracker!
    « Reply #21 on: April 11, 2012, 08:21:43 pm »
    I put down Python as fast as possible when I realized the whitespace requirement. That was just stupid. Clearly some OCD artifact made into a grammar.

    If someone could make a fork of Python with the same syntax and the same libraries, but with explicitly defined blocks instead of implicitly defined blocks via whitespace, I would gladly add that variant of Python to my standard list of languages.

    BTW, if you think C has too many pitfalls, you don't thing Java provides enough tools to keep things concise, and you don't like the whitespace sensitive nature of Python, what language do you like?

    Offline keith.lamothe

    • Arcen Games Staff
    • Arcen Staff
    • Zenith Council Member Mark III
    • *****
    • Posts: 19,505
    Re: Someone is bypassing permissions on the bug tracker!
    « Reply #22 on: April 11, 2012, 08:31:11 pm »
    Yes, it means it is time to refactor your code :)
    Or time to switch to a language where they fix compiler bugs :)

    Quote
    While the message is oxymoronic and silly, it does at least literally mean exactly what it says: The target offset (number of bytes forward to jump in the code) of a branch instruction (if or switch statement plus a few others) is too big for a short variable (32,767 bytes).  The poor use of capitalization also makes it much tougher to understand when you first encounter it.
    Yea, it didn't take too long to figure out what it meant.  The problem is what it meant: that it took valid source code, compiled it into invalid bytecode (containing a jump instruction with an argument that's out of range), and you have no reliable way of knowing that this has happened until you actually run the code.  I cannot abide that.  Either it needs to use a jump instruction that can use an argument that large (if one exists), or compile it into a jump that jumps to another jump in range, and so on as necessary, or it needs to fail during compilation saying it could not handle a function that long.  I can understand something like that slipping into a major release, but the fact that the bug has been reported many times and continues to exist years later... no.  If they want me to take the language seriously, no.  The compiler needs to work, or at least report when it fails.

    Quote
    That's an unfortunate (and stupid) limitation of the JVM ColdFusion uses, but not in the least its biggest evil.
    Yea, I'm not at all claiming that's the worst of it, it was just the most memorable "I must have entered the twilight zone, it is the only explanation" bug I recall having hit :)  And I'd be surprised if my memory isn't suppressing far worse moments out of self-defense.

    Quote
    Compared to some of the errors you can get in C both compiling and linking, it isn't even that bad.
    I never had the honor of hitting an honest-to-goodness compiler bug in C, but I ran seriously afoul of the linker in one game hobby project, and I never really tried C/C++ seriously after that.  If there's no straightforward way to give it multiple compilation units (in a complex situation), and there are other languages where it's trivially easy to do so (C# has, in all my experience with it), then the choice isn't hard for me. 

    Quote
    Weakly typed query results and null stripping is the true horror of ColdFusion especially because they fail randomly based on the order data is returned from a query.  This is getting better, but still isn't very fun.
    Oddly, I don't recall running into too much trouble with that :)  Perhaps memory blackout.
    Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

    Offline Hearteater

    • Core Member
    • *****
    • Posts: 2,334
    Re: Someone is bypassing permissions on the bug tracker!
    « Reply #23 on: April 11, 2012, 08:39:25 pm »
    Then imagine this: Each column in a query is typed based on the first row of data returned.  And then throw NULLs out and make them empty strings instead.  So if you have no way of telling if a given value is null or an empty string in your result set.  You can work around some of this, but if you want to use query-on-query those data-typings become critical and as a result the whole thing becomes very very fragile.

    Offline keith.lamothe

    • Arcen Games Staff
    • Arcen Staff
    • Zenith Council Member Mark III
    • *****
    • Posts: 19,505
    Re: Someone is bypassing permissions on the bug tracker!
    « Reply #24 on: April 11, 2012, 08:45:54 pm »
    Then imagine this: Each column in a query is typed based on the first row of data returned.  And then throw NULLs out and make them empty strings instead.  So if you have no way of telling if a given value is null or an empty string in your result set.  You can work around some of this, but if you want to use query-on-query those data-typings become critical and as a result the whole thing becomes very very fragile.
    Oh, right.  I just got used to the "null comes back as empty string" rule, since it was my first serious use of a database and I'd never learned otherwise.  And generally for columns that could take a null, if the input was an empty string we changed it to NULL on insert/update.

    Did a lot of fairly heavy query-of-query'ing, but we tended to not lean on it very much because it was so slow, at least at the time we used it.  I do remember some mild hair-pulling trying to deal with the fact that just about everywhere else CF was basically "I have no idea what type this variable is, and I probably don't know it even exists, and I don't care" until the very last second where it had to care but in query-of-query'ing it got a lot stricter.  But it wasn't that bad, I thought :)

    Funny how we pick such different things to loathe ;)
    Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

    Offline Mánagarmr

    • Core Member Mark V
    • *****
    • Posts: 4,272
    • if (isInRange(target)) { kill(target); }
    Re: Someone is bypassing permissions on the bug tracker!
    « Reply #25 on: April 12, 2012, 11:57:44 am »
    Visual Basic. I hate it with a passion. But I think most of it stems from the fact that I "worked" with it when I basically had no clue about how it really worked, AND were using an IDE that did its best to hide the code from me. When I looked at the code, my brain exploded. It was that bad.

    So I guess it was more with the VB IDE my gripe was.
    Click here to get started with Mantis for Suggestions and Bug Reports.

    Thank you for contributing to making the game better!

    Offline keith.lamothe

    • Arcen Games Staff
    • Arcen Staff
    • Zenith Council Member Mark III
    • *****
    • Posts: 19,505
    Re: Someone is bypassing permissions on the bug tracker!
    « Reply #26 on: April 12, 2012, 12:18:19 pm »
    VB actually used to be a lot worse than it is now.  VB.NET, properly used, isn't actually all that different than C#.  The difficulty is that it requires very consistent restraint to avoid falling over into late-binding, etc.  And much much worse, if undisciplined programmers are involved (but let's be honest, what can't they mess up?). So why use it when you could just use C#? :)  But I'm sure some situations call for it, I just don't have experience with them.
    Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

    Offline Cyborg

    • Master Member Mark III
    • *****
    • Posts: 1,957
    Re: Someone is bypassing permissions on the bug tracker!
    « Reply #27 on: April 12, 2012, 06:45:07 pm »
    My favorite languages:

    • Perl 5: I could write a dissertation on how awesome this is. It's the only language in the world that is the fastest, multiplatform, multiple grammars, innumerable plug-ins, connects to other languages along with providing its own escape hatch, easy to debug, great error messages, unconcerned with typing, optional object model, able to easily spy on memory and other processes, etc. You need something fixed in the next half-hour before the build runs? There's no other language you can turn to.
    • VB: Actually, I should just write .net. They work so well together. The only critique might be multiplatform support, even though that's improving at a snail's pace. It combines rapid application development with serviceable debugging. It's a contemporary version of ancient languages. It's more of an enterprise development language. I have no beef against .net languages (Perl pun), although it's certainly not as fast to write in as Perl and not as multiplatform.
    • short interpreter languages that serve specific purposes: an example might be Glovepie. Really any language that is quick and easy to do something. I have no great interest in writing 20 pages of set up for a feature; I would rather get to the fun part as quickly as possible. I think that the computer, extensions, the operating system, and the language should be doing a lot more for people than they do in most major languages. Enable the programmer, don't punish them for wanting to do cool things.

    I should add, I have done a lot of work with PHP. I don't hate it, but I don't love it either. So many warts rolled up into that bloated mess.
    Kahuna strategy guide:
    http://www.arcengames.com/forums/index.php/topic,13369.0.html

    Suggestions, bugs? Don't be lazy, give back:
    http://www.arcengames.com/mantisbt/

    Planetcracker. Believe it.

    The stigma of hunger. http://wayw.re/Vi12BK

    Offline TechSY730

    • Core Member Mark V
    • *****
    • Posts: 4,570
    Re: Someone is bypassing permissions on the bug tracker!
    « Reply #28 on: April 12, 2012, 07:44:20 pm »
    Hmm, Java went with the strong compile time safety, language specification conciseness (at least by language specification standards) approach, often at the expense of programmer convenience
    Perl went for the complete opposite approach, going for programmer convenience oftentimes with large sacrifices to compile time safety and having a complicated, complex language specification (in fact, if I understand it right, it wasn't until Perl 6 that they finally got around to nailing down the formal language specification, and the specification is quite complicated and complex even by language specification standards, even though every piece of complexity has a good reason)

    An interesting dynamic comes into play when we talk about maintainability of code though. With languages with strong compile time strictness and not much "syntactic sugar/shortcuts", changes to the code that are mistakes or would make no sense to the surrounding code are much, much more likely to be caught by the compiler (or interpreter) ahead of time, but makes it more likely that changes that would "intuitively" still make sense to the surrounding code are more likely to be flagged by the compiler as errors as well.
    In contrast, in a language with loose compile time strictness and lots of "syntactic sugar/shortcuts", changes that would "intuitively" still make sense to the surrounding code are far more likely to be allowed by the compiler, but changes to the code that are mistakes or would make no sense to the surrounding code are more likely to be allowed through, causing bugs that can manifest far away from the actual site of the bug.

    As I stated, Java (and there are languages even more strict and "simplistic" then Java) and Perl are two separate extremes in terms of these factors. My ideal language would be somewhere in the middle. C#, Scala, and Python (except for the whitespace fiasco) are languages that I think have gotten much closer to a balance of strictness vs. freedom.

    EDIT: I forgot to mention, where along this scale you like your language is largely a matter of personal preference. I personally like stricter checking better due to the early bug detection it gives, and you (Cyborg) apparently like looser checking better due to the flexibility it gives. Again, different tastes.

    At least Perl does bother to do checking at runtime. Some languages are so dynamic (or rather, so weakly typed) that it will happily treat a string as an number (not a conversion, but actually interpreting the bits in the string as if they were bits in a number), and happily corrupt data when you mess up your types instead of throwing a runtime exception/error when there is no sane conversion available.
    « Last Edit: April 12, 2012, 07:58:54 pm by techsy730 »

    Offline keith.lamothe

    • Arcen Games Staff
    • Arcen Staff
    • Zenith Council Member Mark III
    • *****
    • Posts: 19,505
    Re: Someone is bypassing permissions on the bug tracker!
    « Reply #29 on: April 12, 2012, 07:56:20 pm »
    where along this scale you like your language is largely a matter of personal preference
    For me it's: the more static analysis, the better :)  But the pain involved it making (and, especially, writing in) a language where you can know (not merely guess) what's going to happen just from the source code and a set of inputs... yea, C# is a fine compromise, for me ;)
    Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!