5 ms·
C++ classes vs. Rust traits isn't just a matter of syntax differences. Btw the function syntax is: fn foo(x: u16, y: u16) -> u32 If it were more C++ like
by ChrisSD 7y ago
C++ classes vs. Rust traits isn't just a matter of syntax differences.
Btw the function syntax is:
fn foo(x: u16, y: u16) -> u32
If it were more C++ like it'd be:
u32 foo(u16 x, u16 y)
Which is less keystrokes if anything.
- jimmaswell 7y agoExactly, they do stuff like fn yet make it longer than necessary otherwise.
- ChrisSD 7y agoI don't think it should be designed to save keystrokes at the cost of readability.
- jimmaswell 7y agoIt already does that elsewhere, yet strange backwards type definitions are much less readable by default to most programmers. It's like making us learn French when we could have learned British English, assuming American English as a starting point.
- ChrisSD 7y agoI think you have to be careful when presuming to speak for "most programmers".
- jimmaswell 7y agoHere, at least 40% of programminging is done in C style syntax. The rest isn't in any consistent majority style. Most programmers are probably most familiar with C style and almost all are familiar in some form. https://www.tiobe.com/tiobe-index/ https://www.tiobe.com/tiobe-index/
- a1369209993 7y agoI don't think anyone's disputing the claim that "strange backwards type definitions are much less [familiar]". We're saying that familiar is not the same thing as readable(-once-you-know-what-it-is), and that you're talking about the former, not the latter.
- Thorrez 7y agoPlenty of other languages including a large percent of recent languages have the return type on the right. Haskell, Visual Basic, Scala, F#, Go, (Rust), Kotlin, TypeScript, Swift. Even c++ allows you to put return types on the right. Why? Because putting the types on the right allows return type deduction. I think it's better to have a single syntax (all types on the right) rather than 2 syntaxes like c++ has. https://medium.com/@elizarov/types-are-moving-to-the-right-22c0ef31dd4a https://medium.com/@elizarov/types-are-moving-to-the-right-2...
- hellofunk 7y agoThis is one of the most trivial points I've ever heard for liking or disliking a programming language.
- vedantroy 7y agoI am not a rust expert, but I assume the recent many programming languages have a keyword for function declaration is so that functions can be first class objects.
- the_why_of_y 7y agoIt depends... if your return type is nested inside a class and you're defining a member function, you'll have to write down a qualified return type name before the qualified member function name, whereas if the return type follows the function name, it can be unqualified because at that point the class extends the scope used for name lookup. http://www.stroustrup.com/C++11FAQ.html#suffix-return http://www.stroustrup.com/C++11FAQ.html#suffix-return
- kibwen 7y agoAmusingly, C++ also supports Rust-style function headers, and has since C++11 (which is well before Rust was ever on the radar; really both C++ and Rust were inspired by ML here). The following two are identical in C++: u32 foo(u16 x, u16 y) auto foo(u16 x, u16 y) -> u32 IIRC there are contexts where the former does not work and the latter is required, which I believe means that ML-style function headers are strictly more powerful in C++ than the original C-style function headers.