Gosu Programming Language Released To Public
llamafirst writes "Guidewire Software released the Gosu programming language for public availability. Gosu is a general-purpose programming language built on top of the Java Virtual Machine (JVM). It is object-oriented, static typed, imperative, and 100% Java compatible (use/extend Java types, implement Java interfaces, compile to Java bytecode). It has type inference (very readable code yet static typing!), in-line functions that you can pass as objects (closures / lambda expressions / blocks), enhancements (inject methods + properties, even on Java types!), and simplified generics. Gosu is provided via the Apache License v2.0. The language itself is not yet open source, although that is planned for a future community release. You can read a complete introduction to the Gosu language, a comparison to other languages, and syntax differences from Java."
With the news recently on how java is going to be changing in oracle's hands, people seem pretty nervous in just the java side side of things let alone a language that runs over java. Will be interesting to see how this develops.
Ads disguised as news! excellent.
From a quick glance it looks like Scala with a more Java-like syntax... I wonder what added benefit they hope to bring.
I'd be very interested to see an in-depth comparison of the two.
PageTurner Reader: open-source e-reader for Android with cloudsync. http://pageturner-reader.org
Guidewire is an enterprise software company, and this is the language they most likely code most of their business logic in.
Similar to SAP or Peoplesoft (now owned by Oracle), to keep developer mindshare and promote maintainability and exclusivity, they layer on top of the J2EE stack in some way; in this case it's a bytecode compatible Java replacement (Peoplecode, in comparison, was an interpreter invoked by server calls in the J2EE stack - at least in v8.x).
I think the main reason they're exposing the language widely (as opposed to the above examples) is directly related to the recent Java news by Oracle... bytecode compatible is a key selling point here.
The JVM is open source. The patents Oracle has are for the machine, not for compiling to byte code. They aren't Java specific either, anyone with a VM who does JIT compiling could fall under the patents, which is why Microsoft has to pay Oracle for a license.
In other words, since they are only compiling to byte code, and Oracle doesn't have any patents on that, and they can't (nor desire) to take away people's ability to use the JVM, this isn't a problem.
The misconception is that if Google hadn't used Java in Android they would have been ok, but if they had used a JIT compiler they likely would have fallen under the patents no matter what language they used.
Qxe4
At one time in my programming life I liked learning languages, I made it my goal to learn pretty near every interesting language from APL to FORTH.
:)
Then one day I woke up and realized, it isn't the language, you can write good or bad code in any language. It's how you use the language, and how you organize the code that matters most. I realized as long as you have the ability to encapsulate, you can write good code in any language, even in assembly.
In fact, with a good macro library, I can write code just as fast and well in assembly as in any other language.
Or, on the other hand, maybe I've fallen into the trap represented by this saying, "The determined real programmer can write Fortran in any language." But I don't think so.
Qxe4
Gosu, your new name is GOSUB but please never come back.
Still missing const
Its new age cobol. I can hear the PHB now. If we use and instead of && our secretary will understand how to code and we'll save milions!
http://michaelsmith.id.au
it seems some very nice aspects of Java, Pascal, C# and Basic combined, with both compiler and runtime library problems elegantly solved.. This looks really good to me. And I am not big fan of new languages.
839*929
Phonetically gosu sounds identical to the Portuguese word "gozo", which literally means cum (as in ejaculation).
lol you are not the first person to complain about that. Check out this picture from the 60s. There were so many programming languages in days past that the DoD decided to standardize on one language, and not surprisingly did it by creating another language (ADA), to surpass them all. TCL was created with a similar motivation.
But look at the picture, if you recognize half those languages, you are pretty good. The languages most of use daily weren't even dreamed of when that picture was made. And so it goes, new languages come along, with new features, and most are forgotten, but occasionally someone comes up with a good idea that sticks around.
Qxe4
The introduction has this gem:
Gosu supports a simplified version of generics. Generics are a way to abstract the behavior of a class to work with different types of objects, but to still retain type safety. There are no wildcards, and generic types are covariant, like Java arrays, which is usually what you want.
And here's how to make the type system bite the dust with this flaw:
What's funny is that Eiffel has already fallen into the very same trap, and is still trying to dig itself out of it.
You missed out on the whole concept, and you're being aggressively dumb about it. Inferred types are derived from the code, which is, surprise, static. Type inference isn't heuristic at all, go and read about Hindley-Milner.
if a type is EVER inferred, then the language is NOT statically typed. just because some preprocessor interpreter assigned a static type heuristically doesn't mean the language has anything to do with static typing... in fact, if the language ever infers type, that has EVERYTHING to do with DYNAMIC typing.
You might want to go tell the authors and users of ML (incl. OCaml) and Haskell that they're using dynamically typed languages. Somehow I'm sure they will be very open to this idea.
Apart from the way the names 'Gosu' and 'Go' overlap and are both derived from the board game, what similarities do you see between the gosu-lang.org and the golang.org websites?
My blog
After briefly glancing through the docs, this language has absolutely nothing to do with Go. I'm not even sure what you mean by "lift of the website" in this context. The design is completely different, and so is the contents.
>> The language itself is not yet open source,
ok, call me back once it is. I don't really need another programming language, let alone a closed-source once.
Gosu is an unrefined mix of cobalt oxide, sodium and other minerals mined in China.
Yup, so very right.
Gosu is Yet Another Slightly Better Than Java programming language.
It is rather questionable if JIT related patents can hold up in a courtcase, JIT compilation has been around since the 70s Smalltalk and Lisp have been using it for decades.
"But it IS a piece of Gosu!"
why in the hell do we need to keep inventing new programming languages?
On one hand, the ones we have are not perfect. On the other hand, there is as yet no agreement as to what a perfect one would look like. Hence many people take many different ways towards what they see as perfection.
On the other hand, there are still quite a lot unresolved language design problems - mainly to do with type systems. Until those are dealt with, it's not clear if perfection is even attainable.
Gosu people, your help browser sucks caravans.
If I middle-click on a link, I don't want the page I'm currently reading to jump away. I want to read whatever is linked to _later_. Redirecting me and then breaking my browser's "Back" button, without even providing an alternative js back button, is unforgivable.
plEasE, pROgRAMmerS ArE jUst pEOpLe. One hopes for a language that clears the java crud like the half-fake generics, and gets a case-insensitive language instead...
New languages for the JVM are cool and all, but still no syntax fixes the problems inherent in the JVM. Mainly, the lack of generics.
Slashdot used to appeal to the technically literate. *sigh*
They invented C#!
It's good to learn some assembly languages to see how machines work.
It's good to learn C to get accustomed with low level things, pointer arithmetic, in-memory layout of code & data, OS internals and tons of other things. It's good to tinker and experiment with high performance C code, see how functions look disassembled. Try adding two matrixes row by row and then column by column and see performance differences etc.
It's good to learn C++ to get accustomed with it's metaprogramming facilities, learn how to implement semi-automatic memory management via smart pointers and how all these high level things interact with low level.
It's good to learn Java to get accustomed with that whole big world of objects, OOP patterns, TDD, exception handling strategies and tons of other things.
It's good to learn Scala to get smooth introduction into functional programming concepts (higher level functions, closures etc.) and see how it can be incorporated into traditional object oriented code and more interesting concurrency models (actor model for example).
It's good to learn Erlang to grasp functional programming even more, learn how to effectively use pattern matching, see the THE actor model implementation and learn about it's interesting error handling philosophy.
It's good to learn LISP to grasp it's macro system that still cannot be matched in any other language. See Common Lisp at work and Clojure for it's approach to parallelism, mutability and distinction between values and identities.
It's good to learn Haskell to see how to program in purely functional way and see monads in action.
Not that I'm in any way competent in all things above. Much of it (plus other things) is still on my TODO list. I'm still being surprised by new ideas showing blind spots of my ignorance on regular basis. I don't buy however that learning new languages doesn't matter anymore. It matters. It's important. Maybe we should choose new languages to learn more carefully, choose less but dig deeper.
I'm all in favour of new programming languages but it's true that there are a lot around at the moment. That's why it's really important to provide a concise explanation of why you created a language when you release it to the world. What were the aesthetics informing your design decisions. What key features do you think are really important that sets it apart from its peers (ideally a short explanation of the benefit of those features too).
Gosu didn't seem to have such a clear mission statement, which makes it very difficult to know if I'm interested or not.
From what I can glean from the website a lot of Gosu seems to be about adding obvious and much needed improvements to Java, which is fine as far as it goes, but there needs to be a bit more to be truly interesting. Along those lines, I think Scala goes further and is so far more interesting to me.
Not real until you post its operational semantics!
But I really like my semicolons (as much as lispers like their parenthesis)
The JVM runs in more systems than the CLR. Assuming it's not too big, you could possibly use it on Android in the near future.
Dilbert RSS feed
"How many times have you really used this fall through feature?"
All the time actually. Almost every switch I write has multiple cases which all require the same code executed (or not). If you've never come across this scenario then all I can think is you must just do toy coding.
Ada is named after a real person, Ada Byron, Countess of Lovelace, therefore should not be typed in all caps. thx
To me it looks like or a combination of BASIC and Java, or Java in a much more readable form. I personally liked because I always had the opinion that Java works (if you ignore the fact that it uses RAM like water) but could have a more friendly syntax.
After all, a programming language syntax does not need to be "encrypted" to be effective.
Religion: The greatest weapon of mass destruction of all time
I dunno, maybe flash is better? Flex can certainly do everything Gosu appears to do!
America, Home of the Brave.
A quick look at the documentation shows that objects/classes are strongly typed, but scalars (i.e. integers) apparently are not. In my experience, you're much less likely to add Apples to Oranges, than you are to add Count of Apples to Count of Oranges. And that also holds true for scalar values used for array indexing, etc.
So it seems to me that no language should be called 'strongly typed' if it doesn't include a complete type system for scalar types.
Two weakest points of Java are:
1) Date/Time objects
2) Generics
as compared to C#/.Net -- having worked professionally in both. No langauge is going to fix these two.
(Though you can use Joda for date/time handling.)
I am sorry for saying this, and I say it with all good intentions, but this language seems completely uninteresting to me. There is already Scala, Closure, JRuby, and a myriad of other JVM languages.
I'm not sure you know what type inference is. I'll give you a hint, it's evaluated at compile-time.
<xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
ROFL
Ok, garbage collection.
. . . and portable byte code . . .
OK, OK, garbage collection and portable byte code.
uh, the JIT, yes, the JIT
Well alright, garbage collection, portable byte code, the JIT . . .
. . . and libraries. Lots and lots of libraries. And exception handling and stack traces tied to source-code line numbers. Used to be you had a runtime exception and you had to be up all night. We get to go home at night now.
Here we observe the later stage of the life cycle of the ancient javan fanboicus extremis. Scientists believe that the first of the species was born in the Sun Microsystems booth at a Comdex convention in the mid 1990s (reportedly from a fling between Grace Murray Hopper and James Gosling.) From there the species propagated by its strange inter-species relationship with management. Similar to the tape worm reproductive cycle (Taenia solium), the javan first infects the management of the organization by later stage infected programmers (salesmen) who have been infected coming in contact with management of the organization. Usually promises are made and buzzwords (the mating call of management) are dropped. Similar once again to the tapeworm life cycle the infection of a new host is caused by cysts being eaten. However, in this case those in the management cycle force feed the cysts to the programmer cycle. At first the new programmer recoils in disgust at the Javan experience. This is followed by the first sign of infection; browsing infective books and as the disease progresses - buying them. As the infection commences the programmer is told to like the experience, overriding any natural senses and instinct. In the second stage the programmer still has a mild distaste and at some basic level realizes they shouldn't be having the feelings they're feeling. In final stage infection the programmer can be seen tossing and turning in bed saying "pure java..... it .... must... be in .... pure java..." and things like that. During this stage it is common for programmers to begin writing everything in Java. Shortly afterward they begin reproducing by attempting to create other Java programmers. Although their chances of actual sexual reproduction go down significantly after infection.
It's easy to be immunized against javan infection, but no instant cure is now known. And immunize those you know and love. It's important to remember that ultimately this is a parasitic infection. Java causes many reams of code to be written in Java that should never be. It adds a minimum of 30% to development time. And contrary to typical management mating calls, because of the thousands more lines of code Java takes to express ideas, it costs many times more for long term support. Like COBOL before it, it rarely dies until the host dies. So the infection can only be prevented, not cured. Keep safe, and always use a prophylaxis.
I have a theory that the truth is never told during the nine-to-five hours. - Hunter S. Thompson
Just stop with the new (but just rearranged) same old languages:
Basic,
C,
C#,
C+,
C++,
COBOL,
Dyalog APL,
Eiffel,
F#,
Java,
Javascript,
Jscript,
Mercury,
Mondrian,
Oberon,
Pascal,
Perl,
Python,
Salford,
SmallTalk,
Standard ML,
VBscript,
Visual Basic,
VisualJ++,
Really...isn't it time to rethink all of these different, but same (except for the whacko Python,PHP stuff) and come up with one standard language? Extend it with different libraries if you want, but this dreaming up a new language that is pretty much the same as all the others except the line ends with ";" or you declare the type first instead of last or assignment is "=" except when it's "==". Or iterative structures that all work the same but all have different syntax? WTF people?
Think of all the talent locked up in someone who has done language A for 10 years but is totally useless to you because your project uses language B? The concepts are the same, yet people's knowledge is arbitrarily walled off in this development environment or that environment. How can this be considered good?
Innovation doesn't mean re-inventing the wheel.
When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
OK, replying to myself because I obviously didn't have enough coffee yet:
They list as the benefits over Scala - Extensible type system - Easy transition from Java - Reified Generics
From those 3 points, only the last one sounds useful...
You are kidding right? In reality-land, for better or worse, #2 is probably as important of all for a lot of Java shops as #3 if not more. Type erasure sucks balls, but we can get it to work (just as we were able to write good working code without generics.)
Adoption and ease of transition are things people tend to undervalue/underestimate. Being able to leverage a language with better qualities with as little code change as possible is certainly an enormous, practical incentive. For me, I would give an eye to work on something else (Scala, Ruby/Python on the VM or Clojure), but the reality on the ground is that something like Groovy (using the Groovy++ compiler, though) is the most likely candidate for adoption given its easier transition.
Gosu seems to embrace the good qualities of next gen JVM languages (and C#) without a substantial deviation to the syntax.
Necessary /. anti-fanboy disclaimer: Before the /. fanboy crowd displays their usual lack of reading comprehension, I'm not saying that Java syntax is superior or that the syntax sported by the other JVM languages is deficient or bizarre. I'm simply stating the fact that there is an associated, practical cost of transition (in terms of education, time of getting proficiency, possible introduction of coding errors, etc) that is proportional to the syntax differences that need to be overcome - this without considering the external pressures of writing software for solving problems in the right here and right now.
With infinite time and resources, and zero friction from requirement/requirement changes and organization dynamics, syntax differences would not matter. AFAIK, that is not the context in which programming shops operate. . Another important addition is the use of delegates. Oh my, I can only think of the possibilities we currently can only do in Java with a lot of boilerplate.
I know it can be difficult to select a name that sounds good and it's not (?)offensive(?) on all languages, but here is the thing about the name "Gosu":
"Gosu", in (BR) Portuguese, sounds exactly like "Gozo", which is one of the many names given to the byproduct of male ejaculation. On the other hand, in (PT) Portuguese, "Gozo" is the world for pleasure.
This thing runs on a JVM, and I derive no meaning of "Gozo" from that fact...
A proper language would let you put more than one thing in the same logical group without needing to fall through.
For example in Ada you could have (case is Ada's version of a switch, it doesn't fall through) :
CASE letter IS
WHEN 'a' | 'e' | 'i' | 'o' | 'u' =>
vowel_processing;
WHEN OTHERS =>
consonant_processing;
END CASE;
I use fall-through all the time. Just sayin'.
Karma: Poor (Mostly affected by lame karma-joke sigs)
It's not actually that questionable. Patents are rarely overturned because of pre-existing art, and Sun certainly knew about Smalltalk and Lisp when they filed the patent.
Really, when was the last time you ever heard of a patent dispute being resolved with the patent being thrown out? If one-click-purchasing can hold up, then JIT compiling patents certainly can.
Qxe4
Is this some sort of straw man they are throwing out to see if Oracle will "Go sue" them? If not then what is the source of the name?
My boy, my boy!
I've used fall-through on occasion, but I leave a comment:
I consider an accidental fall-through to be far more likely than an intentional one.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
The comment is only if you actually have extra code before the fall-through. For example, no comment here:
A case like this does:
The first case, although technicly fall-through, is not what I think of when I think of fall-through, since no extra code is executed.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
*whoosh*
My post was tongue-in-cheek, and it was coming from a Java programmer (me) of several years.
You're right, C++ sucks for enterprise application programming. Which is why it shouldn't ever be used for it. And for the same reasons that Java should never be used for it. Java and C++ suck at user interfaces. A person can only know this if they've both used Java and other more modern tools to create enterprise applications. See the link in my previous post for more details. It is the opposite of fast turn-around and rapid development. There are better, faster and less headache inducing ways now. Just look at how much Java IDEs suck at this, despite thousands of man-hours and great talent developing them. This is not the fault of the developers, this is the fault of the language. And it's time people begin progressing away from Java, in the same way we should avoid writing things in COBOL or APL.
The reaction to my post is kind of why I made it in the first place. Why be so upset when somebody criticizes your language? It seems to me to be a kind of fundamentalism. And the more crappy the religion the more angry and vicious are its fundamentalists.
I have a theory that the truth is never told during the nine-to-five hours. - Hunter S. Thompson
Think of all the talent locked up in someone who has done language A for 10 years but is totally useless to you because your project uses language B? The concepts are the same, yet people's knowledge is arbitrarily walled off in this development environment or that environment. How can this be considered good?
Innovation doesn't mean re-inventing the wheel.
Sounds like inexperienced programmers. The first 10 languages you learn are challenging, after that it's all syntax and frameworks.
Now then, some languages are bundled with extremely baroque and quirky frameworks which can suck up most of your development time. But this language is actually doing it right - by being Java-compatible on the JVM, the programmer can recycle his Java Library knowledge. Parrot is another similar approach, where Perl, Python, Ruby, etc. programmers will be able to trade libraries.
The bigger problem list is probably:
JDK,
CPAN,
Gems,
STL,
PyPi,
etc.
These might be worse - they're largely duplication of labor, whereas the languages are at least trying to do something different.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
I am not sure what the "extensible type system" means
It means that you can add methods or properties to a class without subclassing it. This feature is one of the very few things that I actually like about Objective C.
http://gosu-lang.org/doc/wwhelp/wwhimpl/api.htm?&context=gosu&src=enhancements&topic=Using_Enhancements
It also means that Gosu supports custom type loaders that dynamically inject types into the language so you can use them as native objects in Gosu.
For example, custom type loaders add Gosu types for objects from XML schemas (XSDs) and from remote WS-I compliant web services (SOAP). Later versions of the Gosu community release will include more APIs and documentation about creating your own custom type loaders.
Modules of code containing type loaders can create entire namespaces of new types. This means that a type loader can import external objects and let Gosu code manipulate them as native objects. There are two custom type loaders that included in Gosu: (1) Gosu XML typeloader. This type loader supports the native Gosu APIs for XML. For more information, see "Gosu and XML". (2) Gosu SOAP typeloader. This type loader supports the native Gosu APIs for SOAP.
The first Gosu community release does not yet include these add-on typeloaders that support these APIs due to in-progress changes in bundling add-on typeloaders. The Gosu documentation describes the XML and web services APIs right now so you can become familiar with these upcoming APIs.
For more information http://gosu-lang.org/doc/wwhelp/wwhimpl/api.htm?&context=gosu&src=intro&topic=Extensible_Type_System
You're awfully confident, but I promise you you're wrong.
Here's a starter: You can't store a string in a statically-typed integer variable. Its type is determined at compile time. One language that has support for both concepts, C#, added support for type inference with the "var" keyword, and then later added support for dynamic types with the "dynamic" keyword. C++0x (more like C++0xff amirite) will support type inference, but not dynamic typing. I'll even save you the trouble of looking it up: http://en.wikipedia.org/wiki/Type_inference
You should also look up the definition of heuristically. There is no language I know of that will allow any ambiguity in an inferred type--it is a set series of rules, with either a deterministic outcome or a complile-time error. That's not to say they can't use heuristics to make a guess as an optimization, but when you say it's chosen heuristically that implies that it's the base algorithm.
As an end note, I'm being polite because you sound like you might be going into the field, and when people misunderstand basic concepts it makes my job suck, and calling you a willfully ignorant asshole isn't going to help anything. Hopefully learning that you don't know everything will encourage you to not be so certain you understand things you don't, and you'll be more careful in the future so the rest of us aren't stuck cleaning up some horrible mess of code.
<xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
At least the mods are doing a good job.
<xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
The Hitchhiker's Guide to the Galaxy has this to say on the subject of
"Slashdot trolls":
** Entry Begins **
Slashdot Trolls (Homo Sapiens Asshatus) are an offshoot species that came
into existence seemingly for the sole purpose of serving as proof of
concept of "John Gabriel's Greater Internet Fuckwad Theory." The
Conspiracy Sciences Agency of Omicron Perseii 8 has speculated that John
Gabriel himself is responsible for the formation of these pests. This is
generally disregarded, as other researches discount this theory outright
with the scientific argument: "duh."
Slashdot trolls are formed when a human of sub-normal intelligence and
insufficient parental supervision is given access to a large audience
and the cover of anonymity. The atavism is generally immediate, and
brings with it a number of physiological changes: thickening of the
cranium, increased adrenal output, a 90% decrease in cerebral activity,
and Tourette's syndrome in 99% of cases. The most common and clear
marking of the slashdot troll, however, is the marked molecular change in
the victim's pheromones. This results in an ever-present, overpowering
stench, often described as smelling like bovine excrement.
Most baffling, however, is the inexplicable aura of anti-Cluons the
Slashdot troll emits. This field renders the victim completely resistant
to all known cures for stupidity in the galaxy, save for death by blunt
force trauma. It has the added function of attracting weak-minded and
gullible individuals into entering debates on various subjects with the
troll. Since these "discussions" are incapable of being rational or
intelligent, due to the Universal Conceptual Value Metric ("The value of
any discussion can be found by multiplying the IQs of the
participants") they simply provide the troll the negative attention it
requires to survive.
These individuals are referred to as "Troll-feeders," though they are
known to be called much worse when they actively engage the troll in
conversation. "Troll Feeding" is currently a 3rd degree misdemeanor on 7
planets, a second-degree felony on 21 planets, non-actionable on 3
planets, and a capital offense on every civilized planet, save for Vega
2. On Vega 2, troll feeders are locked up along with the trolls for life
without parole.
As of this writing, the Civil Rights movement on Vega 2 is currently
protesting, seeking a death sentence in the name of mercy.
** Entry Ends **
You lost me at "Java"
"MichaelKristopeit172" is operated by a pathetic individual attempting to steal my identity. to the individual responsible: present yourself to me; admit what you've done and i will bring upon you the ultimate punishment for your transgressions.
you cower in the shadows of others... why? what are you afraid of?
you're completely pathetic.
"MichaelKristopeit172" is operated by a pathetic individual attempting to steal my identity.
to the individual responsible: present yourself to me; admit what you've done and i will bring upon you the ultimate punishment for your transgressions.
you're an ignorant hypocrite.
"MichaelKristopeit172" is operated by a pathetic individual attempting to steal my identity.
to the individual responsible: do you want to die? do you think i couldn't find you? why haven't you chosen to present yourself to me? why do you cower?
you're completely pathetic.
is this why you cower? are you afraid of me? do you think i'm more than capable of taking your life? is this why you pretend to be me? do you wish you were me? do you NEED to be me? OR do you just NEED to NOT BE YOURSELF?
you're completely pathetic.
"MichaelKristopeit172" is operated by a pathetic individual attempting to steal my identity.
to the individual responsible: i assume you welcome death. present yourself to me; admit what you've done, then i will bring upon you the ultimate punishment for your transgressions.
you spend your days pretending to be me... i spend my days being me. why do you cower in the shadows of others? do you NEED to be me, or do you simply NEED to NOT BE YOURSELF?
you are NOTHING.
"MichaelKristopeit172" is operated by a pathetic individual attempting to steal my identity.
to the individual responsible: i assume you welcome death. present yourself to me; admit what you've done, then i will bring upon you the ultimate punishment for your transgressions.
Copy, paste, copy, paste. MK Fail. Pathetic.
to the individual responsible: i assume you welcome death. present yourself to me; admit what you've done, then i will bring upon you the ultimate punishment for your transgressions.