Google's Go and Dart: parallelism and structured web development for better analytics and applications (2012)

Big Data -- the new buzz word in the IT world -- is synonymous with the concept of data-driven decision making. All across the industry, enterprises are collecting all sorts of data including client preferences, trends amongst social networks and information about competing businesses, at an unprecedented scale with the focus on making intelligent decisions. The decisions made from processing such data have a direct impact on both the businesses and its clients through higher profit margins and smarter services respectively. The combination of sophisticated analytics and data-driven decision making enables new types of solutions, from mining the human genome to deriving sentiments from social networks. This is all leveraged through consistent innovation of underlying technology, increased competition and cloud-based SaaS. Clouds are the frontiers for most business IT solutions they idealize the as a service methodology, interoperability between services and correct billing metrics. Thus, it easily follows that most data analytic tools are designed to be run on cloud clusters rather than traditional data centres.

In a world where there is an emergence of extensive use of analytics, data and fact-based decision making, spontaneous sorting of data becomes imperative. Industries like finance, pharmacy and others rely heavily on data to assess their strategies and customer requirements, and to respond quickly for the better. Hence, analytics are crucial for knowledge discovery, business growth and technological improvements. Every second, massive quantities of data are being generated and there is a need for data analytic tools that are easily integrated, scalable, and informative. While we are promisingly producing vast amounts of information, there is currently a wide gap between its potential and its realization. There are many problems with Big Data, including the heterogeneity of data, scale, readiness and complexity. The dynamic business environment requires a company to quickly adapt to newer technologies that can provide better solutions. A high throughput of services translates into improved business efficiency. It is often the case that an innocent shift in development tools can catapult a paradigm altering change. In this workshop, we discussed two emerging technologies recently launched by Google -- Go and Dart; which through their advents in scalability, improved parallelism, and structured web development greatly enhanced the capacity and quality of building applications designed to work from handheld mobile devices, to data crunching frameworks such Google's Map Reduce, IBM's Big Insights and others.

The initiative behind Go is to create a language that allows programmers to exploit in programs by providing simple yet powerful features built into the language that do not require complex code and high maintenance. With the introduction of GPGPU's for execution, it is essential to have dependent applications in order to improve their performance. Go provides simplicity and improvement in leveraging processing power while providing simplified features of traditional programming languages. Not following the traditional object oriented programming model, Go was initially targeted for system programming including applications for distributed systems, storage infrastructure, networking infrastructure and the RPC layer, however, its features make it an excellent language deploying application on concurrent systems. Go has higher throughput, compared to Java or Python because of its dynamic stack- and core- focused features for speed and concurrency. Being a hybrid between C and Python, Go is type-safe and memory-safe, has fast start-ups, latency-free garbage collection, and high-speed compilation. Businesses gain the advantage of availability of services by using a language that is designed to be concurrent. Go's concurrency allows developers to create sets of lightweight communicating processes called goroutines. The programmer doesn't need to worry about synchronization, locking mechanisms such semaphores and race conditions. This affects the cost of back-end and front-end instances which allows tiers to deliver more responses per instance.

Moreover, Go uses significantly less memory compared to Java which is JVM dependent. Go is predominantly used because of its easy integration with frameworks like Map Reduce. Go provides static typing and makes unit testing much easier to the languages like Java and C. Go is designed specifically to provide easy integration with Google App Engine and Google Compute Engine. Finally, Go compiles static binaries with no dependencies, so Go programs can simply be dropped onto a server and deployed.

Today, the web is everywhere -- from handheld mobile devices to television sets to traditional desktops. It is very easy to write a web page that is universally accessible on any device via a browser. There are no installation or update procedures, making the user experience very pleasant. JavaScript is now supported by almost every browser because of its convenient functionality. However, alongside the beauty of JavaScript is its unpleasantness in debugging, performance across browsers, and security on client devices. Dart is a new web programming language and methodology in development by Google for creating structured web applications. It is developed with the aim to encompass aspects such simplicity, efficiency, and scalability while combining new language features with familiar language constructs into a clear, fluent syntax. The fundamental reason for its creation is to ultimately replace JavaScript because of its unstructured and inconvenient development paradigm. Dart aims to tackle these issues by providing lexical scoping, closures, and optional static typing; not to mention integrated development and debugging are also provided in the Dart Editor and SDK, which supports major common interactions such refactoring, breakpoints, code completion, code navigation and much more. In addition, the SDK provides a standalone virtual machine, package manager, and Chromium with an embedded Dart VM. Dart can also be compiled to JavaScript, which makes it usable on all modern desktop and mobile browsers with an additional plus of being able to run on a server in a stand-alone Dart VM. Fundamentally aiming to create structure and flexibility for the web, focusing on supporting a full range of devices --- including phones, tablets, laptops, and servers, and providing environmental and supportive tools to run efficiently across all major modern browsers, Go and Dart are developed specifically for a simplification of the coding paradigm and better integration with existing technology. Both Go and Dart aim to improve the modern day programming model and unstructured web source code.

This full-day workshop focused on the core technologies of Go and Dart, including building and deploying applications integrated with analytic frameworks on cloud clusters. The workshop was split into three segments. In the first segment, the objective was to take a hands on approach to walk through the features of Go and Dart. The participants wrote code themselves and explored both the languages on a first hand basis. We introduced the languages and discussed their basic constructs and some advanced features.

In the second half, we examined an in depth example of creating a web application using Go, Dart, Map Reduce, and Google App Engine. The goal was to demonstrate Go's simplicity, power of concurrency, and structured web development and integration with existing API's. In the last segment, we concluded with a discussion about the impact Go and Dart can have on different parts of the IT industry. As the shift to development for cross mobile platform web applications increases - we expose the usefulness of using Dart instead of JavaScript for building mobile web applications with frameworks like Apache Cordova and IBM Worklight. Furthermore, we discussed questions like how these languages are being used in the real world today; the learning curve, cost and complexity behind the languages; the value of the products that are produced by using such programming tools.

There are many subtle challenges and opportunities associated with Big Data, which require restructuring the data management platforms to better suit the needs of businesses. When making a shift to newer technologies, there are always doubts and expectations. Hence, it is beneficial to look into the integration of emerging technologies with existing systems for the constant improvement.