Rust Programming Language Reaches 1.0 Alpha
c0d3g33k writes: Rust, a new a systems programming language with a focus on safety, performance and concurrency, has released the 1.0 alpha version of the language. This means that the language and core libraries are feature-complete for the 1.0 release. In practical terms, this means that the rate of change experienced by early adopters will slow down dramatically and major breaking changes should be very rare (during the alpha cycle some major changes may still occur if considered necessary). The language will stabilize further when the beta stage is reached (planned for six weeks from now).
I'm a bit Rusty on the subject. Pardon?
I always heard that Rust was like a 3D printed gun. Nifty, if they can ever get it to work.
Rust's raison d'etre is fast but safe programming. It seeks to achieve this by expanding the type system with the different pointer types owned, borrowed, and garbage collected, as well as explicitly unsafe sections of code.
Rust does not however attempt to address array length issues via such type level mechanisms. Instead, they use compile time lengths for arrays and offer for slices for arrays with run-time lengths. That's okay, but it ignores swaths of optimizations.
Ideally, you want a fully dependently typed language like Idris for this because dependent types let you tell the compiler to prove at compile time that two arrays must have the same size.
Idris itself is a research language that doesn't currently worry about speed, but one research topic they're exploring is uniqueness types, which hopefully should provide the "right" abstraction for Rust's pointer types.
Anyways, I sincerely hope that Rust eventually kills off the dumb C style languages like Go, but it's not the last word on fast but safe programming.
oops - replied to wrong question
Pick 2.
Some drink at the fountain of knowledge. Others just gargle.
Why do you think Gimp sucks? It does the job fine. Just has a bit of a learning curve, but once you figure things out it's quite good. Maybe not as powerful as Photoshop, but powerful enough for a lot of jobs.
> Programmers often choose self-defeating names.
> What are some of the others?
Google
Yahoo
Mozilla
Twitter
World Wide Web
"Self-defeating" is in the eye of the beholder. Ain't nothing wrong with "rust" unless you set out to find something wrong.
I'll just wait until next week, when the much more stable version 27.0 comes out.
I actually worked at a place that wouldn't let me use Bouncy Castle cryptography just because of the name. At the time we needed somthing they did that no one else did, so I just ignored them. But you are correct, people will refuese to use things JUST based on name only.
Or ,"go" the language. Utterly ungooglable, and conflicts with at least three other programming languages.
(It's a name that's good for humans but useless for other reasons.)
The creatures outside looked from Alt-Right to Antifa; but already it was impossible to say which was which.
Why? I think it's great that you prefer ADA, but why?
"First they came for the slanderers and i said nothing."
Just the other day I was remarking how few programming languages there are.
I think you gave the primary reasons there.....a bit of a learning curve, and not as powerful as Photoshop.
"First they came for the slanderers and i said nothing."
Everyone uses "golang" due to this. It works fine.
Maw! Fire up the karma burner!
Because it saved Ariane 5's first flight, of course. Oh, wait...
Ezekiel 23:20
Ok, if this is a systems programming language, where is the first RTOS kernel with all the necessary lowlevel bits and pieces to getting it running on a modest modren 32-bit MCU ? Say, any Cortex-M3 ? Device drivers for basics, register access ?
Because, it would be awesome to have all these theoretical safety guarantees and stuff, while programming hardware.
Is there even a cross-compiler ?
http://validator.w3.org/check?uri=http%3A%2F%2Fwww.slashdot.org Errors found while checking this document as HTML5!
Or ,"go" the language. Utterly ungooglable, and conflicts with at least three other programming languages.
(It's a name that's good for humans but useless for other reasons.)
If you think that's bad, trying searching for "IOS" for tips on managing your cisco router. You can add the "cisco" keyword, but then you lose some useful results. This is entirely Cisco's fault for licensing the name 'IOS' to Apple.
It's about time we finally have a language that meets all of our needs, now we don't need so many different languages.
Actually, you just gave good examples of non-self defeating names. The reason they are great is they are unique. Easy to google, easy to talk about.
Every time someone talks about rust in the crucial next two years, they are going to have to say "what do you think of rust? the language, not the game".
Every time someone who hasn't searched for it before and thus hasn't acclimatised their search bubble to finding Rust No Not The Oxidation Result I Mean The Programming Language searches for "rust" it'll be on the third page.
A safety systems programming language sounds great but they had to ruin it by putting a garbage collector in it. This makes it useless for systems programming.
No they didn't: http://doc.rust-lang.org/compl...
And you have Postgre nasal drip. "Microsoft" is also a goofy name, I would note, and that didn't seem to slow the company. It's certainly not very manly.
If you want ideas for future OSS tools, here's a free list:
http://c2.com/cgi/wiki?FutureO...
I like "GazundWidth" and "GezundHeight" myself. "OraFiss" is also cool.
Table-ized A.I.
Regular expressions are named after Kleene's description of regular expressions as an "algebra of regular sets". The only way to make the strings in the language accepted by an RE longer is by use of "*", which is as regular as it can be.
Eh? Out of all popular languages pretty much only ones trivially googleable are Perl, PHP and Javascript, all the rest either need "language" added or are only googlable due to popularity.
I mean, seriously. An Indonesian island? A precious stone? A large snake? A speech defect? A plan or a plot? To strike heavily and repeatedly? Italian word for "stairs"? And the worst offender, simply third letter of the latin alphabet (also used as chemical symbol for carbon, roman numeral "100", average grade in education and tons of other things)?
Rust isn't a good name but I guess it could have been worse. At least it's not called Taint.
I have been using rust during development and eagerly awaited this release. Please be warned, however, that rust has a steeper learning curve than most languages, and be especially warned that the language has been changing faster than the documentation can keep up during the push towards alpha. Last I checked, even things as core as the names of the integer types differ between the documentation and the implementation. I want people to get excited about the language, but I don't want anyone to get an unnecessarily bad initial impression!
I'm not completely sold on the syntax, but I find the design and runtime interesting. I'd like to find an excuse to build something with it, to see if it can live up to its potential.
I started thinking about how I would design a language recently, then I came across rust, and I saw quite a lot of the same conclusions I came to myself. Abstract classes, multiple inheritance, Interfaces with versioning, combining 3rd party libraries... With rust, you define the layout of memory without inheritance, and the implementation of interfaces for types without defining the layout of memory. Neatly side-stepping some of the issues faced by other languages.
All resources and object lifetimes are managed, avoiding .NET's IDisposable. You can combine structures together, which can exist exclusively on the stack, avoiding the "everything is an object on the heap" problem that Java seems to fall into.
Since there's no NULL, there's no NullPointerException. There's no unchecked exceptions, or any exceptions at all for that matter. Though, I might prefer to have them. Sure, there's the try! macro. But that's just syntactic sugar for checking the return code of every function.
09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
Most people try and avoid rust.
I agree, the same happened with Subversion / Subversive etc.
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
Frist of all it does not rely on GC and secondly: why should that be an issue for system programming?
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
To add to this, "regular" is an adjective deriving from the Latin word for a "rule". The use of "regular" as meaning "normal" is not universal in English dialects anyway.
Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
From your link:
How many good OO language exist without constructors? Maybe only javascript. This seems like a terrible decision.
Why do you think Gimp sucks? It does the job fine. Just has a bit of a learning curve, but once you figure things out it's quite good.
So, which nine dialogs do I have to use to accomplish everything that I can do trivially with photoshop layer effects?
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
I want people to get excited about the language, but I don't want anyone to get an unnecessarily bad initial impression!
They're not going to do that if the devs can't even bother to keep the documentation up-to-date. It's absolutely critical to the health of a project that the documentation both exist and be correct. Until that happens, people are going to take the "effort" for what it is, an unprofessional joke. At least C++ is professional comedy.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
Yahoo News (I think) decided to show me a video story about Kim Jong Un not afraid of showing off himself atop a rusty submarine.
That means rust doesn't have as much a connotation of worthless trash as it used to, and/or those stupid media automated system that are based on what's "trending" are happy to show Kim Jong Un stories because people clicked on the Kim Jong Un pictures. Next time the top story was Kim Jong Un flying a plane.
I even read a story about recent discovery of remains of a secret nazi base and ended up looking at a Hitler slideshow at the bottom of the story, nice high quality pics.
So, I'm lost regarding what people think about things and what is popular. (in the twittery web 2.0/web 3.0 scene)
Ada is not intrinsically more readable than C, but places that still use Ada tend to be places with code review cultures that are deeply ingrained in their workflow. This tends to lead to more readable code.
I am TheRaven on Soylent News
Eh? Out of all popular languages pretty much only ones trivially googleable are Perl, PHP and Javascript, all the rest either need "language" added or are only googlable due to popularity.
I mean, seriously. An Indonesian island? A precious stone? A large snake? A speech defect? A plan or a plot? To strike heavily and repeatedly? Italian word for "stairs"? And the worst offender, simply third letter of the latin alphabet (also used as chemical symbol for carbon, roman numeral "100", average grade in education and tons of other things)?
Don't forget the fourth letter of the latin alphabet (also used as the first letter in three elements on the periodic table though can't rate it's own, the Roman numeral 500, a poor grade in education and tons of other things. And apparently something the girls be wantin'.)
From your link:
How many good OO language exist without constructors? Maybe only javascript. This seems like a terrible decision.
Or maybe an informed one. Go and Rust -- objects without class
Besides, Rust isn't an "OO" language. It's a multi-paradigm language that supports pure-functional, concurrent-actor, imperative-procedural, and object-oriented styles. After 40+ years, a growing opinion seems to be that pure OOP isn't without its problems, and other approaches may fit development goals better. I'm not sure multi-paradigm languages are the answer (there seems to be a huge potential to be confusing, IMHO), but OOP isn't the evolutionary pinnacle of language design that the last few decades of hype would have us believe. I'm willing to give this approach a chance (and I'm always up for learning something new).
Critcisim of the OOP paradigm
(Aside: Not quite sure why, but the use of the term "paradigm" multiple times makes me feel slightly icky for some reason. Probably due to it's misuse in business jargon.)
Objective-C and Smalltalk also don't have constructors in the language, they merely have them as conventions in the standard libraries, which are adopted by most third-party code. There's no reason for constructors to be special, they're just methods that initialise the object and return a pointer / reference to it, and which (by API contract) may have undefined behaviour if used on an already initialised object.
I am TheRaven on Soylent News
That's a rather uninformed statement to make, given that you're referring to a rather short time period when the rate of change caused the docs to lag behind. That will be corrected soon, I'm sure. Besides, the API docs, which are generated from the code, *are* correct and have been kept up to date all along despite the rapid rate of change. So documentation exists and is correct. The GP was likely referring to the higher level docs, such as guides and tutorials, which aren't produced by "the devs".
But hey, at least you got your *zing* in, though you forgot the rimshot at the end.
Har har. But in all seriousness, if you can't tell the difference then you probably shouldn't pretend to be a programmer.
Some people think that a garbage collector for all code is a good thing. They're morons.
The "guide" and the "guides", recently merged into "the book", actually are professionally maintained by a Mozilla employee, who is doing a great job but is of course outnumbered by the rest of the devs making language changes. Among other things, "alpha" is a chance for him, not to mention writers of external libraries, to get fully caught up with the development branch before beta and eventually 1.0.
Names don't necessarily hold back any language. For example, having a name that's exactly the same as a below-average schoolwork grade clearly doesn't prevent you from becoming one of the most prevalent programming languages in computer history.
The worst criticism IMO from your link is the "study by Potok et al. has shown no significant difference in productivity between OOP and procedural approaches." That's really depressing.
"First they came for the slanderers and i said nothing."
because that error just couldn't have been made in any other language.
Well, actually, yeah. It was caused by an overflow error down-converting an int. The list of languages that error couldn't have been done in is long, Perl, Python, Erlang, Javascript.......
"First they came for the slanderers and i said nothing."
(Aside: Not quite sure why, but the use of the term "paradigm" multiple times makes me feel slightly icky for some reason. Probably due to it's misuse in business jargon.)
Probably because there's no reason to use such an awkward word in the first place. In this case, notice how you fall into using "style" instead? Also, the vast majority of time, when people use "paradigm", they could replace it with the much more common and simpler word "model" or another simpler term.
Thanks. I was going to mention that there was a dedicated person (Steve Klabnik is his name, BTW - http://www.steveklabnik.com/) who was doing a great job and has just been momentarily overwhelmed. I decided it sounded too much like an excuse that "drinkypoo" wouldn't find convincing, given that "drinkypoo" (*snicker*) clearly has high standards of professionalism. So I decided to mention the API docs instead, which have been most helpful when sorting out code breakage due a change in the nightly version of the compiler. Actually, much of the time, the extremely clear error messages emitted by the compiler have been enough to make the correct changes to fix errors, which is almost better than good documentation. The latter is more useful in understanding why the code was incorrect, even if the compiler message is often enough to correct the problem.
(Aside: Not quite sure why, but the use of the term "paradigm" multiple times makes me feel slightly icky for some reason. Probably due to it's misuse in business jargon.)
Probably because there's no reason to use such an awkward word in the first place. In this case, notice how you fall into using "style" instead? Also, the vast majority of time, when people use "paradigm", they could replace it with the much more common and simpler word "model" or another simpler term.
Actually I looked it up and based on the definition of the word ("a distinct concept or thought pattern"), its use in the given context seemed appropriate, so I kept it in. "Style" seems to imply something more arbitrary, while "model" is a way of describing reality using simplified concepts (or a plastic thing I used to build as a boy, or something I found appealing as a teenager). Paradigm seems right.
And yet you instinctively fell into "style" later on, and nothing was lost by using that word. Instead, you gained in clarity of communication. You could also say "model" and it would have the same meaning. "Paradigm" is a fancy buzzword.
For example, and maybe I'm wrong, the language doesn't force the programmer to declare variables outside of the code (in fact it looks like the language allows the declaration of a variable anywhere in the code) and it doesn't force the programmer to specify the type of a variable when declaring it (a quote from the documentation : "Variables can be type annotated when declared. However, in most cases, the compiler will be able to infer the type of the variable from the context, heavily reducing the annotation burden"). That kind of thing is an open door for sloppy programming.
What irks me the most is the "heavily reducing the annotation burden". For me, that should never be a goal with a language whose objective is safety.
Ada doesn't normally allow that error either. There are things like "unchecked_conversion" which allows the programmer to break language safety, but they are always explicit.
C#, Scala, and (the latest version of) C++ have similar implicitly-typed variables, so I do have some practical experience using them. If the compiler can figure out what type it is, then you don't need to write the whole type name. If the compiler can't figure it out, then you need to write it.
In my experience using this, it's makes a lot of sense in declarations like "var s = new String()." No need to write String twice, it saves some time, etc (though let's be honest, it's not a heavy annotation burden).
It becomes hard to read sometimes when a method returns an object, like "var x = math.InterpolateReadable()" and you can't remember if the method returns a String or a double. Then you have to look at the method definition to figure it out.
It becomes a crutch in C++ when the type returned by a method is a very complex mix of templates, and you can't even figure out what type your variable should be. In that case it makes your life easier, but I think your final two sentences also apply.
"First they came for the slanderers and i said nothing."
You're being pedantic. (And I'm about to follow suit.) Paradigm *isn't* a fancy buzzword - it is a word with a clear definition that has been in use since the 15th century. It's fame as a buzzword comes from imprecise overuse during the last decade or so. The word itself is fine.
Here's another definition, this time from Merriam-Webster: "a theory or a group of ideas about how something should be done, made, or thought about". That seems to fit the discussion pretty well when referring to different ways to approach the decidely non-trivial task of defining at a fundamental and conceptual level how a programming language works.
You mention "style". I don't think it's really equivalent to paradigm, though it could apply to variations of a paradigm. Style involves the details in how you implement a paradigm - it's not a paradigm itself. Merriam-Webster supports this assertion: "a particular form or design of something" and "a particular way in which something is done, created, or performed" (emphasis mine).
But I grow tired of this nitpicky exercise. You may have the last word if you wish (preferably with concrete examples of why you believe you are correct rather than vague generalizations and unfounded assertions regarding awkwardness and clarity). I've said my piece and I'm done with this. Good day.
You're being pedantic.
I'm not. It's a garbage word. There are plenty of garbage words that stick around for no reason other than that people like to use them in place of simpler words.
You mention "style".
You used the word. Why did you use it? Because it's simpler and conversational and came naturally to you. People don't generally go around using the word paradigm.
I also used the word "model". Try this: The object-oriented programming model. Gee, does that not get the point across?
And there's nothing vague about simpler words and more common words versus less common words that have come into vogue. Nobody needs a clarification when you use those simpler words. I'm willing to bet at one point you said, "What the fuck's a paradigm?"
Type inference frees one from the boilerplate of, say, Java while maintaining static typing. You still get type safety in compilation.
It's the basis of functional languages such as ocaml and haskell.
Have a read about Damasâ"Hindleyâ"Milner typing.
I think you're exaggerating D's success.
Even if a language is more readable, the programs might not be. COBOL is supposed to be readable, but I've seen plenty of COBOL programs that could rival anything in C or Perl for unreadability.
Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
In C++, the exact type is not necessarily important, as long as it's assured to work in a certain way. For any standard (and you'll make your own work this way if you're smart) container template class c, c.begin() is an iterator that points to the first element of c (if there is one) or c.end() (if the container is empty). Similarly, c.end() is the element past the last valid one. Therefore, "for (auto i = c.begin(); i != c.end(); ++i)" loops through the elements of c no matter what c is, and "*i" anywhere in the loop is the element that i currently points to. For such a use, knowing the type of i doesn't help anything, and "auto" is quite appropriate.
I've seen recommendations to use "auto" in places I don't really approve of. For example, with "auto w = new Widget();" w is a "Widget *". If you intended it to be a Wadget, and Widget and Wadget have member functions of the same names but aren't the same thing, you can create a hard-to-find bug, while "Wadget * w = new Widget();" is a compiler error.
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
I've seen recommendations to use "auto" in places I don't really approve of. For example, with "auto w = new Widget();" w is a "Widget *". If you intended it to be a Wadget, and Widget and Wadget have member functions of the same names but aren't the same thing, you can create a hard-to-find bug, while "Wadget * w = new Widget();" is a compiler error.
I don't disagree with your point here, it seems to me it actually is safer to write "Widget w = new Widget()," and certainly redundancy can give you an extra check.
As the next step after that though, I ask myself, "how often does this prevent me from making a bug?" To be honest I can't remember a single time I accidentally wrote something like "Wadget w = new Widget()." So while it does make you safer, I think in practice there's not much of a difference.
"First they came for the slanderers and i said nothing."