Why Apple, Google, and FB Have Their Own Programming Languages 161
An anonymous reader writes: Scott Rosenberg, author of Dreaming in Code dissects Apple's Swift, Google's Go, and other new languages — why they were created, what makes them different, and what they bring (or not) to programmers. "In very specific ways, both Go and Swift exemplify and embody the essences of the companies that built them: the server farm vs. the personal device; the open Web vs. the App Store; a cross-platform world vs. a company town. Of all the divides that distinguish programming languages—compiled or interpreted? static vs. dynamic variable typing? memory-managed/garbage-collected or not?—these might be the ones that matter most today."
Naming (Score:3, Interesting)
So Apple named a language "Swift", Google named a language "Go", and Facebook named a language "Hack"?
Obviously it's not just the dirty FLOSS hippies who can't come up with decent software names.
Re:Naming (Score:5, Funny)
Well, I heard* that the name Go was decided upon when an executive at Google needed to think up a name and was looking around his office.
On his computer at the time was a Chrome browser with the Google homepage open, but a Solitaire window was open in front of it obscuring the right half the page.
Now, if the Solitaire window was on the other side, we might have the ogle programming language instead!
* and by "heard" I mean "just made up"
Re: (Score:2)
I read that somewhere.
I wrote it down, then I read it.
Re: (Score:2)
There is no name that could be more accurate.
Re: (Score:3, Insightful)
Some of these are actually good names, e.g. Swift
Re: (Score:2)
Re: (Score:2)
Except for creating confusion with Forth, Inc. products*?
* That just about no one had ever heard of...
The real conspiracy... (Score:1, Offtopic)
Re: (Score:3)
All of Go and Swift's documentation is available as free PDFs.
Re:The real conspiracy... (Score:4, Insightful)
I don't think it's really that. I think it's more the divide specified.
Some of us do NOT like using ebooks for reference manuals. We like having dog-eared tomes with tons of bookmarks or post-it tabs. The ability to flip back and forth between multiple pages in an ad-hoc manner is also useful.
Re: (Score:2)
Re: (Score:2)
I have Programming Perl. Bought 15 years ago, and I used to consult it a lot.
Now I just google the information. Easier to find than on the book...
Books are nice and have a romantic feeling about them. But e-docs are oh god so much more convenient.
Re: (Score:1)
There may be many ways to do it with digital media, but for those of us used to doing it with physical books, it's not necessarily an improvement, or even a desirable substitute.
Re:The real conspiracy... (Score:5, Informative)
It's hard to flip thru an ebook the same way you do a paperback.
Re: (Score:2)
I don't necessarily want to make permanent bookmarks... I'll stick a finger on a page, flip to another page, stick a second finger there, go to a third page... I just want ad hoc access.
I also find *reading* an E-book harder than reading a dead tree. Also, if I want to consult multiple books at once, I can have them open on my desk at the same time. If I'm using an e-book reader, I can't do that.
tired of dead tree books relevant only a year or 2 (Score:1)
www.safaribooksonline.com
imho certainly worth the money...
Re: The real conspiracy... (Score:2)
I read e-books exclusively now, EXCEPT for coding manuals. These require more back and forth lookup than works of any other genre.
Re: (Score:2)
Much better than cutting a tree, that you replace, and printing a book, right?
Unless the publisher is using a manual hand press to produce the book, printing, storing and shipping the books still requires energy. I find programming ebooks more convenient as they don't take up physical space and are easier to search through. Physical books, however, are still useful as firewood if civilization ever goes to hell in a handbasket.
Re: (Score:2)
Re: (Score:2)
20 goto 10
Re: (Score:2)
Of course, to be able to read that "ecological" ebook, you just need to extract and rape the planet of non-renewable rare metals so you can manufacture the various device display and electronics components...
Its a crying shame that most software developers don't use computers. Then we'd be able to solve that problem "for free" as they say. Oh, well...
Re: (Score:2)
Re: (Score:2)
"bury them all in the same spot" we call that "pre-cycling" as they are just holding on to them until recycling actually does become economically viable.
Re: (Score:2)
Re: (Score:2)
Other than a handful of obvious edge cases (the worst of which were fixed with fast enumeration and string and number constants), I'd argue that it mostly isn't Objective-C that is too verbose, but rather the Cocoa APIs themselves. And you'll be using those same ginormous scrubtheKitchenSink:withBrilloPad:andCleanser:byHand:usingExcessiveForce: methods in Swift, just with slightly different punctuation....
Algorithms (Score:5, Interesting)
If I give you an algorithm, throw a dart at a page of programming languages to select one and if you cannot implement that algorithm in that language then you are nothing but a code monkey.
A computer scientist can implement any algorithm in any language.
Why are these companies using their own languages?
Coder lockin. That is the only reason to have your own language.
Work a few years at XYZ company working on their proprietary algorithms in their ABC programming language?
Good luck getting another job.
See, they learned the hard way with their stuff in Javascript - common language and coders - uh, I mean Javascript engineers - left for greener pastures because so many other companies were using that language.
Re: (Score:2, Interesting)
I disagree with your coder lock-in statement. But I agree with your "throw a dart" metaphor.
Just because you CAN code an algorithm in a language doesn't mean it's the best option. Just because I can drive a screw into a 2x4 with the heel of my shoe doesn't mean I should.
Languages are developed to make certain problem domains easier. If they are flexible enough, people will adopt them for other problem domains as well. If they aren't flexible enough, they might stick around in their problem domain, but t
Re: This isn't carpentry. (Score:2)
Re: (Score:2)
Libraries aren't the issue, it is the choice of primitives. The reason shell scripting languages are so pleasant for system administration is because files are a primitive. cp /X1/X2/X2 /Y1/Y2 working is huge in simplifying the code conceptually. That's why DSL's exist, to allow programers to work with better primitives.
In the case of Swift the primitives are Cocoa data structures. And there wasn't another high level language wit
ABC? (Score:2)
http://en.wikipedia.org/wiki/A... [wikipedia.org]
hammer, screwdriver, saw, nail gun (Score:2)
>. A computer scientist can implement any algorithm in any language.
ou CAN pound a nail with a screwdriver. You can even pound a nail with a saw. A hammer is a much better, more efficient tool for that job. If you need to install hundreds of nails, a nail gun is a much better tool.
I COULD use VB to convert one type of XML to another, but I use xslt (true xslt, not loops) because it's a better tool for the job. I use several languages each day, selecting the one best suited for the task at hand.
> if
Re: (Score:2)
generally there is one condition that decides whether JavaScript is the best choice . JS is the best choice if and only if that's the only possible option.
This opinion sounds uninformed.
counter-example? (Score:2)
I said it is the best choice for client-side processing on web pages, because it's the only plausible option. Where other options exist, the others are probably better suited to the task.
If you disagree, can you come up with a counterexample, any scenario where you'd consider using something other than JavaScript, but decide JavaScript is better than the alternative? I'm curious what solutions could be worse than JavaScript. As stated in what you quoted, I do mean solutions - things that would work, but
Re: (Score:2)
Where other options exist, the others are probably better suited to the task.
I can't imagine what you'd think is better. Other languages have adopted features like first-class functions and closures as a direct result of influence from JavaScript. What does that indicate to you?
Taking it further, the prototypal approach to OO that JS uses is, without question, superior to the classical approach. As there are vanishingly few examples of other languages that use prototypes instead of classes, just about any language you can offer as a substitute would be, necessarily, inferior. (A
Re: (Score:2)
> Taking it further, the prototypal approach to OO that JS uses is, without question, superior to the classical approach
Please point to the study that demonstrates this. I would argue the opposite.
Runtime definition of types (modifications to a prototype has the same effect) has never been shown to be more productive than static typing, so I have to question assertions that it's obviously true.
> Python would be examples of popular languages that would clearly be worse than JS on the web
Java on a brows
iow no, not one counter-example (Score:2)
You could have said the same thing with a lot less words had you phrased it as:
No, I can't think of even one application where you'd consider two languages and decide JavaScript was better for that application.
I didn't say JavaScript doesn't have a lot of features. It does have a large mishmash of features. I said it'll almost always be the worst choice, if you have any other option.
> its intended purpose, making it exceptionally well-fit for the web.
It's the ONLY choice for client-side web. A
Re: (Score:2)
It's the ONLY choice for client-side web. As I said twice before, that's the one place nothing is worse or better - because you have no other choice.
You seem to forget that, for many years, it was not the only choice. JS handily beat the competition. You may be too young to remember those early days, so I won't hold it against you.
Since neither iOS nor most Android devices run Java applets, that means MOST users today won't run them. A "solution" that won't run at all for most users isn't a solution. You can't say "Java and JavaScript would both work, but JavaScript would be better".
Again, you forget your history. Java in the browser was effectively dead long before iOS and Android hit the scene. It lost out for a reason, after all. Java had its chance, there was more than a little excitement surrounding it, and it still failed miserably.
If you're advocating JavaScript as a server-side language, well that's just silly.
I'm not advocating anything, just calling out your opinion as u
interesting points, link (Score:2)
You've made some good points, and ones directly responsive to my statement this time. That is true, once upon time Java was a serious option on the client side and it did have the hype. So much so that Livescript was renamed JavaScript to take advantage of the Java hype. JavaScript won, against actual competition. Ps I WAS around during that time, and I've written ActiveX controls for use on public web pages. JavaScript beat both ActiveX and Java in the browser.
The PayPal link is interesting as well.
Re: (Score:2)
Otherwise, where you have a choice, JavaScript is NORMALLY not the best suited for any role other than client side web page code. Exceptions may exist.
That's a bit more reasonable. Though I wonder why you limit its utility like that? Is there something intrinsic to the language that makes you think it's less suitable than, for example, Python in situations where that language is well-suited? For clarity: JS can't replace PHP where it works well for reasons independent of the languages themselves (that's in the differences between node.js and mod_php), yet JS obviously can't compete with C where C shines, for obvious reasons directly related to the lang
Re: (Score:2)
I'm not well-versed enough in Python to to an indepth analysis, but I can say that Python appears to be ideally suited for roles that were once done by shell scripts. The Red Hat installer Anaconda seems like a perfect role for Python, with a lot of interaction with external binaries and very little real computation. The focus of JavaScript, the purpose for which it is created, is of course different.
Further, I would say that unlike Perl or C++, a key constraint on the development of JavaScript was time.
Re: (Score:2)
A computer scientist can implement any algorithm in any language.
Sure, but that doesn't mean you can use any language to write large scale, reliable, and maintainable software. To do that, you need encapsulation, strong typing, static and dynamic analysis tools, etc. Many large teams have written projects with ten million lines of code, using languages with these attributes, such as C++ or Java. Good luck trying to do that with PHP or JavaScript.
Re:Algorithms (Score:5, Interesting)
If I give you an algorithm, throw a dart at a page of programming languages to select one and if you cannot implement that algorithm in that language then you are nothing but a code monkey.
A computer scientist can implement any algorithm in any language.
The "D" language used in writing DTrace scripts does not have loop constructs or recursion, and is not Turing complete. While I can do some pretty astonishing things in "D" that would make your jaw drop, even without looping constructs and recursion, it's pretty easy to come up with things which are impossible to implement in "D".
So I would say your page of programming languages would, at a minimum, need to be Turing complete programming languages.
Re:Algorithms (Score:4, Informative)
And of course this "D" language is not to be confused with the other "D" language [dlang.org], which is Turing complete.
Re: (Score:2)
Challenge accepted.
Re: (Score:1)
So you claim you could implement a B+Tree in Whitespace? BrainFuck?
Sorry, but different languages have different strengths, otherwise we'd all be programming in TML (Turing Machine Language). I could have said assembler, or machine language, but both of those are easier to use.
OTOH, I'll admit that I tend to flit from language to language more than is necessary, and I've still skipped some, like Haskell and CaML. Sometimes a language doesn't look like it would make anything I'm doing easier.
OTOH, I once
Re: (Score:2)
Coder lockin. That is the only reason to have your own language.
Perhaps that was the case with Apple, but Google people just wanted to have something more reasonable for writing servers, and C++ prove itself to be a major PITA.
Re: (Score:2)
Hi,
I'm Australian. So as far as you possibly can get from technology and innovation.
I can understand the need for a specific language from a technology giant. When you build the hardware platform as complex as these guys probably have, with the type, and volume (in space and time), of data they have from customers hitting various services, it makes sense to have an internal language that understands how the data is stored and when wanting to run queries you want them to be ru
Re: (Score:2)
Just because it's possible, it doesn't mean it's effective. Developers could write applications with Brainfuck or Whitespace, but they'd take far longer, have a lot more bugs, and be incredibly unhappy.
There's a lot of variation between programming languages, and it makes a big difference in how productive programmers are. Better programming languages are valuable.
Because they saw
Coder Lockin (Score:2)
Not only that, but I think it is more relevant to developer lock in to a particular platform. Just like C# and Apple, and say porting video games from Xbox to Playstation. They want exclusivity on applications developed for their particular platform. This is nothing new. It is just a way to exclude competition to their particular market, and to prevent or at least make it more difficult to get the same functionality from a competing service.
As probably many people mentioned, any coder worth their salt can u
Re: (Score:2)
Re: (Score:2)
The original claim was computer scientists. Professional programmers are even better documented on their productivity since the 1950s. Essentially the old rule that lines of code are constant so higher level languages result in vastly more productivity in exchange for worse runtime performance. There also is no question that the built in abstraction makes an even bigger difference both in what is eventually produced.
Re: (Score:2)
You can implement a 3D game in Python, but its interpreter and memory management is going to make it much less efficient than the same game in C++.
IMHO that is a rather unfortunate example. I'm sure people have written 3D games in Python with not so bad results, because the 3D heavylifting is done on a GPU anyway (via PyOpenGL).
Re: (Score:2)
People have also written 3D games in LISP; that doesn't make it optimal.
Why? (Score:2)
real men have their own programming language, that's why!
Like how they used to say in the chip business, real men have their own fab.
Re: (Score:2)
You would also want your language to work best with the services you offer.
Why was VB so popular for Windows Development? Well it was designed to make Windows Apps. Other languages could do this as well, but they were often a bit more cumbersome to achieve similar tasks.
Re: (Score:2)
Why was VB so popular for Windows Development? Well it was designed to make Windows Apps. Other languages could do this as well, but they were often a bit more cumbersome to achieve similar tasks.
Actually, VB was popular because it lowered the bar on *who* could make Windows programs. It wasn't so much that it was better at making those programs, it was that vastly more people were capable of building working programs using it as a tool than using any other of the available tools. In terms of computer language learning curves, BASIC is still pretty hard to beat. In fact, I'd argue that no one has beat it yet.
Re: (Score:2)
Careful. On this site, that's flamebait. So is this:
The reason we use programming languages is to make it easier to write programs. A good programming language, then, can be judged on how much easier it is to use than other languages. What does that tell us about BASIC?
Re: (Score:2)
The only problem with BASIC is that each compiler is its own non-standard dialect these days, many of which are proprietary, old-school non-FOSS institutions. FreeBASIC is very good, though, and open source. Modern dialects of BASIC (dunno about Visual Basic) are very structured and support a wide variety of programming paradigms from object-oriented to event-driven to procedural. Some dialects do enforce strong typing. So while you or I might not have reason to use BASIC as we have other languages we a
Re: (Score:2)
Yep, this. It all boils down to a really smart guy who's still trying to get respect by proving how big his academic dick is.
Re:Why? (Score:4, Insightful)
If I was in charge of a huge budget, and the ability to foist my language on the public, I would invent my own language. heck, every programmer wishes they could design the language everyone uses.
Missing the Point (Score:3, Informative)
While Mr Rosenberg claims that Go is distinguished by its approach to concurrency, his section 'The Essence of Go' is almost entirely devoted to the trivia of braces and semicolons. Yo won't learn anything about Go's approach to concurrency here.
Re: (Score:2)
his section 'The Essence of Go' is almost entirely devoted to the trivia of braces and semicolons.
Good point. You have succinctly captured why I feel like I learned nothing from that article.
Re: (Score:2)
The whole article is sortof an exercise in textual essentialism.
What does style tell us about what these things mean? It's a literary crit technique that might be applicable here, but he clearly either doesn't know what he's talking about or he's a dilettente who has absorbed the surface features of computer languages without groking the underlying concepts.
NIH (Score:3)
I assumed it was a case a Not Invented Here Syndrome [wikipedia.org].
Re: (Score:2)
The Google vs. Oracle lawsuit made a business case for not-invented-here syndrome. I think every major platform vendor will have there own programming languages in the future. Custom APIs and programming languages stops entire classes of patent/copyright lawsuits dead. It stops developers from moving between eco-systems. It even prevents your employees from stealing top-secret software and moving to a competitors. (And if they do steal the software, it becomes really obvious when law-enforcement shows
Re: (Score:2)
The Google vs. Oracle lawsuit made a business case for not-invented-here syndrome. I think every major platform vendor will have there own programming languages in the future. Custom APIs and programming languages stops entire classes of patent/copyright lawsuits dead. It stops developers from moving between eco-systems. It even prevents your employees from stealing top-secret software and moving to a competitors. (And if they do steal the software, it becomes really obvious when law-enforcement shows up.)
I do agree from a portability/programmer perspective, NIH programming sucks. However, the legal perspective - it's great!
Also, the funny thing with lawsuits - even if you win, you still lose.
Given the permissive BSD style license that both Google and Facebook use for their respective languages, I don't think that they created these languages for any of these reasons.
It seems that detecting stolen software would be easier if the code was stolen and used as-is. If someone steals secret Go language code from Google and moves to Facebook and rewrites it in Hack (after all, the the actual coding is the easy part of any software project so rewriting it is much easier than creating the project from s
Re: (Score:2)
This is a good thing.
It means that schools will start teaching actual programming again instead of 'coaching to a language'. Colleges are cranking out Python/Javascript coders like they used to turn out Java coders. If every company is different maybe they'll teach the logic so that people can learn any language.
Apple had the best reason of all for a new languag (Score:1)
in Apple's case, particularly
That is exactly backwards.
Apple needed to go forward with a new language, but no other language offers the kind of interoperability that Swift does, nor would any existing language designers have been willing to bend to make that happen.
In Apple's case they designed a modern language that you can use to the fullest, while at the same time having easy bridging to Objective-C so that developers (including Apple's developers!!) can chose a transition timeline that makes sense for
Re: (Score:1)
so that developers (including Apple's developers!!) can chose a transition timeline entirely at apples discretion to change everything yesterday and not tell you til next month.
Re: (Score:2)
If Apple had moved to a whitespace-active language I seriously would have switched to Android development.
Not even joking. I have used a lot of languages professionally and for fun, but I could not get past that aspect of Python and I can't see why such an insane design flaw would be any more tolerable in Nimrod.
It has so many dangers in terms of correctness and overlooked bugs...
There was one other language that bugged me in... Fortran... but at least there is only affected what was a comment, it didn't o
Are these things catching on? (Score:2)
Outside of their respective organizations, I'm not sure these things are really catching on. Adoption of Go seems to have come to a standstill. Uptake of Swift has been kindda slow. And Hack seems to been ignored even by dedicated underground computer hobbyists. As well as lumberjacks.
Re: (Score:1)
except for rocket, docker, coreOS, rackspace, and others that are rolling out more tools and services written in Go every day.
Re: (Score:2)
It's been out less than a year. Objective-C is the third most popular. Why wouldn't you believe that Objective-C developers wouldn't move over to Swift?
http://www.tiobe.com/index.php... [tiobe.com]
Re: (Score:1)
Darn, I'd put that the thing about "lumberjacks" in, hoping that everybody who hadn't gotten it yet would finally C my Objective. ;-)
Re: (Score:2)
Go isn't supposed to be widely used, just well supported on Google's cloud.
If languages had mascots (Score:3, Funny)
Then Red Forman would be the mascot for Swift.
As in, a swift kick in the ass. Dumbass.
Good reasons for Swift and Go (Score:4, Interesting)
Go is a fantastic language for server side development with concurrency that's not painful to wrap your head around, and is perfect for cloud development in Google's world.
Won't comment on Facebook Hack, since it's not clear to me why Facebook itself needs to exist. But to each their own...
Re: (Score:2, Insightful)
Swift needed to be created because Objective C stinks, and no other modern language would have fit smoothly into the Smalltalkish legacy of the Cocoa framework. I'm just glad that the Apple fanboys who constitute most of my fellow iOS developers are finally allowed to believe bad things about Objective C, at least now that there's a nice alternative. Made me a little sick before to hear people praising Obj-C while writing reams of ridiculously verbose code that nobody will want to maintain 5 years from now.
Objective-C is fine. The square brackets syntax just become second nature and disappear into the background after a couple of days. And personally I have no objection to methods with long names - it helps me understand what has been written when I return to a program after months (or a year) away. The long names actually make the code more readable and maintainable. I like Objective-C and have no bad things to say about it or the concepts behind it.
What Swift does bring is enhancements that I would like to
Re: (Score:2)
The problem with Objective-C is its libraries. Nobody has put much work into the cross-platform ones for a decade, and it shows. And since I don't use Apple, Cocoa is of no interest to me, but all the documentation refers to it. So I ignore Objectve C.
I find it a very interesting language that's hobbled by lack of usable documentation. (Even for cross-platform stuff I got redireected to the Apple site.)
Re: (Score:2)
I haven't looked at it often, but it the last time I looked it still looked the same. However the real problem is the documentation.
Re: (Score:2)
And personally I have no objection to methods with long names - it helps me understand what has been written when I return to a program after months (or a year) away. The long names actually make the code more readable and maintainable.
No, in many cases the extra length is just ridiculous boilerplate. And even in cases where the extra length clarifies what's going on, you can do the same thing in other languages, i.e. every language supports use of meaningful names.
/joke, joke
Can you seriously argue that concatenating a string in Objective C is elegant?
Be careful! You're repeating yesterday's Dogma of the Faithful. Apple fanboys now have corporate blessing to move to Swift, and you may find yourself left behind.
Re: (Score:2)
But Objective-C is very unusual in that it interleaves method parameters with the method name. The best alternative to that is using named parameters, and hardly anybody uses those all the time, so developers end up having to memorise the arguments and their order for every method if they want to be able to read code quickly.
Re: (Score:2)
The only substantial way of improving on string concatenation in Objective-C would be to introduce custom operators, and that brings its own set of issues. The other alternatives sacrifice consistency.
I think it's telling that the ultimate way Apple found to improve on Objective-C is to put it on a retirement path by introducing a replacement language. That's mostly all I'm saying here.
Re: (Score:3)
The only substantial way of improving on string concatenation in Objective-C would be to introduce custom operators, and that brings its own set of issues. The other alternatives sacrifice consistency.
Actually, you could quite easily bring custom operators to Objective-C by adopting the Smalltalk approach. Simply allow symbols to be messages e.g.
[@"foo" stringByAppendingString: @"bar];
could be written as
[@"foo" +: @"bar];
Smalltalk allows you to drop the colon with binary operators so you could even have
[@"foo" + @"bar];
Good reasons for Swift and Go (Score:2)
Won't comment on Facebook Hack, since it's not clear to me why Facebook itself needs to exist. But to each their own...
My understanding is that Facebook needed a more statically-typed language (while still preserving the familiar syntax of PHP) in order to exploit more performance advantages when compiling their code to the HHVM, which started off as a PHP compiler.
Re: (Score:2)
You don't have to be a fanboy to like Objective-C. It's a great language for its age and use cases. Yes, it's verbose, but a lot of that verbosity actually aids readability and maintainability.
Re: (Score:2)
Check out: http://stackoverflow.com/questions/510269/shortcuts-in-objective-c-to-concatenate-nsstrings [stackoverflow.com]
Every action that should be commo
Re: (Score:2)
That is an invalid complaint to lay at Objective-C's feet. Objective-C is designed, even now, to be a strict super-set of C. There is no way to overload operators in such a context and still maintain compatibility with C.
Domain-Specfic is a more compelling case... (Score:5, Informative)
These all strike me as iffy use cases. What is more compelling is creating a language for some more-specific need. These are generally referred-to as Domain Specific Languages, or DSLs (not to be confused with trying to push high-speed internet over a twisted pair...)
I designed one and implemented a compiler and interpreter for it in the early 1980's. It's not all that hard. I had had one compiler construction course in college. I used classic tools Yacc/Lex/Prep and wrote it in C.
The language is (was? haven't followed) called VSL, or Variation Simulation Language.
The problem was this: in the early 80's auto companies were experimenting with variation simulation. It's simulating the build of complex mechanical assemblies so that the effects of dimensional variations can be analyzed. The technique was developed at Willow Run Labs during WWII, as part of the solution to the awful-quality airplanes they were building for the war. They gathered experts to fix the problem, and they used this technique. At the time, it was done by a room full of woman working Friden mechanical calculators...
So, in the early 80's there was some Fortran code written by a university professor that ran on a mainframe. I worked for a company that set out to commercialize it. My first task was to port it from the mainframe to IBM PC.
Two problems: Models were written in Fortran, and then linked against a library. Fortran is painful, for anything. It's especially painful for manipulating representations of 3D objects. And compiling and linking Fortran on a PC was slow! Half-hour builds! And that's just to find you had a syntax error and then rinse and repeat.
My boss wanted to build a "menu system" that engineers could design in. Keep in mind, we are talking 80's and this was just to be a scrolling text menu. Yes, there were graphics workstations, but this was a new untested product, and nobody was going to pop the $20,000 that they did for, say, finite element workstations. they wanted it to work on a PC so that we could more easily convince the auto companies to try it - make it an easier decision to give it a go.
He wrote up the menu system, and presented it to us in the conference room. He rolled-out a roll of paper the length of the conference table, and then it hung over both ends! I convinced him that the time for this approach had not yet come.... Sure, point and click on graphics - but he couldn't afford either the time or money for that development. But not that silly long-ass text menu!
The alternative was VSL. It was specifically-tailored to the task, it had "objects" of a sort - and by this I mean "3D objects". You could just pass a fender around in a function call, for example.
It didn't compile to machine code, but generated bytecode. I wrote an interpreter in Fortran, and so eliminated the costly link step. The Fortran program just read the bytecode into an array and interpreted it. Was it slow? No, it was fast as heck! That's because almost all the work was done in well-optimized library functions written in Fortran or even assembly in some cases. (I also talked my boss into hiring an actual mathematician who fixed our broken edge cases, and knew the right heuristics to speed things up.)
This made it much easier for engineers to create and use models. Now they wrote them in VSL, much more expressive to the task than Fortran. And in a minute they either knew they had a syntax error or were testing their model.
In a couple years, we went from a couple of pilot projects to like 50. Every auto company took it up. Boeing used to help re-engineer the FA-18. Today probably every car, airplane, and hard drive was analyzed using VSL. (Siemens wound-up with the product eventually, after a few acquisitions.) I don't know if VSA is still under the hood, or if it really has any practical use today: the models are now written using point/click/drag/popup stuff on drawings. What my boss new we had to eventually get to, but couldn't at the time.
Of the languages mention
Go does not see significant use, even at Google. (Score:4, Interesting)
Go does not see significant use, even at Google. It's one of the allowed implementation languages, along with Python, JavaScript, and C/C++, but it doesn't see a lot of uptake internally at Google.
Re: (Score:2)
Have you read the bit about "Concurrency is not MultiProcessing" (or something that means the same thing). Go is a single threaded language, which is concurrent but not multiprocessing. So there's basically no payoff in many cases from using it, and you've got to run it through an interpreter (unless you use the gcc version).
So why bother?
Re: (Score:2)
I had assumed that:
Proud tradition (Score:4, Interesting)
Like when Bell Labs developed C to write Unix? There's a long tradition of major companies coming up with new languages to scratch an itch. Thank God is hasn't died. How boring to live in a time when we'd decided that there was nothing left to innovate?
Re: (Score:3)
Bell Labs didn't develop C; in fact I think Bell Labs hardly knew what to do with it. Two (brilliant) people -- Keringhan and Ritchie -- working in Bell Labs wrote C and developed Unix so that they could do what they wanted, better and quicker, on the minicomputers around their labs. Their slim volume "The C Programming Language" is amazingly engaging, concise, and deeply instructive. Modern IDEs are great for many things but they also constitute a significant hurdle to actually coding, which K&R had yo
Re: (Score:2)
You credit the environment, which was certainly spectacularly nurturing at Bell Labs. But don't conflate that with the sort of corporate development that produced these new languages (Swift, Go, Hack). Corporate entities may produce invaluable Technical Journals etc. but rarely, if ever, elegant, inspiring ideas, products, or books like K&R.
Re: (Score:2)
Go is an open language and was created because while Python was very useful to Google, it was also quite slow. Hence they wanted a faster and more parallel version of Python (which runs single threaded even on multi-core CPU platforms).
Swift was baldly needed because the time taken to write an ios app in objective-c is too long. Also Apple does not want your iOS app to be easily portable to other mobile OSes (lock-in).
Re: (Score:2)
If only there were some cross platform language that could interop with Swift that you could use to write the code you wanted to be portable.....
How portable do you think an Android app is to any other mobile platform?
Re: (Score:2)
I'm guessing here, but you could port your java android app to a mobile windows .net app. The java and .net APIs may be different, but both languages are remarkably similar.
Re: (Score:2)
Sounds more like linked-in got hacked, and this hack could be used to sign into Slashdot.
Re: (Score:2)
Yeah really. Why is the text set to 18 point? What's with the ugly graphics that just get in the way? I used a firefox plugin to disable CSS and scrolled down til I found the text. At least it was readable without resorting to a full screen browser (why do people work like that nowadays??!)