3 ms·
In general, yes, https://en.wikipedia.org/wiki/No_Silver_Bullet https://en.wikipedia.org/wiki/No_Silver_Bullet Though for simple tasks, syntax is the biggest b
by brucephillips 9y ago
In general, yes, https://en.wikipedia.org/wiki/No_Silver_Bullet https://en.wikipedia.org/wiki/No_Silver_Bullet
Though for simple tasks, syntax is the biggest blocker, and visual programming is preferable. See the success of IFTTT as an example.
- DonaldFisk 9y agoBrooks concluded that visual programming wouldn't speed up development by an order of magnitude, and he's right. But it has other advantages. There has to be a silver bullet though. I haven't seen a large system which couldn't be implemented in less than 10% of the code. Chuck Moore, the inventor of Forth, says 1%.
- petra 9y agoThere's a big trend of low-code,or no-code tools. Some of the reviews/reports do talk about 5x and sometimes 10x improvement. There are some tools(if you want i can look later) that you input math and you get fully optimized code for a variety of architectures, so it's kinda 1%.
- DonaldFisk 9y agoAm I right in assuming these are only able to handle specific tasks? What I've noticed applies in general, and is usually the result of programmers trying to be too clever, using frameworks, inappropriate use of object orientation, or not refactoring.
- petra 9y agoI actually feel that being domain constrained is a requirement if you want to offer the maximum amount of expressivity and simplicity[1]. And this is a must for a tool that aims at domain experts. So maybe the question we should ask: how do we constrain our users to the bone, while still letting them do everything ? [1]Intuitively, i feel like even textual languages haven't focused on simplicity. even python. they all require good memory, and focus. But is it possible to design a textual language(with the right IDE) that you can do real tasks in, for someone with bad memory and focus ? visual languages will surely get you farther there.
- DonaldFisk 9y agoYou don't have to remember the correct syntax, or input and output types, because the editor won't let you enter an invalid program. The type system constrains many of the choices the programmer can make. It's only possible to connect an output to an input of a compatible type, and doing this can instantiate a type parameter, e.g. [X] -> [car] -> [add1] is only possible if X outputs a List of Int. If you want to connect to an input which is absent, you're only given vertices with inputs of the correct type to choose from. I should probably put more information about both the type system and the IDE on my tutorial pages.