7 ms·
Having multiple compiler implementations is a strength, not a weakness. As long as Rust is not standardized and documented only by the implementation's code it
by otabdeveloper4 6y ago
Having multiple compiler implementations is a strength, not a weakness. As long as Rust is not standardized and documented only by the implementation's code it will never be a serious language.
- aprdm 6y agoWhat is a serious language? Is being used in companies like Amazon to deliver runtimes used by a considerable % of the internet not serious?
- papaf 6y agoWhat is a serious language? I would call C a serious language. Its running your laptop, your phone, your car, the airplane you took on holiday, the fighter planes that protect your airspace, your washing machine, and if you are unfortunate enough to get seriously ill it will probably be running on the medical equipment that keeps you alive. One of the reasons it is serious is because it is standardized and multiple implementations exist.
- aprdm 6y agoI do wonder what other languages you consider serious apart from C. You could use similar examples for a lot of other languages, C isn't the only language used to keep our civilization alive. I did a fair bit of development in C, and developed hard real time systems in VHDL that did involve life & death, but, wouldn't call any language used in the industry generating value as a non serious language...
- papaf 6y agoI do wonder what other languages you consider serious apart from C. Off the top of my head I thought C++ and Ada. However, you mention VHDL which I agree with and somebody else pointed out Javascript which is also a good point. The Javascript example (along with C++) make the point that serious computer languages are not necessarily great languages. I would argue that Rust is not a serious language (at the moment [1]) because its still young, there is no specification and if anything happens to the one implementation it would be a disaster. Despite C being a null pointer minefield, if someone was to sue a developer the argument could be made that it is an industry standard. In the less likely event that a Rust program hurt somebody what are you going to say? [1] https://users.rust-lang.org/t/is-there-a-plan-to-get-a-formal-rust-language-specification-at-some-point/21622/8 https://users.rust-lang.org/t/is-there-a-plan-to-get-a-forma...
- afiori 6y agoSo also javascript? :)
- mmm_grayons 6y agoSpacex did launch a rocket with an electron interface... In practice, though, V8 is the serious impementation. The interesting thing about C and C++ is that I don't know if any given dev is using Clang, GCC, or MSVC until I ask him. I know a JS dev is using V8.
- Xylakant 6y agoBrainfuck has a language specification (it's nice and short) https://esolangs.org/wiki/Brainfuck https://esolangs.org/wiki/Brainfuck and a long list of implementations, some even hardware backed. https://esolangs.org/wiki/Brainfuck_implementations https://esolangs.org/wiki/Brainfuck_implementations So if that's the criteria, then brainfuck is a serious language.
- blub 6y agoIt seems implausible that you don't know the difference between an international standard and a specification document written (of all places) in a wiki, which means you're being purposefully obtuse and don't really have any counter-arguments. If one wants to use a tool in a life-critical system, a system that might be in use for decades they're going to reach for one of the said "serious languages": C, C++, Ada, etc. That list's very short and it includes neither Brainfuck nor Rust for that matter.
- Xylakant 6y agoOk, I picked brainfuck as an - obviously extreme - example of how a language can tick both those boxes and still be not a serious language. I can pick a number of examples of languages that have no international standard and a single implementation and are used in systems that might be in use for decades. Let's take go. A single implementation, it does have a spec, but I'm not aware of an ISO standard. ADA, while having an ISO standard, isn't exactly blessed with many implementations either. Java, while having multiple implementations, is not an ISO standard. The point is: neither of those two datapoints is a particularly useful metric on how "serious" a programming language is and much less even a useful metric on how well it is suited to any given task. Even how mainstream programming languages are is not a useful signal for that. Javascript is very much mainstream, but I hope no one ever will want to program a cars ECU in a JS dialect. Specialized applications are almost by definition the realm of specialized languages.
- int_19h 6y agoIt doesn't include JavaScript, either - and yet it's one of the most popular and successful PLs today. Very few people write code for a "life-critical system".
- terafo 6y agoCritical software for planes is written in Ada. C is not safe enough.
- platinumrad 6y agoAnd yet C++ was (in)famously used in the JSF... A less notorious example is Airbus's use of Frama-C.
- coldtea 6y agoThat was the idea back in the 80s. Didn't turn out that way, planes, rockets, NASA, still use C just fine, and Ada was not that widely adopted in the end.
- otabdeveloper4 6y agoNo, "used for pet project by mismanaged megacorp" is not a sign of seriousness. (I'm sure there's some team inside FAANG that's using Brainfuck in production right now.) "The Rust development team isn't interested in supporting your obscure embedded architecture" or "sorry, this platform was phased out due to technical debt" is what I mean by not serious. Look at Python and how any attempts to make alternative interpreter implementations ultimately failed. (And they at least have PEPs.)
- Xylakant 6y agoI'd hardly call for example firecracker a "pet project by mismanaged megacorp". It's running production workloads - and at AWS scale, I'm fairly certain it's running more work than most of us here ever touched in their career total. https://github.com/firecracker-microvm/firecracker https://github.com/firecracker-microvm/firecracker > And they at least have PEPs. Rusts language development has been guided by RFCs since like the beginning. There's no comprehensive standard as in "somebody went and wrote down the current state", but it's also not the case that there's no written spec of how things should behave. You could base a new compiler on that and there's actually developments to have different backends to rustc. Cranelift for example https://github.com/bytecodealliance/wasmtime/blob/main/cranelift/rustc.md https://github.com/bytecodealliance/wasmtime/blob/main/crane... > "The Rust development team isn't interested in supporting your obscure embedded architecture" or "sorry, this platform was phased out due to technical debt" is what I mean by not serious. So any compiler team that stops supporting some sort of architecture because it's either rare or no longer worth the effort is not serious in your opinion? Like GCC, that has a decision making matrix for that? https://gcc.gnu.org/backends.html https://gcc.gnu.org/backends.html And dropped various architectures along the way?
- blub 6y agoUntil Rust becomes at least a mainstream language (and if it becomes one), criticism addressing its lack of mainstream adoption and novelty are perfectly legitimate and these arguments are worth considering when deciding what to base a project on. The fact that a specific corporation has implemented a specific project by using a specific tool is completely meaningless as to the appropriateness of using that tool in another context.
- throwaway894345 6y agoI’m not sure (but could be wrong) that lambda and Fargate (the services which use firecracker) service “a considerable percent of the Internet”, but CloudFlare’s network does and it has some routing components in rust IIRC.
- baq 6y agoit isn't a serious language because it doesn't have a standard? is python somehow a joke? i agree with the docs part but there's plenty of de facto standards in the industry and in the civilization at large and they're pretty serious things.
- afiori 6y agoTaking the strongest version of the argument Python is partly standardized in multiple implementations. My understanding is that mostly CPython does whatever it wants and the other follows, but it is still better than a single implementation where the boundary between bug and spec would be nebulous.
- int_19h 6y agoNot quite - CPython docs specifically say that some things are implementation-specific, and that other implementations are free to do them differently. For example, there's no guarantee of refcounting, and portable Python code has to assume that implicit cleanup is non-deterministic (which is observable with __del__). The problem, rather, is that coders tend to ignore this, and write code that only works on CPython.
- afiori 6y agoThis is what I meant as the advantage of multiple implementations, by "CPython does whatever it wants" I meant that the power dynamics are almost exclusively in favour of CPython
- otabdeveloper4 6y agoYeah, but Python is competing with Perl and Ruby, not C.
- oblio 6y agoIn practice you're just fighting different compiler bugs. Except for C, for all intents and purposes every other major language basically has one authoritative compiler implementation.
- somedude11 6y agoC++ has GCC, CLANG, MSVC, all of them being major, and a dozen of less popular ones used in specific places like Intel C++ Compiler.
- mmm_grayons 6y agoAnd the funny thing is, C++ is so complex it's the last language I'd expect to have multiple optimizing compilers (though rust is probably similar, I imagine.)
- oblio 6y agoI'm lumping them together, as most people do. Even though I guess both groups hate it (C devs vs C++ devs).
- jnxx 6y agoI am sure that a GCC implementation will happen, as there are already discussions to allow Rust modules in the Linux kernel. But wait, are you saying that Go and Python are not serious languages?
- throwaway894345 6y agoGo has a second compiler—gccgo. Python also has other implementations, but because there is no Python standard, the compatibility of those implementations with the broader ecosystem varies enormously and CPython is the de facto standard (the extent to which an implementation wants to be compatible is the extent to which it must be slow, because it means adhering more closely to the design mistakes that CPython has committed itself to).
- correct_horse 6y agoPython is a bad example. Cython and pypy are very widely used. IronPython, Jython, etc. also exist. Go is a better example, but even Go has a gcc backend, although it is rarely used in production as I understand.
- higerordermap 6y agoGo has a spec. Rust doesn't even have a spec at the moment.