News:

Herr Otto Partz says you're all nothing but pipsqueaks!

Main Menu

Hackers and developers

Started by afullo, February 22, 2022, 03:34:31 PM

Previous topic - Next topic

afullo

Split from: Stunts WIKI

Quote from: Cas on February 21, 2022, 11:00:59 PM
About "hacker", I think this is a person that solves puzzles and finds the way to tame somebody else's code. It doesn't have to be illegal and in fact, I think it's a little "microsofty" to assume it is, since MS is always promoting that view in an intent to convince people to only use their software.

Unfortunately, this is not only MS. Hackers in that sense are disliked by various people working or commercially interested in ICT.
Consider the owner of a little PC shop, able to gain 100 EUR (or USD, or CHF) from a plain format and OS reinstall: having people capable to do so autonomously, although even easier than what usually an hacker does, means renouncing to an easy way to make money.
So they have all the interest to give the impression that these are difficult tasks, that only nerds without a life do them by themselves, and so on; this affects also the perception of free software and open source.

Cas

Yes, you're right. A similar thing I've noticed that has been promoted through the years is the separation of programming enthusiasts from actual hardware and sometimes even software knowledge. For example, high level languages came up to help people make simple programs more quickly and give comprehensive commands to a computer without having to describe every instruction, but then this caused that a high proportion of programmers would not know anything about assembly and would be dependent on compilers to be able to do any work. The abstraction became more accentuated with the birth of OOP and a lot more with the trend to use third party libraries instead of writing their own and the idea that it makes no sense to "reinvent the wheel", which simply contradicts the fundamental reason why anybody would want to create anything at all. I don't know how much of this is real and how much just seems to be, but it's a tremendous coincidence that fewer and fewer people nowadays have actual control of their computers even though more and more are interested in them.

I'm not trying to point out a conspiracy. It really doesn't matter whether this is an actual conspiracy or not. What matters is that it's so coincidentally sad that it well could be a conspiracy, whether it is such thing or not. Anyway... I think I've drifted too much  ;D
Earth is my country. Science is my religion.

Daniel3D

It's not a conspiracy. Tool developers that create programming software want to have as many users as possible. (Capitalism) with third party libraries and and other off the shelf code you 'save time' (time = money = capitalism) and you lower the required skills of the programmers. (Less trained = cheaper labour = capitalism)

All boils down to money.  8)
At least that's how I see it.
Edison once said,
"I have not failed 10,000 times,
I've successfully found 10,000 ways that will not work."
---------
Currently running over 20 separate instances of Stunts
---------
Check out the STUNTS resources on my Mega (globe icon)

alanrotoi

If somebody is interested in my computer, remember to download my new car 😆

afullo

Quote from: Cas on February 23, 2022, 06:31:10 AM
Yes, you're right. A similar thing I've noticed that has been promoted through the years is the separation of programming enthusiasts from actual hardware and sometimes even software knowledge. For example, high level languages came up to help people make simple programs more quickly and give comprehensive commands to a computer without having to describe every instruction, but then this caused that a high proportion of programmers would not know anything about assembly and would be dependent on compilers to be able to do any work. The abstraction became more accentuated with the birth of OOP and a lot more with the trend to use third party libraries instead of writing their own and the idea that it makes no sense to "reinvent the wheel", which simply contradicts the fundamental reason why anybody would want to create anything at all. I don't know how much of this is real and how much just seems to be, but it's a tremendous coincidence that fewer and fewer people nowadays have actual control of their computers even though more and more are interested in them.

I'm not trying to point out a conspiracy. It really doesn't matter whether this is an actual conspiracy or not. What matters is that it's so coincidentally sad that it well could be a conspiracy, whether it is such thing or not. Anyway... I think I've drifted too much  ;D
Low level languages abilities are still given in some courses funded by the public, but most enterprises are not interested in forming people in them, since as you pointed out they are required less and less at work.

Cas

