Link to home
Start Free TrialLog in
Avatar of DCreature
DCreature

asked on

The programming languages used for the everyday applications.

I have been very interested to know for quite a while now, what programming languages are used to code our everyday applications, and whether it is benefitial to learn them.

For example;

Microsoft Office 2003.
Antivirus software.
Firewall software.

And other third party programs like Poser, Skype, VNC, and other applications. Because I don't think they are all using different languages.

Is it benefitial to learn them, what are the ups and downs, etc.
Avatar of jhance
jhance

Most software on the market today is written in C++ using the WIN32 API and/or MFC.  But that is changing.  Microsoft's .NET using C# or VB.NET is starting to make inroads.  Visual Basic 6, Delphi, and even Intel x86 assembly language are also used.

What is worth learning depends a lot on what you plan to do.  Are you looking for a job or a better job?  Find out what potential employers are looking for and learn that.
SOLUTION
Avatar of brettmjohnson
brettmjohnson
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Java is slow.. Too slow.. Even if it is platform independent..
I recommend PHP as it is free (with Apache Web Server, which is also free)

For desktop apps:            Delphi, ANSI C, C++, assembler
For web apps:                 HTML, JavaScript, PHP
Device drivers/services:    ANSI C
Whoever still believes in "Java is too slow" is still using version 1.0  -- or using Swing on the client side :D
Have a look at the current tests for server-side java and you will see it performs very-very-very-very fast. Even things like memory allocation nowadays quite often outperform the likes of C++.
As for PHP well... hmmm... no, I'm not gonna get into a debate here. It's good that there is an alternative out there I guess. I would never though dare to advocate any technologies/languages though as the ones to save the world and be the fastest. So careful with those comments I say. But, having said that, you are entitled to your views, which I guess is what this website is all about.
P.S. Out of curiousity: how many programmers/companies you know of to develop desktop applications in assembler -- and what platforms are they developing for? I'm not being cynical, just curious. Furthermore, are they using Intel Assembler (i.e. windows) -- if that, is it 16,32 or 64 bit instruction set? Or are they using the GNU assembler? Or something else?
find the project "small is beautiful" on www.grc.com
you'll get the answer for assembler

regarding Java, my all friends are mad about java and I'm kind of
involved in it and I can see their happiness because of Java being
super fast, but ok, it's just a point of view. I favor php because it
is made simple, at least until php5 :))
I'm not an evangelist of Java myself either (Well, I haven't taken that sun certification yet :)) lol) I'm not mad about it -- like i said, every technology has its good and bad parts. Having work in consultancy for a while, I came to figure out that you always have to weight the environment, the requirements, the other middlewares involved and so on before recommending a technology/language. Which is why I've said that you can't advocate a technology as being the best/fastest and so on.
As for assembler -- that's one product created for fun it seems. I'm talking about commercial applications developed in assembler. Personally, I've only seen companies developing drivers or embedded stuff writing *part* (and I stress again *PART*) of their code in assembler -- mostly in combination with some C/C++-based API.
PHP is simple indeed -- and so was ASP -- and look what an army of well "inexperienced" (for no better word :D) programmers it had given birth to. And again that is arguable that it is a good or bad thing, as there's different points of view upon it.
Anyway, to sum it up, agreed, PHP is an alternative for web development. I do not agree with Java being slow -- not unless you can come up with some serious stress-testing results by accredited companies/associations/organizations that prove this. This slowness is a common missconception due to it's "half-compiled/half-interpreted" nature -- but based on this misconception one could argue just as well that .NET is slow -- and you'll have all the programmers using it jumping at your neck -- rightly so! :)
And to get back to my initial discussion -- since your argument for assembler did not convince me -- I'd be curious to hear from other users who have used/are using/know of products written in assembler.
forget assembler, or do you want to get stuck in the past? old people program in old languages. they were the heros in their days, but now we have different possibilities. with different i mean -> faster, better and more powerful.
why old when you can have new? it business is not one in which you should be traditional, the world is turning and new technologies arrive constantly. any more questions? :)
Sorry, don't agree with your approach either, tripsy, assembler is need for most tasks involving driver development. I doubt it is being done for desktop apps though...
As for "why old when you can have new" -- if you ever worked in consultancy you will find out there is sooo much legacy code around that one has quite often to rely on old technologies/languages to get around an integration task.
Well, that's my 2 cents anyway.
i have to add that some companies still use assembler, but not because it's so great. especially banks use systems running on assembler which they have been using for the past 20 years. because it still works and all their data is in the system assembler is still used, switching would cost too much and could risk data loss, etc. - never touch a running system!

