[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

The programming languages used for the everyday applications.

Posted on 2006-03-20
31
Medium Priority
?
790 Views
Last Modified: 2012-06-27
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.
0
Comment
Question by:DCreature
  • 9
  • 8
  • 5
  • +3
31 Comments
 
LVL 32

Expert Comment

by:jhance
ID: 16242656
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.
0
 
LVL 23

Assisted Solution

by:brettmjohnson
brettmjohnson earned 400 total points
ID: 16242735
Most of the above applications are written in C++ (MS Office, for instance)
Most of the system services (VNC, Firewall, etc) are probably written in ANSI C, possibly C++.
I think Skype is written in Java (but I'm not sure)

All are dialects of the C Programming Language.
ANSI C is a Procedure Oriented language and Java and C++ are Object-Oriented language.
The choice of language is usually indicated by type of problem to be solved, portability requirements, and integration with other existing technologies.

Degree of difficulty in learning is:
[Easiest]   ANSI C   ----   Java   ----   C++   [Hardest]

0
 

Assisted Solution

by:tripsy
tripsy earned 400 total points
ID: 16245226
java is a very powerful programming language, you can program web-applications as well as server-client applications. learning java,c++ or c# (c sharp) will give you a good knowledge for further programming languages.
if you have never programmed before it would be best to start with c. there you can begin learning how to code step for step. it will take you a while to reach the knowledge of programming java, c++, c# or other object oriented languages. but these languages are definelty the future. depending on the task and the company you are programming for, you will choose which programming language to use (often companies only have a certain compiler or specific preferences).

A big question you have to ask yourself is if you want to do web-programming or programm applications. as said before java, c++ and c# can do both. but web languages like php (freeware - compatible with the free apache server) or asp (used with windows - uses the internet information server implemented in windows) are fun to learn and give you all the functions you need for web pages.
here obviously the web-languages are easier to learn as java, c++ or c# but less powerful.

vba is also a cuty for beginning programming, you can write powerful macros for excel, word or access which are easy to learn, fun and can solve many problems. you wouldn't be able to do any web-programming, but seeing that a vast majority of companies use microsoft office it can be very valuable to them if you are good at vba (visual basic for applications).

finally i want to add that whatever you learn, it is never a mistake. you can always use what you have learned for further programming languages and it will broaden you spectum of software engineering knowledge.
i would advise you to start with something which will show you quick results and allows you to learn quickly -> visual basic for applications, implemented in microsoft office. this can't be a mistake, because it will be a good starter for you and an effective programming language for companies.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 6

Assisted Solution

by:liviutudor
liviutudor earned 400 total points
ID: 16246373
Throughout my experience -- and especially lately -- I've noticed a few trends:
1/ people moving towards platform/environment independence -- and here the most used one seems to be Java -- with C/C++ being in second place due to portability of libraries
2/ people getting heavily tied into MS technologies, purely because they are easier to use for the "not-so-solid" developer (think biiig companies, who can't afford to hire 1000 worth of the top-notch developers!) and also because you are using one single technology across (MS), they integrate better. In such cases VB was pretty much the norm (with VC++ being on second place) -- nowadays VB.NET seems to be the most preferred environment with C# being second from what I've seen. There are still loads of people/companies though using C++, either for Windows API or low-level access -- or even due to legacy code! -- but I'm guessing that must be probably a really low percentage of them
3/ people deploying stuff onto the web. And here the 3 (well 4!) most used languages seems to be Java/JSP and ASP.NET (or just ASP) battling for supremacy and PHP/Perl being probably in 3rd place.
4/ Last but not least, people developing stuff for embedded devices -- there seems to be a well-balanced fight in between C++ and Java. I know .NET supports it as well, but personally I don't know of any companies using .NET for mobile/embedded stuff yet.
Hope this helps.
0
 
LVL 8

Expert Comment

by:nepostojeci_email
ID: 16246894
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
0
 
LVL 6

Expert Comment

by:liviutudor
ID: 16247053
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.
0
 
LVL 6

Expert Comment

by:liviutudor
ID: 16247077
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?
0
 
LVL 8

Expert Comment

by:nepostojeci_email
ID: 16247259
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 :))
0
 
LVL 8

Expert Comment

by:nepostojeci_email
ID: 16247281
0
 
LVL 6

Expert Comment

by:liviutudor
ID: 16247403
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.
0
 

Expert Comment

by:tripsy
ID: 16278778
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? :)
0
 
LVL 6

Expert Comment

by:liviutudor
ID: 16278809
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.
0
 

Expert Comment

by:tripsy
ID: 16278815
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 :)
0
 
LVL 6

Expert Comment

by:liviutudor
ID: 16278838
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.
0
 
LVL 6

Expert Comment

by:liviutudor
ID: 16278841
P.S. Liked the "futuristic assembler programming" phrase -- made me laugh too :)
0
 
LVL 8

Expert Comment

by:nepostojeci_email
ID: 16278926
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 :)
0
 
LVL 32

Expert Comment

by:jhance
ID: 16279001
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++.
0
 
LVL 8

Expert Comment

by:nepostojeci_email
ID: 16279317
I am not talking about "write entire applications in assembler"
I just mentioned it is good to know it.
0
 

Expert Comment

by:tripsy
ID: 16281696
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?
0
 
LVL 6

Expert Comment

by:liviutudor
ID: 16281904
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.
0
 

Expert Comment

by:tripsy
ID: 16282538
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 :)
0
 
LVL 6

Expert Comment

by:liviutudor
ID: 16282579
same to you my friend! :) have a nice weekend.
0
 
LVL 8

Expert Comment

by:nepostojeci_email
ID: 16284024
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? :)))
0
 
LVL 6

Author Comment

by:DCreature
ID: 16288285
Is Visual C++ same with C++ ?
0
 
LVL 6

Author Comment

by:DCreature
ID: 16288301
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.
0
 
LVL 32

Expert Comment

by:jhance
ID: 16288349
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.
0
 
LVL 6

Author Comment

by:DCreature
ID: 16288376
jhance, so are you basically saying that Microsoft Visual C++ (Part of VisualStudio 2005) can be used to develop C++ applications?
0
 
LVL 32

Accepted Solution

by:
jhance earned 800 total points
ID: 16288433
Yes, absolutely.  In fact I would recommend using Visual C++ if you want to develop using C++ for Windows.
0
 
LVL 8

Expert Comment

by:nepostojeci_email
ID: 16293661
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.
0
 
LVL 6

Author Comment

by:DCreature
ID: 16307150
Thank you all  :-)  for participation, also the arguements have been very constructive, thanks again.
0
 
LVL 8

Expert Comment

by:nepostojeci_email
ID: 16352711
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 :)
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
When you discover the power of the R programming language, you are going to wonder how you ever lived without it! Learn why the language merits a place in your programming arsenal.
An introduction to basic programming syntax in Java by creating a simple program. Viewers can follow the tutorial as they create their first class in Java. Definitions and explanations about each element are given to help prepare viewers for future …
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…

834 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question