I understand low level programming does not bring money, so it makes sense it's not promoted compared to high level. But I don't see the same about OOP. The OOP paradigm is clearly more complex, as it involves many more concepts. Programming with OOP takes more time than using procedural structures in your code, yet it is more promoted commercially. Also, the use of Java, which is widespread in commercial environments, is highly inefficient because every program is carrying the load of an interpreter with it, an emulator. And the "compile once, run everywhere" idea says nothing, because we could just give "write once, compile everywhere", which requires the same amount of code (one compiler per platform instead of one virtual machine per platform) and is a lot lighter on resources. So it makes no sense, yet it's the trending choice. I mean, some things are logical, but most are not.
Earth is my country. Science is my religion.

dreadnaut

#6
I have been on the edge or part of the industry of making software for 25 years at this point, so I have seen a lot of trends come and go. Developers constantly try to upgrade and improve and replace and reduce. I can tell you that any technology that survives this continuous evolutionary process for 10-15 years is a good idea. It's not perfect, it always depends on the context, but it solves a real problem in a successful way, and therefore stays. This include things like binary distribution, dynamic libraries, OOP, relational databases, etc. — if you think they are "a trend", I beg you to reconsider and ask yourself "how well do I understand this technology and the problem it solves?"

That said, it's no problem if you don't care about it; but don't dismiss the evolutionary selection of software. Trends are real, but rarely last more than 2-5 years.

Regarding low level programming, I think the jobs are still there, and possibly better paid than others. What is happening is that they are not growing as fast as others. Since the 80s the number of developers has doubled every 5-7 years. This has happened not by doubling the number of positions, but by expanding into new fields: new ground is broken, and new people can work on software for new problems.

A rough example with made up numbers:
70s: 1000 low level developers
80s: 1500 low level developers, 500 high level developers
90s: 2000 low level developers, 1500 high level developers, 500 web developers
00s: 2500 low level developers, 3000 high level developers, 2500 web developers
10s: 2750 low level developers, 5000 high level developers, 8250 web developers
20s: 3000 low level developers, 6000 high level developers, 23000 web developers

It might look like low level work has disappeared, but that's because it has been dwarfed by all the things that can be built on top of it.

New people do new things, building on the shoulders of others:
- in the 1900's the majority of people around planes built prototypes
- in the 1930's the majority of people around planes was pilots
- from the 1960's the majority of people around planes is passengers

We don't ask passengers "why don't you build your own plane?", the same way I don't ask other developers "why don't you build <common library> from scratch?". Because not all developers have the same interest and want to build the same thing. And the more complex the software you want to build, the further away you need to be from low level complexity. Otherwise you'll be dealing with both high and low level complexity, and you'll get brittle and unmaintainable software.

OOP is about separating problems, so that you don't have to worry about everything at the same time. Libraries are about separating problems, third parties are about separating problems.

Cas

#7
EDIT: My message was too long. I'm resuming it now

I was saying I mostly do agree with you. I didn't mean by "trend" something of little importance that's going to be forgotten. I just meant it's something that's what the majority of people in the field choose, whether it's good or bad. There are some trends that I agree with as well.

I am not a professional programmer. I do this as a hobby. But I do have a lot of experience with it and have learnt a lot through the decades. If you or other professional programmer feels that a non-professional programmer lacks the authority to have an opinion on this topic, what I can say is that I'm aware that many professional programmers do criticise OOP and specifically Java too. I currently, with my knowledge and understanding, don't see the positive aspect of OOP and Java. I have read explanations, but have never been solid enough. Maybe one day I find one that is, but not so far.

With low level programming, yes, I think you've said it just the way. I haven't really had problems to find people who are into it. What's hard sometimes is to "filter". Like, if you get to a forum about programming, it'll be hard find something about assembly, unless you go to a forum about assembly specifically. It's sad for somebody who loves low level programming that it's not in everyone's mind anymore, yet, as you point out, this minority we are may well even be growing.
Earth is my country. Science is my religion.

