4 ms·
> I think it just really demonstrates how hard it is to please people with syntax There's no silver bullet just like anything else. It's a matter of preference
by hello_moto 7y ago
> I think it just really demonstrates how hard it is to please people with syntax
There's no silver bullet just like anything else. It's a matter of preference.
Generics is fine (exist in C++ and Java). Although I dislike crazy generics <T<S>> but that could be design problem.
<'a> (yeah technically it's just the 'a.
"->" non-alphabet, I came from C family (C/C++/Java) so return type stated earlier as part as the whole long-train of ceremonial stuff alongside the modifier (public static int myMethod)
Pointers and Reference: not my cup of tea but I understand it's important for system language. Others can argue its importance for "business apps" (or web-apps) but I never need pointers and references so _shrug_.
semi colon after input parameter:
query: &str
vs
string query
contents: &'a str Vec<&'searching str>
<--- the fact that now you can combine these non-alphabet stuff together => "&'a".
vec![] => exclamation mark squeezed between what appears to be a keyword "vec" and an array syntax
Again, don't get to riled up. I just personally don't enjoy reading syntax like this.
- sbov 7y agoGiven their requirements, I'm not sure they could figure out a way to do this that would satisfy you. The syntax choices Rust made don't seem any stranger than e.g. Go. Rust just has more concepts because of what it's trying to accomplish.
- hello_moto 7y agoOf course, of course. I'm not asking them to satisfy me. I'm not in the field of system programming/embedded software. I'm more in app-development.
- asdkhadsj 7y agoIt's funny, ~10 (maybe 15 now? yikes) years ago I was totally in a similar boat. Hardcore Python, felt that syntax was gross and brackets were dumb, etc (not that this is how you feel). Over the years I have just grown repeatedly to love static and typed. The larger my code bases the more it (dynamic features) always seemed to be something that caused me trouble. Typed languages felt bad for prototyping, but as time went on that argument of mine just didn't seem to hold water. I definitely don't feel that way now. And, while I do like Rust's syntax, and have grown strangely fond to the syntax coined "The Turbofish" ::<>, I just haven't seen a typed language that can do what Rust can with a vastly more simplified syntax (ie, Python). I imagine it's not possible, but I'm not making claims here - just thinking out loud. Of course, Haskell and friends might be near that camp, but arguably even if the language is as powerful I'd they're too different to qualify for my statement. Anyway, not trying to convince you of anything. Just thinking out loud. Carry on friend :)
- hello_moto 7y ago> felt that syntax was gross and brackets were dumb This is how I feel when I saw any languages that utilize special characters. It is shorter, I give you that, but that shortness is taxing my brain. No, I'm not asking for convincing as I mentioned I'm not the target audience of Rust (system programming, OS, etc). Ironically at college my specialization was System Programming, OS, and Database. Pretty much infra stuff that Rust serves well :). Not sure what happened along the way that changed my mind.
- deleted 7y ago[deleted]
- ynx 7y agoFYI, "->" is C++ as well, as of eight years ago. This is a valid C++ declaration: auto multiply (int x, int y) -> int;
- hello_moto 7y agoThanks. I never caught up on C++. I had glanced over it (C++ 14/17) a few months ago and I recalled they added MORE crazy stuff on top of already souped-up language. One of the many reasons why I stick with Java.
- eximius 7y ago> vec![] => exclamation mark squeezed between what appears to be a keyword "vec" and an array syntax vec![1,2,3] declares a vector of [1,2,3]. But it isn't `keyword` ! `array`, it's more like vec(1,2,3) where vec is a variadic function. But instead of being a function, its a macro so its done at compile time using AST transformations. Basically, `vec` isn't special, `!` is. `anything!()` or `anything![]` are ways to call macros. I don't recall the exact transformation, but vec![1,2,3] is basically equal to let v = Vec::new(); v.push(1); v.push(2); v.push(3); It's not quite equal because it might initialize with Vec::with_capacity(N) where N is the number of args, but you get the point.