October 4, 2006 at 1:42 pm
Keeping your career growing and being current is always a tough task. Especially in the IT world where technology changes rapidly. If you're going to be looking for a new job, you want to be abreast of hot technologies and try to gain experience in areas that will help you stay employed.
When I saw this list of the 10 programming languages to learn right now, I was intrigued to see what they thought was important. It's a good list, at least one that I think is worth following although you wouldn't want to worry about all 10. There's really two lists: a Windows based list with C#, and VB.NET and a *nix based list with PHP, Perl, Ruby, Java, and Python. That doesn't add up to 10, so there's a few that are independent, AJAX and Javascript as well as the ever popular C, which should still be required IMHO.
But there's one that's missing. In my mind, with databases becoming so prevalent and most new applications storing data in a relational model, SQL should be required. Not necessarily T-SQL, PL-SQL, or any dialect in particular, but knowing the idea behind querying for sets of data with SELECT statements is important.
To me a developer that can write queries is very valuable, especially in the corporate world where so many internal databases need to be hooked together and connected to without the SOAP/Web Service/HTTP models of the Internet. A highly skilled developer that can't write good queries is less important in my mind because they'll require time and effort from a DBA to structure their data accesses.
I guess I'd argue that Java, Ruby, and Python are all very similar to each other and you learn many of the same concepts in each of them. I'd guess someone proficient in one would pick up the others quickly if need be.
Actually you might argue that all of these languages are similar, most of them being based on OOP principles. So maybe the list should be trimmed further:
C, because everyone needs to know theory and learn to respect their mistakes 🙂
C# or Java - they're the most widely used and you'll learn about OOP principles.
AJAX - XML and Javascript. What else is needed on the web?
SQL - What's there to say here. Everyone should know it 🙂
Steve Jones
October 5, 2006 at 3:38 am
I think that there should be at least one assembler language in there. You need to know the deep magic, how the bits and bytes really work.
October 5, 2006 at 7:28 am
I agree with John here in that an assembler language should be on the essentials list. When I was in college, we had a programming languages paradigm class that showed us various languages and their strengths and weaknesses. We had to write sort routines for the various languages, including C++, Pascal, FORTRAN, Smalltalk, and LISP. We also had a separate class for learning assembly language. (When the 9/11 attacks happened, I was sitting in assembly class.) Assembly was great for teaching us what happens to the 1s and 0s at the lowest level. It was definitely a learning experience.
Though Steve, I think you left something out of your comment "AJAX - XML and Javascript. What else is needed on the web?". You left out PHP. Although it started as a *nix-based language, as it has grown up and gained in popularity, it works well in the Windows environment. And to make it even more related to this site, PHP has functions specifically for MS SQL. (And it's had those functions long before it worked nicely on Windows.)
October 5, 2006 at 8:02 am
Over the last 18 years, I'm well versed, trained in and have developed many apps in many languages. In VBSCRIPT, JAVASCRIPT, C, COBOL, FORTRAN, C#, PASCAL, BASIC, T-SQL, and the .NET, and a touch of assembly, and others.
And to me theres nothing i enjoy more than programming in vbscript, on the front end connecting to SQL SERVER 2k+. Why, because it works and it works fast. vbscrip or javascript runs about the same. And if the program is 'that' great, theres no reason it can't be precompiled later.
But if you want a console app I would build it in C# or VB.NET, or if proformence is that big of an issue, take it to C++, pascal or cobol, or convert some of 'that' to assembly.
From a web application standpoint; write once and deploy to many, IIS handles 1000's of connections with ease. I've seen many programs written in java or javascript for that matter that crawl painfully. gmcanada's 'build a car' for example... I'm tempted to rewrite the thing in vbscript, and show them how it really should be done. But i'm still on the ticket for the STANLEY-BROWN nomenclature side project once i get our workflow process and expanded accounting / account workflow process / parts back order system to asp, I'll be back at the nomenclature front end.
I had wanted to flip over to asp.net, but forms based authentication gets under my skin, I like sessions, I feel its weak having to rewrite a major concept of asp, for the same result. IMHO, current versions of .NET languages are for the most part only exposing you the user to recreate 'other' features of 'other' programming languages.
Now that said, if you like bringing parts from other things and putting them under another language for interpetation, .Net is a joy.
I have enough experience after exposing ASP sessions over to .NET for an article all on its own.
Most asp.net apps and the web 2.0 are forums dressed up with better medium variety handling. The AJAX is another term thats better to describe bleach than really 'asp, with exposed type declaration (XML).'
But this might be just putting myself on a pedestal, but 'just tell me what you want' I'll use the right tools to build it. If you have enough money I'll write you a new language to make it happen, but hopefully it wont come to that.
You want it done in LOGO, or ADA; damn if you want it done using a card reader and led light arrays coupled with a bread board, It might not be the most accessable email client or webpage ever, but I'll make it for you.
My 10 cents,
Edward W. Stanley
October 5, 2006 at 8:06 am
Ruby and Python similar? Yes, of course. However, saying that Java is similar to either Ruby or Python is like saying that a whale and bear are similar because they're both mammals.
October 5, 2006 at 8:28 am
In my old company, they valued VB.Net, C#, Java are important but not SQL because the VP of the IT department said 'SQL is simple, any idiot knows how to write it.' When I looked at the VB and C# program, the SQL statement inside was horrible.
Basically in that company when they hired people they only looked at VB, C# skills, I looked at the DTS packages, T-SQL procedures, they were terrible.
But when the head of the IT did not believe SQL is a language, there was nothing you could do.
October 5, 2006 at 8:46 am
Steve, you have hit the nail on the head with your editorial. The languages described certainly are important to learn, but SQL should really be on there -- in the top 5, at least.
It's becoming increasingly likely that any job (in some cases jobs that aren't even categorized as IT) will require querying a database or knowing how to figure out database tables, and it seems that the message is not going out strongly enough that anyone interested in IT must learn some level of SQL.
-------------------
A SQL query walks into a bar and sees two tables. He walks up to them and asks, "Can I join you?"
Ref.: http://tkyte.blogspot.com/2009/02/sql-joke.html
October 5, 2006 at 9:19 am
What were they thinking???? Leaving SQL out of the list of top 10 languages to know is like leaving Bill Gates out of a list of the top 10 wealthiest people.
October 5, 2006 at 9:47 am
>> vbscrip or javascript runs about the same.
Which is why I write in C#. I had a program that took 5 hours to run. Rewrote it in C# (.NET 2.0) and it runs in 11 minutes. Identical logic and structure, just changed the language.
Steve G.
October 5, 2006 at 9:50 am
and 11 minutes is fast?
October 5, 2006 at 10:00 am
Yes, SQL, of whatever dialect, is essential for ANY serious programming professional.
I believe F# will become the most important general-purpose programming language over the next five years.
October 5, 2006 at 10:02 am
Steve said: "really two lists: a Windows based list with C#, and VB.NET and a *nix based list with PHP, Perl, Ruby, Java, and Python."
Why is that two lists? Who has the luxury of working in a pure Unix or Windows shop anymore? Does anyone hire people who only know one or the other anymore?
Not even Microsoft is Windows-centric any more. If you don't want to use FreeTDS, you can use Microsoft's own Unix dblibs. And who was it who headed the team that produced the fabulous Monad aka PowerShell? That's right, a guy who came from the VMS world and had a Unix background too. SQL Server has hooks for Oracle (Larry and Bill, Bill and Larry...oooooooooo)
Should S.Q.L. be on the list? Probably you are right. However, how many of us spend our days being asked "is there a problem with the server" when a developer has learned S.Q.L. but no relational database theory - and implement spreadsheets or tape drive emulators.
roger reid
Roger L Reid
October 5, 2006 at 10:09 am
I'd have to agree. I'm VERY picky about execution speed. Of course, 11 min is a massive improvement over 5 hours... but... Unless we're talking something massive here, I think the bar may be set a bit low.
I've worked at plenty of places with the idealogy of "If it works, and we can cram it in before backup, it's good". Now that I administer a database system (AS/400) my views have changed considerably from that of the culture I've come to know.
Big process can take a couple min. if it takes more then that, then there is something fundamentally flawed. Usually it's just a matter of finding that flaw.
A few years back I worked on a problem where one of our processes was regularly running for several hours past the end of the work day (and it needed attended that whole time). The process was eating 30-50% of our system resources from start of the day on. What we finally discovered was that we had a piece of custom code generating excessive entries into an improperly indexed table. we indexed the table, and now transactions that used to take 5+ min each are indistinguishable from instantanious to an observer, and virtually no system resources are used.
Worse are some reports I've looked at. In a lot of cases, you have reports that are just so massive in scope that no one thinks twice about them running for 2 hours before generating. I can't even begin to fathom how many of those reports I have fixed indexing, or rewritten to deliver near instant results.
How important is SQL? it should be number 1 on the list. probably it should have multiple entries. Way too many problems with performance can be traced back to poorly implimented database design or access.
</rant>
now, if only I could find time to work on some nomenclature <kof> I've fallen into the same pit of not getting time for the side projects.
October 5, 2006 at 10:30 am
well who would make something in the first place that would run for 5 hours..... how would you know if its even running for certian or not.... if not locked up .. from the processor going 'this program is just a waste of resources.. i'm cutting the threads...'
and i'm sorry kevin about the delay.... I'll getting back to it kevin..... tuesday should be done....
October 5, 2006 at 10:39 am
I read this article a while back, and yeah I was pretty surprised that SQL wasn't on the list. I think the article missed the mark though. It focused on technologies, and some of the things listed aren't even programming languages. I think a better article would be "the syntax styles" you need to learn, or the "basic computing concepts" that you need to learn. I think there's a lot of people out there who know programming languages but still don't know how to program.
I think there's a big problem with the language-centric approach to teaching programming. People need to learn concepts, problem-solving skills, and algorithms. Like, rather than telling somebody to write this:
for (int i = 0; i < 10; i++)
Instead tell them the basic parts of any loop structure in any language...
Initialise the control variable, define the control condition, do the work, and update the control variable. You can apply that to any programming language.
I learned programming in the 80s, using BASIC, assembly language, and some Pascal. NOTHING I learned about those languages back then applies today. If I didn't have the basic concepts solid, I wouldn't have been able to keep up with all the new languages I have learned over the past 25 years or so. I expect that trend of discarding old languages will continue. I think the things people really need to know these days are:
Object Oriented concepts (Inheritance, encapsulation, etc)
Relational Concepts (Sets, Intersections, Unions, etc)
C-style syntax (for use with C#, Java, PHP, and others)
HTML and CSS (cuz you can't escape the web)
You should also know how computers work on a basic level - how processors work, what is machine code, how memory works, how binary numbers work, and so on. Many programmers completely ignore those concepts. I don't think you should be an expert on internal combustion engines to drive a car, but if you're the mechanic, well... Programmers are designers, manufacturers, drivers, and mechanics. We need a solid understanding of how these machines work. I think that's the biggest problem beginning programmers have, a total misunderstanding of what they are actually accomplishing when they write a program.
Overall, I think that article really sucks, and what sucks more is that I'm sure colleges are already including it in their promotional materials. Oh, and I can think of a lot of reasons to write a program that might take hours or days to reach it's result. If you don't get it, then you're one of the ones I'm talking about, and need to get back to the basics.
Viewing 15 posts - 1 through 15 (of 33 total)
You must be logged in to reply to this topic. Login to reply