• Some users have recently had their accounts hijacked. It seems that the now defunct EVGA forums might have compromised your password there and seems many are using the same PW here. We would suggest you UPDATE YOUR PASSWORD and TURN ON 2FA for your account here to further secure it. None of the compromised accounts had 2FA turned on.
    Once you have enabled 2FA, your account will be updated soon to show a badge, letting other members know that you use 2FA to protect your account. This should be beneficial for everyone that uses FSFT.

Programming Language Advice

cditty

Limp Gawd
Joined
Apr 12, 2001
Messages
504
Hi guys.

I am looking to learn a programming language with the ultimate goal of creating some audio oriented apps. I know that it will be beneficial to learn more than one, but where should I start.

The two I am leaning towards from research are java and .net. I would like to be able to do some contract jobs as well, so can some of you *experienced* programmers give me some advice as to where I should start?
 
Could you give us a better sense of the kind of apps you'll be trying to write and what kind of "jobs" you'll be doing later? Java is a pretty nice language to learn. It's what I used when I first started. It's nice because it isn't windows specific. On the other hand, .Net and C# work solely in windows programming. If you're writing something for Linux, Mac, droid, etc then I would go with Java.

Anyway, if you're just starting to learn it's going to be quite a while before you'll be able to write any kind of apps, so don't get discouraged.
 
C++ is always a safe bet. It's still the most commonly used language and languages like C# are heavily based on it.
 
Cheezor gives some good advice, a language like Java is multiplatform, it's nice to get apps like that out to as many people as possible, a lot of the users of these applications might be on macs for example.

Languages like C# are very good, i've been learning C# for the backend code for my ASP.NET sites and it's quite easy to pick up, I can't speak for Java I'm afraid.
 
If you are learning both Java and C# then you've got most of your bases covered. They are the more often thought at the "enterprise" languages as they are used in enterprise solutions for big projects/companies.

I do a lot of web development, so C# (Dot.NET/ASP.NET) is what I use more often, along with PHP, as I find it's either ASP.NET or PHP environments when I deal with clients with pre-existing websites. I've only had to use Java for some mobile development work, ie Android.

C# can be used on Linux via the Mono Project, so it is an option if you decide to only go with one language.

I'd suggest learning at least one, Java or C#, or both would be great. You'll learn OOP and design patterns. I'd also suggest picking up Python later on. I've found Python really useful as it'll work on Windows, Mac and Linux. Also Microsoft adopted Python as a Dot.NET language called IronPython, so you can code in Python as well as C#. Also with your Python knowledge you can try Google App Engine (although Java works with it now too) and Django. There are lots of handy libraries for Python and I can see why Google likes Python so much.
 
if you don't know any languages yet, I'd personally say start with java (note that I only have experience with java, C/C++, php, bash). Reason I say that is because it forces you to use a class for everything and when doing OOP, that's a good habit to get into.

Also remember, dont just learn a programming language, learn how to program. the rest is just syntax.
 
Java doesn't follow the usual OOP model. It'll screw you over if you ever decide to use C#, C++ or so.
 
Java doesn't follow the usual OOP model. It'll screw you over if you ever decide to use C#, C++ or so.

C# is very similar like Java in it's OOP aspects, and knowing Java doesn't "screw you over" if you decide to use C#. On the contrary, I found it extremely easy to pick up one if you know the other.

What exactly is this "usual OOP model" you speak of, anyway? :confused:
 
not trying to discourage or say you are not capable of doing it, but depending on what goal application you had in mind, it could require you to basically become an experienced programmer/computer scientist and then some to get the ability to pull it off
and then even after you get the know how it could require just too many man hours to hammer it out alone

you seem to have the right idea but I think its worth still mentioning its very important to take it slow, as far as making sure you master the basics before moving up the harder stuff or you risk jumping too deep in, getting overwhelmed and frustrated to the point of giving up.
I also think taking classes or even majoring in CS is something to consider. I'm sure there will be many things that will be learned much easily when explained in lecture than reading in a book on a webpage by yourself. It also gives you experience from tests, labs, and projects that are too easy to not do enough of when you're trying to learn on your own.
 
I think for personal projects, it's great to use something like C# (or second choice, Java), since they are much nicer languages to use than C++, and not for reasons that have anything to do with memory allocation / freeing. They are simply cleaner, more expressive in a less complicated way. Of course, learn C++ too, but once you've done C++ for a few years like I have, you'll realize how much of a mad clusterfuck it really is, with a whole load of things that make no intuitive sense at all (but you might be able to find the reason if you read it in a book).

Also, functional languages are getting a lot of attention these days, so if you want to broaden your knowledge and experience, dig into those.
 
It really depends on the type of stuff you want to do - there are languages/environments that are dedicated to doing audio stuff : Max/MSP, CSound, Supercollider...

I saw something the other day over at Reddit about this that might have more info.
 
Hi guys.

I am looking to learn a programming language with the ultimate goal of creating some audio oriented apps. I know that it will be beneficial to learn more than one, but where should I start.

The two I am leaning towards from research are java and .net. I would like to be able to do some contract jobs as well, so can some of you *experienced* programmers give me some advice as to where I should start?

wow thats pretty broad, between those to I would decide if you need platform independence or not. If you do, then Java is the only choice, if not .Net might better suite your needs if your working with MS. I'm not sure that either of the two are the right choice for what you are trying to accomplish.
 
He's only just starting to learn how to code, so platform independence is obviously not a serious requirement. The answer for this one is to choose an appropriate language with good tools on the target platform; if it's Windows, C++ or C#.

I think this case is one where the student is biting off too much. Regardless of what language they choose on which platform, they'll have to learn something about UI design, come to understand file formats and file I/O, therefore they need to understand memory and addressing. They'll also need to know about UI implementation, plus all the domain-specific multimedia APIs and device enumeration. It's just too much for a beginner to snap off without becoming overwhelmed and frustrated.
 
personally java is my weapon of choice, i started out mostly doing web-development, and started at a java shop, so i ended up using java for the last three years.

Lately my girlfriend has been running into small issues on her work pc (needing to splice together PDF, modifying large batches of images) and her boss wont spring for an adobe license, so i simply wrote a simple java gui app which does what she wants. Writing gui apps is slightly different when you're used to enterprise/web stuff, but i work quite well

C# should work well too though, if you prefer that. I personally like the platform independentness of java (work on linux a lot), not to mention completely free (unlimited) tools
 
For audio work you will be doing signal processing in real time. Digital signal processing (DSP) is what it is called. You really do not want or need a new generation programming language like C# or Java. In fact, regarding the previous two, if you learn one you almost learn the other.

There is little or no need for the overhead of objects, abstraction and the like. You really need a low level language like C or perhaps even a little assembler. C++ might do the trick but I think you will find that in the long run it is really all about the low level procedural stuff. Algorithms and hard optimization will end up taking precedence over the ability to abstract interfaces and such architecture level features.

People here are giving career advice which is valid in a certain context however if you are serious about audio programming look to the old low level fundamentals. Good luck, have fun.
 
For audio work you will be doing signal processing in real time.
Real-time processing is not a requisite requirement of "audio work". The rest of your post is similarly off-base; even when doing DSP, a "really low level language" is not requisite to success.

Understanding the fundamentals, however, is.
 
It's fun watching threads run under their own power after a week even though the original poster has provided no further input or clarification of his needs...
 
Yeah. Sometimes, I think they do it on purpose.

Somehow, to me, it's most disappointing for the "how do I learn?" threads, like this one. No matter what advice we might give the guy, he's doomed for failure because he doesn't have the tenacity.
 
Back
Top