News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

The future of windowss assembly programming

Started by zemtex, December 17, 2011, 01:47:42 PM

Previous topic - Next topic

donkey

Quote from: jj2007 on December 18, 2011, 07:23:01 AM
Unfortunately I have to admit that Edgar is right. The trend is going that direction.

I guess my thing is that I don't see this as unfortunate at all, its a natural progression of the original intent of computers. It is the goal we all reach for even when we write applications, to make them intuitive and easy for the user to perform complex tasks without the necessity of understanding how those tasks are performed. I think that to do this on the hardware and OS level will be a great advance, it will free the user of the need of specialized knowledge and begin an era of computer use that we can only imagine right now. We can already see the first steps of this trend on the hardware level, SSE, virtualization and encryption are now supported in instruction sets, how long until speech recognition is no longer primarily software based ?

The future of OS development is in managed environments like Singularity and COSMOS, the era of the programmer having ultimate control over the machine is closing because it was abused by hackers and malware writers. Soon the desktop OS will be nothing more than a collection JIT modules running on a virtual machine that are inaccessible to languages like assembler except at the OS building and compiler writing level.
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

donkey

Quote from: sinsi on December 18, 2011, 09:11:25 AM
I think it's interesting that for ml64 they went back to the basics, not much higher level stuff.
Really though, what is ml used for now? Drivers I guess, but what else significant?

Assembler will be around for a long time because what you input is your output, no interpretation (except for high-level .IFs etc., but they are usually simple).
Even if Microsoft drop it, there are plenty more around, and let's face it - Windows programming is all about calling APIs to do the work.
Maybe COM and stuff make it harder but you can translate C code to asm, the other way is a lot harder. Someone needs to know the low level.

COM is pretty much dead now except as an interop layer exposed by .NET managed classes and many of those are not even bothering to implement COM. You can look at GDI+ as an example of this, the majority of the functionality of GDI+ isn't even exposed outside of the managed environment. The same appears true for much of Windows 8 and the Metro UI, there is only limited programability through COM and virtually none at all using the flat API.
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

Bill Cravener

I can not tell you folks how many times in the past near 30 years I have seen this question be asked. I don't see assembly disappearing anytime soon it will always have a following. But its not were the money is. If your intent is making money as I am (though my days of working full time are ending soon) then you best learn the markup languages, html, css and javascript. From pc's to handhelds running web based applications is where the future is headed. As stated I believe assembly will always draw that crowd of folks who want more, who want a better understand of how the machine works and we bunch of obsessive nerds are not going away anytime soon. :bg
My MASM32 Examples.

"Prejudice does not arise from low intelligence it arises from conservative ideals to which people of low intelligence are drawn." ~ Isaidthat

Vortex

Quote from: donkey on December 18, 2011, 03:40:05 AM
Isn't that the whole point of computers in the first place, to perform tasks for you that you are unable due to knowledge or time to perform yourself ? I mean that's why we have them in the first place, I can only hope that we reach the goal of removing the need for any technical knowledge at all. The level of separation from the hardware grows every year because that's the end product that was promised by computers, it was never that everyone could understand the myriad combinations of Boolean gates, we were promised that we could ask it a question and get an answer.

Hi Edgar,

It's true that computers are invented to accomplish difficult, heavy, boring and repetitious tasks. That should be the philosophy. Just have a look at the Linux world. The people there they are always inclined to complicate even the most elementary tasks. For me, it's amazing to see how they can argue on installing Firefox. Probably, this should be never a problem for a Windows user as you download the installation package and double clic it to start the installation. This should be an easy task for Win users. On the other hand, linux users especially the experienced ones would advise you to install Firefox using the command-line. Now, why not to download the installation package and double click it? The link below is about installing Firefox on Ubuntu and the command-line method is explained. The text is followed by 30 comments and it's all about installing Firefox :dazzled: Ubuntu is supposed to be user friendly but even the community of this OS would encourage you to learn every sort of command-line tricks even for basic tasks :

http://www.ubuntugeek.com/how-to-install-firefox-8-on-ubuntu-using-ppa.html

donkey

Hi Vortex,

And you wonder why this happens:



