New language suggestions?

New language suggestions?

Old forum URL: forums.lhotka.net/forums/t/939.aspx


JZuerlein posted on Friday, August 18, 2006

I know this post is not really on topic, but....

I'm thinking about learning a new language, and I wanted to get some suggestions.   I started out with Basic and Pascal, then spent a bit of time with c++, and now I live and breath VB.net and c#.  What I'm looking for is something innovative to study.  So far the contenders are Ruby, Python, and Haskell.  Without starting a language war, anyone have any suggestions?

Jeff

MadGerbil replied on Friday, August 18, 2006

If you don't care which one you learn then learn the one with the greatest market viability.  Out of those three, which one would be the easiest one to get a job in and which one has the most robust community and enthusiastic developers.   That way, you may be learning something you'd actually be using one day instead of learning a dying/dead language.

david.wendelken replied on Friday, August 18, 2006

SQL and (Oracle) PL/SQL or (SqlServer) Transact-SQL.

(And I don't mean just the simple insert one record, update one record limited sql that one finds in a typical stored procedure supporting standard data entry operations)

Your c#/vb applications will be far better if you can make full use of the database capabilities.

 

figuerres replied on Friday, August 18, 2006

JZuerlein:

I know this post is not really on topic, but....

I'm thinking about learning a new language, and I wanted to get some suggestions.   I started out with Basic and Pascal, then spent a bit of time with c++, and now I live and breath VB.net and c#.  What I'm looking for is something innovative to study.  So far the contenders are Ruby, Python, and Haskell.  Without starting a language war, anyone have any suggestions?

Jeff

 

well what do you want to get from the experience ??

not the newest but you could spend some time with:

smalltalk and lisp
-- they are where many things in .net come from, and much of the OO stuff.

for low level and different there is now a forth for .net -- look at channel9.msdn.com

http://channel9.msdn.com/Showpost.aspx?postid=225641 

that would be like learning assemly languge and would get you near coding IL stuff.

T-SQL would be good for making better database stuff.

or just look at the ctp bits from microsoft on LINQ that has the betas of the next VB and C#

they are doing some really great things and need feedback on them.

look at channel 9 and msdn for info on them.

RRorije replied on Friday, August 18, 2006

Well, I have done my complete final assignment on functional languages. And I would suggest you look at Haskell. But I am prejudiced.

Even with a complete computer science study devoted to Java, I still couldn't get indoctrinated ;) with OO languages, and I do like Haskell for certain fields of coding.

Also when you would like to understand recursion completely Haskell (or any functional language) is very suited. You will certainly understand recursion when you have programmed in Haskell. When I finished my final assignment I could more easy implement a for loop in a recursive way ;)

The downside of functional languages, also the issue in my final assignment is that functional languages are not very suited (understatement ;) )  for I/O.


So far my two cents.

JZuerlein replied on Friday, August 18, 2006

The goal is not really to learn a language I could use in a future job.  It is really to understand a different approach to solving problems.  I feel like I have .Net blinders on, and I want to spend some time looking at ways other languages attempt to solve problems.

On a side note, I've got about 12 SQL servers to manage at work, so I spend quite a bit of time with TSQL, but I never thought to mention it as a language.   ; ^ )

Thanks,

Jeff

david.wendelken replied on Friday, August 18, 2006

So, when you write code in TSQL, are your algorithms based upon sets or records?

Most people transitioning from procedural languages have a record-based processing mentality.

Set based algorithms are often much simpler and much faster.

Example:

A friend of mine was brought in to tune a new Java application's month-end processing routine.  There were concerns it might be slow.  He calculated how long it took to process a transaction, then checked the production system to see how many transactions had to be processed each month.  Then he did the math - it would take around 25 years of processing time each month to run the month-end process.

Needless to say, that was a tad longer than they could accept. :)

So, the fastest way to try to speed things up was to take the java algorithm running on the application server and transpose it into Oracle PL/SQL (like TSQL, but more features).  Same algorithm, just different syntax.  Removing network traffic from the algorithm reduced the run time down to 6 months or so.  Now, a fifty-fold performance improvement is pretty good, but 6 months is still too long for a month-end process!

So, at that point, he told them the fast and easy way wasn't going to cut it.  He would have to understand what the algorithm was intended to do and redesign it to make use of set-based principles.  When he finished, it took about 8 hours to run.   A different way of thinking made a pretty big difference! 

Michael Hildner replied on Friday, August 18, 2006

Sorry for jumping in...

David, do you have links to set based vs. record based algorithms? Or somehwere that explains what they are? I'd like to know more about that. Searched, but I guess my googler's broke.

Thanks,

Mike

JZuerlein replied on Friday, August 18, 2006

Itzik BenGan did a series of articles about set base operations in TSQL for SQL Server magazine.  He also has a few books out.  They are really good.

JZuerlein replied on Friday, August 18, 2006

I couldn't agree more with your suggestion to enbrace set based operations in TSQL.  I went down the path you suggest about 4 years ago.  After several months of reading Itzik BenGan's column in SQL Server magazine, it really sank in. 

I'm looking for that same type of growth experience.  I'm leaning towards a functional language, or maybe spending some time learning about domain specific languages.

 

Skafa replied on Friday, August 18, 2006

have you looked really deep into javascript? sounds kinda dumb, but it can be a very very powerfull language do too closures, prototype chaining and such.
if used right, it is a very powerfool tool with a different (pretty dynamic) aproach to software architecture than OO languages.

Copyright (c) Marimer LLC