There is certainly the need for network effects which large corporations often can provide more consistently, but we have seen plenty of examples within the space where individuals or smaller companies have been successful in providing these same network effects.
Nowadays if you want to create a new language there is a minimum set of features everybody expects that raises the complexity quite high. You could just create a bare language but who would adopt that?
Not to hate too much on erlang, but I would say that beyond being small, as a pushback to characterizing it as "bells and whistles", Elixir brings to the table "21st century" understanding/opinions on what makes for readable and maintainable code (build packaging, first-class documentation, module organization, file types, strings, map-focused vs struct-focused, sane function parameter ordering). As a result, I can confidently onboard a junior into Elixir (especially if they were in a RoR bootcamp) and have them be productive. I probably wouldn't for erlang.
That's sort of why I threw in OCaml; largely it is still only successful within academia. Python on the other hand had similar beginnings, but has been wildly successful both in academia and in common use.
Many of those languages came out in the 1990's when the big corporates were busy pushing visual 4GL's to replace programming languages. But programmers prefered to write a Perl ten-liner rather than fire up a visual environment, click on some toolbars to place some widgets on a form, link in the data files using the right-click form, wait while the OS thrashes the hard drive as it paints the screen for the first test, and on and on. When those corps realized they'd dropped the ball, they soon built their own.
I worked as a programmer in the 1990s, when I got paid to write things in C, C++, Perl, Khoros (I guess that's a "visual 4GL"?), IDL (the array language), VB, SQL, INFORMIX's horrible forms thing (which was not especially "visual"), sh, csh (not my fault), and occasionally Tcl. It's true that PHP, Ruby, Tcl, OCaml, and Lua came out in the 1990s (Python is from 1990, so arguably the 1980s), but they became widely used in the 2000s. In fact, even Perl was considered kind of déclassé until these "lightweight languages" took over the world, and then Perl became déclassé again after being eclipsed by Python, Ruby, and most surprisingly, JS.
(OCaml is not a "lightweight language" and is not like the others, and consequently never became popular.)
I don't recognize your description as corresponding to any events I remember. Sun was pushing Java. Microsoft was pushing C++, then Java, and then when Sun sued them, C#. Apple wasn't pushing much of anything until they bought NeXT, and then they started pushing Objective-C. As far as I know Oracle was pushing PL/SQL and cisco was pushing bletcherous IOS commands. Microsoft was pushing VB, which sort of resembles what you're saying, but VB wasn't a 4GL (the language was just 1960s Basic minus line numbers and plus subroutine arguments) and was actually spectacularly successful at what it did; it just wasn't good at making web sites. Borland was pushing Delphi. I guess in a way Microsoft was pushing Access? Are you thinking of Microsoft Access?
Maybe you were thinking of PowerBuilder? It was spectacularly successful at what it did, too (again, not building websites), and it was a visual 4GL, but it was being pushed by Powersoft, not a big corporate, until (Wikipedia tells me) Sybase bought it for 0.9 Instagrams in 1995. I never saw anybody use PowerBuilder but I didn't use Microsoft Windows a lot.
When you say, "they soon built their own", do you mean VBA and PowerShell, or what?
Every marketing department was calling their company's new software development product/language/whatever a "Fourth Generation Language" back then. There's no actual definition for what it really means. Perl, Python, Ruby, and PHP represent a trend that peaked the 1990's, some came before and some after, so there's no need to read "1990's" literally.
My total memory (i.e. work, study, and hobby) of that extended decade (1985-ish to 2005-ish) was VB, VBA (Access, Excel), Java on Windows, Quattro Pro, dBASE 3+, Perl, Cobol on IBM (and ICL), and a myriad other obscure mainframe languages and mini-languages that probably still get used in banks and insurance companies.
> I don't recognize your description as corresponding to any events I remember
My previous description of that time was quite typical for many of us. For example, I remember in 2001 developing a five-line Word macro for an accounting department on a leftover 386 sitting in the corner running Windows 95 that read in a file couriered in daily from some other company's Unix system that stripped out some incompatible data from each line. After I deployed it into production, the user every morning started Word, opened a Word document that contained a button on a form, clicked on the button, selected the day's file from the floppy, then waited (at the water cooler) while the macro ran. They then renamed the output file so the date was in the name, and copied it from the LAN to the mainframe using some proprietary program, so it could be input (with the funny Unix bytes removed) to the overnight processing run. Perhaps you worked in the other company sending that Unix-based file to us every day, and didn't see the ongoing after-effects of your C++ program that produced the file.
> they soon built their own
C#, Go, Swift, etc.
is that actually true or is that true of a vocal minority? I've been using Go since 2011 and I'm perfectly happy that it's Google's language; I'm happy to mooch off of their investments. In my seven-plus years of using Go I have never encountered a Go programmer in real life that is actually mad about this.
As to your not encountering a Go programmer who's mad about this, I think that's because you're considering people who are already programming in Go. I suspect people who care never actually start using Go because of their thoughts on Google's involvement. (For the record, I too am fine with it, especially after reading Ian Lance Taylor's response.)
um I talk to a lot of programmers that don't use Go. Most that don't use it decide not to use it because of either the type system ("it's not safe/expressive enough") or the garbage collector. I've never talked to someone that said "Go is technically good and I think it would be a good tool but I won't use it because of Google".
It would be really frustrating for you, because assuming people found out about your language in the first place, it would be shot down for not having generics (or something else), and there wouldn’t be any Google fanboys to come defend it. So much of what’s popular is determined by which company is backing it, whether people want to admit that or not. Pure bandwagoning.
Folk were using that Go, but they would use the Google Go.
This made me think of this (thank you for reminding me about it, by the way):
Really looking forward to see where Alex will take this project.
Brand recognition is not that important for programming languages. It does skew decisions a bit, but people still have to make too many of them when moving to another programming language, so the effect is not that significant. Go just happened to hit all the right spots for many programmers at the time and a bit of marketing turned that into some adoption.
Counter-examples: Clojure, Elm.
I guess because it does not merit that adoption. The only reason it gets attention at all is either 1) "oh it's made by the same people who made UNIX and C and UTF-8", or 2) "oh it's made by Google".
Granted, this support was perhaps more cultural than corporate. There's something to be said for a community that grows in your own backyard, has significant documentation in your native language(s), etc.
Heroku was acquired by Salesforce.com in 2010.
> There was no mandate or suggestion from Google management or executives that Google should develop a programming language. For many years, including well after the open source release, I doubt any Google executives had more than a vague awareness of the existence of Go
You can be sure that whatever they do gets a high profile without it in any way being "supported" or "official"
> There was no mandate or suggestion from Google management or executives that Google should develop a programming language. For many years, including well after the open source release, I doubt any Google executives had more than a vague awareness of the existence of Go
And JS was born and evolved with the browser.
Javascript was backed by Netscape, and later by Microsoft/IE. It would never have succeeded without corporate backing and being on of the 2.5 usable languages on the web (Java was the other one, I'm counting ActiveX/VBScript as half)
I'm not very familiar with the history of Python, though it seems it was funded in its early years by various research institutes that employed Guido van Rossum, rather than a giant corporation.
It's a C-like language with GC, that compiles to native code supported by an efficient runtime, and can work effectively with parallel/concurrent code. In many ways it's Java done right, or a more intuitive (and from certain POVs, preferable) alternative to Haskell and Ocaml. That would seem to be enough to drive adoption.
No, but seriously, you didn't get what I was saying there. The whole reason Go might be of interest is that it is loosely C-like in a way that Haskell and Ocaml are not.
Not quite:
* no generics
* error prone error handling
* non tunable GC
* null pointers
* golang interfaces are messy and can't be used to tag structures
* golang time package is garbage
and lots more
Java today is superior to golang in almost every front.
Compilation times are not that different, especially when using incremental compilation. I worked on large projects in both languages, and for any non-trivial code base, the difference isn't that far off.
I'd argue that readability is better in Java due to things like non-clutter due to error handling, and the existence of generics.
Deployment has been solved for a while now with building shadow jars[1].
[1] Not to mention offerings like: https://quarkus.io/
I you're looking for high throughput you just need to allocate less. Or use unsafe. And it's totally doable.
And the same approaches can be done in Java (e.g. self-managed off heap allocations), even more-so when they introduce value types.
func main() {
n := 1
fmt.Println(n)
}
Object pooling won't help here.The new GCs on the JVM have very few parameters to tune, I think Shenandoah or ZGC have only two parameters to set up, can't get much simpler.
Escape analysis was just rewritten, and the objective is to handle this case more gracefully.