The comments you read from the Linux guys generally blame its flat growth in the desktop market on the lack of marketing or the predatory practices of Microsoft but that just emphasizes the fact that they just don't get it. Linux distros make way too many exaggerated assumptions about how tech savvy their users are and focus on those users. If they'd spend a little less time trolling websites to post their evangelical views of their OS and more time actually developing something the average user could handle they might one day be as innovative and polished as Microsoft and Apple.
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

Ghostly

I've been lurking on this site for quite some time due to my nostalgia concerning assembly programming. Debug output is the closest to assembly code I've come in the past 5-6 years or so but I still long for it sometimes when programming in c. As for assembly programming, for general purpose code it's certainly disappeared if it ever really had a place, for specalized code it still has a strong niche where performance really counts. Hand optimized simd code in video encoders such as x264 still wipes the floor of what the best performing compilers can achieve unless you guide them step by step with sse insintrics, but even then the hand optimized assembly code remains faster. For general purpose code however, writing in assembly is hardly efficient as the difference in performance achieved by an assembly expert will not make that much difference and the compilers or today will easily beat a non-expert assembly programmer.

Also, compilers keep improving and newer optimization techniques further lowers the gap between the assembly expert and the compiler. One of the more interesting optimizations of later years is the profile guided optimization, where you compile in two stages, first once followed by running the code at which stage the compiler logs tons of runtime information concerning loop unrolling, branch prediction, cache locality etc. Then you compile it again a final time at which point the compiler uses all this gathered runtime data to optimize the code much more efficiently.

However, as always is the case with translating code from the original language (assembly) to another language something is lost in that translation and in assembly vs high-level it's control. When you program in assembly there is no room for interpretation, it's 'what you write is what you get', when you program in higher level programs there is a layer of interpretation which often forces the programmer to use special keywords/methods to get the compiler to generate really efficent code, like static, const, restrict, aliasing, insintrics in c for example.

I'll always find assembly elegant in it's pure logic and powerful due to it's control, however it's demands alot more from the programmer both in knowledge and time which is why (I assume) there are so few projects written entirely in assembly. I think it will remain somewhat strong in that extreme performance hotspot niche for quite some time yet, but eventually compiler heuristics will catch up and regulate assembly code to inline asm for kernels/drivers low level cpu/io instructions. Still it's inspiring seeing all you guys still coding away and despite no longer programming in assembly I still come here periodically to get my fix, there's something soothing about a beautiful piece of assembly code that no high-level language code can provide :)

donkey

Hi Ghostly,

Low level control is no longer a definitive reason to choose assembly, newer supersets of C# like Spec# and Sing# give you low level control while at the same time functioning within a managed environment. Outside of bootstraps and perhaps interrupt handlers there is little use for assembly language in future OS design, as a matter of fact many of the OSes on the planning tables do not even allow assembly language to be used. "Windows Midori" which will be based on Singularity is the vision that Microsoft currently has for the future of Windows and will be almost completely written in managed code with even the kernel written in C#.

But have heart, Singularity is nowhere near ready for widespread release, assembly as a developer tool still has a few years left.
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

Ghostly

I have to disagree with you on the managed code OS'es, they're a dead end which will not see production use. There's a reason Microsoft dumped singularity on academia. Midori is vaporware in my book. The reason is that there's no real world demand for a managed code OS, it's typical academia/RD vs real world needs. Instead of Microsoft pushing a managed code environment for Windows 8 code we get WinRT, which is a native code runtime. Certainly you can utilize the runtime from managed code, but again native C++ is the first class citizen, despite all the talk of Windows going all managed code userland all the way back from the pre-Vista days.

hutch--

I find some humour in the near endless life of the Windows API, we have had DDE, OLE, COM, DOT.NOT etc ..... but the old API keeps slugging away. it is not as if Microsoft would not like to fully get rid of it but the lessons of Vista did hit the mark and backwards compatibility will be with us for as long as Microsoft want to sell operating systems. Managed code is little more than an updated version of QBASIC and while it is reasonably powerful if you can find the right function to do your task, it lacks the flexibility and low level grunt of C++ for designing new and different things. If you have the right set of libraries C is still a viable option for some tasks but nothing compares in terms of binary code to a fully fledged assembler.

