What's new

Programming

TranceCrafter

New Member
over the past couple years I probably learned enough about programming/c++/plugin design that I have a much better idea of how a vsti is put together and what is happening inside of it.

I've also realized that learning one aspect of programming teaches me almost NOTHING because the field is absolutely massive.

I might be at a better spot to learn html5/css/javascript though and then use it to create a corporate-level website for my brand.




***

can't hurt to give the javascript a go. I already know some basic html 4 and some outdated css.
 
Think of what you want to do with it, then pick a language / stack. If you're planning to make websites / web apps, then Javascript/Typescript is indeed a good choice. HTML/CSS is good to learn, then look into frameworks like React.

Since you know C++ (which is pretty much the most difficult language imo), picking up any other programming language shouldn't be too hard. It usually takes a bit of time getting to know the whole ecosystem though.

PS. Don't worry ;) It's pretty much impossible to know it all. Just doing something teaches you a lot already. Keep up the good stuff and make sure to find a way to make it fun!
 
Hi. Ex-certified Java Architect here (like 15 years ago, so I'm very very out of touch with latest developments in the world of programming languages, but literally, they're all fundamentally the same, as Loerpert points out - learn one, you can learn them all. I even did a whole module at university where, using maths, we proved that all programming languages are functionally identical). The big question is... have you learned how to build effecient/effective/maintainable software, or have you learned some basics of how to create a few methods and procedures etc?

If you're into C++, or any other OO (object oriented) languages, then theres tons of seminal books out there on modelling and describing systems in objects, use of interfaces etc. There's great books on key patterns for software. There's books on algorithms and designing, predicting and assessing (big O notation etc) their performance. There's books on using predicate logic to define a software system, and prove its correctness before even typing a single line of code. There's books on test driven development. Books on using scaffolding to accelerate development. Books on using database-design driven coding.

Basically, when looking at full featured OO 4th gen languages like C++, Java, C# etc, there's no limit to what you can learn, they are as wide and deep as any ocean, you'll never learn it all.

But if your interests are not in that side of stuff, or in high-performing/efficient code (such as VSTs would ideally have), Python is a great place to be for creating scripts and small applications. Personally I find its weak typing and lack of enforced OO a real troublesome thing (when it comes to software architecting and maintainability), but Python is the number one most popular language right now for a reason, it's easy to learn, relatively fast for a scripted uncompiled language, and there's tons of cutting edge libraries for it, for things like machine learning.

A couple of years ago I did the google machine learning course online, its free and fun: https://developers.google.com/machine-learning/crash-course
 
Think of what you want to do with it, then pick a language / stack. If you're planning to make websites / web apps, then Javascript/Typescript is indeed a good choice. HTML/CSS is good to learn, then look into frameworks like React.

Since you know C++ (which is pretty much the most difficult language imo), picking up any other programming language shouldn't be too hard. It usually takes a bit of time getting to know the whole ecosystem though.

PS. Don't worry ;) It's pretty much impossible to know it all. Just doing something teaches you a lot already. Keep up the good stuff and make sure to find a way to make it fun!
okay! I would say I know the fundamental basics of c++ but am not very immersed into any given language yet. I would say I have a spent a fair amount of time learning about the osi model though and how software such as cubase interacts with plugins via the vsti protocol.
 
I'm not totally sure what you're asking, but navigating the (I agree) vast field of software engineering is something I'm interested in, so I've noted down a few thoughts during the morning... hopefully something here will add to the good advice you've already had, but by all means set me straight if I've misunderstood.

Writing software is a form of engineering, and like any other kind of engineering you've got a combination of - or a spectrum between - "practice" and "theory". Very roughly, you could say that practice = programming; theory = computer science; and software engineering = combination of the two, even if the proportions can vary wildly.

"Practice" is about knowing how to apply tools - e.g. programming languages - to solve problems.
  • Learning usually involves reading some sample code and adapting it to a new purpose, then solving some "toy problems" which increase in complexity, all while looking up features/style/idioms in the manual as you go. Getting feedback from others reading your code will help.
  • A lot of practical programming language courses are just doing this with a bit more structure, but a motivated person can self-teach very successfully.
  • If you're learning with a specific goal in mind, then your examples/toy problems might all be related to your goal until you finally solve it - i.e. you've implemented your VI. If you are oriented towards a goal like this, then I'd encourage you to avoid C++ and instead investigate a scripted environment or framework (like HISE or Kontakt).
  • If you keep on going with varied problems, then you'll eventually know all of the language's features and feel confident assembling them into whatever program you want - even if the results may not be as efficient, elegant, etc, as possible. This is the point, IMHO, that books and courses can become most useful: rather than showing you how to write a program, they can show you how to write the same program in several different ways, and what the pros/cons are of each.

