loading...

What do you dislike about your favorite language?

jess profile image Jess Lee (she/her) ใƒป1 min read

DEV is in the process of launching a podcast and we'd love for you to be involved! We're recording the episodes in advance, and this week we'd like to know:

What do you dislike about your favorite language?

If you'd like to participate, please:

  • Call our Google Voice at at +1 (929)500-1513 and leave a message ๐Ÿ“ž
  • Send a voice memo to pod@dev.to ๐ŸŽ™
  • OR, if you don't want your voice recorded...just leave a comment here and we'll read your response aloud for you ๐Ÿ—ฃ

cartoon-bitter-taste-reaction

Thank you!

Discussion

pic
Editor guide
Collapse
isalevine profile image
Isa Levine

I absolutely LOVE LOVE LOVE Ruby, buuuut I am SO TIRED of typing all these frickin' underscores for snake_case! ๐Ÿ

Collapse
scrabill profile image
Shannon Crabill

I didn't think about it until you said it, but yes, snake_case_is_annoy_to_type.

Collapse
isalevine profile image
Isa Levine

It feels like I always have one finger on the shift key now! ๐Ÿ˜ญ

Thread Thread
scrabill profile image
Shannon Crabill

i_feel_you

Thread Thread
isalevine profile image
Isa Levine

But does your pinky finger feel me? Cuz mine doesn't feel anything anymore ๐Ÿ˜‚

Collapse
zakariatalhami profile image
ZakariaTalhami

I can relate, I use python all the time, but I always feel like camelCase flows better while typing.

Collapse
isalevine profile image
Isa Levine

When I'm switching between Ruby and JavaScript, I always end up writing camelCase for both and needing to rewrite a bunch of Ruby method names. You're so right, the flow of camelCase is just...better! (Which I guess means more efficient to write? Is this really just an issue of number-of-keystrokes?)

Collapse
andrewbrown profile image
Andrew Brown ๐Ÿ‡จ๐Ÿ‡ฆ

but_i_love_underscores.

Collapse
isalevine profile image
Isa Levine

Me too!.......after they're written. Just not before and during. ;)

Collapse
megatux profile image
Cristian Molina

I find snake_case a bit easier/faster to read. It's obvious if you think that "_" it's a better visual separator than a case change.

Collapse
stephanie profile image
Stephanie Handsteiner

Doing PHP I can relate, even more so, because it isn't even consistent about it, some are snakes, some aren't.

Collapse
pris_stratton profile image
pris stratton

JS is my favourite but I really dislike the class syntax that was introduced in ES6. The prototype chain is easy to understand and doesnโ€™t need to be hidden beneath โ€œclassโ€, โ€œextendsโ€ and โ€œsuperโ€ which feel more like Java.

Collapse
omenlog profile image
Omar E. Lopez

I agree with you, and for me the worst thing about the introduction of pseudo-classes is that new developers tend to think about it in the same way that it work in other OOP languages, working on projects and building some things without really understand the inner working of JS

Collapse
pris_stratton profile image
pris stratton

Precisely.

Collapse
notngan profile image
Ngan B. Nguyen

Agreed. I think class was added just to satisfy OOP programmers from other languages, and to confuse new learners.

In JS, the OOP concept is prototype-based. The class is actually just built on top of the constructor function.

Collapse
mskog profile image
Magnus Skog

Ruby is my favorite language and what I really dislike is symbols vs strings. We have a dynamic language with no type checking so...was it myhash["foo"] or was it myhash[:bar]? Oh right I know! It was ActiveSupport::HashWithIndifferentAccess.new(myhash)[:foo]. How silly of me

Collapse
hyftar profile image
Simon Landry

I love Ruby, but I hate that it's pretty much never used for anything other than web. Don't get me wrong, Ruby is great for web and I love using Ruby on Rails but I feel like the world would be just a little bit better if more companies adopted the language for doing something else. I feel like even PHP is more used for non-web projects than Ruby is and I find that mildly infuriating.

Collapse
isalevine profile image
Isa Levine

As someone who loves Ruby and would love to do backend work with it for the rest of my life (even though I know it won't play out that way)--I am very glad this sentiment exists! <3

Collapse
djtai profile image
๐Ÿ‡ฌ๐Ÿ‡บ๐Ÿ‡ฒ๐Ÿ‡ต David Taitingfong

I love Python! But tell me why common classes aren't consistently styled, e.g., in collections, you have namedtuple (all lowercase) and OrderedDict (PascalCase).

There might be a reason, but it bothers me.

Collapse
kbono profile image
Jose Manuel Viloria

This is my pain.

err := functionThatCanAndWillFail()
if err != nil {
   // Handle the error
}

Though It feels like the code flow without having weird exceptions here and there, but still, you know (!!!).

Collapse
jsman profile image
Yusuf Kolawole

I really like Go..just 15days on it though

Collapse
kenbellows profile image
Ken Bellows

Which language is this?

Collapse
rhymes profile image
Collapse
siradji profile image
Siradji Awoual

I feel your pain. I recently started playing with go and I'd say, error handling is a rather bad.

Collapse
omenlog profile image
Omar E. Lopez

I love JavaScript but I dislike the fact that not support immutability out of the box, also I dislike that it doesn't have a proper standard library

Collapse
kenbellows profile image
Ken Bellows

Have you played with Object.freeze()? It makes an object immutable at the top level (though the properties of objects within that object can still be changed)

Collapse
omenlog profile image
Omar E. Lopez

Hi, yes I know about it, as you mention inner objects can be modified unless that you freeze these objects recursively but anyway I don't think that this can be classified as immutability imposed by the language itself

Thread Thread
kenbellows profile image
Ken Bellows

So imagining that it was recursive, would you want immutability to be the default behavior rather than having to apply it with a method?

Thread Thread
pris_stratton profile image
pris stratton

I guess he wants const to really mean constant =)

