my idea
Posted: Fri Nov 01, 2013 1:31 am
Hi, my name is Ed. A little about myself: I am 22 years old, I am german, I was interested in programming ever since I was 15 years old, even tho I never really program anything useful I kept myself interested over the years. I love programming in ASM because it gives me the feeling of being in total control and also because it gives me much more room to develop own mechanism. To me programming is a lot like playing with LEGO blocks, with the only difference that on the computer I have unlimited amounts of blocks and the fact that whenever I finish a small program it actually can do some sort of task for me, which is amazing. So as you see coding is much more a process of being creative than a way of solving problems to me. Recently I have been getting more interested in operating system development. It is pretty much the low-level-est thing I have ever tried out so far and I love how much possibilities it seems to offer me.
Over the last few days I have been thinking about why people don't like to work with Assembly anymore. People seem to want faster, more abstract high-level languages that can do complex tasks with just a few smart lines of code. I myself have been taking a look at high-level languages, I originally even started out with C++ back when I was still new to programming. I did a little python here and a little javascript there over the last 2 years. The languages are great, don't get me wrong, but I always feel like I am deprecating my creativity by letting libraries and abstractions do the job for me. When you want to get a job done nowadays you just look up some language or library that can do the job for you and then you look up some documentation that tells you how to use those tools appropriately to do whatever you want to for you. I am absolutely horrified by this, it is so straight-forward, it feels like the only thing that matters at the end is that the code works and does what it is supposed todo. No smart puzzling of instructions that is rewarded by more efficient running code, no planing about how data is organized in memory, no own architectures. So incredibly dull and narrow and not at all fun and rewarding.
But I also understand that working with ASM is a total pain as it is tedious, hard to read and slow as heck. Ever tried reverse engineering? Like disassembling some binary and trying to understand its internal mechanics. Boy, that was impossible for me. I didn't even know where to start. You are completely overwhelmed by the sheer size of the code, you loose orientation so quickly. Additional to that you will have trouble remembering, even if its code you wrote yourself, what the code of each part actually does. It seems insane for me wanting to go back to ASM. Also there is the whole think with code not being very compatible across computers, making it hard to share what you have created with other people.
Maybe it doesn't have to be like this. Maybe the problem with ASM is not the language but rather the missing tools and the dependencies for compatibility that you simply can't avoid nowadays. If there was a way to make ASM code more accessible and easier to orientate in, maybe we wouldn't have to be so dependent on libraries and tools doing and optimizing everything for us.
Think of an operating system that is as basic as possible, starts out with almost nothing but basic initialization, a few drivers and an IDE that lets you design the rest of the operating system yourself.
The IDE itself is the main feature of the operating system. It provides information about all instructions, a profiler, a sort of "unit-testing" and a way of live-programming that breaks up the usual development steps of coding -> building -> debugging into a process where all three steps happen simultaneously. Maybe it could even provide some sort of probing-mechanism that could help the user reverse engineer the hardware he is currently working with. This total lack of dependency for documentations and libraries would make the operating system into a personal part of the programmer.
I don't know exactly why this thought fascinates me so much, but I think this would really help stop the general growing disinterest in programming among the newer generation, help solve the issue of PC security and unwanted surveillance and also strengthen the concept of independent software development.
I understand that my idea sounds far fetched. But I'd really like to try to implement something like that and then share it after its reached a stage where people could actually use it and see if people like my approach for operating with computers. I will probably come back every now and then and ask stupid questions about kernel/driver-development as I am not really the ultra-pro hacker that I'd like to be. Meanwhile I'd like to hear what people think about my idea and, if there is any interest, start a discussion about it. What do you think?
Over the last few days I have been thinking about why people don't like to work with Assembly anymore. People seem to want faster, more abstract high-level languages that can do complex tasks with just a few smart lines of code. I myself have been taking a look at high-level languages, I originally even started out with C++ back when I was still new to programming. I did a little python here and a little javascript there over the last 2 years. The languages are great, don't get me wrong, but I always feel like I am deprecating my creativity by letting libraries and abstractions do the job for me. When you want to get a job done nowadays you just look up some language or library that can do the job for you and then you look up some documentation that tells you how to use those tools appropriately to do whatever you want to for you. I am absolutely horrified by this, it is so straight-forward, it feels like the only thing that matters at the end is that the code works and does what it is supposed todo. No smart puzzling of instructions that is rewarded by more efficient running code, no planing about how data is organized in memory, no own architectures. So incredibly dull and narrow and not at all fun and rewarding.
But I also understand that working with ASM is a total pain as it is tedious, hard to read and slow as heck. Ever tried reverse engineering? Like disassembling some binary and trying to understand its internal mechanics. Boy, that was impossible for me. I didn't even know where to start. You are completely overwhelmed by the sheer size of the code, you loose orientation so quickly. Additional to that you will have trouble remembering, even if its code you wrote yourself, what the code of each part actually does. It seems insane for me wanting to go back to ASM. Also there is the whole think with code not being very compatible across computers, making it hard to share what you have created with other people.
Maybe it doesn't have to be like this. Maybe the problem with ASM is not the language but rather the missing tools and the dependencies for compatibility that you simply can't avoid nowadays. If there was a way to make ASM code more accessible and easier to orientate in, maybe we wouldn't have to be so dependent on libraries and tools doing and optimizing everything for us.
Think of an operating system that is as basic as possible, starts out with almost nothing but basic initialization, a few drivers and an IDE that lets you design the rest of the operating system yourself.
The IDE itself is the main feature of the operating system. It provides information about all instructions, a profiler, a sort of "unit-testing" and a way of live-programming that breaks up the usual development steps of coding -> building -> debugging into a process where all three steps happen simultaneously. Maybe it could even provide some sort of probing-mechanism that could help the user reverse engineer the hardware he is currently working with. This total lack of dependency for documentations and libraries would make the operating system into a personal part of the programmer.
I don't know exactly why this thought fascinates me so much, but I think this would really help stop the general growing disinterest in programming among the newer generation, help solve the issue of PC security and unwanted surveillance and also strengthen the concept of independent software development.
I understand that my idea sounds far fetched. But I'd really like to try to implement something like that and then share it after its reached a stage where people could actually use it and see if people like my approach for operating with computers. I will probably come back every now and then and ask stupid questions about kernel/driver-development as I am not really the ultra-pro hacker that I'd like to be. Meanwhile I'd like to hear what people think about my idea and, if there is any interest, start a discussion about it. What do you think?