dreadnaut

Quote from: Cas on February 26, 2022, 06:49:58 PM
I am not a professional programmer. I do this as a hobby. But I do have a lot of experience with it and have learnt a lot through the decades. If you or other professional programmer feels that a non-professional programmer lacks the authority to have an opinion on this topic, what I can say is that I'm aware that many professional programmers do criticise OOP and specifically Java too. I currently, with my knowledge and understanding, don't see the positive aspect of OOP and Java. I have read explanations, but have never been solid enough. Maybe one day I find one that is, but not so far.

I hope never in my writing I have suggested that you are not worthy of having an opinion! If I did, I need to go back and edit. But when I read "OOP and Java" what comes to my mind is "maybe Cas's ideas are a bit confused, and he's overlapping different things."

My impression is that what you describe as "OOP and Java" is actually the narrow field of "Enterprise Java software", and in particular the early-2000s-to-mid-2010s kind, where everything is private static abstract SomethingInterface extends OtherThingy implements OneMoreThingy. That had some tendril into some C# and PHP frameworks and, yes, many if not most developers—professional or not, and myself included—consider it a horrible and painful thing. There was a reason for it at the time, but hopefully is now in the past. Still, that's not Java's fault, and not OOP's fault. And even C# and PHP are innocent tools :D


Cas

Yes, of course. I mean, you can take any language and program in a way that's so abstract that there's more work there on the paradigm than on the actual too. And you can also do quite the opposite and get the best out of your developing environment.

I think even I sometimes write things that in a sense, are OOP. But I've seen projects in which it looks like it's more important for the developer to get everything to be OOP than to actually get the task done. This is what I really criticise. OOP supporters often say in its defence that OOP allows for the programmer to concentrate on the part they are assigned, by dividing the software in layers, which is what you mentioned too, in a more objective way, and this is true, but it's also true for non-OOP prorjects. You can layer out your program even in pure assembly. I've seen some of your code from the help you've given me with R4K and certainly, that's not the kind of code I criticise. It's the obfuscation and that, you know.

Java... well... There are two things I say against Java. Just two: one is with Java, you are forced to use OOP as opposed to allowed, as with other languages. This can't be good. The other thing is Java is interpreted, which is slower and more resource demanding than native. And just as you can develop one VM for each platform, you can develop one compiler for each platform, so I don't see the benefit. In every other aspect, Java seems to me like a solid and very powerful programming language.

I didn't mean you were stating that about authority. I said it, not you. I don't say it offended. I say it like "maybe I'm saying something hard to digest and some other folks can say it better", that's all.
Earth is my country. Science is my religion.

afullo

Quote from: dreadnaut on February 26, 2022, 02:44:54 PM

Regarding low level programming, I think the jobs are still there, and possibly better paid than others. What is happening is that they are not growing as fast as others. Since the 80s the number of developers has doubled every 5-7 years. This has happened not by doubling the number of positions, but by expanding into new fields: new ground is broken, and new people can work on software for new problems.


You are probably right, the diminution holds in relative terms, but not absolutely. Still, it is true that often courses giving those abilities form people for enterprises in which they are not required, essentially not focusing on what it is really necessary for them; maybe they are of some use for giving a good forma mentis, which is of course quite important, but usually who takes a course of this kind already possesses it.

Cas

Indeed. I've been thinking several times that I might just move away from the PC and program exclusively for things like Raspberry Pi and micro controller boards, but even those are now tending to use more high level. If I could program the RP low level, then I'd absolutely get one
Earth is my country. Science is my religion.

Daniel3D

I vaguely remember that Microsoft (yeah yeah, I know) made a nano board or something pi like.
I was exactly capable of what you are looking for..
I'll try to find it.
Edison once said,
"I have not failed 10,000 times,
I've successfully found 10,000 ways that will not work."
---------
Currently running over 20 separate instances of Stunts
---------
Check out the STUNTS resources on my Mega (globe icon)