I think a nice way to ensure objects are immutable is to use a closure when constructing them and only return getter methods, like in Douglas Crockfordโ€™s constructor example.

Thread Thread
omenlog profile image
Omar E. Lopez

Yes can be, immutable by default but at the same time giving the option to developers of make some value mutable, similar at how mut keyword work in Rust, I like that approach, in this way you can work with mutable data but immutability would be the main paradigm in this issue

Thread Thread
pris_stratton profile image
pris stratton

Makes sense. Iโ€™d like that feature in JS.

Collapse
lifeiscontent profile image
Aaron Reisman

I both love and hate TypeScript, it's great for all the things it gets right, but there are clear cases that it totally misses the bar.

e.g:

const a = ['hello'];

a[1].toString(); // doesn't complain that it's `undefined`
                          // and causes runtime errors
Collapse
not_jffrydsr profile image
@nobody

Clojure โœจ is a true gem, but as a hosted language, knowledge of the environment (.NET CLR, JVM, V8, CLisp Compiler) is required to troubleshoot compilation/ building errors.

Even ClojureScript has a steep learning wall to setup locally which turns newbies away (that and it's ((()))).
Despite the advantages in being hosted, it takes a weirdo to want to learn such a idiosyncratic syntax.

Check out Higganbotthams beginner-aware tutorial into Clojure

Collapse
roelofjanelsinga profile image
Roelof Jan Elsinga

PHP is wonderful and you can very quickly get things running. The most recent updates to the language are amazing and I'm loving all the new things that I can do like arrow functions and type hinting on class variables.

The one thing that annoys me a lot about PHP is the completely inconsistent names and argument order for built-in functions.

Look at this:

  • str_replace()
  • strtolower()

Why does one have an underscore and the other doesn't? It feels like there is a lot of legacy code still there.

Collapse
megatux profile image
Cristian Molina

Ruby. Controversial:
"{" & "}" , they can be used on hashes and blocks.
Two very different use cases but also very very common things.
I know most of us are used to it, but IMO makes sense to have two separated syntaxis.
Read speed & cognitive load would decrease. Do you agree?

Collapse
dmerejkowsky profile image
Dimitri Merejkowsky

Python's "ternary" operator

foo = bar if baz else baz

Not sure why, though.

Collapse
thefluxapex profile image
Ian Pride

I agree, I'd much prefer AutoHotkey's (or similar): ?:
<TEST>?<IF>:<ELSE>

foo := baz?bar:baz
; Or
foo := (baz?bar:baz)
; Or
foo := (a=b)?a:b
; Or 
foo := ((a=b)?a:b)
Collapse
rhymes profile image
rhymes

Yeah, that's not great.

I often use dicts for dispatching, instead of using if/elif/else

Collapse
maniflames profile image
Maniflames

I really like Rust but let's be honest the syntax is pretty ugly ๐Ÿ˜…

Collapse
ghost profile image
Ghost

why? I've worked with Python and a bit of C and C++, doesn't look ugly to me, looks kinda generic actually, nothing extravagant.

Collapse
maniflames profile image
Maniflames

I think I'm not used to ' as a language feature (other than strings) so lifetimes specifically hurt my eyes in the beginning. Example from the book:

fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
    if x.len() > y.len() {
        x
    } else {
        y
    }
}

There is a lot of memory related stuff in rust as well so tbh you'd most likely use it in combination with more features like traits so it'll look more like this (also en example from the book).

use std::fmt::Display;

fn longest_with_an_announcement<'a, T>(
    x: &'a str,
    y: &'a str,
    ann: T,
) -> &'a str
where
    T: Display,
{
    println!("Announcement! {}", ann);
    if x.len() > y.len() {
        x
    } else {
        y
    }
}

It's not the worst but I understand jokes like these even though rust is nice ๐Ÿ˜‚

Thread Thread
ghost profile image
Ghost

