this post was submitted on 22 Jun 2025
0 points (50.0% liked)

Programming Languages

1356 readers
1 users here now

Hello!

This is the current Lemmy equivalent of https://www.reddit.com/r/ProgrammingLanguages/.

The content and rules are the same here as they are over there. Taken directly from the /r/ProgrammingLanguages overview:

This community is dedicated to the theory, design and implementation of programming languages.

Be nice to each other. Flame wars and rants are not welcomed. Please also put some effort into your post.

This isn't the right place to ask questions such as "What language should I use for X", "what language should I learn", and "what's your favorite language". Such questions should be posted in /c/learn_programming or /c/programming.

This is the right place for posts like the following:

See /r/ProgrammingLanguages for specific examples

Related online communities

founded 2 years ago
MODERATORS
all 18 comments
sorted by: hot top controversial new old
[–] nodeluna@programming.dev 1 points 5 days ago
[–] Lojcs@lemm.ee 8 points 1 week ago* (last edited 1 week ago) (2 children)
  1. <> is hard to read for humans

Not really. <> is unusually pointy among the brackets and comparisons / bitshifts are used in different places than generics are so I've never confused them.

  1. <> is hard to parse for compilers

I guess? Does this meaningfully increase compilation times?

  1. It makes the uses of brackets confusing and inconsistent

No. A language that uses () for parameter lists, literals and indexing is much more mentally taxing to parse

[–] Lojcs@lemm.ee 5 points 1 week ago* (last edited 1 week ago) (1 children)

Also dropping here the list of contrarian views op listed in the next article:

Language Design: Popular, but Wrong

  1. static members
  2. properties
  3. <> for generics
  4. [] for arrays
  5. Type ident instead of ident: Type
  6. having if-then-else and switch/case and a ternary operator
  7. having both modifiers and annotations
  8. async/await
  9. separate namespaces for methods and fields
  10. method overloading
  11. namespace declarations doubling as imports
  12. special syntax for casting
  13. using cast syntax for things that are not casts
  14. requiring () for methods without parameters
[–] Quatlicopatlix@feddit.org 2 points 1 week ago (1 children)

Yea what is wrong with static members? What do they even mean with "[] for arrays"? Why is that bad? Method overloding is bad? why??

[–] Lojcs@lemm.ee 1 points 1 week ago* (last edited 1 week ago) (1 children)

I'm assuming static members are bad because globals are bad

"[] for arrays" is because they want to reserve it for generics once <> is retired

I think the oveloading thing is about the c/cpp thing where you can define the same function multiple times in the same namespace which yeah sucks imo

[–] Quatlicopatlix@feddit.org 1 points 1 week ago (1 children)

I mean in c/c++ statics arent really globals, you cant acess the from outsside their scope can you? They just retain their value or am i wrong?

[] for arrays is the thing that has been used forever so why should we not use it annymore?

Overloading is also pretty usefull, overloading class constructors is great. I am not a 40 year experience developer but learning c/c++ i never thought that was so bad.

[–] Lojcs@lemm.ee 1 points 1 week ago (2 children)

I have no idea about c/c++ statics, does c even have statics? What kind of a scope could statics even have?

I'm very much novice myself and I never liked the idea of trusting the compiler with figuring out the correct overload and neither do I like not being able to tell which version of a function is being called at a glance. Named constructors ftw

[–] nodeluna@programming.dev 2 points 5 days ago

you can constrain functions with c++20 concepts to ensure the compiler is calling the correct function if you're that worried

[–] Quatlicopatlix@feddit.org 3 points 1 week ago

I mean the thing with overloading is that your functions should have some difference in the paraameters they take, if you make 3 functions that have the exact same parameters of course you will not be shure what the compiler does(alötho i dont think that it would compile? But i dont think that i have ever done that)

If you have a foo(int x float y) and a foo( int x ) function and you call it with just a x as parameter you can be shure the compiler will call your second function. If the compiler for some reasson tried to use the first foo it would throw a error because it wants a int and a float and you just gave it one int.

I am shure that

Foo(){ static int x =0;
X +=1; Printf("%d",); }

Foo(); every time foo is called x increments so print will be 1,2,3,4... for every call of foo

Printf("%d",x); <- wont work because x cant be acessed here, it is out of scope.

[–] soc@programming.dev 1 points 1 week ago (1 children)

If you read more than just the headings, you'd find out that your objections have been addressed in the article. ;-)

[–] Lojcs@lemm.ee 4 points 1 week ago* (last edited 1 week ago)

I have and they are not addressed, that's why I commented as such. How would I know that one of the reasons you think <> are hard to read is because they are used as comparison and bitshift or that you intended () to be indexing syntactic sugar if I hadn't read them? As for the second, I didn't think how different languages managed to parse them matters as long as it doesn't impact compilation times significantly, hence my comment.

[–] anton@lemmy.blahaj.zone 1 points 1 week ago (1 children)

It's a bit of a change but certainly the right thing to do.

My only disagreement with the article is the get/set stuff. I still want to keep something like the old container[index] syntax, maybe container.[index] to indicate that it's a form of access. As long as generics go after names, this would not cause ambiguity.

[–] soc@programming.dev 1 points 5 days ago (1 children)

What's a form of access but a function from some index type to some element type?

[–] anton@lemmy.blahaj.zone 1 points 5 days ago (1 children)

What's a struct, but a tuple with some names?
What's computation but state and a transition function between states?
What's computation but a set of functions transformed by simple term rewriting?
Let people enjoy their syntax sugar.

[–] soc@programming.dev 1 points 4 days ago (1 children)

Wasting a perfectly good pair of brackets on some random function call and then suffering for it in many other places sounds more like syntactic salt.

[–] anton@lemmy.blahaj.zone 1 points 4 days ago

What? I agree with function[T] style generics, and would be willing to change the access syntax to something like container.[index], as the dot makes the difference quite clear. Or do you mean the approach to implementing a container or the way the compiler has to transform it into the set operation/mutable access? I didn't think that was such a problem, and I quite like the way it is done in rust, but that approach may be unavailable to many languages.

[–] ExperimentalGuy@programming.dev -1 points 1 week ago

Stop using types for variables