It’s actually meaningless for validating either point. Most of humanity used to think the world was flat, that bleeding with leeches was a valid medical treatment, that there were 4 (or 3) elements, and that being a heavy smoker had no significant downside. All of them were wrong.
At the same time, in a capitalist system, what works for large numbers of people says something about it hitting some sort of sweet spot maybe – in general, but not for particular cases, including that of someone who is enthusiastic about … whatever 8th is. More power to him. I just (1) don’t get it and (2) don’t need to because I have no major pain points with what I’m using (mostly C#) and (3) my client would not want me to start recoding everything in 8th, in fact they would probably conclude I was insane and let me go, lol.
I am just a hobbyist programmer, so I am free to choose my tools. I do know that there are really powerful stuff available with C# like LINQ. It just don’t feel natural to me as a programming language being so heavily OOP based. To me adt from Limbo programming language would be enough and I liked Component Pascal too. Procedural code with modules or namespaces works best for me.
I use programming languages like PL/I and Fortran too but I enjoy working with 8th the most.
I like how 8th uses json data types and I can easily import JSON string or buffer by simply using “json>” word. Converting native data type back to JSON string can be done with “>json” word.
Also big number support is builtin. Say, I needed to solve 10000 digits of Pi. I could just use Machin formula directly. All I need to do is to prefix numbers with “F” to tell that I want to use big floats and set the precision I want:
: pi \ n -- n
dup ## n:1+ n#
F1 F5 n:/ n:atan F4 n:* 1 F239 n:/ n:atan n:- F4 n:* ;
Using big floats is also easy way to do currency calculations. Another big plus with 8th is that I don’t need to use debugger with my code flow to trace coding errors.
Okay, I know that our Nuklear based GUI may not be for every ones taste.
What do you use instead? I cut my teeth on Steve McConnel’s Code Complete – “step through all new code with the debugger”, so for me that’s an important question. It’s also one of the lesser reasons I bailed on Xojo – the debugger sucks compared to what I’m used to. No watch window, you have to put anything you want to examine the runtime status of into temporary variables in the code, etc.
I usually factor my code into small words and as 8th is a stack based language I can just examine stack content. I also write SED (Stack Effect Diagram) as comment on every line of code, so it’s easy to compare that those two match.
It is no religious war but a discussion about two different things. The old world of procedural programming is gone, it passed away and there are thousands of good reasons why. Forcing to do top is a good idea while it males the code more readable and more functional. But many people think it’s not. So what. They can do their procedural programming and nobody is forced to use oop technologies. That is not even a discussion. it is not worth to fight about an old world and that what all modern languages are doing to provide programming in a modern manor. So why should there be a flame war. When somebody decides to do it in that old fashion language style: okay. When he get’s HIS Jobs done everything is wonderful.
There’s nothing in C# that prohibits you from making everything a static method. Technically you’d have static classes for those methods and if that bothers you, you could use the new top-level code paradigm where you just open a .cs file and start writing stuff; in theory all the class underpinnings would be hidden from you.
Of course if you want to fully leverage the Common Language Runtime, you’ll have to work with its OO design, but … how much of a purist does one want to be here?
As to the “OO considered harmful” essays out there … like any paradigm it can be misused; it’s common to overuse inheritance and underuse composition, for example. But nothing says you have to use bad practices.
Maybe this is why people like functional languages like F#, there’s so much bondage and discipline there that it’s virtually impossible to write impure functions. Reported first-time developer experiences around functional programming are littered with warnings to be patient; the compiler will seemingly never be satisfied with your code’s “correctness”, so accustomed are you to doing non-functional things.
But in my view, there’s no such thing as a perfect abstraction and if you’re using a system where the rules can never be broken, even judiciously and for considered reasons, I’d argue that you’re working in a straight jacket.