Why Apple and Google Made Their Own Programming Languages
Gamoid writes: This Business Insider article looks into the state of Google Go and Apple Swift, highlighting what the two languages have in common — and why tech companies would bother involving themselves in the programming language holy wars. From the article: "One fringe benefit for Google and Apple is that making your own programming language makes recruitment easier — for instance, since it builds a lot of its own server applications in Go, Google is more likely to hire a developer who's already proficient in the language since she would need less training."
So... how does creating another programming language help recruitment?
"One fringe benefit for Google and Apple is that making your own programming language makes recruitment easier — for instance, since it builds a lot of its own server applications in Go, Google is more likely to hire a developer who's already proficient in the language since she would need less training."
This is a real headscratcher. When was the last time you used someone's company-specific language to solve your problems? Anybody remember that flop of a Facebook open-source "launch" last year?
Because they studied Computer Science. If it was easier to do, we would also have people making new CPU architectures and operating systems, just because.
being the future?
...for instance, since it builds a lot of its own server applications in Go, Google is more likely to hire a developer who's already proficient in the language since she would need less training....
That is a really dumb argument for why Google (or Apple) sponsor their own programming languages. Shops that use Java are more likely to hire Java developers, same for Python shops and Python developers, and the myriad of other languages.
Google is more likely to hire a developer who's already proficient in the language since she would need less training."
*eye ball roll*
"If any question why we died, Tell them because our fathers lied."
Really. That last sentence proves it. They have no fucking idea what different languages are good for, or not.
From wikipedia
Go's "gc" compiler targets the Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD, Plan 9, and Microsoft Windows operating systems and the i386, amd64, ARM and IBM POWER processor architectures/ A second compiler, gccgo, is a GCC frontend.
So there are two major compilers for Go already, one of which is gcc based which targets just about every platform under the sun. I'm not saying go will run everywhere gcc will compile code because the runtime also needs porting, but it is very cross platform.
I developed one of my command line apps in Go http://rclone.org/ and I release binaries for it which run on Windows, OS X, Linux, *BSD and even Plan 9 all cross compiled from my Linux workstation.
Every man for himself, all in favour say "I"
Why the fuck would they give a crap about multi platform. Customers only use one platform. They they don't give a flying fuck that your code works on platforms they don't use.
This is a bad article; and the submitter, editor, and readers should all feel bad.
The reason for all these Balkanized corporate languages, libraries, and stacks is to create a bigger SHORTAGE of programmers and make experience meaningless. If there's a new language every few years, the playing field is equal because your experience with the language is the same as everyone else's. Microsoft has done this for decades, churning through languages and libraries every few years, and for the same reason. Also, there's always a shortage of people for something new.
And Apple's been doing this for longer. Even though Objective-C is technically not a platform-exclusive language, it currently is for all practical purposes. That's why I never bothered to spend any time learning it.
I have done C#, but only when someone was paying me to do it. Haven't really done it on my own time. (Even if it is also technically cross-platform, its still 99% a Microsoft-universe language. At least its similar enough to other languages that it wasn't much trouble to pick up.)
Given the choice, its generally been C, C++, or Java. My selection between those tends to depend more on the application/platform that arbitrary preference.
"Google is more likely to hire a developer who's already proficient in the language since she would need less training."
This is the worst argument I have ever seen and is a total recipe of disaster. Imagine MS only hiring VB people, Oracle hiring PL/SQL and SAP hiring ADABAS and IBM hiring FORTRAN/COBOL people, where would they be today?
There's already solutions like Xamarin that get C# working on quite a few platforms, and Microsoft is pushing to make it work on all platforms as well. I hope they guan get visual studio working on other platforms and make something that allows me to write code once and have it run anywhere, even if I have to tweak the UI for different platforms. C#, Visual Studio, and the .Net runtime is one of the best programming environments there is. Windows app development is so much less painful than Android. If they can make C# easy to run across all devices, they'll attract a lot of developers and (as I'm sure is their plan), bring a lot more apps to the Windows desktop and phone app stores.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
How is limiting your hiring pool a good business decision?
Modern app appers app apps using app languages!
Apps!
The reason why companies develop new languages is because the ones coming from academia are focused on the wrong things. Product development requires an industrial strength, strongly typed (for the most part) fast language.
Projects coming from academia are interpreted, JVM based, functional, obsessed with (im)mutability, closures, and lambda functions.
This is not to say those things are not nice, however they are not central to a programming language as used in large scale industrial systems.
Someone at Apple just has the hots for that blonde singer.
I don't blame them. :)
Both languages are expensive API filth, off with their heads!!!
is it really impossible for anyone to believe that a language and toolchain can actually
make an organization more productive?
it seems like everyone is so lost in technical marketing that they've forgotten
about actually programming computers
I don't understand why the fringe benefits were the highlight of the summary.
That fringe benefit doesn't even make sense. I could swap out Go with any language.
"For instance, since it builds a lot of its own server applications in [C++], Google is more likely to hire a developer who's already proficient in the language since she would need less training."
A bold stance that Google takes hiring Go developers. Truly they are singular in taking up this hiring strategy of hiring people who know the tools they use.
And then the followup:
"Plus, any cool problems that developers in the wild solve with languages like Swift or Go, Apple and Google can adopt for their own businesses."
Truly a statement that can only be said of new languages like Swift or Go and not any other language in the history of software development.
The article has a point but featuring the dumbest part in the summary?
And it sort of misses that there have been a plethora of relatively new languages created by companies to solve problems in particular domains. Where's Erlang? Javascript? Rust?
Everyone should be scared of Web based apps. Because web based apps suck.
Don't forget C# (And F#, and C++CLI and C++CX, and what ever other languages Microsoft has made lately) and Rust. Its not as recent, but Ericsson's creation of Erlang also fits right in here.
I mainly want powerful symmetric meta programming in a strongly typed language, and a good foreign function interface. C++ and Rust are the closest, but C++'s metaprogramming isn't symmetric at all (the metaprorgamming language is not the same as the normal language like in Lisp for example, unless you do C++ code gen in C++ which isn't great) and Rust just isn't quite there either (Their #[derive(Hash)] for example is special cases for structs of size 1-12 and won't work past that, and not even implemented with a loop: thats not full metaprogramming). Python can do all the metaprogramming I want, but no one needs it in duck typed language anyway.
Go and Swift might be nice languages (I'm not going to offer an opinion on that), but they don't even attempt much if anything on the meta-programming front.
> They don't give a flying fuck that your code works on platforms they don't use
Until your code does not work on the platform the do use. Developers care about cross platform because user will change their requirements. You almost answered your own question.
The included go tool chain is now 100% Go.
It runs on x86 and arm. Linux, OSX, Android, and iOS are all first class citizens for the language. It's so much closer to write once run anywhere than JAVA, it's actually useful for me.
Gccgo is a joke. Nobody uses it, and there likely won't ever be a reason to choose gccgo over the actively developed, open source, well documented go tool chain that comes with the standard library and runtime.
It doesn't matter how many platforms Go compiles for; what matters is how much demand there is for Go programmers. Outside of Google, the answer is approximately zero, so it's a bad choice if you're worried about your continuing employability. C++, on the other hand, is used all over the place, so it's a very safe bet.
I don't use those platforms again why should I give a flying fuck about other platforms.
More change for the sake of change
http://saveie6.com/
The workers at Google use C++, Java, and Javascript, though often the libraries used are proprietary rather than something standard. SREs use a (horrible) domain specific language for monitoring tasks. Python is used for some administrative and small internal webapps, and is pushed on the world as AppEngine. If you can program at Google outside of the main SWE webapp arena (Google X, acquisitions, etc) you have more freedom, but likely a local tyrant who already exercised that freedom. You've got to feel sorry for the new hires into Travel (how's your Lisp and Assembly?).
We don't know yet what Go is good for, no one has used it for anything. It probably has more major faults than the already obvious ones (not the first mover and way behind on all kinds of staff/library/maturity/tooling/... fronts, can't do hardware since it's too high level, idioms and the language change quarterly, ...). It's a feather in your promotion packet to "know Go" (get Readability), but that's all any of the workers bother with it for.
Go exists because Google wanted to hire a couple of famous people, have them on staff to parade around, and the famous hires wanted to go back and improve/redo their greatest successes.
Using your own language does not help in recruiting but it helps retaining employees. The longer an employee is working with your proprietary programming tools the less marketable/valuable they are to your competitors.
I hope they guan get visual studio working on other platforms
To that end, you could try out Visual Studio Code, which was introduced at the build conference this year.
"They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
Linking to Business Insider? You must be kidding.
A useless website that spends more time on SEO than producing quality content, it earned a 0.0.0.0 entry in /etc/hosts long ago.
Why would the code that works on the platform I use suddenly not work anymore?
The makers of this article clearly have no background in computing, or journalism either for that matter. I'm surprised I didn't see a reference to the Illuminati in there somewhere. Bizarrely, the article doesn't even mention Dart, which is no doubt due to the two-minute Bing search that I'd imagine formed the entirety of their background research.
When considered against the status quo for their purposes and eras, all of these languages show significant, useful advances in programming. And if we're going to declare all languages that are created by a for-profit corporation invalid, say goodbye to Java, C#, C++, and C. Hell, even the Jacquard Loom was meant to make money.
with D serving as an advanced alternative. I view SWIFT as an Apple way to say that its platform is closed in every possible sense.
It took me less than a week to learn go. I still don't know all of C++ after two years. Learning Go was not a bad investment: the perspective I learned from it helped me write better C++ and C# code from both a OOP design perspective and threading perspectives, and is also a nice thing for my resume (Maybe is helped me get my option to work for Google, I don't know).
VIsual Studio Code is a simple code editor (although with quite a few enhancements). It does have nothing to do with Visual Studio. For example: it cannot compile C# code of any kind (Winforms, WPF, ASP.NET). On the other hand, I do recognise that Visual Studio Code is a pretty good editor; I am already using it as partial replacement of NotePad++ (when writing PHP, for example). Although I hope that MS will be improving quite a few things within the short term.
Custom Solvers 2.0 = Alvaro Carballo Garcia = varocarbas.
If you've made your own language, you're more likely to keep your experienced employees because there are fewer places for them to go to if they jump ship. Sure, there will be companies that use the language because they have to develop software for Google or Apple, but the employees are going to be a lot more locked-in than if they were experienced in something more widely used such as C or Python.
There is a minor recruiting benefit, only to "go".
WHY SWIFT IS NOT BENEFICIAL:
Internally, Apple doesn't write a lot of Apps; they might, eventually, convert some of their existing large applications, like Pages or Mail.App, over to Swift; these will largely end up being rewrites. So while knowing Swift might make you better able to get a job at a software house targeting Apple's platforms, it's unlikely to be meaningful in getting a job at Apple.
On the other hand, one benefit to Apple is that if Swift is not strongly used internally, the demand for App developers is unlikely to hire away Apple engineers out from under Apple, which was a big issue with the Objective C "brain drain" when iPhone and other apps took off. One of the things that Apple did, for example, was not let registered developers who were also Apple employees, take App programming classes held by Apple, for a period of six months after they started offering them to non-Apple employees. So there is an "anti-recruiting away of Apple employees" benefit to Apple.
WHY GO IS BENEFICIAL:
The recruiting benefit of "go" is clearer, although even with gccgo, go is not very portable to non-Linux platforms, despite its claimed platform support (for example, the standard libraries *still* have some serious compatibility issues on Mac OS X, despite the fact that almost every Google employee has an Apple laptop).
One thing that companies like to hire is young people; on the theory that "you can't teach an old dog new tricks", someone who knows "go" is a lot more likely to be younger, rather than older. It's not valid due to the theory, but it is nevertheless valid enough that you can pretty much use it as something of an age filter, and legally get away with doing do.
Another thing it means is that you're willing to learn new things; a surprising number of people aren't. If you got into software engineering for the money, and you are just using it as a "paycheck continuation program", instead of actually being passionate about it, it's unlikely that you've bothered to take the time to learn "go".
These are relatively minor benefits, since it doesn't take that long to learn a new language well enough to work in it pretty extensively; so training is not really a benefit, as the article claims.
How someone can learn go in under a week but take over 2 years to learn C++ is beyond me, but I assume it has something to do with dynamically redefining your definition of "learn" as you switch between discussing the two.
Wait, so you're saying that Google-- which has been developing an open source browser for 10 years, pushing web app support into Android, and been heavily promoting Polymer, even a new proposal for a better JavaScript (also open)... they're afraid of standards-based web apps?!!
And Apple is afraid of proprietary, closed-source software, I presume?
Meh, you could get the same effect by making your employees code in something like Ada. That even has the bonus of making them feel uncompetitive so they'll accept smaller raises.
It took me less than a week to learn go.
I learned JavaScript in less than a week, still does not mean that I know all the APIs that are considered core to the language.
the perspective I learned from it helped me write better C++ and C# code from both a OOP design perspective
The Google cool aid of OOP, using too much of it in c++ is more of a curse than a blessing. Fact is Google disallows large parts of the popular cross platform boost library for not being a OOP fap fest - we were looking to adopt their style Guide once we learned about it, many laughs were had that day and we dismissed it in favor of simple formatting and commenting rules.
(Maybe is helped me get my option to work for Google, I don't know).
Considering the issues with poaching agreements surfacing not too long ago you might have simply sold yourself under value.
One fringe benefit for Google and Apple is that making your own programming language makes recruitment easier --- for instance, since it builds a lot of its own server applications in Go, Google is more likely to hire a developer who's already proficient in the language since she would need less training.
And had Google used C, it would be more likely to hire someone who's good with C, since they would need less training.
Because if they used, for example, Java, when they hired an experienced Java developer they would need MORE training?
Approximately how large is the pool of 'experienced' Go/Swift programmers outside of Google/Apple?
Ken
The media is so fixated on these two companies that they're leaving out other competitors that don't come to mind in this exact same sector.
Facebook now has their own language: Hack. It runs on their own interpreter: HHVM.
This is similar in mind to the jump from C to C++, wherein existing PHP code mostly runs on HHVM unmodified, but switching to Hack adds a couple restrictions (fixing long standing issues with the PHP language), while adding countless new features (such as type safety and parallel I/O)
But Facebook is just "those other guys", right? They're not a tech company at all, they're just some web thingiemajigger.
He means "I tinkered with this new thing and it seemed pretty easy enough, so that was enough - I never needed to use it, so I never found out all the edge cases I know about in the mainstream languages I use every day".
Its why many people like new languages and things, they think they're simple because they only have to scratch the surface for some simple example and think that's all there is to it.
I'd define 'learn' as be able to read 90% of the code that's out there. And yes, I can easily see C++ taking years by that standard.
"Yes, our code *does* overload the 'space' character, I thought you said you knew C++!" :-).
Choosing to do all internal communication in your own language makes recruitment easier -- for instance, since it builds a lot of its own body of literature, WePretendToBeDwarfsOutOfTolkien Inc is more likely to hire a developer who's already proficient in the language since she would need less training.
Can't you see how utterly, completely, truly madly and deeply retarded this logic is?
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
It's no surprise that big programming organizations develop new languages to better suite their own needs. If you are running a large server farm, a language that helps you have 25% fewer memory corruption crashes without sacrificing speed is a huge thing. Outside adoption may vary, but over time some will succeed and supplant C/Java as default choices for new projects.
Personally I am hoping for something that unifies memory and external resource management without leaks, crashes or perceptible GC pauses. This may be unsolvable in theoretical general case, but a language and runtime can provide many patterns for common practical needs. Even having reliably destroyed local instances that can not be returned out of the method in Java would be a huge thing for helping people remember to close files.
Objective-C is very, very, very usable on any *nix platform. If you think it is only useful in Apple proprietary environments, that says a lot about you and nothing about Objective-C.
The only time there is any Apple-specific constraint is when you're using their libraries. That may be most often the case, but there is no reason that it needs to be on your own projects. Serious projects don't just glom onto whatever the nearest proprietary library is, they actually have to evaluate options and make choices. You can absolutely choose non-Apple libraries whenever you want.
A truer statement would have been: "Objective-C is mostly used on 1 platform for entirely social reasons."
Red Hat has Ceylon. Mozilla has Rust. Google has Go and Dart. Apple has Swift. Typesafe has Scala. SpringSource has Groovy. Oracle has Java. Microsoft has C#. Etc, etc, etc.
Ceylon caught a lot of flack initially from some members of the Scala community (and I guess some Java people) for "doing unnecessary work", "not listening to the community" and "not complying with standards. Apple caught the same flack for Swift with the same nonsensical arguments. Go has similarly been criticized for being weird.
The fact of the matter is that each one of these companies has their own requirements, requirements that "standard" languages like Java and C++ don't meet.
Also, which each new language comes a potential set of new innovations for new or existing languages to build upon. With Ceylon it's union types and null variables handled by built-in Optional types. With go, it's interfaces that are not explicitly implemented. Etc, etc, etc.
Bottom line: This is a good thing.
This space left intentionally blank.
One thing that companies like to hire is young people; on the theory that "you can't teach an old dog new tricks", someone who knows "go" is a lot more likely to be younger, rather than older. It's not valid due to the theory, but it is nevertheless valid enough that you can pretty much use it as something of an age filter, and legally get away with doing do.
One of the tricks you can't teach old dogs is that $x is a good salary (for insultingly small values of x).
Another thing it means is that you're willing to learn new things; a surprising number of people aren't. If you got into software engineering for the money, and you are just using it as a "paycheck continuation program", instead of actually being passionate about it, it's unlikely that you've bothered to take the time to learn "go".
That's both horribly true and a load of crap at the same time. I'm willing to learn any language, platform, API, framework, or anything else that helps me do my job well. I might play around with a new language, but what I will not do is spend countless hours of my free time learning the ins and outs of yet another language for which I do not have a use case.
How someone can learn go in under a week but take over 2 years to learn C++ is beyond me, but I assume it has something to do with dynamically redefining your definition of "learn" as you switch between discussing the two.
I know every thing in the spec for go. All of it. I've read the spec several times and know what any one thing is defined to do. I can read any code in Go and figure out what it does. It was very easy to get to this point.
I've only seen tiny parts of the C++ spec (But more text from it than there is in the Go spec), and sometimes can't even parse code written in C++ correctly. I sometimes forget details of type aliasing rules: is it legal for signed char* to alias any type, or just unsigned char*? I don't know... Did you know unsigned overflow us defined but signed isn't? I remember that one, but I don't know the details of overloading the comma operator, or the details on which overload you get when you have recursive variadic templates. I sometimes get hung up in some details of macros even.
I know a lot more C++ libraries than I know Go libraries, but as far as the language goes I know at least 95% of Go (Learned in a week, used occasionally for a year or so), and less than 20% of C++ (after heavy use for 2 years). I can use both fine, but there is no way I could claim to know "all" of C++. They have added more to in in the last couple of years than there is in Go...
He means "I tinkered with this new thing and it seemed pretty easy enough, so that was enough - I never needed to use it, so I never found out all the edge cases I know about in the mainstream languages I use every day".
No, that's not what I meant. After spending a week learning Go, I wrote a couple of applications in it, but after the first week I was not learning Go, I was learning libraries and patterns.
Read the Go spec: these is almost nothing to it. The language has ridiculously few features. The main design goal of the language was to make code very readable and maintainable which means all devs basically know the entire language spec.
Don't read the C++ spec. You don't have time for that and it keeps growing. C++ has lots of features, which is both a good and a bad thing, but not all languages are like that.
the perspective I learned from it helped me write better C++ and C# code from both a OOP design perspective
The Google cool aid of OOP, using too much of it in c++ is more of a curse than a blessing. Fact is Google disallows large parts of the popular cross platform boost library for not being a OOP fap fest - we were looking to adopt their style Guide once we learned about it, many laughs were had that day and we dismissed it in favor of simple formatting and commenting rules.
(Maybe is helped me get my option to work for Google, I don't know).
Considering the issues with poaching agreements surfacing not too long ago you might have simply sold yourself under value.
First, if you know Go, you know it is very anti-OOP, so your comment there makes little sense. Go mainly showed me how to avoid OOP, or at least decouple polymorphism from sharing of implementations. Go does not even have inheritance, templates or generics.
Also, while I got an offer from Google. I did not say I accepted it - I didn't take their offer.
The thing about companies of that magnitude is that unless you're a rockstar programmer (most of us aren't) you're just signing up for some bullshit lord of the flies atmosphere where the job is so internally competitive that it becomes overly stressful and completely unenjoyable. Yes the pay is probably good, however the environment is anything but healthy.
BeauHD. Worst editor since kdawson.
the aristocracy of the ancient world just magically disappeared?
You're not a "real" programmer until you've rolled your own framework or language. Sooner or later, everyone worth their salt gets some "bright ideas" and gives it a try. :)
I do not fail; I succeed at finding out what does not work.
"Similarly, Go was designed to make it easier to build complex systems. The old workhorses of the networked software programming industry, C++ and Python, just couldn't keep up with the demands that Google was placing on it."
Is there an explanation of what those demands could be? C++ and Python are very different languages in every way
proc print {
$display "$1"
$track_user_beacon $date $location $ip
}
proc main {
$print "Hello World\n";
}
OP is an idiot. Have any of you worked in a large corporation? Do you think someone from recruiting says "Hey guys! Do you think you could help us out by making a new programming language?" and then has *Rob Pike* and *Ian Lance Taylor* dive in to help them?
It's the same old story as MS right? I mean, you feel like you dominate a market so you start throwing your weight around. You want programmers to be MS programmers. That was their strategies, go after the coders as they are the ones who make the decisions. For every big software shop that dictates the technology, there are a hundred one man shows where the coder is selecting his own stack. Whether its putting out and steering people to your own language or own browser or whatever, its a move that betrays your sense of dominance and power. What's nutty is that it just doesn't work. Google is not evil until they are in the driver seat and screw everybody.
-- A cat is no trade for integrity!
People that are actually good at developing software will be so in any language after a short time. People that are at the low end of the skill range will learn these languages like Go in order to have some skill at all. They will still produce code that sucks though. Or said differently: Preselecting candidates based on whether they know a specific language is usually a hugely expensive mistake in the long run. Not that other companies are routinely making this basic mistake all the times. Just shows that there is not good reason to work at Google or apple these days and they are better avoided.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Seriously.
You won't create a new language if you just need to develop a small app, however, when things become big, creating a new language to fit what you are trying to build may become a worthwhile investment.
Good programmers can pick up a language very quickly anyways.
They hired Rob Pike.
“Common sense is not so common.” — Voltaire
...and it had nothing at all to do with recruitment.
When Apple came up with the LLVM static analyzer, they became much more aware of just what kind of coding mistakes were costing them the most time and money, and Swift addresses those issues.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
Easy; recruit the students who wrote thesis in *your* language.
Push it into the Universities (stray Dollars help), drive curriculum, ensure adoption.
Universally and without exception?
Don't be stupid. Some web apps sucks, many others don't. Just like applications written for every platform over the entire history of the electronic digital computer.
They don't tend to suck more or less than apps for Windows, Android, iOS, QNX, MacOS, Linux,OS/2, or any other platform -- developed in any language.
Want to see an absurd number of really crummy apps? Look no further than Google Play or the Apple App Store. Do we then confirm that Android and iOS apps suck, and that everyone should be frightened by them? Of course not. (To that one misguided mod: Blind ideology isn't informative.)
Required reading for internet skeptics
they're afraid of standards-based web apps
Obviously. Why do you think they developed Dart?
Required reading for internet skeptics
c and c++ are a safe bet for all the licensed and unlicensed criminals of cyber space.
the mic loves it because of the war business it fosters
rust, swift and sappeur are not beneficial to raytheon, lockheed martin, e systems, hb gary federal and all the other cyber war profiteers. indeed.
thats why honest people must learn them.
rust and sappeur are cross platform. swift is important conceptually. expect a ton of foss knock offs soon.
we really need to look at the big picture and the upside here
dont be a cynical asshole when you swim in the sharky waters of the cyber sea and a nice float swims to you.
This just means things haven't changed much over 50 years.
Besides university-created languages (BASIC comes to mind), hardware manufacturers used to create not just their own operating systems, but also their own languages. FORTRAN for example was originally an IBM language.
When Unix entered the field as an OS for multiple hardware platforms, it also came with its own language (C).
And some languages have been created outside of the IT world, such as CHILL (telecom industry) and CLASS (Canberra Instruments, ca. 1980, very specialized language for processing nuclear spectrum analysis data on a PDP-11).
Apple released their own language for one reason, and one reason only. They, and their developers have an awfully big installed base of Objective-C. So they needed a language that fixed the hideous underlying flaws in Objective-C whilst being under the surface having exactly the same object model and memory model and what not, so that the two languages would marry completely seamlessly. No other language would have done that.
I just assumed it was about controlling even more of the stack, and helping to bring about the time when they control it all..
As an older programer sometimes I am cynical and assume they created a new language that no one knows so they can hire the cheapest, youngest labor (since only young people not currently working or paying a mortgage have time to master a language).
That being said, Go is not too bad (although I find I have a hard time with the dependency management tools). Swift feels like a language aimed at broadening the programmer base. Cognitively I feel reminded of Python when I play with it, which is a bit of a barrier since I never liked python much myself.
Peace, or Not?
If you're proficient in an internal language, you're more likely to remain working there. Eventually, you'll be paid in Google bucks or Apple dollars, which are not legal tender anywhere else in the world.
So after Google and Apple had a non-poaching agreement that Steve Jobs put together (which results in stagnating salaries), where they won't hire each other's employees, they got sued and had to pay a lot of money from a class action lawsuit.
Nothing changes. Now they want to do the same thing but using a different way. You're a developer who works for Google, but now your experience is worthless outside of Google, so you have no choice but to continue working for Google. Same for Apple. These companies will do anything to make sure salaries stagnate and nobody can get a raise.
MicroSoft liked a Java-like languge, but found it too slow or rebuffed in suggesting changes to Sun. So htye basically made a hJava-like language themselves. For most of its history its only run in the MicroSoft ecosystem, although there are feeble attempts to make it multiplatform.
In a nutshell, if the only tools you know how to use well are the tools specific to your current and no other possible employer, then you are stuck and screwed if they no longer need you. Your negotiating position is shot. That is some hyperbole but quite a bit of truth.
There are only 6,863,795,529 types of people in the world.
Swift == (Objective-C)++
One perhaps significant fact: the Go compiler is licensed under a BSD license, Swift has started as proprietary, but may be going over to something open this year.
You hire a bunch of CS Ph.D. that studies OS systems... then put them with the task of developing for the iPhone, Android phone...
It's natural they will develop their own OS cause they're developers, not business development gurus, dev managers, or MBAs.
It's like taking a carpenter and telling him to hire a bunch of workers to do the carpentry. Or a bunch of MBAs to execute a plan set by another board.
Carpenters go to school to do the the carpentry, MBAs go to school to build companies (not 'run' them). PhD CS guys want to create OSes, not be application developers. That's why there are a zillion string classes out there.
While Go and Swift are interesting incremental improvements, they are not taking into account what we learned about programming languages. In many ways, these two languages seem firmly stuck in the 1980s. For example, Go has no generics, and as far as I can tell, Swift still does not have the kind of true generic types I introduced in XL in 2000, i.e. the possibility to call "ordered" all types that have a less than, and then define functions with "ordered" instead of having to use <T> all over the place just like in C++ (and please, could we stop using angle brackets?)
More generally, there was a lot to be learned from more dynamic languages deriving from Lisp. Being able to treat code as data (homoiconicity) completely changes things. It means your language can be extended in itself, just like Lisp integrated object-oriented capabilities effortlessly. It means you can do metaprogramming, introspection, reflection, dynamic code generation, in a natural way rather than with specialised ad-hoc features. All things that Go or Swift spectacularly fail to do.
A real language redesign does not bring you incremental benefits, it should bring orders of magnitude on many tasks. I speak from experience. In XL, I can do complex arithmetic in 11 lines of code. What about Swift or Go? Ask yourself why Go can't offer complex arithmetic as a library package? Similarly, in Tao3D, I can do things HTML5 just can't, in a much less verbose, much higher-level language, and simple animations take 30 times less code than in JavaScript. The 30x factor tells me that I invented something new. Many others can demonstrate similar innovation.
I fail to see benefits of a similar order of magnitude with Swift or Go, and it annoys me. Companies like Apple and Google have the means, if only the financial ones, to make bigger things happen, in particular when smaller teams like ours already did a lot of investigative work.
-- Did you try Tao3D? http://tao3d.sourceforge.net
For exactly the same reason as I give a flying fsck about your opinion.
Not everything that can be measured matters; Not everything that matters can be measured.