News:

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

.NET

Started by NPNW, February 17, 2006, 05:04:49 AM

Previous topic - Next topic

EduardoS

Quote from: Mark Jones on February 19, 2006, 05:49:49 PM
Quote from: EduardoS on February 19, 2006, 02:25:52 PM
The reason for .Net and Java is costs, VB [sucks], but why so many people use it?
Because it's cheap, almost all programers know VB, and who don't know need only one month to learn, it's easy, so there are a lot of porgramers, you don't need to pay too much for them, and they will work fast (because it's easy to use)...

...and when their algorithm is too slow, they can hire one of us to optimize their routine for only $60/hr. :bdg :toothy

Unfortunally they prefer buy a SuperDome for US$5 000 000,
Fortunally some companies don't have so much money and pay us to do this job :wink

arafel

Quote from: NPNW on February 19, 2006, 04:41:54 PM
Does it really work, or is it just a hack job? Hack jobs are okay to get an idea. Does Java/.Net actually deliver on what they promise? I haven't worked with .Net/Java enough and don't want to waste time on development if it doesn't do what they promise.
I think it does. Otherwise there wouldn't be so much request for it on the market.  :bg

But again, regular programmer and nth million worth business are two different things with different expectations. While for 'them' the code execution speed and size is neglectable in respect to other factors like reduced development cost. For you its probably exactly the opposite.

As for the expectations, it's up to you to decide whenever it's worth to bare with slow execution speed, code size, and some other limitations only for gaining faster development pace, theoretically less bugs and some platform independence (i am talking about java).

(I am referring here strictly to Java. Haven't worked with .NET, but I suspect that it's somehow alike, at least to some extent)

Quote from: NPNW on February 19, 2006, 05:14:54 PM
If .Net/Java work so well, why are they asking for people with Bachelor/Masters degrees with 5-10 years experience when it is suppose to be managed code.

I thought that was what managed code was to be productive. If you need someone with a huge amount of experience then they must have all types of problems and its not really very good managed code then?

Managed doesn't means totally autonomous. There still a programmer behind who needs to comply with managed language coding rules.
And bigger experience equals faster and less erroneous development. It's the same for every task in life, regardless whenever it's managed or not.

gwapo

QuoteI am referring here strictly to Java. Haven't worked with .NET, but I suspect that it's somehow alike, at least to some extent

Based on my experiences with .NET, I can say that the two can't compare with each other. Because in .NET you code with different languages (ILAsm, C++, C#, Phyton, Delphi and others) targeting specific platform (multi-platform in .NET is a myth), while in Java, you code only with one language while targeting multiple platform.

I say "multi-platform in .NET is a myth" because most of my current work is converting .NET (Managed C++) coded for Windows, to Mono (C#) in Linux platform, which is requiring my team to almost recode everything from ground up.


-chris

sluggy

Quote from: NPNW
That is what I was confused about. Why would you develope code in .Net/Java when most people predominately run on one platform? There are so many issues of performance, operating system specifics, with a one size fits all design methodology. I just don't get why all the trouble when it will rarely be used. 
As i will mention again further down, the fact that roughly 90% of desktops run Windows is irrelevant - for instance, a lot of servers *don't* run Windows. And when you think on a global scale, that is a lot of machines.



Quote from: NPNW
I mean , if you are going to use Unix/Linux then code in Assembler/C for that platform.
If you are useing Windows/Windows server then code in regular Masm / GoAsm / HLA / etc.
Tools that work specifically with that platform to get the most out of your code.

The capabilites of .Net and Java don't yet to me seem relevent verses a well crafted Assembly program. I guess I just don't get it. I continue to study these areas in the hope that I will find something that makes more sense to me. I mean if it works well I want to incorporate it into my code.
You are right, you aren't getting it :) The trouble is that you have only been exposed to a fraction of what is out there. I would personally love to do all my coding in asm. And there are a lot of guys out there who would prefer that coding was still done with either punch cards or hardwired switches. But there is a whole bunch of reasons why we don't do that anymore. There is a huge amount of programming work to be done at any one time, and if we relied on guys who only did asm then you would have maybe 1% of the workforce.



Quote from: NPNW
i have some ideas for building software for corporations. However, the huge monolithic project is not exactly what I want. I am more along the lines of a lean simple program that does it's job well. Then continue to build upon that to add more functionality.
That's what i do for a job. You are right - the monolithic approach is certainly the wrong way to do it. But very seldom are you required to code "a lean simple program that does it's job well" - they are usually just internal tools. The rest of the time you are writing components (or parts) of a large application or suite.



Quote from: NPNW
For webservers the ASP, Java, and .Net do they really provide an advantage? I mean what capabilites do they have that can not be built into a well crafted C/Assembly program?
They sure do. They provide a huge framework to leverage during development. Try writing a large asm app that does a lot of database work. And once you have written it, try debugging it. And a .Net assembly running as part of an ASP.Net application can be just as fast as native code, as i mentioned in a previous post you can fully compile it (although technically this only helps during the first run of any particular piece of code - the JIT compilation compiles code the first time it runs through any section or function, after that it remains compiled).



Quote from: EduardoS
But VB has thousands of problems, the .Net use the same ideia, and a managed code allow the system to control a big part of environment, so if the programer forgot the dispose on an object it won't crash the system.
It isn't about whether the programmer forgets to dispose of an object - it is about the programmer *not having to* dispose of that object. This increases productivity, leads to fewer bugs, and improved performance. Does it lead to lazy programming? It sure can, but you won't have those programmers working on an unmanaged C++ app, so there is no harm done there :)



Quote from: NPNW
Does it really work, or is it just a hack job? Hack jobs are okay to get an idea. Does Java/.Net actually deliver on what they promise? I haven't worked with .Net/Java enough and don't want to waste time on development if it doesn't do what they promise.
Of course it works - an enormous amount of money was spent researching and developing .Net. And an enormous amount of money is currently being spent developing with the platform. .Net has been around for 5-6 years now (i first played with it in 2001) - if it didn't work it wouldn't exist now.



Quote from: NPNW
Even if it works does it work efficiently? Not everyone can afford the newest hardware.
Muhahaha haha.... you just discovered a dirty secret: things like this help drive the hardware market. You need some serious hardware to run some of the stuff i have been involved in. Companies *invest* in software to make productivity gains of one sort or another. If they don't buy the hardware, then the investment is wasted.


Quote from: NPNW
If .Net/Java work so well, why are they asking for people with Bachelor/Masters degrees with 5-10 years experience when it is suppose to be managed code.

I thought that was what managed code was to be productive. If you need someone with a huge amount of experience then they must have all types of problems and its not really very good managed code then?
"Managed" code doesn't mean that it is written for you - if that was the case then monkeys could do it. A university or college degree simply means that you have been taught simple basics of programming, problem solving, and algorithm desigm. Anybody can hammer nails into wood, but you still get a trained and experienced carpenter to build your house. When an employer hires a software engineer, it can cost them a lot of money in training and lost time while you get up to speed with what you will be working on, the more experienced the person they hire then the quicker they can get up to speed, and the highr the quality of the job they do.
Technically "managed code" is just code that is running within the confines (sandbox) of the CLR, memory and resource allocations are tracked for you, hence the term "managed".


Quote from: gwapo
..... (multi-platform in .NET is a myth)

I say "multi-platform in .NET is a myth" because most of my current work is converting .NET (Managed C++) coded for Windows, to Mono (C#) in Linux platform, which is requiring my team to almost recode everything from ground up.
Bzzzzt. That is massively incredibly wrong. You are locked into thinking about desktop machines - you have totally forgotten about the embedded and small device market, which is HUGE - way larger than the pc market, it encompasses everything from your cellphone to your fridge to the GPS unit in your car to the cable or set top box on top of your TV. .Net is designed to target all these things, which is what the Compact Framework is for.
You shouldn't be having to totally recode the app you are porting, the Mono project has implemented 40% - 50% of the Windows framework. I have seen plenty of demonstrations of applications that work flawlessly on both frameworks. I would suggest that you are primarily rewriting the UI of the application, which is understandable as they are two totally different platforms. I would also suggest that the original application was badly architected - the UI layer should be easily separated and replaced, leaving the business logic intact. As an example, have a look at the MVC architecture pattern (Model-View-Control).





drhowarddrfine

Quoteif we relied on guys who only did asm then you would have maybe 1% of the workforce.
In many ways, this is what ASP and a lot of other such methods are about.  Though C would do perfectly well and better than ASP/PHP and other methods, most people in this field do not have the capabilities to learn 'in depth' languages such as C, so there is a lack of qualified personnel to do the work and these methods/languages were created for them.  Such as:
QuoteDoes it lead to lazy programming? It sure can, but you won't have those programmers working on an unmanaged C++ app, so there is no harm done there :)
But I disagree that their programs result in improved performance.  And:
QuoteYou need some serious hardware to run some of the stuff
QuoteThey provide a huge framework to leverage during development.
One thing to remember is you probably will use only 10% of that huge framework.  There is too much there for anyone to every know about.

One thing that needs to be remembered here is that, despite all the hype, most businesses do not use .NET.

NPNW

Hello Sluggy,

Very nice post.

Let me clarify.

The goal is to get my degree and get a good paying job.
These jobs require that I know Java /.Net.

My experience in software/hardware/networking has been as a trouble shooter. Most of the time I don't get a long time to fix things or write code. I have been involved in a few major corporate projects. Most of them did not go well. This was back in the 90's. When I started playing with Java it didn't have the capabilities it has now.

So I am very cynical about what people promise. I used to fix code libraries, operating systems, and programs over the phone. Install networks over the phone with a secretary who now is the network admin. :)  This has taught me to really dig for information on things.


QuoteYou are right, you aren't getting it :)


Exactly! That is why I have been asking and really appreciate the feed back.

Lets just say I'm hard headed :)

Quote
The trouble is that you have only been exposed to a fraction of what is out there.

I won't disagree with this statement.

Quote
I would personally love to do all my coding in asm.

Exactly, however reality is that we must write the program  in another language. However the idea would be to build a framework that has the productivity of Java/.Net etc.

Hutch is correct in stateing. If we had all the libraries and capabilites with assembler we would be just as productive as C or other languages.


Quote
And there are a lot of guys out there who would prefer that coding was still done with either punch cards or hardwired switches. But there is a whole bunch of reasons why we don't do that anymore.

Agree.

Quote
There is a huge amount of programming work to be done at any one time, and if we relied on guys who only did asm then you would have maybe 1% of the workforce.

Because the tools are not developed yet to make us productive.

Overall sluggy I know I'm going to have to take the Java/.Net plunge. I'm just nervous because I don't have all of the program flow in my head or even where to find some of the answers.

It sounds like from your experiences that Java/.Net are fairly decent/excellent tools. The teams have put a lot of effort into makeing them robust and documented.

drhowarddrfine,

I also agree

Quote
But I disagree that their programs result in improved performance.

It gets the job that pays the bills.

Quote
One thing to remember is you probably will use only 10% of that huge framework.  There is too much there for anyone to every know about.

I have always felt makeing such a huge framework was designed to lock a programmer into that framework to continue to be productive. That way you have programmers that would only build with your tools, and keep people from having the time to learn other languages. This would seem to me to stifle innovation outside the framework.

Thanks drhowarddrfine,

You have also brought up some valid points.

Anyone else have good/bad experiences. What problems have you run into with .Net/Java?
What things should I watch out for?

drhowarddrfine

It may have been two years ago but I asked, in a forum of programmers just in my fairly large city, what they thought about .NET and Java and other languages.  I was shocked when all of them told me they used Java only and none of them used .NET or had plans to do so.  These were very large corporations but, since then, I have seen .NET help-wanted ads for one of them.  However, they also have a lot of ads for Java programmers. 

gwapo

Quote from: sluggyBzzzzt. That is massively incredibly wrong. You are locked into thinking about desktop machines - you have totally forgotten about the embedded and small device market, which is HUGE - way larger than the pc market, it encompasses everything from your cellphone to your fridge to the GPS unit in your car to the cable or set top box on top of your TV. .Net is designed to target all these things, which is what the Compact Framework is for.

You shouldn't be having to totally recode the app you are porting, the Mono project has implemented 40% - 50% of the Windows framework. I have seen plenty of demonstrations of applications that work flawlessly on both frameworks. I would suggest that you are primarily rewriting the UI of the application, which is understandable as they are two totally different platforms. I would also suggest that the original application was badly architected - the UI layer should be easily separated and replaced, leaving the business logic intact. As an example, have a look at the MVC architecture pattern (Model-View-Control)

Perhaps we are talking about different perspectives; and you're right, I shouldn't draw conclusion based on what I am doing rightnow or rather based on one sided perspective, so I will take back what I've said that "multi-platform in .NET is a myth", I agree it is wrong. The reason my team is recoding almost everything when porting to Linux is not because of bad design, but because we are in a game development where the games that is using .NET Framework coded for Windows is using Managed DirectX. Of course we can simply use WineX (http://www.techimo.com/newsapp/index.pl?photo=744) and run our games in emulation, but that will cause too much overhead which is exactly what we want to avoid.

In any case, we (the company) are currently "trying" .NET for games, it's not yet decided whether we are going to proceed in developing games in .NET or not. You can simply ignore what I've said previously, I know .NET's scope is huge, and the target is more of business applications, its not designed for games in the first place (or should we say, it is beginning to support games?).

Regards,

-chris