- You think programming languages should be closed and proprietary - You like random pauses caused by forced collection of the garbage - You think program start-up should take minutes so you use stupid VM-languages instead - You like broken features and memory corruption - You sell hardware and want to deploy inefficient scripting languages only to sell more - You only do pure programs that don't interact with the world - You are a retard who doesn't understand the concept of ownership
Anything else?
Name:
Anonymous2015-04-12 16:54
>>62 The same could be said about Rust. I don't see any verification or theorem prover mention in their shilling efforts.
Name:
Anonymous2015-04-12 19:22
The problem is fixable. Go through the Rust source. Prove that it is correct. Since you seem so concerned, why don't you do it >>64-kun?
>>65 Thank you. My point is that having source allows a security audit to be performed if one is desired.
If what you really want is a formally verified language, all I can say is good luck with that. The process is simply too slow to practically replace existing languages like C or C++ that were never held to that standard. Merely eliminating a few of the foremost sources of bugs in those languages is a big enough win to justify Rust's existence.
Name:
Anonymous2015-04-12 20:16
a big enough win to justify Rust's existence.
But not big enough to switch. I'd check it at v2.0 to see how they fare against C++.
>>74 I never understood what tabs are or what they're good for. I always use spaces.
Name:
Anonymous2015-04-15 10:36
Rust does not have the "C-style" for loop on purpose. Manually controlling each element of the loop is complicated and error prone, even for experienced C developers.
Experienced programmers are too stupid to be trusted implementing for loops. And here I thought Python's ``developers are too stupid to format their code or press ctrl-shift-f in their IDE to clean up messy code'' mentality was the worst.
Name:
Anonymous2015-04-15 10:52
Smash imperative loop patriarchy, use functional composition.
Name:
Anonymous2015-04-15 10:52
>>80 By the end of it what's left to implement? Also I don't understand how they expect any work to be done when the tools keep getting more and more complex.
Experienced programmers are too stupid to be trusted implementing for loops.
that is so fucking dumb...
imagine you're stacking shelves do you
a) stack them correctly with a step ladder that makes it easy b) just do it in a really stupid dangerous way e.g. standing on a swivel chair that might fall
you seem to think (b) is "cooler" or more macho - that's just fucking retarded. You need to do every single thing you possibly can to try to make your programming less buggy.
Name:
Anonymous2015-04-15 16:50
>>83 If you were truely smart, you'd hire taller stockboys.
>>84 Holy shit that's a good idea. I go fire all my current stockboys and hire new ones. Thanks!
Name:
Anonymous2015-04-15 17:56
>>80 Rust is just codifying what C programmers already do in practice. Approximately 95% of the loops people write are idiomatic ones that sweep the induction variable with a constant step over a fixed range with no dependencies between iteration steps. The other 5% have bugs. Every time I read a loop that doesn't match the idiom it is a big red flag.
If you are really doing something tricky in Rust you will be clever enough to use a while loop instead. And, since tricky cases are the only cases to prefer a while loop in Rust, anyone who reads code that uses one will immediately see that there is funny business at work.
And here I thought Python's ``developers are too stupid to format their code or press ctrl-shift-f in their IDE to clean up messy code'' mentality was the worst.
This isn't a problem. There are ~infinity ways to represent what you want to loop over in Rust and you can plug most of them into for.
If you want to complain about not trusting the users, just look for evidence of their policy against implementing anything that was a good idea in Haskell. The core devs seem to hate the fact that, yes, actually, you do need to have monads in Rust (Result, Option.)
But even with their thought-policing, the Rust project comes nowhere near Python's self-sabotage for the sake of meaningless dogma.
>>97 Assuming the optimizer doesn't already do that, it's just not going to happen unless you can write the optimization pass in the type system and get your PR accepted.
You like using programming languages that actually make working on the BSDs a priority.
Name:
Anonymous2015-04-20 4:03
fn main() { let mut x = 5; let y = &mut x; x = 1; } This causes an error. For some bizarre reason they won't allow you to have two ways to access one variable, even if both are marked mutable. Since you created a pointer to the variable you're only allowed to access the variable through that pointer from now on. What the fuck were the devs snorting?
>>106 It's to prevent aliasing, but unlike restrict it actually works: it's safe, amenable to optimization and won't trigger UB. And it's there all the time.
See that? left_sum and right_sum were moved out of the current thread but we got them back implicitly without having to ask for them. We didn't have to write types in the closure, nor even lifetimes.
This is why Rust was made for, and it's good at it. It throws raw pointers at threads and gets them back when it needs them. But it never stomps on them. As a result, Servo is the only layout engine to successfully parallelize layout anywhere near as well as it does:
(Different colors = different threads. The first one is newer.)
They weren't willing to try this in C++ because they felt they needed to throw raw pointers around for speed, but aliasing was too dangerous (and likely) in C++. So Graydon dreamed up Rust and they quickly set to ruining its syntax just prior to bootstrapping it so they can court the C++ users.
Name:
Anonymous2015-04-20 7:46
I don't care if the syntax is ruined. It's still the most promising language out there.
except with the difference that * there is no mathematical model for it, they're just riding by the seats of their pants hoping its all going to be "safe" despite memory safety bugs constantly occuring * they market the fuck out of it so even though it's inferior to what cyclone did decades ago it's GOING to become the standard that everyone uses
Name:
Anonymous2015-04-20 14:08
>>109 I wouldn't go that far but it is the most promising/important new language in the industrial space.
Name:
Anonymous2015-04-20 14:08
420 blaze it
Name:
Anonymous2015-04-20 14:24
>>26-46 Golden discussion. I hereby grant it a place in the hall of fame.
Unlike some other languages, this means that Rust’s char is not a single byte, but four.
Name:
Anonymous2015-04-24 18:08
The N is a compile-time constant, for the length of the array. array access is bounds-checked at run-time
Name:
Anonymous2015-04-24 18:11
Rust does not have the “C-style” for loop on purpose. Manually controlling each element of the loop is complicated and error prone, even for experienced C developers.
Name:
Anonymous2015-04-24 18:25
What is its analogue of the double type? Does it check any constraints on its use at run-time?
Name:
Anonymous2015-04-24 18:27
>>119 I fail to see the problem. As long as they don't pull a HASKAL and use UTF-32 strings, this is the correct way to handle characters.
Rust doesn’t have method overloading, named arguments, or variable arguments. We employ the builder pattern instead. builder pattern pattern
ENTERPRISE-GRADE SCALABLE TURNKEY LANGUAGE
Name:
Anonymous2015-04-24 18:49
If you try to return a closure, you may run into an error This gives us these long, related errors So we’d write this: But we get another error Right. Because we have a reference, we need to give it a lifetime But we get another error So what to do? This almost works There’s just one last problem With one last fix, we can make this work:
fn factory() -> Box<Fn(i32) -> i32> { let num = 5;
Box::new(move |x| x + num) } let f = factory();
let answer = f(1); assert_eq!(6, answer);
Name:
Anonymous2015-04-24 18:52
>>127 For comparison, in Haskell this would be just:
factory :: Int -> Int factory x = let num = 5 in x + num
answer = factory 1
Name:
Anonymous2015-04-24 18:57
Rust, with its focus on safety transmute allows for arbitrary casting, and is one of the most dangerous features of Rust!
Name:
Anonymous2015-04-24 19:05
If Rust’s macro system can’t do what you need, you may want to write a compiler plugin instead. Compared to macro_rules! macros, this is significantly more work, the interfaces are much less stable, and bugs can be much harder to track down Syntax extension plugins are sometimes called ‘procedural macros’ for this reason.
Hooray for no reader macros! Enjoy writing compiler plugins, everyone!
Also it is not possible in stable Rust to destructure a Box in a match pattern The unstable box keyword can be used to both create and destructure a Box
So not only safe vs. unsafe Rust, but also stable vs. unstable Rust?
Name:
Anonymous2015-04-24 19:17
>>133 Thanks for enlightening us in the ways of shitty bloated enterprise design patterns, c2-bot!
A Builder can be one of implementations of the AbstractFactory Sounds like we should have more of a LaborerPattern Isn't this "undo"-enabling behavior the focus of MementoPattern
Expert programmers are so good they don't even need to think. They just apply one of a fixed set of design patterns that they've been programmed to know.
In any situation, an Expert Programmer needs only to choose the appropriate pattern.
>>145 That's a GreatIdea and I think we should do this.
Name:
Anonymous2015-08-09 4:33
Top reason not to use Rust: It's maintained by communist SJWs. It even has a CoC.
Name:
Anonymous2015-08-10 4:55
- HKTs and/or inheritance. - Built-in FFI support for C and C++. Bindings don't count. - Commercially successful and robust operating system. - Tools for devs. (Also, cargo has potential, but crates.io is terrible. Global package names and dependency hell.) - Lose the rainbow docs with the dispropriate font sizes and awkward line spacing - Custom allocators - Improved semantics for writing _Abstract_ Data Types
Name:
Anonymous2015-08-10 7:01
- You don't like the stupid name
Name:
Anonymous2015-08-11 5:45
rust my anus
Name:
Anonymous2015-08-11 6:17
- No default int type - No default string type (ie. confusion about &str vs String) - No inheritance, which the Servo devs themselves have said is a major problem - Immutability by default is both nonsensical and overly verbose for low-level code - The language is overly opinionated about how memory management should work - The language is overly opinionated about how you should name your variables - Type inference quickly collapses into chaos in functions where a lot of bindings are introduced - It's 2015 and we haven't figured out how to get rid of the :: syntax
no one has mentioned the fact that there is no formal model? they're just hacking and hoping the type system is valid without any proofs
Name:
Anonymous2015-08-13 18:15
>>153 What the hell is a "default int type"? A type whose size could be anything from 1 to 128 bit and you can't be sure of anything? You are an idiot.
No inheritance, which the Servo devs themselves have said is a major problem
Well, they were wrong. No inheritance is a big plus.
Name:
Anonymous2015-08-13 18:29
>>156 But an integer can be any size, so why limit your program by placing a range restriction on it?
Name:
Anonymous2015-08-13 20:30
>>157 For that, you need a separate big-int type, not a "default int type". You don't need arbitrary precision by default.
Name:
Anonymous2015-08-13 21:56
>>158 And how is it that you're such an expert on what I need?
Name:
Anonymous2015-08-14 0:19
>>159 He probably means the generic, plural, you. The type will be bound by the multiples of byte anyways so choosing the correct multiple, or better yet, specifying a range for what you need and letting the compiler assign the best storage, are much more performant solutions than having base types of dynamic size.