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 - "wk239"
-
"Pythonists don't comment, they write readable code."
Yea, tell that to the list comprehension with three lambdas21 -
Assembly...
Do I really need to say more? Okay, it's low level so there is no abstraction. All you deal with is cold naked mathematical truth and physical limitations.
It's still ❤️8 -
C has too much undefined behaviour because the standards comittee was being lazy and slapped that on a lot of issues that ought to have been implementation defined instead.
The most ridiculous example for UB: An unmatched ' or " character is encountered on a logical source line during tokenization.
Like WTF, that should be a compile time error, and it's easy to detect.21 -
In PHP (yes, it's a language I... don't hate) I've always hated exceptions. They're like GOTO, in an OOP world with interfaces and contracts, try/catch is really odd as it breaks a promise about returning with a typed value.
But you can now do this in PHP8, which comes pretty close to Maybe/Either monads (Option, Result whatever it's called in other languages):
function getUser(): User | UserNotFound
PHP8 unions don't come with the same strong guarantees as in other languages but *pets PHP gently on the head* you did well, my boy.
Now I would really love it if PHP9 could do:
function getUsers(): Collection<User>
Type Tree<T> = Null | Node<T>;
function 🎄(): Tree<Branch<Ornament|Light|null>>15 -
Don't get me wrong, Dart is a darling. But also at the same time is like that one time you thought you found a good band and end up reading their wiki and one of the members turns out to be a wife beater.
Feels so good at the beginning and you feel you can do anything until you see the shortcomings and feel weird about committing time to it. -
C and C++ want people to use them, but make people pay for the standards. Sure, you can download a draft, but it's not guaranteed that's what's in the standard.
What is the point of a standard if you disable people from conforming to it?8 -
Bash
Has pretty much everything you may need, except for a TCP/UDP server functionality.
I mean, if it has a built-in TCP client -- why not create simplistic TCP server?
WHY???21 -
php's type hints are completely broken.
Why is strict mode not the default? Why does it completely break down for arrays? (You have to abuse phpdocs to get any meaningful hints but you still lose any runtime checks.) What's with union types? (I know, php8 now has them but what took you so long.)2 -
I love Ada, it seems to be a pretty unpopular opinion, and maybe I’m biased because the best organized project I’ve worked on happened to be in Ada, but that’s association not causation.
However, the lack of multi-line comments in a language made to have specific custom type compliance seems like a fairly decent oversight. Wouldn’t you expect the authors to want to explain about their types?
The other thing that is a draw back about Ada is searching for help. I love the Americans with Disabilities Act as much as anybody, but but somehow “Ada language types” will still bring up ADA info. (Yes “-disability” helps but it’s an extra step)5 -
CSS is utterly retarded but I can’t help but be impressed by how well the DOM still works in this day and age. The fundamental structure hasn’t changed since the 90s.15
-
Well I program in PHP, JS and C#.
Weak typed variables are literally the worst thing ever.
In C# I particularly hate the way callback as handled9 -
C++99, C++03, C++11 and C++14
I love when your design finally ends up working, looks good and it's running as fast as Usain Bolt, but why the hell does OOP has to be so ugly and clunky in C++? Constructors and copy constructors designs are barf inducing. Yes I am trying to make it as readable and neat as possible but it still looks like shit overall. And related compiler errors are almost always retarded or unhelpful even though I'm used to it now.
I know you will tell me "why are you using those old ass versions?". Well unfortunately in embedded you are stuck with old crap until some envoy of the gods finally up the standards... or if I do it myself for a specific platform.2 -
Rust is a beautiful language. Fast, safe and system level.
The best and worst part of the language is that it has no inheritance.
Oh, and the super slow compile times really do suck.2 -
Worst part of coding lang I love?
C# being case-sensitive.
Not a C# language thing, but I hate the vilification and anti-coding standard of not 'allowing' prefixes. Interfaces are allowed (ex. IUpdateCustomer), why not classes? Why can't I have a DTO and declare it a TCustomer and the zealots not scream "HE'S USING HUNGARIAN NOTATION!!! TAKE HIM TO THE STAKE!!"?24 -
C# has static binding by default. Meaning methods aren't overrideable unless you specifically tag them as virtual. I love how in java you can take someone else's random class and override everything with some additional or alternate behaviour.13
-
the one that exists (c#) seems underused compared to where it could (or even should) be used. and the place that uses it the most (enterprise) butchers and mangles its use, just as enterprise tends to do with everything.
the one that i'm designing... the fact that it doesn't exist yet, and that even as i'm zeroing in on syntax and philosophy that i'm very much starting to be proud of, i still don't have a proper idea of how to implement even the most basic parser/interpreter for it, not because it's in any way difficult or unusual, but just because... i've never done that before, so i get into weird circular thought paths that produce weird nonsensical code...
... on top of that, i still only have a very, very fuzzy idea of how will it (sometime in extremely distant future) actually implement the most interesting and core feature - event-based continuous (partial) re-parsing of the source code and the fact that traversing the tokens at the leaf level of the syntax tree should result in valid machine code (or at least assembly) that is the "compiled" program.
i *know* it's possible, i just don't yet know enough to have a contrete idea how exactly to achieve it.
but imagine - a programming language where interactive programming is basically the default way of working, and basically the same as normal programming in it, except the act of parsing is also the (in-memory) compilation at the same time, so it's running directly on the hardware instead of via interpretrer/vm/any of that overhead crap.
also then kinda open-source by definition.
and then to "only" write an OS in that, and voilá! a smalltalk-like environment with non-exotic, c-family syntax and actual native performance!
ahhh... <3
* a man can dream *2 -
[worst part of a lang i love]
Not really the language, but i hate how sbt works, it compiles small projects instantly, but really slows down at a certain size, and it seems very deterministic. It stays the same speed after that, but once you hit that project size it just immediately starts being slow. -
The amount of boilerplating required to write a simple subject state service on angular.
I still love it tho. Very organized. Allows better thinking by explicitly stating the registered services in modules.2 -
C#
Lately there have been a lot of new features for the language itself, and I fear that a lot of them make the language more and more convoluted.
Also AoT Compilation should be pushed more, but that might just be my opinion.14 -
Typescript is my new favorite and my grudge is the stupid scoping of type assertions. I have an async function that checks whether a variable is set and awaits a change event if it's undefined. This function is working javascript but invalid according to typescript, because it relies on the exact type changing while the function is running. I had to convert it to a mess of promises to bypass this because (and this is the best) the callback-based syntax of identical meaning will reset all type assertions, even locals that are never written after the callback's creation.8
-
Worst / best feature of any language:
Lack of / requirement of strict / dynamic / weak / strong typing. Just typing. Typing typing typing just typing.
Having to specify the type in C/++/#, Java/Kotlin is so annoying and delays the project so much by having to do declare weird classes with 3 or 4 fields just because you need it in this tiny line of code.
Not having good type support in JavaScript and Python is a pain in the eyes when you can't find what type each variable is, or when you pass a wrong argument to a function, and when you do, it shows the definition for the type in a .ty or.pyi file and not the definition itself which you have to find elsewhere. Spent half of my uni exams trying to decipher the type while it could've been a piece of cake if you just knew the type.
Love / hate relationship 😝1