What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

C, JavaScript, PHP, COBOL, R, Java, Python and Swift can frustrate developers for very different reasons. They also remain hard to avoid because they support established systems, platforms and ecosystems that would be expensive or risky to replace. The complaints below are editorial characterizations from Peter Wayner’s January 2023 InfoWorld feature, not a measured ranking or consensus survey.

Why programmers keep using languages they criticize

A language can be awkward to work in and still be indispensable. Existing applications contain years of business rules; platforms and tools are built around particular languages; and a rewrite can introduce bugs while consuming time that could go toward new work. The practical question is often not whether a language is anyone’s favorite, but whether replacing it would deliver enough benefit to justify the cost and risk.

The eight languages here illustrate different versions of that tradeoff. Their frustrations are not equally shared by every developer, and the list is not a claim that these are the most disliked languages.

The eight languages and their tradeoffs

C: close to the hardware, close to the risks

C offers low-level control and portability, but Wayner characterizes it as close to a “portable assembler.” Developers must contend with separate header files, preprocessor complexity and pointers; memory errors such as buffer overruns can create serious security vulnerabilities. C persists because it is embedded in Unix and other foundational software, where replacing mature code is a substantial undertaking. The 2023 feature also noted some Linux kernel patches appearing in Rust; that was an observation at publication time, not a statement about the kernel’s current status.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

JavaScript: ubiquitous, with plenty of edge cases

JavaScript’s punctuation-heavy syntax and implicit coercion can make code harder to reason about. Values such as false, null, NaN and undefined are distinct, and developers must also keep evolving ECMAScript features and browser support in view. Its persistence is straightforward: JavaScript runs in browsers and is also used server-side through Node.js.

PHP: familiar web glue with a long maintenance trail

The feature portrays older PHP as string-oriented web glue and acknowledges that the language has improved. Its changing and deprecated features can make maintenance challenging, particularly across code that has evolved over many years. PHP remains tied to major web projects: Wayner’s 2023 account cited WordPress, Joomla, Drupal and Facebook as examples of substantial PHP-associated deployments. Those examples explain the installed base; they are not a current market-share measurement.

COBOL: verbose syntax, durable business logic

COBOL’s long history and verbose syntax can feel far removed from modern programming styles. Yet organizations may depend on business logic that works, and rewriting it risks introducing errors into systems with important operational responsibilities. The feature points to business and government or defense uses. Its cited Dice job count reflects the article’s 2023 publication period and should not be treated as current labor-market data.

R: quick analysis, unfamiliar patterns

R’s interactive, scratchpad-like workflow can suit quick analysis, but terse syntax, punctuation sensitivity and unfamiliar data structures can frustrate newcomers. Its package ecosystem is a reason not to switch casually: replacing R may mean giving up or rebuilding tools that analysts already use.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Java: a mature platform with operational tradeoffs

Java’s C-like syntax may seem familiar but still feel cumbersome to some programmers. Wayner raises garbage-collection pauses as an operational concern, along with runtime-version compatibility and the pace of releases. These are authorial concerns, not performance measurements showing that Java is inherently slow. The JVM, libraries, education, and established roles in mobile and web foundations all contribute to its staying power.

Python: readable code, complicated environments

Python is often valued for sparse punctuation and readability, but indentation is part of its syntax, and version changes or dependency incompatibilities can complicate projects. Linux distributions may also depend on Python components, making changes consequential beyond an individual application. Scientific and data-oriented communities, along with broad adoption, help sustain its ecosystem.

Swift: a feature-rich language anchored by Apple development

Swift’s breadth and complexity can be a lot to absorb. Its strongest ecosystem association is Apple development, though it also has server-side use. Wayner contrasts its feature set with Go’s emphasis on simplicity and suggests, as an editorial preference, sticking to a smaller core of Swift features rather than trying to use everything.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What newer survey data says—and what it does not

Stack Overflow’s 2025 Developer Survey technology results report JavaScript at 66% for the programming, scripting and markup languages question. The survey describes the question in terms of extensive development work in the past year and desired future use. It also reports Python adoption rising by seven percentage points from 2024 to 2025. The question had 31,771 responses, so these figures describe survey respondents, not a census of all developers.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The survey provides newer context for JavaScript and Python, but it does not establish current prevalence for all eight languages or prove why any of them persist. It should not be used to turn Wayner’s subjective complaints into empirical rankings.

How to read the “love to hate” framing

The list is most useful as a set of tensions rather than a verdict on which language is best. Friction can come from syntax, coercion, memory management or version compatibility. Persistence can come from an installed base, a platform role, a package ecosystem or the risk of migration. A team choosing a language for a new project should weigh its own constraints; a team maintaining existing software must also account for the cost of changing it.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.