What language should I learn next?

I have experience in T-SQL, VB (inc VB.net), ASP (inc ASP.net (VB)), HTML and CSS and am wondering if a new language would be of use to me. I have seen some references to other languages in answers on various forums such as Python, Perl, PowerShell, etc and wonder what would be most appropriate/useful to me.

I am a DBA/SQL Developer/App Developer (45%/45%,10%) working with SQL Server, IIS6+7 in a wholly Microsoft network.

The right answer will be one that I judge to be the most encouraging with some suggestions/recommendation as to best method of learning (note: residential courses are out, its my spare (home) time only) and examples of how it could be useful to me both in my career and in my day-job. I will then certainly try to learn and use it accordingly.

[Closing Edit] OK, its just over two weeks since I asked the question so I'm reviewing the answers and heading off to learn a new language. The most popular response is PowerShell (despite my hopefully installing Python as I thought that would be the recommendation!) I certainly dont disagree with the responses but I have taken a light view of PS previously and not really seen it as being of real potential benefit. However, I'm going to commit to it for at least 3 months, I'll also get a few books, spend a load of time and no doubt some more hairloss on it and see how we go.

Thanks to all the respondees

more ▼

asked Feb 10, 2010 at 05:17 PM in Default

avatar image

Fatherjack ♦♦
43.8k 79 102 118

  • excellent seeder - Just one query tho - when you say ASP inc ASP.NET do you mean with VB.NET or C#?

Feb 10, 2010 at 05:24 PM Matt Whitfield ♦♦

yeah, good spot. VB all the way. Graduate of the Fisher Price school of programming I'm afraid! ;)

Feb 10, 2010 at 05:40 PM Fatherjack ♦♦

VB.Net isn't Fisher Price though. I mean the syntax does leave a lot to be desired (like why did they call 'internal' classes 'Friend' classes?) but at the end of the day it does compile to the same MSIL that C# does...

Feb 10, 2010 at 06:32 PM Matt Whitfield ♦♦
(comments are locked)
10|1200 characters needed characters left

7 answers: sort voted first

Definitely a good seeder. And as with so many questions here, the answer is It depends. Primarily on why you want to learn it.

If you are staying in a 100% MS environment and what you want is just system level scripting, then PowerShell is a good way to go. It is relatively easy to learn and write(I think Python is easier to read, more on that next paragraph), tightly integrates with the MS environment, including SMO and SQL Server. Also, there are tons of examples and completed usable scripts out there. There are many good articles on PowerShell on Simple-Talk, I personally am particularly fond of the ones Laerte has been writing recently.

If you want a general purpose programming language, I am a big fan and advocate of Python. It is very easy to learn for a general purpose language and very expressive and powerful. It is also particularly easy to read and maintain compared with most other languages in use today. It does tend to have lower overall performance than some languages like C, but it more than makes up for that with its ease of use and other good attributes. You can get everything you need for free, including the interpreter, libraries, IDE, and numerous good books. It integrates very well with SQL Server, and if you use the IronPython version you can use SMO. There is an article I wrote on precisely this at http://www.simple-talk.com/sql/database-administration/python-for-the-sql-server-dba/

If your goal is to become a better programmer more than to actually use the language, I would look at Lisp. I have not personally used Lisp, so take this with a grain of salt. But, many people I respect highly recommend learning Lisp both to use and to help you improve your programming overall. It is a different paradigm from most languages, and that will help you really grow and expand your knowledge base. It is the language I intend to learn next, when I have time to pick up a language for the sake of picking up a language.

Of course, C# is also a fine general option and plays well with SQL Server if writing CLR and there are also several other good options.

So, to summarize, my bottom line recommendation is Python, but that is caveated by your situation and your goals.

more ▼

answered Feb 10, 2010 at 06:28 PM

avatar image

15.6k 22 57 38

(comments are locked)
10|1200 characters needed characters left

Based on all the places it's being used these days, I'd say it's PowerShell that should be a big part of every DBA's toolbox. Along side every administrator of Exchange, CRM, SCOM, Sharepoint... It's just getting used everywhere. The fact that it's .NET means you've got a great deal of existing infrastructure, and based on your question, knowledge, to draw on.

more ▼

answered Feb 10, 2010 at 07:10 PM

avatar image

Grant Fritchey ♦♦
137k 20 47 81

(comments are locked)
10|1200 characters needed characters left

