If authors can not use powerful tools, they cannot create powerful libraries for other developers to use. Everybody is then pushed down to the low expressiveness level. Case in point: Golang until recently, Java before version 5. Copy-paste programming is as prone to bugs as stringly-typed programming.
If there needs to be a strict separation between powerful tools and easy tools, using two different languages works well enough. Many game engines allow level designers write small Lua scripts, for instance. Or the whole Visual Basic thing which allows to glue together powerful COM components. Also, nearly every templating language allows for simple data manipulation (iteration, filters) while not being Turing-complete.
(That works until the users of the simple glue language require enough features for the glue language to become a principal tools for developing increasingly complex things, and we're in square one. Could have started with a proper language...)
But those things are already widely popular, someone saying "we need less powerful languages" means they want even more than that, I'm not aware of any things that aren't currently popular that would improve these things by a lot.
Natural language is the most powerful (kind of) language we have, because using it we can generate narrower and stricter languages (mathematics, for instance) and communicate their semantics to fellow humans.
But natural language can express a lot of things that are imprecise, like "huh?" or "well, you know...", or, say, profanities. So a somehow less powerful language, with some restrictions requiring politeness and clarity, is easier to understand. That's the point of the original article, broadly.
That's what I mean by "harnessing" the power. Restricting the language by simplifying it, switching to baby-speak, is what I'd like to avoid: while less powerful and not allowing for many potentially dangerous constructs, it remains imprecise, but loses the ability to express complex things concisely.
Not really though. “Dynamic typing” is really just having a single type for everything. Is quite easy to express in a language with variants. Of course, you don’t usually write code like that in a typed language because then your giving up the value of the type system.
But some of the most powerful cloud tooling out there was and is written in Go, and not just recently.
I think Go is a perfect example of the simplicity that can make some very complex software happen.
Just like some other ecosystems expect C, JavaScript or PHP, and they aren't getting any design prices.
Go is a perfect example of how a not so great language, with the right killer use case and corporate sponsorship, gets wide adoption.
Based on my expirience I must completely disagree. The language go itself together with its tooling, i.e. compiler , debugger and module system makes it very appealing to write well-written and well-maintaned programs of large size in go. It is the combination of the simplicity of go together with gos property of being a "batteries included" language.
In particular, I have noticed it is much easier for inexpirienced programmers to write high-qhality Code in go than in C.
Faster compile times, debugger, IDE, code formating on save, proper modules, choice of static or dynamic loading,... all there.
Go ties to Google made it have better fortune in the market than those languages.
> Making languages less expressive […] at the cost of all the other programmers
Apologies, I’m reading a contradiction here. Help me out?