I chose C++ instead of Python

It has been about three years since I started working with Rhino as a newbie (compared with the masters and advanced designers).
After a while, I became eager to create a plugin for Rhino, but didn’t know where to start!
I realized that the basis of a plugin is one of the programming languages, but I didn’t know which one would be suitable for this job.

Someone said Python is good because learning it is easier than others, but I read in a comment that Rhino’s plugins are mostly created with C++.

I paid no attention to this notification and began learning Python on and off. After learning a little, I left it because I felt learning a programming language was tiresome!

After a few months, I continued learning Python again, but the process repeated, and I left it after a while.

Last month, I decided to continue learning Python seriously, and this time, I won’t leave it again.

For entertainment, I added one of my favorite games to the process of learning so that I would remove my disinterest and fatigue.

Just last week, I read somewhere that most of the web, desktop, mobile, etc., are created with C, C#, JavaScript, and C++ languages, and Python is used mostly as an auxiliary language in these fields, although it is a new and evolving language at this time, compared with the pioneer languages.

After reading the article, I hesitated again and decided to leave Python and choose one of the mentioned languages!

Among the languages, I chose C++ because I thought it is more flexible than all to create different applications for different purposes, including creating new plugins for Rhino.

Last week, I began learning the basic concepts of C++. This time, the vast abilities and facilities of C++ encouraged me to continue learning it non-stop, and now I feel that I am interested in it.

Of course, at present, reaching my destination (creating a plugin) is a dream, and I am standing at the starting point.

What do you think about the choice?

What exactly is your dream plugin going to do?

Learning how to program is far more important than the choice of language. Just learn the language you feel most comfortable with and try to build stuff.

Hello, senior jeff

That is what I will plan when I grow up enough. Aside from programming, I am a talented innovator. That is other than knowledge, though systematic invention cannot be far from knowledge.

I often have many good ideas in various fields. This can help me in programming as well.

Of course, my motivation for learning C++ is not only to create a plugin, but it can be one of my purposes. If I can become a knowledgeable developer in C++, then I will have an open hand to make some applications in various fields, one of which can be one or a few simple plugins. At present, I have no idea.

Hello, senior Gijs

Your advice is right, but I think a choice should be the best one. I think C++ can be a good choice because it dominates so many applications solely and has a notable record in programming.

As I heard, Python mostly is used for smaller programs, whereas C++ is a perfect language for significant and complicated programs. I want to start with a language to be a Jack of all trades, without limitation.

If I’m going to start learning a PL and spend my time on it, I think it should be the best and most flexible one.

I don’t know what you do to earn your money, but unless you are working as a full-time developer, C++ is the worst choice you can pick. C++ is one of the most demanding languages you can learn programming in and requires tedious extra work with basically anything. It has a complicated build process with long build times, a complicated and bloated syntax and it requires you to have a solid understanding about how programming works. In return you get a highly performing and scalable language. But if that’s something you need is questionable, because you trade-in comfort and development speed.

Hello, Tom

Since I started learning C++, I realized it is not more difficult than Python. It is not even sensitive to indentation and white space like Python. I often made mistakes in observing indentation in Python and got errors.

Of course, C++ has its own difficulties and challenges, but not much more than Python.

Up to this point, I have not had a notable problem with C++ unless I have to memorize its components, repeatedly study its instructions over and over, and exercise.

However, I think I have a long way to reach an acceptable level in this PL.

I hope C++ doesn’t reject me with its unpredictable difficulties after this preliminary stage of learning.

Sorry, but if this the criteria for “difficulty”, then I doubt you have learned the anything else as the absolute basics. If this would be true, then any higher-level language would be pointless. There are many good reasons for languages like C#, Java or Python. There is a reason why Rust or Zig came into existence. Or why Linux Kernel remains in C. Btw, I personally believe C is the better C++ on system/low level. But in the end its a matter of personal preference.

The syntax is bloated. There are not many languages with this amount of keywords, language features and so on. It is true that modern C++ and an IDE like Visual Studio made things much easier, but yet alone the fact that you manage memory with dozens of different pointer abstractions is something a beginner will likely overwhelm. At least I doubt that a beginner will truly understand what is right. I mean even if it’s obvious that I’m not a big fan of C++, I’m not saying it is a bad language. It’s just way more complex than most other languages.

I started programming when I was 9 years old on my Commodore 64 using BASIC. From there I naturally progressed into Visual Basic, VBA in Office applications, VBScript in classic ASP, and eventually VB.NET.

As my career evolved, I noticed more and more developers in my field were using C#, and most examples and frameworks were centered around it. So I transitioned fully to C# for backend web development — and I’ve never looked back.

Today, I spend all day, every day writing desktop banking applications and Rhino plugins for jewelry design — all in C#. Knowing C# also makes it easy to feel comfortable in TypeScript if you go the web route, since the mental model is very similar.

I’m a big fan of languages that help you get the job done efficiently. For many applications, I believe C# strikes the best balance between performance and developer productivity. Yes, C++ can be faster — but that speed often comes at the cost of development time, complexity, and maintainability.

As others have said, your use case ultimately determines the right choice.

For us at JewelBeetle, C# is absolutely the right tool for building a jewelry design plugin.

Hello, senior Jason

Does C# can do the same that C++ does?

Creating applications for: games, desktop, android, plugins, web and so on?

I mean,is it a multi-task language like C++?

Is it easier and more convenient to learn, with less keywords, built-in functions, libraries, and amount of code etc.

