DEV Community

loading...

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

xet7 profile image Lauri Ojansivu ・1 min read

You see all those flamewars about Operating Systems, programming languages, web frameworks, and discussion about some of them are "dead" ?

Yes, I tried them all.

After maintaining Wekan many years since 2016-12, I tried updating another kanban software, made with Go and Angular.

Summary: Kanban software is all the same. Same acrobatics to update dependencies. Same kanban features. Same bugs that have already been fixed in Wekan. If both Wekan and that other kanban software used same CSS, user could not see any difference. It does not depend on programming language and web framework.

You have an illusion that there is any benefit or major difference between programming languages and web frameworks, or that those small differences matter in any way.

There is no spoon.

Do NOT participate to any of those flamewars.

So now, please go back to contributing to Open Source.

Best Regards,
xet7

(posted originally at: https://blog.wekan.team/2019/09/illusion-of-differences-between-operating-systems-programming-languages-and-web-frameworks/index.html)

Discussion

pic
Editor guide
Collapse
codemouse92 profile image
Jason C. McDonald

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
xet7 profile image
Lauri Ojansivu Author

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

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 Author

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

Collapse
codemouse92 profile image
Collapse
xet7 profile image
Lauri Ojansivu Author

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 Author

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

All still need continued development.

Collapse
tensorprogramming profile image
Tensor-Programming

I am consider myself to be a prolific polyglot developer. Over the course of my career I've used at least 25 different programming languages in production (some of which have been discontinued).

There are very large differences in programming languages that do matter. Many languages may define themselves as multi-paradigm or general purpose; the fact is that every language fits into a niche of some kind. This niche is defined through any number of reasons; be it performance, implementation, community, personal bias, or availability etc.

Yes, it is kind of silly to have flame wars regarding programming languages (OSes and Frameworks) but it is also fairly silly to ignore these niches. These languages should be treated as different tools in your programming tool belt and you should learn when to use one over another.

BTW, I do tend to cringe every single time I see a "Top 10 programming language" list. Its really like comparing apples and oranges.

Collapse
xet7 profile image
Lauri Ojansivu Author

Yes, not everything is coded with those "Top 10 programming languages". There is much more coded and in use every day.

Collapse
tensorprogramming profile image
Tensor-Programming

You are absolutely right. Just recently, I worked with clients using Elixir/Erlang, Clojure/Script, Scala, F#, Rust, Ocaml and Dart (this was in the last year). None of these languages are typically in your standard top 10 programming languages list but they all fit into their own use-case.

Collapse
ghost profile image
Ghost

I think you are generalizing a non general topic and extrapolating with way to few cases. Of course there are cases when a reinvention of a wheel is not neccessary but also cases when they should be reinvented and even cases when the have to. There are very few "things" in general that are not a reinvention of something else and I can't think in an exception, I'm just assuming there is one.

Collapse
xet7 profile image
Lauri Ojansivu Author

Yes, I'm going here flying all the levels between 50 000 ft and tiniest details. I am searching for "the one" that allows me to choose to work at any detail level.

Collapse
ghost profile image
Ghost

I think Rust is going there, is safe, low level and also very high level abstractions with zero cost, I'm just starting to learn moving a pet project from Django (Python) to Actix-web + Diesel (Rust) is not really much more verbose and the fact that you can do low level (sometimes I work with micro controllers) and with the same language do web backend and soon even frontend with WASM makes me happy. I have to admit I'm very lazy learning languages, the time it takes me to get from zero to somewhat productive feels wasted to me (I freelance so my CV doesn't concern me much) that was what attracted me to Python (you can do almost anything with it) and now with Rust not only filling the gaps but also taking over some makes me really happy. So far I love everything about Rust is not yet very mature but is growing fast, I try to not sound like a fanboy but is hard :|

Thread Thread
xet7 profile image
Lauri Ojansivu Author

Everyone is fanboy of what he/she has built, it's the IKEA effect.

I'm still at the very beginning of Wekan Actix version.

Collapse
pontiacgtx profile image
PontiacGTX

Not sure but if C++ had as many libraries into the standard library as some higher level languages probably it could fit there but sadly it requires some 3rd party libraries to achieve that

Collapse
jaakidup profile image
Jaaki

Yes, if you spend enough time learning all the different frameworks, languages and oses, they all start looking very much the same with only small differences in implementation etc.

It's true that the user only sees what they see and not what they don't see.... [Mind Blown] :D

Personally I find that it's newer developers who rave on about how great Framework X is, but it's usually because it's all they know. At least they are passionate!

The more responsible path to take is to test your framework or language for purpose (TFP=Tested for Purpose) and make sure you test it thoroughly.

You might just be surprised as I found out how badly the wheels came off one of the most popular language/framework combinations among young developers.

Collapse
xet7 profile image
Lauri Ojansivu Author

Yes I do love the passion. I just hope that they keep building with the wheel they know, and don't try to change to other wheel all the time, because it takes time to get something working with a wheel.

Collapse
xet7 profile image
Lauri Ojansivu Author

Changing to use new wheel is hugely expensive, it would take many years. I prefer to fix my current wheel, it's so much cheaper.

Collapse
ghost profile image
Ghost

"Yes, I tried them all", well, why? why you didn't use your first language/framework?, you are expecting "noobs" to do what you "not noob" do now. Exploring is a natural neccessary part of a person development and the wheel sometimes has to be reivented, why kids have to learn how to write? why don't they just write books? as you quoted the Matrix, let me try "some things can't be told, has to be seen". And let me add, Angular and Go are wheels reinvented it's not C with plain HTML, CSS and JS.

Thread Thread
xet7 profile image
Lauri Ojansivu Author

Yes, exploring and reinventing is great!

I did try other programming languages and frameworks, because I'm trying to find "the one", that makes development easier, faster, and simpler. The one that is not "build a house in 4 years".

When building current Kanban software, 4 years is just at getting started. I would like to have some faster flying capabilities.

Thread Thread
xet7 profile image
Lauri Ojansivu Author

I did try all of them, to see can I easily get to same feature set as that currently Wekan has, and beyond. Every time, I did get stuck at something at the beginning. So I'm still trying to find "the one".

Collapse
pontiacgtx profile image
PontiacGTX

I wonder what do you think about languages and respective frameworks which cover a wide range of problems, like .NET, C# allows developing from console applications, to 3d games and webapps and recently ML.NET allows integrating machine learning, I find quite useful a single language doesnt force to use different languages and frameworks to accomplish a task

Collapse
xet7 profile image
Lauri Ojansivu Author

I'm currently listening to futureofcoding.org to find about various alternatives, what would make programming easier and safer.

My criteria is that programming language and web framework should be Open Source, so I am able to fix bugs in it.

This is because many years ago I developed large app with Access 97, it did work on WinXP, but not anymore at Win7.

Collapse
xet7 profile image
Lauri Ojansivu Author

To use some programming language, all these libraries and frameworks are very important. There needs to be all UI, database etc drivers available. That's because otherwise those libraries and drivers need to be coded by developer itself.

Some years ago I did try to code some file access code with C# and IIS but I did find from IIS docs that it was not possible, there was some file locking issues.

I did also try to code same with Go but Go server did keep crashing on Windows. Windows also locked file permissions so that I could not access all Go server related files.

On each programming language, usually I get stuck at the beginning.