Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "wk229"
-
All the stupid date functions where the days range from 1 to 31 but the months range from 0 to 1120
-
Most hated language features?
PL/SQL:
• it exists
XSLT:
• it also exists
PHP:
• it still exists.
VB:
• Significant parentheses: `subName` calls the subroutine, and `subName()` calls the subroutine and gets a return value. If you use the wrong invocation, it yells at you. Why!?
• For reasons unknown, you can only have `sleep` appear once per codebase. (So put it in a function!)
Ruby:
• It’s bloody easy to write code with absolute shit performance, and it kind of feels encouraged because of just how easy Ruby makes everything. Less critical thinking means worse performance, and Ruby’s blissful elegance encourages mental laziness.
• Minor: You cannot pass a hash as the first method parameter without enclosing it in parentheses, ex:`method({key: value})`. This is due to the ambiguous case between passing a hash argument and a (curly) block/proc (`method {|args| code}`). This could be remedied pretty easily with a little bit of look ahead.
• Minor: There is no `elsif` for `unless` (a negated if). Why? No reason given.
Python:
• no block endings, so nested code can be extremely difficult to follow.
Bash:
• The freaking syntax oh god why.
All languages:
• rand vs rand() vs Rand vs Rand() vs rnd vs RND vs random() vs random vs randInt() vs Math.random() vs Math.randInt() vs ...18 -
Java:
Primitive streams. Their need to exist is a monument to legacy failure.
VB.net
OrElse and AndAlso short-circuiting operators. The language designers were too fucking lazy to process logic, so they give specific keywords for those cases.
PHP
Random Hebrew error messages
JS
Eval. It can be used responsibly, but most of the times you see it it's because someone fucked up.
C#
Lack of Tuple destructuring in argument specification. Tuples were added, and pattern matching was added, and it's been getting better. The gear grinding starts with how Tuple identity assignment in arguments is handled. Rather than destructuring into the current scope, it coalesces the identity specification into a dot property of whatever the argument name is. This seems like an afterthought given they have ootb support for ignore characters.
Typescript
This will probably be remedied in the next version or two, but Tuple identity forwarding between anonymous scopes normalizes to arrays of union types, because tuples compile to typeless arrays. It's irritating because you end up having to restate the type metadata in functional series even when there is no possibility for any other code branch to have occurred.12 -
Java's System.out.println because it's too effing long to write!
And in general, all of Java because you need an MB of code just for Hello World.9 -
A lot of the string operations in Python, because they are named like shit.
First you have startswith. No underscore. Just two words glued together. No case notation, nothing. So ugly and difficult to remember when Python isn't your only language.
And then there's tolower. Wait, no, it's actually just lower. If we're gonna stick with the shitty naming, can we at least keep the two-words, no underscore thing? No, I guess it's easier to save those two characters.
And isupper, the function to get supper from your iPhone.
Yeah, it's small. But aren't most of our gripes about languages tiny anyways.3 -
VB CreateObject..
Why?!
Cuz it creates an ActiveX object..
So?!
I am using it to manipulate excel files..
Ooohhh...
Yeah, old code, finally getting around to replacing it, probably with something cross platform too.
But in the meantime, I still have to fix remaining bugs or add small features.. Lately just the latter. I manage to do so, even though it takes a lot more time that I'd like to admit as I'm not coding with VB on daily or even monthly basis...so the goddamn ; are everywhere, fucking with me like I killed the pope..
And the code is horendous.. I'm not even sure if it can be done more elegantly, with lesser lines etc.. but to me it feels like I am powertaping a stick to a robot and hoping it will autoconnect and start functioning as a third arm joined with using electric screwdriver to disassemble a watch..3 -
String.replace and String.replaceAll in Java. Doubly anti-intuitive naming... First it makes you think replace will replace a single instance in the string but aCtUaLlY replace is replaceAllByExactMatch and replaceAll is replaceAllByRegexMatch.
Just as bad are C's fwrite and fseek which have the target FILE* in opposite ends of the parameter list2 -
Java: each type is required being in a seperate file with the type's name, many of my projects have way to many files, half of them for really small interfaces or classes16
-
Numbers implementation in so many freaking languages!!!
Lack of naming consistency, and meaning.
And yes, setImmediate and setTimeout 0...
But the biggest feature issue is that people can code without thinking!!! There should be some hardware security to impede stupid fucks from committing code...1 -
Hated function naming in python, because some functions are like "dothisorthat", some are "do_this_or_that", some are "doThisOrThat", some are, I don't know, what new technique of naming would python devs invent in the near future. Honestly, these naming creeps me out4
-
I wouldn't say any programming language has a function I hate. More like a strong dislike for the groupies.
Although, I mostly hate Perl as a whole.4 -
The document.getElementbyId function . It is so long.
Aldo this probably poes not count but the export function does not accespt whitespace before and after the = sign
So instead of
export PATH = "$PATH:/foo/bar/baz"
You need to write
export PATH="$PATH:/foo/bar/baz"8 -
JavaScript type comparisons. They are annoying, some times they don't make sense and they promote bug making.2
-
Dear Kubuntu 20.04
You're not a programming language but I felt that you fit here in this wkRant so people can see how shitty you became.
It's about 6:27am CET, and you wasted my night, you used to be as simple as sudo apt-get install, now you're mostly PPA first or worse, make. You killed make now we use cmake. We are now looking for debs, which is a pain since you end up in an index site without download here. And the debs now don't work. Missing dependencies. You killed core libraries saying they are now incompatible or obsolete.
All I want is my god damn cli visualiser and osdlyrics back!!9 -
I honestly hate dealing with promises in JavaScript. Asking permissions just to autoplay a video just like the client requested.6
-
Converting javascript/ typescript Map to json
or python date to json
or anything complicated to json is mostly ending with implementing serialization patterns
With date it’s so annoying cause we have iso standards that every language implemented or have libraries
so typescript doesn’t recognize Map<string, string> so you have to convert it to array and then to object
with python you need to make your own serializer / deserializer
So much waste of power usage that if only Greta know it she would say ‘how dare you!’
It can stop global warming.5 -
JS' array function forEach. Why. Why does it exist? How is a function with a callback better than a freaking simple language feature like for of? If I recall correctly, forEach is older than for of, but people still use it nowadays, and too frequently...
Hate it, definitely.
Also, talking about enumeration in JS, Object's "static" method entries. I can't see how it can't be an instance method. Same for keys and values, but I usually don't care about them.12 -
What in the holy hell is a pointer to function and function pointer.I guess they have a purpose, I hate their existence. It's solely because it is complicated13
-
The forEach in JavaScript makes no sense. It looks like a map /filter/reduce but doesn’t actually return the array. Can you please loop like a normal language?8
-
floor and ceil, because in every language they are called differently, and, what's worse, they work differently6
-
I kind of hate people who use the JavaScript array method Array.reduce(...)
It rarely makes sense but makes code unnecessarily complex to read.12 -
substr, substring and any variants
Confusing af. Added 5-sec of Dev time every time I use them because I have to look up just to make sure.
Why can't they be the same? If they're the same, why are they different?2 -
If I kept track of all the hours wasted on issues due to overloads of functions called ToList() it would probably make up a sizable portion of the project budgets.
If I call ToList on a query object, it looks like I'm trying to serialize the query definition into some kind of array. That's what it *should* do with that name. Bonus if the object implements some generic enumerable interface, ToList makes it call your database, you can just toss the query into some json serializer that blocks while calling ToList for you, and people end up doing exactly this because the code turned out so much neater.
Because that's the thing. It's like people implement it because it's "neat" and the user shouldn't care about its internals. How many tears would be shed by just calling it ExecuteAsync? -
This is a massive tossup between RandNoRepeat( from TI-BASIC (returns an int between 2 passed params but tracks what's been given from that range this power-on, meaning if the range is too low IT ENDS UP HANGING THE FUCKING CPU IF YOU RUN OUT OF NUMBERS and it also rolls over and over so it's slow as shit in general) or Python forgetting how the fuck if statements work.16
-
first() function in python...
Because it does not exist
Why have a any() that returns True if any of the items in iteratable are True
But what if I need to get the item itself...
In C it's as easy to write as the any func The performance will be the same6