2022· International Journal of Modern Research in Science & Engineering· 0 citations
TL;DR
This paper examines the practical challenges developers face when implementing concurrency in Java and Python by first presenting a comparative analysis of two very popular programming languages, namely Java and Python, and explains how minor oversights can result in massive outages.
Abstract
Concurrency is touted as the route to faster, more responsive software, yet it continues to be one of the hardest things to master in programming today. As software gets distributed over multiple CPU cores, machines, and interacts with users in real-time, it is the developer who has to orchestrate the simultaneous execution of multiple tasks very skillfully to avoid tricky and unusual bugs. This paper examines the practical challenges developers face when implementing concurrency in Java and Python by first presenting a comparative analysis of two very popular programming languages, namely Java and Python. Both languages support concurrent programming, but they differ significantly in their models, tools, and limitations. Java through its comprehensive multithreading and concurrency API, and Python through its simpler syntax which however comes with a very serious limitation in the form of the GIL (Global Interpreter Lock). This comparison highlights how these architectural decisions profoundly affect the ways in which programmers interact with the language, how efficient the programs are, and how dependable they turn out. Our narrative revolves around concurrency-related mishaps such as race conditions, deadlocks, thread starvation, and inconsistent state management, which arise in distinctive ways in the two considered languages. Java programmers are confronted with the need to synchronize threads correctly and prevent over-engineering while Python developers have to find ways of circumventing constraints that hinder parallelism. By looking at examples of real-life concurrency dilemmas and the respective solutions that have emerged over time, the paper explains how minor oversights can result in massive outages.
For the first time in decades, the two fastest-growing mainstream programming languages are not object-oriented. They are statically typed, with first-class lambdas, and are known for their concurrency stories. They are Go and Rust, both imperative. If object orientation is no longer a requirement for mainstream adopti...
Richard Feldman· Proceedings of the 4th ACM S...· 0 citations
This article is an attempt to share a method by which developers can efficiently isolate and remediate performance issues when they do not have direct access to the runtime environment by combining practical remote profiling, real-time monitoring, and targeted debugging techniques.
Madhurima Kommuru· American International Journ...· 0 citations
Torchy is presented, a tracing JIT compiler for PyTorch, one of the mainstream eager-mode frameworks, that achieves similar performance as data-flow frameworks, while providing the same semantics of straight-away execution.
This work shows how higher-order combinators solve higher-order problems of asynchronous calls to a network service, database, or language model uniformly, including timeouts, retries, rate limiting, caching, reentrant locking, and cancellation.
We propose PKDB, the first interactive debugger for GPU and multithreaded low-level kernels written in Python. Python is widely used in high performance computing (HPC), with frameworks such as PyKokkos translating Python-embedded domain-specific languages to native code that runs across OpenMP-threaded CPUs and variou...
Ivan Grigorik, Gabriel Kosmacher, G. Biros et al.· 0 citations
We use cookies to run the site and, with your consent, for analytics and to show ads.
See our Cookie Policy.