The action is not in boot disks or the odd bit of high performance code but in the near absolute freedom of architecture when writing binary code. It is a skill based language and usually the longer you have worked in it, the better you get at it in much the same way as the earlier generation of C programmers kept getting better.

I tend to hear trolling like this from people who are in their post-assembler phase, they may have written it once but have shifted their mindset to higher level languages but suffer nostalgia about the low level control. As usual people who need it will keep writing what they need in assembler and this goes for Microsoft as well, they don't fund the upgrades of MASM for reasons of nostalgia, they keep updating it because they have a use for it. ML64 may be a pig to use but it will do the job they need it for in the same tradition that MASM has always had, a bad mannered old pig that you must know well that does not hold your hot little hand and save you from your mistakes.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

anunitu

#24
One thing I have been thinking about for a while is a chip based OS(pretty much a VERY basic OS) that would be hard wired in your system..any actual improvement would be software based. One reason I concidered this is,if your system got slammed by outside effects,or if the software system just crapped on you is you would still have a basic ability to boot up from the chip and from there fix the software side.
One might actully run a virtual system through the chip OS for one thing.

Actully I think what most people want from a Computer is something like what the phone is now,just pick it up and use it with no knowledge needed or wanted. IBM is pridicting within 5 years mind control of all devices..And from my following the tech trends,that is probubly close to becoming the future. Dumbing down all tech is it seems the future.

donkey

Quote from: hutch-- on December 20, 2011, 12:39:43 AM
I find some humour in the near endless life of the Windows API, we have had DDE, OLE, COM, DOT.NOT etc ..... but the old API keeps slugging away. it is not as if Microsoft would not like to fully get rid of it but the lessons of Vista did hit the mark and backwards compatibility will be with us for as long as Microsoft want to sell operating systems.

Within a virtual machine, Windows 7 gave us the preview of that in XP-mode. If it doesn't run in Win7 then you'll just have to either live with it or run it in  VM ware. The same was done with OSX on the Mac, break compatibility but allow older style programs to run within a VM without regard to whether they are efficient or not. The API as a set of functions will probably never go away however, The legacy API will eventually migrate to XML based redirects of the API to managed code. Any new API functionality is generally exposed to a managed environment with only passing consideration given to unmanaged interoperability.

I do like the fact that anyone who presents a not so rosy opinion of the future of OS development are labelled "trolls" and are in their "post assembler phase". Nice to have a discussion under such circumstances though I am far from in my "post assembler phase" I do have some programs where I have to use other languages for as the features I need are not accessible from assembly at all. But I do bend over backwards trying to find a way to do it in assembly first and only turn to C# et al as a last resort, I have demonstrated how to access many of the interop layers that were thought inaccessible here and will continue to attempt an assembly solution before anything else.
"Ahhh, what an awful dream. Ones and zeroes everywhere...[shudder] and I thought I saw a two." -- Bender
"It was just a dream, Bender. There's no such thing as two". -- Fry
-- Futurama

Donkey's Stable

hutch--

 :bg

You tend to get replies like this from trolling on a topic that has 15 to 20 years lead time on it. We heard it in 1990 and earlier, then we were told it was no longer needed in 1995, then DDE was the smart technology, OLE was going to make everything else redundant, then COM was the saviour of the universe until DOT.NOT hit the deck.

RE: Crosby Still Nash and Young Deja Vu.
And it seems, arrrrr bin here before,
Ooooo oooooo and it make me wonder, what goin' on etc ....  :P
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

zemtex

Quote from: Ghostly on December 18, 2011, 08:46:53 PM
there are so few projects written entirely in assembly.

There are many big projects written in asm. Tons of operating systems are written in asm. Here is one of them, called Kolibri OS written in Fasm.



Here is another one called Menuet, written in Fasm.

I have been puzzling with lego bricks all my life. I know how to do this. When Peter, at age 6 is competing with me, I find it extremely neccessary to show him that I can puzzle bricks better than him, because he is so damn talented that all that is called rational has gone haywire.

vanjast

What a pity MSoft developers did a better job that many years ago... Now Bill cannot abandon his money base can he.  :bg

I really don't know why he bothers, and should have rather stuck to the working formula with better apps.
:8)

vanjast

Hey Zemtex.. I didn't even know about those OSs. An old dog and learn new tricks every day.

I'll have a look at those.  :U