Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

The last five years I have been working with VBA and ArcObjects for developing a specific application within ArcGIS. That project that began around 2008-2009 carried out with VBA and ArcObjects which is not supported by ESRI anymore. So, I need to migrate in a new programming language and I am not sure which is the best for my case: Python, VB.NET, C# or Java? My aim is to develop specific planning applications within ArcGIS platform. What is the most easiest to learn taking into account that I have experience with VBA and ArcObjects? Which is the most powerful for developing complex GIS applications? Which has the best support? May I have your opinions please?

Thanks DD

share|improve this question
4  
Learn all of them :) –  Nathan W Jun 13 '13 at 11:42
2  
VB.Net is probably the quickest path from VBA. C# is probably better supported in the .Net world, simply because it's more popular, therefore more people are experienced with it. All four have the "power" you need. I, personally, would go with C# or Java. –  Russell at ISC Jun 13 '13 at 13:15
3  
Beginning ArcGIS for Desktop Development using .NET This book uses C# and ArcObjects, lots of example code and how-to... A great replacement for the old Learning ArcObjects (VBA) book –  Jason Miller Jun 13 '13 at 15:54
    
duplicate? How to get started on a GIS Programming Career? –  RyanDalton Jun 14 '13 at 18:14
add comment

4 Answers 4

With your background I would suggest that a .NET language using ArcObjects would be most familiar and VB.NET most familiar of all. Also, if you are looking at wider career opportunities beyond this project, then my gut feel is still with the .NET environment with a leaning towards C#, just based on the requirements I see employers asking for most often.

However, if you want a language that gives you great flexibility in the FOSS4G world then Python becomes a very strong contender. Python seems to be becoming the scripting language of choice in so many packages both OpenSource and otherwise. Python will 'feel' very different to C# or VB but if you see yourself as a scripter rather than a programmer, then Python has another advantage of allowing you to get results in considerably less code. I personally quickly gave up on ArcObjects with C# in favour of Python because I needed to write about tenth of the code using ArcPy and processing speed is rarely a major issue because mostly, for geoprocessing, your Python code is calling compiled C binaries under the hood (i.e. the interpreted vs compiled issue is not very relevant most of the time for geoprocessing with Python). It's largely personal preference, but I do find ArcPy and the Python GDAL libraries much more straightforward than doing the same thing with ArcObjects, perhaps because they remind me more of AML :)

I haven't commented on Java because I don't use it.

Any of the four you mention will give you what you need, and I think it is better to know one language really well than to dabble in all four. When ESRI started supporting Python, I dropped using a potpourri of VBA, JavaScript, Avenue and AML (who remembers Avenue?!) and opted for one language (barring a brief foray into C# but by then I was hooked on the simplicity of ArcPy or ArcGisScripting as it was then).

EDIT
I see a C# book has been recommended already. As a fan of Python, may I recommend Erik Westra's book Python Geospatial Development. I notice that a second edition has been released.

share|improve this answer
2  
+1--well reasoned, thoughtful advice. (Believe it or not, just last week there was an Avenue question posted on the ESRI forums. ArcView 3 still lives!) –  whuber Jun 13 '13 at 15:22
1  
"scripter rather than a programmer" are us Python programmers not programmers ;) –  Nathan W Jun 13 '13 at 23:02
3  
I didn't mean to offend Pythonistas :)! I only meant to say that Python is great for scripting. I differentiate between scripters and programmers not by language per se but by intent and frequency. To me, a scripter usually writes comparatively short scripts on an ad hoc basis to extend existing software or perform a small task whereas a programmer (using any language including Python) will habitually write much larger stand-alone programs and this programming effort represents a primary focus of their daily working lives. When is a script a program, well... how long is a piece of string? –  MappaGnosis Jun 14 '13 at 6:38
    
@MappaGnosis Thanks for the detailed answer. –  Sunil Jun 14 '13 at 7:34
    
+1 If someone does much UI development, I would also add that they should consider learning XAML (WPF) to augment their VB.NET or C#. –  Kirk Kuykendall Jun 14 '13 at 15:25
add comment

I'm with Nathan W -- if you consider yourself an aspiring programmer then you will want to expose yourself to all four, and probably more. Check out JavaScript, Ruby, PHP, and Perl as well. These are all very popular languages and you would be doing yourself a disservice to not at least have some familiarity with them.

Regarding ArcGIS development:

  • For ArcObjects development specifically, I would stick to C#. You can certainly use VB.NET, Java, C++, or even Python, but I think you'll find the most support and be most successful with C#.
  • I would suggest Python for geoprocessing, scripting and customizing ArcGIS Desktop 10.1 using Python add-ins. You can also write add-ins with .NET and Java at 10.0.

I personally wouldn't focus too much on VB.NET, as it has little uptake compared to other popular languages. That VBA and VB.NET are syntactically similar should not necessarily be interpreted to be an advantage -- to the contrary, it is likely going to make it harder to learn, and to grow, if you continually fall back on your VBA experience to develop with .NET.

share|improve this answer
add comment

Sort Answers first, more detailed on my opinion.

What is the most easiest to learn taking into account that I have experience with VBA and ArcObjects?

As it has been said, with your background (i.e, taking into account that I have experience with VBA and ArcObjects), the easiest to migrate would be VB.NET.

Which is the most powerful for developing complex GIS applications?

All of them are powerful languages, , and are well known, well spread and you can develop complex applications with them.

Which has the best support

All are well spread languages and you should have good suport for all of them.

My opinion

If you check here the popular tag list you can see that from the most popular tag for a language is , so I'd say it's a good option also.

On the Other hand and are more popular as general purpose languages, so maybe it's easier to find libraries or support on questions about the language itself.

Anyway is also a very popular language with lots of libraries and a big community, so you shouldn't have problem to find some support.

Also python is a scripting language, more similar to VBA in this aspect, on the other hand and are compiled languages.

Saying all this in your case I might go for because I think it's easy to learn, and well adopted among the GIS community.

share|improve this answer
add comment

While this may not help you answer the question of "What is the easiest to learn taking into account that I have experience with VBA and ArcObjects?", you may find an analysis of GIS.StackExchange tags to be a useful guide to what might be the most valuable for you to learn.

@BillDollins posted this blog about 6 months ago called "Carving Up GIS StackExchange". If you look into the data he provided for download (bottom of the blog), you will see the number of times tags are used on this site. I've re-run the code today, and using this as a surrogate for the "most popular (not to be confused with most useful) programming language in GIS", you will see that Python leads the way for GIS users:

If you look at StackOverflow, it is not that different, except that Python falls down on the list a couple of notches:

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.