I would say pick up a PowerShell book and then dive into F#. I've been working with it for the past year and have to say I haven't been this excited about learning a new language in a long time. It forces you to think about problems in a different way, mainly functional instead of imperative. With VS2010 it is now a first-class citizen in the MS family and since you are a Windows shop and familiar with the .NET Framework you are half way there. Many parallel tasks are much simpler to implement than with C#. I feel this will become valuable in the next few years as we try to get the most out of multiple cpus/cores. You can map functions across sets of data much like SQL. It has made me a better C#/VB developer and recursion is now my friend!

more ▼

answered Feb 10, 2010 at 10:24 PM

avatar image

Scot Hauder
6.5k 13 16 22

(comments are locked)
10|1200 characters needed characters left

I'm going to go out on a limb here. There are some excellent answers, all of which I agree with, so I'm not going to repeat other people's wisdom. But what I will say, is learn Assembler. I'll give you a second to clean up the coffee that you've undoubtedly just spat all over your monitor...

No, it won't be very useful to you in terms of getting a job. No, you won't ever come to a problem (in a normal PC environment, at least) and think 'I know, I'll write that solution in assembler'.

But, what it will do is give you an invaluable peek into how computers work at the byte code level. What is actually going on, all the way down there at the CPU?

And I don't think you would want to learn about a lot of assembler, you won't get much benefit from learning about SSE extensions, etc etc. But a nice, small, understandable instruction set would give you a good grounding.

So why?

The idea of abstraction is that you don't have to care how something works, you just have to care that it works. In a perfect world, you would never have to know how something works. However - does an understanding of how a car works make you a better driver? For example, recently in the snow, did knowing that using a higher gear makes it less likely that you will slip help you out? I know it did for me.

The same can be said of computing. The release of the source code for the .NET framework is a case in point - that is certainly something that you should not need to care how it works. But they released the source code because they understood that having a good working knowledge of what is going on inside the black box you are using will make you a more effective user of that black box.

So, go on. Dip your toes into a bit of assembler, and then the next time you write a line of high level code, you'll have that much more understanding of what it is, actually, that you are asking the CPU to do.

more ▼

answered Feb 11, 2010 at 06:56 AM

avatar image

Matt Whitfield ♦♦
29.5k 62 66 88

Nice analogy there with the car and snow Matt but would you really need to know why it works just that it does? Most people wouldn't understand the theory about engine speed and mechanical gearing.

Feb 11, 2010 at 07:10 AM Ian Roke

I think you'd be surprised. When it was snowing badly, my wife and I were out taking cups of tea and coffee to people who were stuck until about 2AM, and I think quite a lot of people knew... Not being sexist, but there was a definite male/female divide on that topic. The males all seemed to complain about people not knowing how to drive, and the females all asked if they could use our toilet.

Feb 11, 2010 at 07:27 AM Matt Whitfield ♦♦

Assembly eh? or go with Whitespace, Malbolge or Cow pick your poison here http://99-bottles-of-beer.net/

I worked with assembly in the 80's writing a textual parser for MUD games--the good ol days before WOW and graphics. Even on an 8MGHZ processor an optimized assembly binary search of a dictionary was surprisingly fast. With all the levels of abstraction and bloat on top of the byte code you can write a program orders of magnitude faster than .NET. Of course once you draw a line to the screen or write a byte to a hard drive you will never take these base class libraries for granted again.

Feb 11, 2010 at 09:00 AM Scot Hauder

I had to take an intro-assembler course. I found it a lot of fun and it provided a lot of insight. So kudos to Matt!

As for the language of choice, if you are Microsoft-centric then PowerShell is truly the one to choose. Read "PowerShell In Action" by Bruce Payette (development leader of PowerShell) and you get an insiders view unlike any other. He goes into not only how to use it but the rationizations the team made in creating it.

Feb 11, 2010 at 11:13 AM Blackhawk-17
(comments are locked)
10|1200 characters needed characters left

Are you familiar with LINQ? You don't mention it in your OP but that would be a valuable addition to your "toolbox".

Check out What and why LINQ?!!, Why LINQ will succeed and Why LINQ to SQL is a Better Option than Straight SQL.

more ▼

answered Feb 11, 2010 at 06:17 AM

avatar image

Ian Roke
1.7k 32 35 38

(comments are locked)
10|1200 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here



Answers and Comments

SQL Server Central

Need long-form SQL discussion? SQLserverCentral.com is the place.



asked: Feb 10, 2010 at 05:17 PM

Seen: 2747 times

Last Updated: Feb 26, 2010 at 12:06 PM

Copyright 2018 Redgate Software. Privacy Policy