because systems like this still exist people are still paid and employed for programming assembler, obviously it can't be bad having knowledge about it, but this is not the time for "futuristic assembler programming" - even this expression makes me laugh :)
well, that's something new to me -- thanks for that! I worked with banks and most of their legacy system was COBOL based -- mostly they would just wrap it in a CORBA layer then occasionally apply a webservice layer on top of it (either via IONA-based technologies or by writing their own layers). I never come across an assembler-based banking system though! :O
I know they are -- well, were, about 4 years ago -- widely used by hospitality IT services provider companies (i.e. hotel, pubs, restaurant manangement systems -- POS, PMS etc), who had their initial product developed in the 70s and still kept on adding to it. However, the 2 companies I worked with who were implementing these (rubbish) systems went both bust :) -- so I reckon Fidelio will be leading the way now with their .NET based (I think) systems.
P.S. Liked the "futuristic assembler programming" phrase -- made me laugh too :)
Maybe I was misunderstood, but, by recommending the author to learn the assembler,
I never had an idea on my mind that he/she will write entire application in assembly
language... It is just a path of learning process, where you start from top, going deeper
and deeper, down below. Finally, if you understand how does your computer work,
on a hardware level, you surely can develop a wide majority of applications that are
required nowadays.

And, I also didn't see systems completely written in assembler that is used in banking :)
I think that had to hurt :) Really :)
There is virtually no mainstream application development going on using assembler any more.  Steve Gibson, while an interesting character, does assembly programming as a display of his bravado as a programmer.  Granted his work is very nice but he's off in his own little world in my opinion.

I've done loads of assembly programming on many processors but it was all embedded code, mostly on microcontrollers.  But even today on microcontrollers, most development is done in C or C++.  The productivity of assembly is LOW compared to C.  The efficiency of assembly was important back with microcontrollers has 1 or 2 K bytes of ROM and perhaps 256 bytes of RAM.  Those day, thankfully, are long gone.

Even device driver development rarely uses assembly.  Most drivers are done in C, many in C++.
I am not talking about "write entire applications in assembler"
I just mentioned it is good to know it.
liviutudor, i am sure that many companies still rely on assembler (like my example in banks - i never spoke about an "entire application", but systems which are based on assembler), but i don't think anyone would use assembler nowadays. i mean if you build up a business now you would never want to rely on assembler - or am i wrong in that point?

nepostojeci_email,i am also sure that it is a good source of information having worked in and around assembler to understand general programming techniques (as they all have the "assembler-logic" somewhere in the background), but i don't reckon that it is really necessary - i don't think that you will be able to make a lot of money out of having that knowledge and will still be able to learn newer programming languages which are "more wanted".

does anyone reckon that it would be easy finding a job in which assembler programming is the main part? or is this knowledge only a good background to have?

liviutudor, could you give an example of where you used assembler parts? was the only reason for using them existing legacy codes?
hmmm, "rely" in that case is a strong term -- I agree that there is the _odd_ company having some modules written in assembler -- and from my experience, in such cases, they are thinking of actually getting rid of it, it just takes them (a long) time to do so. And if you look at the history of the thread you will discover that I was just amazed that there might be companies nowadays considering developing desktop (!) applications in assembler. So your reply might have been targeted at somebody else I guess :)
And I cannot but agree again with your next point: the question here is what programming languages are used *to build systems* rather than *to understand software engineering*.
Last but not least: you got confused again in the chain of replies here: I am *NOT* advocating *AT ALL* the usage of assemblers. I have come across in my consultancy experience with (very) few companies still maintaing some really old assembler code but I have never used it in commercial systems. (I have used it for my own entertainment/hacking occasionally, but even then I would always prefer a high-level language). More specific, since you have asked me about companies: there used to be a company called initially LK Global Hospitaly, which then rebranded into AremisSoft and following that they went through a few investments and rebrandings until they went bust :) Anyway, the point was that their main system, a PMS = property management system aka hotel management system (IGS Hotel called if I recall it correctly) was entirely written in assembler. There was 1 (one!) programmer maintaining it and luckily they provided some sort of file-based interface for 3rd party integrations -- which is what I worked on (so again, I've never touched the assembler code). After that, while working with FORTE Hotels (which has been long now dismantled and sold in smaller pieces) I've also noticed that their main PMS (called CARAHOST I think) was assembler only. I realised afterwards that this was due to the fact that it was pretty much the same developers that started the 2 products back in the 70s. Anyway, they are both gone and they are pretty much the 2 companies I've known to still have assembler code in production.
I cannot stress enough though that it wasn't me who said that assembler should be counted as one of the "languages" (assembler? language? what? :) ) for developing systems nowadays -- however, I hope the above answer your question about companies+legacy stuff+assembler code.
hey liviutudor, thanks a lot for that, made me laugh again.

the only contact i had with assembler was at school (i went to a computer school) and there we learned it in the first class to understand "what happens beneath" modern programming languages. for me personally assembler was nothing more than a pain in the a***, complicated to use and very little coming out of hours of work. years later i acutally saw the positive aspect of knowing how numbers have to be converted before they look like proper numbers with commas and so on. what i really learned though was WHY we do not use assembler anymore :) and how thankful we can be for the modern programming languages which let us handle the important stuff rather than the basics.

