7 ms·
I have met Shapiro and he is a very nice and smart guy, but I find it rather shocking that somebody could invest so much time and effort in designing new langua
by luriel 15y ago
I have met Shapiro and he is a very nice and smart guy, but I find it rather shocking that somebody could invest so much time and effort in designing new language before building a library to do something as fundamental as I/O.
Is interesting to contrast his approach building BitC to that of Ken Thompson and Rob Pike (both former colleagues of his at Bell Labs) building Go.
Go has been criticized for "not paying attention to PL research", which might be true, but is already extremely useful and even before its first 'stable' release people already have used to build large systems used in production.
I think what applies to building other kinds of software applies to designing programming languages too: you need something that you can start using to build real systems as soon as possible and then iterate from there based on your experience.
The problem with languages is that changing the language involves throwing away the code you wrote, which discourages one from building real systems with a language that is still changing.
That puts even more value in keeping languages simple. And tools like gofix are also quite nice to help with this.
- eli_gottlieb 15y ago>Go has been criticized for "not paying attention to PL research", which might be true, but is already extremely useful and even before its first 'stable' release people already have used to build large systems used in production. Is that a factor of being a better language (for some value of "better"), or of being marketed by famous people working for a famous company? I really do mean this. Pike et al have Google behind them, and thus not only the Google publicity machine but a whole team of Googlers working actively on making Go work. BitC was a creature of, IIRC, 8 people working on research, and possibly their grad-students if that number doesn't include grad-students already.
- batista 15y agoIt's not being really "marketed" at all. Java, that had marketing. As in million dollar campaigns, ads in trade magazines, tons of articles and PR even in NON-tech outlets about the "next big language", a company betting most of its strategy on the language and so on. C# too. Go? Being made by Google guys that are also battled tested programmers helps, but it's not like the language had any marketing. A website, a mailing list, a blog not that frequently updated, and a few appearances on some tech conferences. That about sums it. As a language, Dart is more heavily touted by Google. And is made by the famous V8 (and more) guy. But noone is using it. So, yes, Go is used for its pragmatic merits, not because of marketing.
- ootachi 15y agoThere's active marketing and there's passive marketing (brand association). Go is popular because of its association with the brand of Google and the brand of Pike and Thompson. A lot of people like the language on its merits (although I disagree with pretty much every decision they made), but I believe the reason the language got traction is because of its brand association.
- batista 15y ago>Go is popular because of its association with the brand of Google and the brand of Pike and Thompson. A (non factual) jump to conclusion. For one, Go isn't that popular. From the latest TIOBE notes: "Another interesting observation is that while big software-related companies such as Oracle, Microsoft and Apple all have one of their programming languages in the top 10, Google seems to be incapable to achieve the same.Google's Go language dropped out of the top 50 this month". Second, Dart is also associated with the brand of Google and the brand of Lars Bak. Yet, it's totally unpopular. Same goes for Unladden Swallow. Touted by Google, got nowhere, died. (Hell, even things Google spends ton of marketing money on go nowhere: Google Buzz, Google Wave, Google Wallet, ...). >A lot of people like the language on its merits (although I disagree with pretty much every decision they made), but I believe the reason the language got traction is because of its brand association. That might get some early interest in the language, but not continued traction (and not that it has much traction, anyway). People like it because it's fast, the type system gets out of the way, it's not as weird as the lisp-like languages for those used to C syntax, has some cool modern features (from closures, to easy concurrency) and has a big and current standard library. I also happen like the language on its merits. I also believe that most of those who disagree don't share the design goals of the language designers and wanted mostly just another derivative functional language or some fads-of-the-day-in-academia thing like Scala.
- ootachi 15y agoGuilty as charged. I do want a functional language like Scala, because I believe that school represents a better design. That school of language design saves me the headache of null pointers; it helps me write unit tests with QuickCheck; it allows me to define custom generic collections; it places emphasis on having a fast GC; it features monadic style to help with error handling.
- nostrademons 15y agoThe core Go team was smaller than 8 people, at least at launch, although it has lots of peripheral contributors now. But you could look at that as the value of launching. :-)
- deleted 15y ago[deleted]
- nostrademons 15y agoThe figure of "8 people" was for the BitC team and was given by the grandparent post. Go's team was smaller than that.
- eli_gottlieb 15y agoFair enough, which is why I'm working on trying to actually launch myself.
- _delirium 15y agoThey have fairly different goals, though. BitC's main goal was to be a verifiable systems language, so it makes some sense that a lot of effort up front was put into investigating the "verifiable" part. Rather than building libraries and trying to get it to catch on, the effort was focused on trying to figure out if it could be designed in a way that simultaneously supported low-level, systems-ish programming while also supporting verification. If the answer on the verifiability part turned out to be no, then that would mean it wouldn't necessarily be worth building the rest (or trying to get people to use it), since that was the point of the project existing in the first place.
- tedunangst 15y agoLet's define success as new + useful. You can build something new then make it useful, or you can start with useful and add something new. I suggest that the second approach is better, because we already have a good sense of how to measure useful, so you will always know where you are. Keep your eyes on the prize, as they say.
- _delirium 15y agoIf the goal was to make a C-like language that's verifiable, though, and you end up with a C-like language that isn't verifiable, in what sense is that useful? The whole usefulness of the project, at least as it was conceived, hinged on it adding some notion of verifiability to C. Otherwise it's just a C clone with smaller installed base, worse tool support, etc.
- eli_gottlieb 15y agoThere are degrees of verifiability. A C-like language with imperfect but stronger verifiability (for example, with a strong, formalized type system) is still more verifiable (admits the proof of more theorems via static analysis) than C.
- tedunangst 15y agoThe whole usefulness of the project, at least as it was conceived, hinged on it adding some notion of verifiability to C. That is exactly what I am saying. It sounds like they trimmed away too much of C in the process and didn't check to make sure those parts could be added back. I haven't really followed the whole saga though.
- ootachi 15y agoBitC was started when Shapiro was at a research university. No research institution would fund Go, because Go is not a research language. BitC was, however, designed as a research language.
- Drbble 15y agoGo could certainly be funded by a research institution. Plenty of university researchers work on Java ideas, for example.
- ootachi 15y agoFor that to be true, the Go developers would have to be open to adding research ideas to the language. Java is (for example, generics). Right now Go's developers are not open to this. As a result, Go is not publishable.
- jhpriestley 15y agoIt's not a reasonable comparison. Go lacks any features that haven't already been thoroughly explored in other languages. BitC was an attempt to do something that had never really been done before.
- gsg 15y agoIf you read the BitC documents, Shapiro mentions that one of the goals of the project was to avoid innovation. The BitC goal isn't to invent a new language or any new language concepts. It is to integrate existing concepts with advances in prover technology, and reify them in a language that allows us to build stateful low-level systems codes that we can reason about in varying measure using automated tools. The feeling seems to be that everything we are doing is straightforward (read: uninteresting). Would that it were so. (from http://www.bitc-lang.org/docs/papers/PLOS2006-shap.html http://www.bitc-lang.org/docs/papers/PLOS2006-shap.html)
- samth 15y agoAvoiding innovation in a particular narrow area, while combining others' new idea from other areas in a novel way, is innovation. In fact, it's very rare to see any other form of innovation.
- jacquesm 15y agoThey tried to solve the hard problems first.