You're working for Acme Data Modelers (ADM), which specializes in building ad hoc real-time applications that display relations among scientific datastreams, typically using 3D graphics on high-powered personal workstations that run either GNU/Linux, Mac OS, or Microsoft Windows. Your software infrastructure contains many homebrew packages that cover topics such as approximation techniques, data mining, event processing, image processing and generation, X3D import/export, user interface, and portability. These applications are currently written in a hybrid of Python and C glued together with SWIG, but this mixture has the following problems, in descending order of importance:
Your boss suggests that it may be time to think about migrating the application gradually to a better programming paradigm. Her idea is not to rewrite it from scratch all at once: instead, ADM would write the skeleton in a new programming language, that would interface to the the existing modules, and then ADM would write new modules in the new language, and perhaps translate the old modules as needed.
Your boss suggests that you look into two candidate languages:
Investigate the suitability of migrating your software to Go as suggested above. Similarly, investigate OpenCL. Don't worry about how well the languages are currently supported, or about relatively minor bugs in their current implementations: assume that, if ADM chooses one of the languages, you can devote enough resources to it to fix the bugs and help make the language a success in the broader software engineering world. Assume that ADM will continue to be interested in building ad hoc applications: that is, one-off applications that need to be written and published relatively quickly. However, also assume that ADM will not be designing chips, and that its software will run on hardware platforms such as those speculated about in Feldman's article.
Write a two-page executive summary assessing the suitability of Go and OpenCL for improving ADM's software. The summary should be in 10-point font or larger. You can put references and appendixes on a later pages, if there's not enough room on two pages (the appendixes might be useful for containing source code that you wrote). Your summary should focus on the languages' effects on performance, cost-effectiveness, reliability, portability (to future hardware), flexibility, and ease of use, compared to ADM's current approach. Your summary should contain at least one code example, rendered in both languages, to illustrate an important point of your analysis (no "Hello world" programs please). Your summary should be suitable for software executives, that is, for readers who have some expertise in software, particularly in managing software developers, but who are not experts in C, Go, Python, or OpenCL. Please keep the resources for written reports in mind.
Submit a file hw6.pdf containing your summary.