i know that you're not an assembly fan, but you taught me the importance of assembler for driver development. as i have never developed anything in that direction, so i did not know about this fact and am sorry for calling it "an old language for old people".
for me assembler has just always been a joke more than anything else, but i'm still very young so this is understandable, i hope. i have never lived through a phase in my life in which assembler had a modern, high status.

i know how powerful java is for example and the comparison with assembler is like comparing apples and pears as people like to say.

thanks liviutudor for sharing your job experiences, they are exactly what i expected, but assembler is obviously a part of software engineering development over the past years and has its place in the programming world (somewhere :).

i think we have a similar opinion about old & new programming languages and thanks for the fun and informing conversation.
happy programming :)
same to you my friend! :) have a nice weekend.
Only a person who thinks he knows everything, can consider something useless,
until he tries it. As I don't think I know everything, I managed to learn the basics
of assembler too, and I've gained some experience in a common logic, which I
could use in one project, optimizing the performance by more than 800% !

One can say that the optimizing could be also done without me having to learn
the assembler, but I can only say that thinking in assembly language had helped
me developing that kind of logic, which really helped me a lot.

Anyway I think this conversation has lost its meaning, as the author hasn't cheked
in for a long time :)

I'm having a lot of fun reading this conversations, too :) but maybe we should let
the author of this question breathe a little bit? :)))
Avatar of DCreature

ASKER

Is Visual C++ same with C++ ?
Sorry I forgot to post this with my last post, if C++ is not same as Visual C++, what development environment is best to use?

I want to increase my job prospects, as well ans improve my understanding in programming.
C++ is a standardized language.  Visual C++ is a Microsoft product.  It's not a language per-se but rather is a development environment.  It's strictly Windows.  Many, perhaps most Windows development using C++ uses Visual C++ and/or Visual Studio.
jhance, so are you basically saying that Microsoft Visual C++ (Part of VisualStudio 2005) can be used to develop C++ applications?
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
There is also Borland C++ Builder, which I use, and personally, after using
VC++ for some time, I find it fits to my needs more than VC++.

Also, if you plan to write a portable code, maybe it is better to take into
account the thing that people in Borland have developed the Kylix, a port
of Borland's C++ Builder to Linux/Unix. That way, writting in BC++ Builder
you can write the code for Windows and Linux/Unix in the same time.
Thank you all  :-)  for participation, also the arguements have been very constructive, thanks again.
I was reading some documents on grc.com, and I just couldn't resist not to
post the comment here :)

----
GRC eMail — our unique user-managed eMail system
768,434 subscribers ago, I wrote (in assembly language of course) our own custom eMail management system. At the time I never imagined that we would ever have the 768,434 subscribers we have today, but I'm glad we have a system that makes their sign-up and maintenance manageable.
----
NanoProbe — my own TCP protocol implementation
I designed and wrote a complete IP protocol suite from scratch, in assembly language, to enable several major advances in our remote Internet security testing technology. The first advance is deployed in the second-generation, much faster, NanoProbe-enhanced ShieldsUP! tests. The NanoProbe system includes support for ARP, ICMP, UDP & TCP protocols and generates custom security-testing Internet packets. Our Research & Development "NanoProbe" server at http://nanoprobe.grc.com/ hosts pre-release development of new technologies.
----

The guy really likes assembler :) I didn't notice it before this discussion :)