I guess that lifetimes can be a lot to take in, but in my experience is not very often you have to make lifetimes explicit, the compiler usually infers them, I also used C in my university courses so I'm kinda used to pointers and their notation. I have to admit that when I started with Rust I just cloned everything and it moved it was a String, I've slowly started to replace clones and Strings with references so I'm seeing more references in my code, but also getting more used to them. I think is like the smell of your dog or the smell of garlic, you get used to it, the rest, not so much XD

Collapse
felipperegazio profile image
Felippe Regazio

I have multiple feelings about loving javascript so much, and i dont know how to deal with it. its a complicated relationship u.u

Collapse
aimerib profile image
Aimeri Baddouh

I've been loving Haskell, but the hardest part of it, at least for me, therefore the one I dislike the most, is how hard it is to manage dependencies. cabal and Stack try their best, and recently I've been getting into Nix to try to solve some of those issues, but for me nothing compares to the flow of developing in Flutter. If the Haskell community could ever get to a point where you never have to worry about dependencies, and the developer experience was closer to the flutter build flow, I imagine the language would see an even bigger growth.

That being said, it is not trivial problem to solve at all. One can always dream though...

Collapse
mteheran profile image
Miguel Teheran

I have been working with C# since 2009 I like it. I prefer strongly typed language but sometimes I hate to make a lot of classes, interfaces, and properties because I cannot mutate the variables. Go is a good balance.

Collapse
mohanarpit profile image
Arpit Mohan

I'm one of the few people who actually LOVE Java. It's a solid language that gets the job done. In the recent past, Java has started to incorporate functional paradigms (which is great).

Unfortunately, stack traces that used to be effective for debugging are absolute crap now. Each stack trace is 200 lines of absolute mess with no useful information whatsoever. I miss the good ol' STFO paradigm.

Collapse
rpalo profile image
Ryan Palo

Iโ€™m sad that โ€˜joinโ€™ is a method on the string you want to glue everything together with in Python, rather than a method on the iterable. I hate typing โ€œโ€.join(thing) ๐Ÿ˜ถ

Collapse
pablodavila_ profile image
SuperAudioFriend

I'm starting to love Elixir as a relatively novice programmer so I can't talk about any technical drawbacks but I'd wish people used it more as it seems to solve many of the web's idiosyncrasies easily.

Collapse
codemouse92 profile image
Jason C. McDonald

I love Python, but there's one thing that drives me nuts about it: negative binary notation. There has to be a better way to represent infinite leading 1s than undoing two's complement and sticking a negative sign in front. It makes bit-twiddling infinitely difficult.

Collapse
fennecdjay profile image
Jรฉrรฉmie Astor

I love Gwion, but

  • it lacks documentation
  • it lacks a community
  • it could have more libraries
  • it could be better written

Yep, that language is my main CI project, it is a tool I use for music/shows.
I'm working on a swig fork right now to address the library problem, and I'm continuously trying to get the code better.
The other problem remains unsolved and are definitively the ones I could use a hand.
I'm updating a swig fork to make

Collapse
gregfletcher profile image
Greg Fletcher

Looking forward to the Dev.to podcast!

My favorite language is JavaScript, although Rust is a close second. I'm just more familiar with JavaScript atm.

Least favourite feature --> function.arguments

Example:

function antiPattern(){

let lol = arguments[0];

console.log(lol);

}
antiPattern('๐Ÿ’ฉ'); // ๐Ÿ’ฉ

It leads to unclear code and I find it's inclusion in JavaScript a huge mistake. It's deprecated now but I just don't understand why it was included in the first place.

JavaScript isn't perfect but it's very approachable I appreciate the amazing community that exists around it. It's like a melting pot of creativity.

Collapse
bugmagnet profile image
Bruce Axtens

Favourite languages don't DWIM. Instead, they do what I say and if I say something stupid they do stupid.

Collapse
sarahk profile image
Sarah Ksiyer

Is it bad that I don't have a favourite?

Collapse
terabytetiger profile image
Tyler V. (he/him)

I love Vue, but sometimes it's hard to find the opening <script> without needing to Ctrl + F for it

Collapse
mrofisr profile image
Muhammad Abdur Rofi

I dont like java, and programming language made from Microsoft ๐Ÿ˜…๐Ÿ˜‚๐Ÿ˜‚, but i like Python, and PHP

Collapse
strzibny profile image
Josef Strzibny

Elixir and immutability. Don't get me wrong, it's one of the best things, but also sometimes annoying. Little bit of mutability can be very nice in many contexts.

Collapse
olegthelilfix profile image
Oleg Aleksandrov

I like kotlin, but a function declaration syntax is a bit annoying, cuz I alway forgot the correct syntax, I dunno why(
Ex:
fun myFuction(a: String) : Int

Brrrr

Collapse
bernardbaker profile image
Bernard Baker

That JS doesn't have python streams.

Collapse
tardisgallifrey profile image
Dave

My favorite language is C, but why is there no getch() function in ANSI or linux!

Collapse
nedimf profile image
Nedim F

Kotlin and itโ€™s null safety features. This is getting annoying โ€˜??โ€™ And โ€˜!!โ€™