News for hackers. Stuff that matters.
Re:No Silver Bullet (1986) [pdf] by aedron on Thursday August 29, 2019 @08:03AM (#20828711)
The essay is remarkably prescient.

Brooks dared to predict that thirty years later, software would still be created by programmers sitting in front of editors, painstakingly typing up code branches for all of the scenarios a given program is supposed to handle. And their output would still mostly suck, because of the infinity of possible states, mostly due to variables and synchronicity. Complexity that cannot be abstracted away.

Given how starry-eyed we usually are about even the near future, that is bold.

The web, language advances, tooling - these are quality-of-life improvements. They don't 'solve' the inherent complexity of software development, the way it was promised by CASE tools (Brooks' likely target with his essay) and countless other 'business oriented' approaches. In fact those approaches have failed so many times that they have been largely abandoned, so in recent times, Brooks' essay might seem superfluous.

The one advance that might finally challenge the 'no silver bullet' rule is machine learning. Not yet, given that it is still an esoteric tool for a specialized class of problems, as part of traditional software systems. But with increasing computing power, I can imagine a future where machine learning can be set to work on broader tasks and start to look like magic self-directed software development.

Re:No Silver Bullet (1986) [pdf] by coldtea on Thursday August 29, 2019 @09:44AM (#20829406)
>The one advance that might finally challenge the 'no silver bullet' rule is machine learning. Not yet, given that it is still an esoteric tool for a specialized class of problems, as part of traditional software systems. But with increasing computing power, I can imagine a future where machine learning can be set to work on broader tasks and start to look like magic self-directed software development.

I'd stick with the silver bullet idea. I don't see machine learning going anywhere, and what passes as machine learning today is just a buzzword.

Re:No Silver Bullet (1986) [pdf] by nickpinkston on Thursday August 29, 2019 @09:43PM (#20835311)
It never works until it does. Many major inventions seemed impossible, but they just took a long time. Software is so young and growing so fast, it's hard to say what can happen.
Re:No Silver Bullet (1986) [pdf] by coldtea on Friday August 30, 2019 @02:58AM (#20836455)
>It never works until it does. Many major inventions seemed impossible, but they just took a long time.

And others remained impossible still, e.g. cold fusion.

Re:No Silver Bullet (1986) [pdf] by nickpinkston on Friday August 30, 2019 @05:13PM (#20842766)
They mostly remain unsolved, not impossible.

Cold fusion not withstanding, most aren't prohibited by physics - in fact humans already are an existence proof that bio-machines can already create software autonomously with no change in physics, so seems like a question of when, not if.

Re:No Silver Bullet (1986) [pdf] by bobm_db on Friday August 30, 2019 @05:36AM (#20837077)
I like this article, but I think actually the software industry has seen a succession of silver bullets. The problem is, once they appear, you take them for granted:

https://riskfirst.org/Silver-Bullets

Re:No Silver Bullet (1986) [pdf] by crdoconnor on Thursday August 29, 2019 @08:24AM (#20828833)
>The one advance that might finally challenge the 'no silver bullet' rule is machine learning.

Definitely not. Machine learning is up there with 2012's nosql movement as one of the most overhyped silver bullets.

The improvements to programming over the last 30 years have been incremental more than anything in spite of the hype cycles of various silver bullets (OOP, functional programming, side effect free code, TDD, nosql, static types, etc.)

Re:No Silver Bullet (1986) [pdf] by otabdeveloper4 on Thursday August 29, 2019 @09:20AM (#20829218)
> The one advance that might finally challenge the 'no silver bullet' rule is machine learning.

Machine learning can't even predict a simple binary proportion ratio. No, it's not a silver bullet.

Re:No Silver Bullet (1986) [pdf] by arithma on Friday August 30, 2019 @06:39AM (#20837343)
Can you elaborate on that just a bit, I couldn't find anything relevant by doing a quick search for a few combinations of those keywords.
Re:No Silver Bullet (1986) [pdf] by otabdeveloper4 on Friday August 30, 2019 @09:34AM (#20838414)
I'm not smart enough to go into the technical details, so I'll use an example instead.

Machine learning is very effective in categorizing things - for example, given an image estimate whether it pictures a cancer cell or not.

On the other hand, machine learning sucks where you need to predict things instead of categorizing - for example, given a set of factors, figure out your risk of getting cancer within 5 years.

Any such machine learning predictive system will be useless due to under- or overfitting.

(Again, I'm not an expert, just a guy who has many years of experience trying to build such predictive systems.)

Re:No Silver Bullet (1986) [pdf] by hoseja on Friday August 30, 2019 @09:32AM (#20838387)
They may mean machine-learning-assisted branch predictors. No clue otherwise.
Re:No Silver Bullet (1986) [pdf] by pjmorris on Thursday August 29, 2019 @11:28AM (#20830336)
I think fuzzing, like afl, is an example of the kind of machine learning that might be useful to software engineering. If we could just figure out how to fuzz requirements along with input fields, we might get somewhere.
Re:No Silver Bullet (1986) [pdf] by ken on Thursday August 29, 2019 @01:38PM (#20831789)
> Brooks dared to predict that thirty years later, software would still be created by programmers sitting in front of editors, painstakingly typing up code branches for all of the scenarios a given program is supposed to handle.

Did I miss this? The thesis says it's about what will happen "within a decade" of 1986 -- "as we look to the horizon of a decade hence". He makes no projections beyond that, that I see, and the timeline seems specifically chosen to suggest that further large improvements are still possible but will take time.

Re:No Silver Bullet (1986) [pdf] by jerf on Thursday August 29, 2019 @02:15PM (#20832150)
We've made massive progress on the accidental complexity. That's what a lot of the "bloat" is that people complain about, and why even though I am a bit sympathetic to that, it's only a bit. There's a reason that, for instance, Electron is so popular, and that reason is a lot of Electron apps would not be paragons of efficiency if Electron didn't exist, they would simply not exist at all, or with a greatly reduced feature set or greatly higher expense.

Improving the essential complexity has not moved much at all, which is why my computer science education from 24 years ago is still pretty much the same one people get now and hasn't lost its relevance. The removal of the accidental complexity sometimes means it's only the essential complexity left shining through.

In that sense, while he may have had the humility to time-bound his predictions to a mere decade, they've still stayed fresh much longer than that.

(Reading the entire Mythical Man Month in 201x is a bizarre experience; all the specific tech references are so dated that they are more myth than fact now, yet, the underlying points those references are in support of are still quite fresh. Arguably a bit incomplete now, we have teams of a scale well beyond what they had then, sitting on piles of software yet larger, but still correct at the core.)

Re:No Silver Bullet (1986) [pdf] by lliamander on Friday August 30, 2019 @12:55PM (#20840308)
Further prescience is in the areas that he predicted would be good areas at attacking essential complexity:

1. Build vs. Buy - I would say that open source has generally become the "COTS" solution that Brooks was looking for.

2. Requirements refinement and prototyping - agile development.

3. Incremental development - also agile, as well as different evolutionary architecture approaches

4. Great designers - the establishment of technical career ladders at many companies.

Again, none of these things are silver bullets, but they have contributed to significant progress in our industry.

Re:No Silver Bullet (1986) [pdf] by breck on Thursday August 29, 2019 @03:17PM (#20832673)
> Brooks dared to predict

I love this. So rare nowadays to scientists make bold predictions.

Disclosure: I work on Tree Notation (https://treenotation.org/).

Two years ago, in 2017 I predicted Tree Notation will be a silver bullet: by 2027 we will have a 10x improvement in reliability, productivity, and simplicity, thanks to the Tree Notation ecosystem.

2 years later, and thousands of experiments and conversations later, I'm almost positive that will happen.

Re:No Silver Bullet (1986) [pdf] by lidHanteyk on Thursday August 29, 2019 @10:12PM (#20835442)
You should make a Long Bet for it.

Every lambda calculus, including yours, corresponds to a Cartesian closed category. Your system is not at all as new as you think; what you are actually inventing are new ways to write down parsers, akin to the many other ways that folks are trying to write down programs in JSON or XML or YAML.

The only advantage that you've got at this point is a 2D addressing scheme, you might think, but E had that in the late 90s: http://www.erights.org/elang/kernel/LiteralExpr.html

Re:No Silver Bullet (1986) [pdf] by breck on Friday August 30, 2019 @12:26AM (#20835970)
> You should make a Long Bet for it.

Second time I heard this suggestion (https://news.ycombinator.com/item?id=20504193), thanks! Done. http://longbets.org/793/ - “In 2027, at least 7 out of the top 10 TIOBE languages will be Tree Languages AND/OR 0 out of the top 10 languages on 2017's list will be in the Top 10 in 2027. ”

> Your system is not at all as new as you think

I agree. It's mildly new. Tiny tiny little details that make a big difference in practice. To get here I had to stand on the shoulders of giants: built the largest DB of computer languages in the world (over 10k languages with over 1k columns).

> but E had that in the late 90s

Great reference, thanks. E and Kernel-E are great, but the devil is in the details. There are a tremendous amount of tiny little details in Tree Notation and Tree Language that compound to make this something new. You can't take anything out of Tree Notation without losing something important. Everything else you can add via a Tree Language. That makes this closer to binary, imo. There are at least a dozen things that could be taken out of Kernel-E, which itself is a subset of E.

Re:No Silver Bullet (1986) [pdf] by heavenlyblue on Friday August 30, 2019 @07:07PM (#20843544)
What exactly makes Tree Language any different from the context-sensitive encoding of code in binary?
Re:No Silver Bullet (1986) [pdf] by breck on Friday August 30, 2019 @07:44PM (#20843730)
Abstraction. Scope. (also, usability?)

Interesting question though. Can you elaborate?

Re:No Silver Bullet (1986) [pdf] by bearer_token on Thursday August 29, 2019 @03:34PM (#20832821)
Okay, I'll bite.

How is this different than an Abstract Syntax Tree (AST)?

Re:No Silver Bullet (1986) [pdf] by breck on Thursday August 29, 2019 @03:59PM (#20833025)
Think of your code in a spreadsheet or Cartesian plane.

Each word has a location in 2D space. There is a physical manifestation of your program’s source code.

The parsed version (with the words of your source replaced with their parsed types), has the same shape (physical manifestation) as your source code.

So source == AST.

Currently traditional languages this is not true. They are stripped to 1D and the further you move from lisp the more different they become.

Re:No Silver Bullet (1986) [pdf] by heavenlyblue on Friday August 30, 2019 @07:11PM (#20843565)
How is that different from XML?
Re:No Silver Bullet (1986) [pdf] by breck on Friday August 30, 2019 @07:42PM (#20843725)
In XML:

  <a><b></b></a>
  ===
  <a>
   <b>
   </b>
  </a>
In Tree Notation those are 2 different structures.
Re:No Silver Bullet (1986) [pdf] by bobbiechen on Friday August 30, 2019 @11:36PM (#20844480)
Interesting. Would you say this is similar to a visual programming language like Max/MSP? I was always intimidated by the large screens of spaghetti (almost literally, because of patch cords).

How do you deal with large complex code? Lots of folding?

Re:No Silver Bullet (1986) [pdf] by breck on Saturday August 31, 2019 @12:40PM (#20847345)
Max MSP is definitely an inspiration of mine. Tree Notation is just a format, however. It could be an ideal way for a program like max to store its documents in, as opposed to an xml or a Json. It would allow dual visual / source editing. See our ohayo beta for an example. (note to self: add ohayo demo video)

Large complex code hasn’t turned out to be too difficult yet. The key is well designed tree languages for the task at hand. Also, sublime text helps :). Have some code bases in the 6 digits loc. It’s all about tooling though. I don’t really use folding yet but perhaps that would be another feature that can make things easier, good suggestion. Things like type checking, syntax highlighting, auto complete, are essential.

Re:No Silver Bullet (1986) [pdf] by heavenlyblue on Saturday August 31, 2019 @08:54AM (#20846004)
How are they different?

In XML you would need to insert tags defining the whitespace so that it would be seen by programs operating on the AST.

Are your “two different structures” any different from the same representation in XML?

Re:No Silver Bullet (1986) [pdf] by breck on Saturday August 31, 2019 @12:42PM (#20847362)
This is a good point. When building a raw xml parser, these would be 2 different things.

I think it’s a fair analogy to say tree Notation is just a much simpler XML.

At least 2x as simple:

<proof></proof>

proof

Re:No Silver Bullet (1986) [pdf] by solipsism on Thursday August 29, 2019 @10:51PM (#20835598)
From your website...

By 2020, we expect Flow to be a competitive rival to Python or R for 80% of data science tasks.

That's incredibly ambitious. Checking in -- are you within 4 months of reaching that goal?

Re:No Silver Bullet (1986) [pdf] by breck on Friday August 30, 2019 @12:28AM (#20835980)
Yes, despite how it looks. Flow/Ohayo version 17 should hit that. About to ship version 14.