Can it compete with C++ in every aspect practically?

I am in the starting point of choosing a capable PL that can do everything in the various fields.

Is C# the same as what I am looking for?

Yes, C# is generally considered much easier and more convenient to learn than C++.

While I’ve never had a limitation placed on my because of our use of C#, that doesn’t mean there are not requirements that would suggest you use C++. Each language has a purpose and place for it’s use.

You really need to define what it is you want to accomplish, before we can give you a definitive answer (which will still be based on subjective experience in most cases).

I want to choose a PL that is more capable than other machine languages and to be able to create applications solely (independent of other PLs) for desktop, mobile, controlling systems, and also create plugins, and program ICs (microprocessors, micro-controllers - in the robotic field) and such operations.

Of course, I’m not interested in web applications, and if the language is not suitable for such a task, it doesn’t matter.

I don’t know a single programmer that only learned one programming language. The best thing you can do is just pick one and start typing.

It’s unlikely you’ll find a single programming language to do all of that, more probably you’ll import libraries written in other languages.
For example it’s not uncommon to use c/c++ libraries from c#, or to call some extra scripts from it, like some python code that once again use its own external libraries.


I learned c# exclusively by coding script components in grasshopper in Rhino 7.
I tried with VS but coding and debugging is way slower, on grasshopper you put up some c# code and you see it run live some millisecond after you finished your edit, and you can easily add inputs and outputs on the fly… the perfect platform to learn c# and Rhinocommon.
(sadly current state of 8/WIP script editor is … different).

I never had the need for creating an actual plugin, as all my clients execute my code internally and doesn’t need to “broadcast” a plugin, usually just 1-2 machines run my code.

Anyway, to develop a plugin in Rhino c# should be the right choice, you won’t miss many c++ exclusive features.

c# is a serious and mature programming language, I prefer it over python because to me is more readable, it forces you to be more clean in your code.
If you learn c# you’ll then have to put few effort to learn other similar programming languages like java.

Regarding what I expressed in my previous post, which one should I choose?

I selected C++ but some seniors, including you, believe it is difficult to learn, whereas I experienced it as a language similar to Python, even easier in some ways (C++ doesn’t consider indentations).

Nevertheless, the viewpoints makes me hesitate; should I follow the advice (change my choice) or consider my experience studying the topics of C++?

Up to this stage, learning C++ was not so difficult for me. In this step, I just studied all the topics of C++ on ‘W3Schools reference’ without memorizing the instructions. I found out that C++ is similar to Python and is not so difficult to learn.

However, I don’t claim learning C++ is easy; on the contrary, I predict it is difficult, but I only say that, like Python, most of its rules and codes are understandable.

Hello, sir

Based on your recommendation and Mr. Stevenson’s, it is better that I put away C++ and try to learn C#, because, in a way, it is more matched with Rhino than C++.

That is what I will do

Thank you all for your good advice and guidance :slight_smile:

  1. Learn C++. In the long term (5–10 years), it will pay off.
  2. At the same time, learn Python. It will help you develop and prototype quickly.
  3. Use Linux, the reason many CAD software is developed for MAC and Windows is purely commercial, but not the way many developers work. Try to understand the reason why this thread even exists for 12 years without a solution: Rhino on Linux? - #898 by Winer
  4. Learn how to use Git and Github, version control is key. From there you will learn other concepts like circular integration, documentation, code reviews, contribution to other projects.

I use C# from 2014 because Rhino was developed that way. But you will eventually hit a wall when you need specific code from state-of-the-art research. The way Rhino chose to bind their code from C++ decades ago is not how you would want to code today. .NET was a cool hot thing back then. In those days, IronPython was really problematic, because Rhino C++ is wrapped to .NET to use it in C# and VB, but then Python users suffered greatly. Now things changed, CPython is used in Rhino8.

Never learn a language in isolation. Choose an open-source library that you can use daily, and study open-source code to learn from it. These things are not available in simple Udemy courses.

But all this thread does not matter since large-language-models will replace software developers soon :smiley:

Having used C, C++, C# and Python for 2 decades I find myself attracted more to Zig. At least for personal projects I’ll be using Zig over C and C++.

But indeed it is not about the language you learn, but about the problem solving skills acquire along the way.

Learning different programming languages is like learning different natural languages, especially from different language families. In all there is the goal to communicate and control: you want a computer to do a specific thing, you tell it what you want it to do, how to do it. Interacting with other people you are trying to convey your thoughts, you want them to do or thing something in a particular way.

With programming languages you’ll find that perhaps a certain problem and solution is easier to be described in one language than in another. But most of the times it is possible to eventually tell the same thing to the computer using different languages.

The same is true for natural languages. You say things one way in one language, another way in a different language, but in the end often quite possible to do so, even though grammar and vocabulary differ vastly (leaving conveniently out the cultural aspect, but that does not matter in the grand scope).

In the very least learn about other languages, both programming and natural. No, you don’t have to become proficient in each of them. It already helps to understand how things can be done differently from what you normally would go about approaching them.

Hi, masters

I reached a dead end again, like what I experienced searching google to find a proper PL that is according to my purposes

Please enlighten me straightforwardly, which PL I choose to fulfill my needs in the future:

A PL that can create applications for, desktop, mobile, games.

A PL that can program chips (microprocessors, micro-controllers etc) and create plugins (e.g for Rhino).

If there are different PLs that can do these, please introduce the one that is in top of the list.

I deleted all the tutorials and examples of C++ that I had collected, and decided to learn C#.

What should I do?