DEV Community

Discussion on: Illusion of differences between Operating Systems, Programming Languages and Web Frameworks

Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

It's all about implementation.

Yes, one could theoretically implement any program identically in any Turing-complete language.

Practically speaking, though, the implementation details of different languages and their standard libraries does have an effect. For example, the default sort() function in three different languages might use three different sorting algorithms, some of which may have different implications for performance and memory handling (e.g. stable vs. unstable sorting on a linked list).

Meanwhile, some common algorithms which are very easy to implement in a procedural language (like C) are impractically difficult to implement in a pure functional language (like Haskell)...and vice versa. (And yes, algorithms have a major impact on the end result.) This isn't to the praise of one language or detriment of another, but it does demonstrate that not every tool is ideal for every job.

And yes, sometimes these differences are MASSIVE.

So, while technically the same code could be implemented identically, or reasonably nearly so, in any language, practically speaking, it seldom works out that way. The human developers have finite time, knowledge, and attention, so if a tool is ill-fitted for a particular job, the end result is going to have significant issues, if it even meets spec at all.

Every language or framework has scenarios for which it is well-suited, and scenarios for which it is ill-suited. Knowing the differences is a critical part of choosing the right tools. Pretending all languages are equal serves no one.

With that said, let me again emphasize, every tool has a job for which it is well-suited. Flame wars aren't rooted in practical discussions of language capabilities, but in imagined superiority of one's favored tools over those tools one dislikes, and that originates largely in a destructive emotional compensation pattern indicative of Imposter Syndrome.

Collapse
 
codemouse92 profile image
Jason C. McDonald
Collapse
 
xet7 profile image
Lauri Ojansivu • Edited

That "dead" discussion also has caused phenomena, that some newbie comes to programming language chat channel, ask "is there existing this kind of software already in this programming language". And then when someone points to such Open Source project, but if it has not had very recent commits, that newbies says "but it's old". So they are searching something that "exists" but "is not old".

The correct answer to those would be "yes, that software has taken many years of development to get all features working, just go ahead and update it's dependencies, that is very tiny amount of work compared to writing all of it from scratch".

Thread Thread
 
codemouse92 profile image
Jason C. McDonald

All correct...assuming the project in question reasonably fulfills the spec.

See also...

Collapse
 
xet7 profile image
Lauri Ojansivu

Yes, who has time to rewrite all those billions of lines of code that exist?

All still need continued development.

Collapse
 
xet7 profile image
Lauri Ojansivu

How many are still staying at the point of choosing a tool, keep arguing, and do not even get started?

When there is existing software, it would take many years to change programming language and web framework. It's like, you build a house, and very often tear it down to change something that is below the house. When house is built, plan is to add more features, not tear down.

When comparing various Open Source kanban software, actual developer experience between programming languages and web frameworks is so similar. Each Kanban software has boards, lists, cards etc. User experience is very similar. Performance depends on how much data is loaded to browser. I fail to see any significant difference.

Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

I think the trouble is, you're comparing your experience with a very specific project (web application-based Kanban boards) to an industry consisting of hundreds of disciplines, tens of thousands of applications of those disciplines, and millions of projects thereof.

Web development isn't directly comparable to application development, which isn't directly comparable to systems development, which isn't directly comparable to data science, to embedded systems, to machine learning, to whatever.

The majority of programmers/software developers/computer engineers over the last 50+ years were rational, intelligent people. If they created a tool or language, it was usually because they needed it, and nothing existed which did exactly what they needed. To accuse the whole lot of them of unnecessarily "reinventing the wheel" would be just as presumptive as to claim one language is inherently superior as another.

P.S. I'd say for everyone one real-world project stuck quibbling over language/framework, there are a hundred that just started building. Not every project is stalled on the Angular vs. React debate...in fact, most programmers don't care. The sane majority just goes unnoticed, because they aren't lending their voices to the clambor of the quibbling few.

Thread Thread
 
xet7 profile image
Lauri Ojansivu

Of course all those Operating Systems/programming languages/web frameworks are necessary, they have a lot of users, software etc.