Showing posts with label Go. Show all posts
Showing posts with label Go. Show all posts

19 June 2025

Go, Javascript, and Python

The world of application development is rapidly evolving, with demand for multiplatform experiences, generative AI (GenAI), and agentic AI at an all-time high. Choosing the right programming language and its associated ecosystem of frameworks and libraries is crucial for success. While Python and JavaScript have dominated these spaces for years, Go is emerging as a compelling alternative, particularly where performance, concurrency, and deployability are paramount.

Go's Approach: Go's strength lies in its ability to compile to a single, self-contained binary, making deployment straightforward across various operating systems. While Go doesn't have a direct equivalent to Flutter (Dart) or React Native (JavaScript) for native UI development from a single codebase, frameworks like Fyne and Gio offer cross-platform GUI capabilities, rendering native-looking interfaces for desktop and, increasingly, mobile platforms. Go's strong concurrency model (goroutines and channels) is also beneficial for building responsive applications that can handle multiple tasks without freezing the UI. This is particularly appealing for backend services that power multiplatform frontends.

Python's Landscape: Python's multiplatform GUI options include Kivy and BeeWare. Kivy is known for its custom UI rendering, while BeeWare aims for native-looking interfaces. However, neither has achieved the widespread adoption or seamless native integration seen in the JavaScript ecosystem. For web-based multiplatform apps, Python often relies on frameworks like Django or Flask for the backend, with frontends built using JavaScript frameworks.

JavaScript's Dominance: JavaScript, through frameworks like React Native and Ionic, is arguably the current king of multiplatform app development. React Native allows developers to build truly native-rendered mobile applications using JavaScript, leveraging a massive existing developer base. Ionic, on the other hand, focuses on hybrid apps using web technologies (HTML, CSS, JavaScript) wrapped in native containers, ideal for Progressive Web Apps (PWAs) and rapid development across web, mobile, and desktop. The sheer volume of libraries and community support makes JavaScript a compelling choice for many multiplatform projects.

Go's Niche in AI: While not its traditional stronghold, Go is making inroads in the AI space, especially for the deployment and serving of AI models, where its performance and concurrency are highly advantageous. Libraries like go-openai and generative-ai-go provide official and community-driven SDKs for interacting with large language models (LLMs) from providers like OpenAI and Google. Frameworks like Eino and Genkit are emerging, inspired by Python's LangChain, aiming to facilitate LLM application development, agentic workflows, and prompt management in Go. Go's ability to handle high concurrency makes it excellent for building scalable inference APIs for GenAI models. For agentic AI, which often involves coordinating multiple AI components and tools, Go's robust concurrency patterns can be a significant asset in designing efficient and reliable agent architectures.

Python's Reign in AI: Python remains the undisputed leader in GenAI and Agentic AI development. Libraries like TensorFlow, PyTorch, and Hugging Face Transformers form the backbone of modern machine learning, offering unparalleled tools for model training, fine-tuning, and deployment. For agentic AI, frameworks such as LangChain, LlamaIndex, CrewAI, and AutoGen provide high-level abstractions and comprehensive toolkits for building complex AI agents, managing conversations, and orchestrating multi-step reasoning. Python's rich scientific computing ecosystem (NumPy, Pandas, SciPy) further solidifies its position for data manipulation and analysis, which are integral to AI development. The vast academic and research community heavily relies on Python, leading to an abundance of pre-trained models, tutorials, and shared knowledge.

JavaScript's Growing AI Presence: JavaScript has also seen significant growth in AI, particularly for client-side inference and interactive AI experiences in the browser. TensorFlow.js and ML5.js enable developers to run and even train machine learning models directly in web browsers. For GenAI, JavaScript can interact with cloud-based LLM APIs. While dedicated agentic AI frameworks in JavaScript are not as mature or abundant as in Python, libraries like langchain.js are bridging the gap, allowing for similar agent orchestration patterns in the JavaScript ecosystem. JavaScript's strength lies in its ubiquitous presence on the web, enabling novel interactive AI applications that run directly in the user's browser.

