Language Advice Wanted

I’m just now getting into programming on a more serious level and thought the Blizzard API would be a great way to make something useful while I learn.

I know a little bit about all programming languages and my question is what language would you guys recommend to work with an API like Blizzard’s?

I’d like to develop web applications on a larger level and with features like The Undermine Journal, Tradeskill Master, Warcraft Logs, and Raider(dot)IO have and I’d also like to learn what technologies/languages power them.

I want to choose a language that will give me flexibility in the long run for all kinds of various web applications and scripts. Everything I have researched so far points to Python/Django for the long haul.

The language I choose, I want to stick with and learn very intricately ‘under the hood’ so to speak. Advice?

Thanks.

Let me start by telling you that nobody can tell you what language you should use. What I can do however, is share with you some of the experience I earned over the years.

The only thing I strongly advise you is to keep an open mind for any language, at least until you know their pros and cons. Also, for the kind of apps you mentioned, most likely they have more than one language involved.

When creating a project you have to take several items into consideration:

  1. Scalability: Many projects will start small like a gnome and grow big like a Tauren, so you want to know beforehand how you can deal with the increasing amount of users.
  2. Maintainability: As Terenas Menethil II would say: “No code rules forever, my son”. It comes a time when refactor will be needed, or even complete rewrites, so you want to take advantages of higher level languages like, Ruby, Java, or any other OOP based languages.
  3. Performance: For certain operations time is of the essence, so you want a compiled language like Go or C++ as they are always better and requires less hardware resources than interpreted languages.
  4. Restrictions: For some of the features you listed you don’t have an option, if you need an addon for WoW you must use Lua.
  5. Fun: Sometimes you’ll find some features where two or more languages will be a good match, in this case just go with the one you like the most. Who cares you’ll lose 15% performance as long as that does not defeat the purpose of the code ?

Sorry for the long text, but really there is no right answer for this question. I used a lot of different programming languages over the years, and each and every on of them will have their weak and strong points.

Many of the points Schiller makes above are great points, however, it depends on what your ultimate goal is.

If you just looking to build something (and you already have an idea), then use the language you are most familiar with and get hacking. I have worked with various REST, RPC, websocket, GraphQL, and other API patterns and technologies, and with varying levels of effort you are going to be able to interface with almost any HTTP based API regardless of which programming language you choose.

If you are looking to learn a new language, then pick whatever language you are most interested in. As Schiller has noted, the fun you get out of the project will likely determine if you continue working or go do something less productive, so making sure you enjoy what your working on and how you are working on it is going to be important.

Personally, I do not prescribe too heavily to statically typed/interpreted languages being better or worse one way or the other, but I can provide you with some starting points if you want to try some different languages:

Java:

  • Spring Boot (pretty much the industry standard for HTTP apps in Java)

JavaScript:

  • AdonisJS (lots of nuts and bolts included)
  • ExpressJS (less nuts and bolts included)

PHP:

  • Laravel (lots of nuts and bolts included, lots of open source packages)

Python:

  • Flask (if making a small HTTP/REST API)
  • DJango (if making some meatier than just a small API)

Just my 2 cents.

1 Like

In addition to all that, if you want to spend more time on your project than interfacing with the API, you can always use one of the community create libraries. So you can actually pick your language base on the libraries available.

I mostly use Ruby on Rails for my projects, that is the reason I maintain a Ruby gem for consuming the endpoints. I also use Go for powering the data synchronizer of https://wow-query.dev/, for database my favorite is Postgres.