this post was submitted on 26 Jul 2026
29 points (70.4% liked)

Technology

86679 readers
2656 users here now

This is a most excellent place for technology news and articles.


Our Rules


  1. Follow the lemmy.world rules.
  2. Only tech related news or articles.
  3. Be excellent to each other!
  4. Mod approved content bots can post up to 10 articles per day.
  5. Threads asking for personal tech support may be deleted.
  6. Politics threads may be removed.
  7. No memes allowed as posts, OK to post as comments.
  8. Only approved bots from the list below, this includes using AI responses and summaries. To ask if your bot can be added please contact a mod.
  9. Check for duplicates before posting, duplicates may be removed
  10. Accounts 7 days and younger will have their posts automatically removed.

Approved Bots


founded 3 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] Armand1@lemmy.world 22 points 2 days ago* (last edited 2 days ago) (1 children)

As other users have said, we aren't compilers.

Types are important for type safety, so you don't access properties that don't exist, can use polymorphism etc. However, having worked in both duck-typing and hard typing languages, I believe the most important part of a type is it's name.

Classes are are arbitrary constructs we create to help us understand and manage code. They are inherently organisational structures.

That may sound like an argument FOR putting the name of the class first. "If I know it's a ConnectionCredentialsQuery, I don't need to know it's name, the use-case is evident!" Classes often get reused though, like a CartesianPoint. You may create several instances of them. Which of the name and type below are more indicative of use?

CartesianPoint PlayerPosition; 

Types are, to some extent, implementation detail. The name tells you what the variable is for, which is more important.

Another point: You will always need to name variables well, because after declaration, whenever you see a variable, you will only see its name. You want to be able to fully understand what you are looking at without having to mouse over or go back to the declaration of a variable.

Additionally, many typed languages will allow you to use a syntax to altogether avoid declaring the type of a variable if derived from somewhere else.

var result = a + b;

var customer = new Customer();

Given that the type can be inferred, and therefore specifying it explicitly is optional, why make it the first thing you see? That means you need to move your eye back and forth when looking for the names of things. Which of these two are better for legibility:

var result = a + b;
CartesianCoordinate playerPosition;
const result = a + b;
let playerPosition: CartesianCoordinate; 

Finally, you say that types are more important because they are important to the compiler, but compilers don't care about the order of these definitions. Compilers exist to allow us to write easier to read code. They exist to convert high level languages to low level byte code. They exist to enable more readable code.

Thank you for coming to my TED talk.

[–] theneverfox@pawb.social 14 points 2 days ago (1 children)

Counter argument - putting the type first makes it easier to see where it is declared. Which is more important than the name or the type

[–] Armand1@lemmy.world 4 points 2 days ago* (last edited 2 days ago) (1 children)

If you're looking for declarations, some languages use const, let or var followed by the name of said variable. That's a little easier to find than having a type name at the start, so I don't think what you're saying gives the other approach an advantage. The indentation is also more consistent with these keywords, which helps.

I realise some languages (like Python) don't use these sorts of keywords during declaration. For those languages it could indeed be a disadvantage.

[–] theneverfox@pawb.social 2 points 2 days ago

What you're saying is more consistent, but I don't think it's more readable

I'm fine with let or var...if the compiler is going to infer the type thats all well and good. But it's a replacement for the type - why would you write both? It should be either or

And if the type is being inferred, the next thing I want to know is where it came from. That tells you the type and more, I don't want to have to see a type name that may or may not be there