5 ms·
The keyword here is "Enterprise" Python. The Enterprise is a place where you have "decision makers" which are often people who don't understand type systems, an
by dvanduzer 12y ago
The keyword here is "Enterprise" Python. The Enterprise is a place where you have "decision makers" which are often people who don't understand type systems, and have absolutely no incentive to do so.
Paypal is a large organization which needs to hire Python programmers. Everyone reading this now has a reminder that Python is popular at Paypal. We also know that endless PLT arguments are probably not common in the workplace.
- mietek 12y agoFortunately, there are other large organisations employing decision-makers which understand the business value of type systems. Apple: https://developer.apple.com/swift https://developer.apple.com/swift Facebook: http://flowtype.org http://flowtype.org + http://hacklang.org http://hacklang.org + http://hhvm.com http://hhvm.com Microsoft: http://fsharp.org http://fsharp.org + https://haskell.org https://haskell.org + http://typescriptlang.org http://typescriptlang.org Mozilla: http://rust-lang.org http://rust-lang.org Google: The jury is out on this one.
- russell_h 12y agoCan you clarify what you mean about Google?
- MHordecki 12y agoMost likely a quip about how Go's type system is uninspiring.
- jhawk28 12y agoIronically, Go being uninspiring is its greatest strength.
- mietek 12y agoFor one, both Dart and Go repeat Hoare’s Billion Dollar Mistake, by admitting null references instead of implementing option types. In a previous HN discussion, I wrote to one of the Go designers: > I disagree with you on the relative complexity of type systems, and, as someone passionate about my craft, I despair Go is merely good not great, due to what appears to be uninformed design decisions. > You may prefer to write in Go, but you don't work in a vacuum. Your creation is out there, gaining mindshare, and propagating mistakes made half a century ago. As a language designer, you have the power to shape human thought for years to come, and the responsibility to remain intellectually honest. This is the meaning of Hoare's apology. He didn't know better. You have no such excuse. https://news.ycombinator.com/item?id=5822545 https://news.ycombinator.com/item?id=5822545
- winter_blue 12y agoWell said. Your comment on that link was quite insightful as well. I'll quote it here below: "So, Go has message passing. Just like Erlang, since 1986. Only without per-process heaps, which make crashing processes safe. And without process linking and supervision, which helps systems built using Erlang/OTP achieve nine nines of uptime. Instead, it includes null references, also known as Hoare's Billion Dollar Mistake. But it's not enough to scorn the industry; Go's designers also look down their noses at academia. A modern, ML-derived static type system? Generics, which would enable the unwashed mashes to write their own `append`? Ain't nobody got time for that — wait, what? Oh, Rust does? Go's tooling is fantastic, and its pragmatism is commendable, but ignoring the last 30 years of programming language research is not."
- cbsmith 12y agoI think in both cases, they are allowing pragmatism to win out over correctness. The underlying systems that Dart & Go try to interface with embrace NULL with a kind of oblivious joy that can't be replicated.
- Jweb_Guru 12y agoI find the idea that optionals aren't pragmatic pretty bizarre. Of all the features that "advanced" type systems give you, optionals are some of the most straightforward. I still haven't heard a convincing argument for why they should not be in Go (e.g., someone pointed out that all types in Go have a default value, but there is a very obvious candidate for a default value for optionals--None; "in practice these issues don't come up"--doesn't that just mean people don't use null much? Why allow it to inhabit every type, then?). Anyway, neither Dart nor Go is particularly "close to the hardware" as they both have fairly substantial runtimes. We're not talking about a macro assembler here, we're talking about a typed programming language. What the compiler does under the hood is largely irrelevant in any language that doesn't make a distinction between register, stack, and heap allocation.
- mietek 12y agoIt’s an example of the “New Jersey approach” to programming language design. > Simplicity-the design must be simple, both in implementation and interface. It is more important for the implementation to be simple than the interface. Simplicity is the most important consideration in a design. http://www.jwz.org/doc/worse-is-better.html http://www.jwz.org/doc/worse-is-better.html
- scorpion032 12y agoGoogle, Apple, Facebook are the tech companies. Even though they are enterprises, the term enterprise software often refer to the other companies, who use tech as an aid to run their main businesses. Think about Box, MobileIron, and many such companies targeted to enterprises and who their consumers are. That is the enterprise software market.