For multiplatform app development, JavaScript with React Native or Ionic often provides the quickest path to native-like experiences across mobile and web. Go offers a compelling alternative for desktop-focused cross-platform GUIs and robust backend services. In the realm of GenAI and Agentic AI, Python maintains its dominant position due to its mature and expansive ecosystem of libraries and frameworks, making it the go-to for research, model training, and complex agentic workflows. However, Go is carving out a strong niche for high-performance AI inference and service deployment, where its concurrency and compilation benefits shine. JavaScript, meanwhile, excels at bringing AI directly to the browser for interactive frontends. The choice between these ecosystems ultimately depends on the specific project requirements, performance needs, deployment targets, and the existing expertise within the development team

16 April 2017

Scala vs Go Concurrency

Scala:
  • Immutable and persistent data structures
  • First-Class Functions and Closures
  • Concurrency and Remoting with Actor model
  • Software Transactional Memory


Go:
  • Expressive lightweight machine code driven
  • Go-routines and unix pipe-like channels
  • Isolated mutability abstractions for concurrency
  • High-speed compilation

4 March 2015

Online CI Providers

Hosted Continuous Integration is a hot area but also a very competitive domain. While some choose to have it hosted in the cloud others like to have more corporate autonomy with using such tools as Jenkins and TeamCity. Continuous Integration is an agile work flow practice that involves developers to integrate on code, in shared repositories, and utilize automated tests to verify for build quality, in order to allow teams to check for issues, early and often, on a daily basis. A step further in the Continuous Integration process is Continuous Delivery. Continuous Delivery being the hardest bit to fully achieve on a large complex architecture and may even prove to be foolhardy. Although, CI has been around for years, it really boils down to team dynamics and whether one really has the time to manually setup and monitor builds in comparison to a hosted option. In some corporate environments, teams may even have a dedicated team member for build and configuration management. The following is a list of a few hosted Continuous Integration providers and the different use cases that they provide for an agile software engineering process. 

TravisCI
DroneIO
CircleCI
BuildHive/CloudBees
SemaphoreApp
ShiningPanda
Hosted-CI
Bamboo
CodeShipIO
MagnumCI
SnapCI
SolanoLabs
ShipIO
Shippable
Wercker
Appveyor
ZeroCI
dployIO

Comparison of continuous integration software

10 February 2015

Go for Robotics and Internet of Things

Go is a very easy language to learn which can take a mere mortal a day at max to get started and probably less. The language is starting to take shape in a diverse application domains. It is becoming quite useful for cloud computing, and embedded as well as low-level development work. And, even an interesting replacement for shell scripting. Although, the language uses garbage collection, it does derive its roots from the C programming language, especially from looking at the backgrounds of the creators. For Python developers, it will be another useful and familiar arsenal at their disposal. Go is especially becoming useful for Robotics and Internet of Things with several interesting approaches becoming available in the community. It is even taking shape in the Semantic Linked Data space. At moment, the community is slowly starting to accept Go for a variety of application use cases through experimentation and evolution of the language. In time, we are going to witness an emergence of a new ecosystem of Go developers and a resurrection of an almost religious as well as active use for large-scale enterprise applications. 

27 April 2013

Let's Go Programming

Go is an evolutionary programming approach in which programmers can be more productive in making use of multicores and in process having more control and flexibility for concurrency. It is a language that has a mixture of both Java and C. Aspects of garbage collection are notable. The language even signifies less in coding lines compared to Java's verbosity. It feels like an interpreted language in dynamic mode and yet is compiled with static typing. It transcends what a lot of people would want in terms processing big data and working with intelligent algorithms. A programmer with the comparative speeds of C to the clean modularity, concurrency, and garbage collection structures of Java could only mean more productivity. Although, it can be also noted that Go is not as fast as either Java or C in benchmarks yet. However, the aspect of utilizing multicores makes for less of a wastage in a cloud computing environment. Where there is simplicity required, rapid prototyping for delivery, and less of an overshadowing engineering cycle, Go could be quite a suitable language. Go is still very new and does not facilitate much integration with other languages. It also does not seem to have the flexibility of rich open libraries yet like Java. However, in time as for all languages, new releases and community insights would add further to the road map. Go certainly seems like a promising language for the future prototyping. Perhaps, not just yet production ready.

A good reading guide to get started: