Hi Velojet,
I wouldn't normally bother bringing up a post that is over a year old, but it has been listed in the General FAQ and I wouldn't want people new to the platform to be misinformed about the design of Construct 2's event system.
As you're aware, Construct 2's events allow users to "Pick" one or more objects implicitly, rather than assign specific objects to variable names, as you would in a language like Javascript. This is no more a kludge than how the "this" keyword in Javascript is implicitly assigned within a function to a particular object based on how the function was called. They are meant as conveniences. There's a very popular language used to sort, filter, and modify tables of data, called SQL, which behaves very similarly: you ask it to select rows based on the contents of the rows, and then you tell it what to do with each of those rows. SQL does this job wonderfully, and to do the same using Javascript with objects, arrays, and for loops all over the place would be a nightmare. It would feel like a kludge.
Javascript is not the ultimate language. Nor is SQL, C++, C, or even Assembly. The purpose of a programming language is to translate human intention into something a computer can act on. Yes, depending on your needs, it may be difficult or impossible to do what you want with just Construct 2 events, and in that situation, you may need to move to Plugins so that you can code it in Javascript. But for the most part, Construct's method of implicit selection and foreach-style actions is a very powerful and more natural way of expressing intent for the sort of things we want it to do. It only starts to feel like a kludge if you insist on writing your events in the same style you would write Javascript code.
Anyway, I hope you get my point. There are many ways to represent your intent to a computer, and depending on the language chosen, some intents will be easy to express while some will be hard. I always recommend learning more languages (C, Java, Javascript, Lisp, SQL, RegEx) so that one can have a broader understanding of what tools we have available to us as programmers.