The "theory" is about understanding how computers, software, networks, programming languages, etc, work, and why they work that way, regardless of any particular tool.
  • When I say "theory", I'm not necessarily talking about maths. E.g. @Paul@Sydney mentioned the Church-Turing thesis: I think it's good to be aware of it in some way, but many excellent developers will get by without being able to name it, let alone prove it. The mathematical proofs are more something you can do - as he did - out of interest (or to liven up parties.)
  • Most of the time it's about much more practical understanding, answering questions like "what happens in the computer when you call a function?" or "what does NULL mean in SQL?" (no-one ever gets that right ;))
  • As an up-front investment of time/effort, this is an education in computer science, which might be overkill for someone who just wants to build things. Happily, theory and practice tend to cross-pollinate: even if you focus entirely on practice, some of the underlying principles will become clear/natural once you've learned a couple of languages. Conversely, someone who knows the principles well can become productive in a new language in half an hour.
  • You'll get a lot out of reading around the subject - just as you've clearly gone investigating software models/protocols - and you can motivate good coverage by choosing varied projects. Going full circle back to practice: so many people start writing code too quickly when presented with a problem; taking some time to understand it first is almost guaranteed to give you a better result.
 
Checkout Mojo. Python is good if you can avoid writing anything in naive Python. I.e. use numpy for all array work etc. But Mojo is promising C level performance with Python syntax.
 
I might be at a better spot to learn html5/css/javascript though and then use it to create a corporate-level website for my brand.
For a marketing website you probably don't need much other than HTML and CSS. The magic is in the design and copy writing IMO.

And with tools like Framer, WebFlow, etc you might not even need to write any code these days if you don't want to.
 
Since you know C++ (which is pretty much the most difficult language imo)
It's not easy (programming never is) but I think it mostly has a bad reputation. I worked with C++ for a couple of years developing interactive stuff with Cinder and Open Frameworks. Coming from mostly a web dev background I was terrified but I needed the performance for moving tons of pixels and... it was fine?

Definitely more tedious than something like Python or JS. And you need to be very mindful of low level stuff like memory mangement, threads, etc. But personally I had a good time with it and learned a lot about lower level stuff.
 
It's not easy (programming never is) but I think it mostly has a bad reputation. I worked with C++ for a couple of years developing interactive stuff with Cinder and Open Frameworks. Coming from mostly a web dev background I was terrified but I needed the performance for moving tons of pixels and... it was fine?

Definitely more tedious than something like Python or JS. And you need to be very mindful of low level stuff like memory mangement, threads, etc. But personally I had a good time with it and learned a lot about lower level stuff.
Yup, I agree. Indeed I meant having to think about memory management / garbage collection etc. So I would say it's one of the harder languages, but not a bad one. Still curious to compare it to Rust though.
 
I recommend "The C Programming Language" by Brian Kernighan and Dennis Ritchie against severe cases of insomnia. It has been very effective for me in the past.
Be aware though that K & R doesn't cover C++, at least not the last time I looked. VSTs are usually coded in C++. It needs a completely different mindset and techniques from traditional/ANSI C.
 
Be aware though that K & R doesn't cover C++, at least not the last time I looked. VSTs are usually coded in C++. It needs a completely different mindset and techniques from traditional/ANSI C.
It isn't exactly introductory material - and they're probably not bang up-to-date these days either - but I always found a couple of GoTW (Guru of the Week, by Herb Sutter) exercises were a good way to get back into the C++ mindset after a break.

Still curious to compare it to Rust though.
The idea Rust is nice, but I'm not sure it was designed carefully enough (and IMO one should always be wary of tech with a fan-base rather than a user-base.) Herb Sutter had some really nice ideas for a future of C++ - or "saving it from itself" as I would say it - but I worry he may have done this talk a couple of years too late. Hope not, though.
 
Top Bottom