Need advice about which tool to choose?Ask the StackShare community!

C++

17.3K
9.3K
+ 1
849
Rust

5.8K
4.9K
+ 1
1.2K
Add tool

C++ vs Rust: What are the differences?

Introduction

In this article, we will discuss the key differences between C++ and Rust programming languages. C++ is a widely used general-purpose programming language known for its efficiency and wide range of applications, while Rust is a relatively new systems programming language that aims to provide memory safety, concurrency, and high-level abstractions. Understanding the differences between these two languages can help programmers decide which one to choose for their projects.

  1. Memory Management: One of the major differences between C++ and Rust lies in their approach to memory management. C++ allows manual memory management using features like pointers, which can lead to common memory-related bugs such as dangling pointers or memory leaks. On the other hand, Rust has a strong focus on memory safety. It enforces strict ownership and borrowing rules, ensuring that memory is managed properly at compile-time, thus eliminating many of the memory-related bugs that commonly occur in C++.

  2. Concurrency and Multithreading: C++ provides support for multithreading and concurrency through libraries like and . However, it is the responsibility of the programmer to handle thread safety and data races. Rust, on the other hand, has built-in features that enforce thread safety at compile-time. It utilizes concepts like ownership, borrowing, and lifetimes to prevent common concurrency bugs. This makes writing concurrent and parallel programs in Rust more reliable and less error-prone compared to C++.

  3. Error Handling: In C++, error handling is typically done using exceptions. While exceptions provide a way to handle errors, they can also introduce significant overhead and make code harder to reason about. Rust, on the other hand, has a different approach to error handling. It relies on the concept of Result and Option types, which provide a more explicit and controlled way to handle errors. This allows programmers to write more robust and predictable code, as error handling is an integral part of the language.

  4. Syntax and Expressiveness: C++ has a complex and often criticized syntax, with numerous language features and constructs. This complexity can sometimes make code harder to read and understand. Rust, on the other hand, has a more modern and expressive syntax, which aims to be simpler and more readable. It incorporates concepts from functional programming and provides powerful abstractions, such as pattern matching and functional-style iterators, making code more concise and efficient.

  5. Language Safety: C++ allows a wide range of unsafe operations, such as pointer arithmetic and type casting, which can lead to undefined behavior and security vulnerabilities. Rust, on the other hand, places a strong emphasis on safety and correctness. It provides strict static guarantees and enforces strict rules to prevent common programming mistakes and vulnerabilities. Rust's ownership and borrowing system, combined with advanced static analysis, make it possible to write safer code with less risk of memory-related issues and security vulnerabilities.

  6. Tooling and Community: C++ has a mature ecosystem with a wide range of libraries, frameworks, and tools that have been developed over decades. It also has a large community of programmers with extensive knowledge and resources available. Rust, being a relatively new language, may not have as mature a ecosystem as C++, but it is rapidly growing. The Rust community is known for its helpfulness and commitment to improving the language. Rust also benefits from modern tooling, such as the Cargo package manager and Rustfmt code formatter, which make development more convenient and efficient.

In summary, Rust and C++ differ in their approach to memory management, concurrency, error handling, syntax, language safety, and tooling. Rust's focus on memory safety, thread safety, explicit error handling, expressive syntax, strong language guarantees, and growing ecosystem make it an attractive choice for systems programming, while C++ remains popular for its versatility and the maturity of its ecosystem.

Advice on C++ and Rust
Needs advice
on
GolangGolangPerlPerl
and
RustRust

I intend to use a programming language which I'll use as AWS runtime and write a script that will comb through tons of files in a directory and its subdirectories and search for simple text regular expressions and process and write the matches in a file as output. I have heard that Perl is good for regex based search but I also want the performance to be good as it will have to go through tons of files for IO. In this post: https://filia-aleks.medium.com/aws-lambda-battle-2021-performance-comparison-for-all-languages-c1b441005fd1, I see that Rust works well as AWS Lambda runtime with very good performance. Which one should I choose as my AWS lambda runtime for this problem? Golang is also an option as it is fast as per the above link.

See more
Replies (1)
Recommends

I used to work in a Perl shop and must admit that the language is very simple for tasks like these, but as you mentioned it's not fast at execution time. I'm now a Go programmer professionally but I taught myself the language while in college purely out of interest and eventually found my way to the job, not the other way around. I've recently been learning a little rust because of how much that language comes up in conversations around Go. I find the concept of the borrow checker nice but I have to admit I feel lost like I am in most flavors of new fancy framework js. That's not to say Rust is really anything like js, but the learning appears the same to me as someone who's convinced they could learn just about any programming language if it was necessary (over time I've seen procedural, OOP, declarative and functional stuff but never programming logic outside of the prolog code I wrote in school).

Go isn't made for your specific task at hand but it's a very easy language to pick up and it has good directory traversal standard library code and good regex (even though with time perl's has been optimized to be faster and I think it's written in C++) but more than anything Go is "cloud native" programming in that an awful lot of new microservice tech stacks are centered around it, docker and kubernetes are written in it, and there's a thriving community whose focus is generally web-first and performance-oriented. This means for your use case there might already be a large cohort of gophers that have asked the stackoverflow questions for you

I personally would push you towards the NYT Profiler for Perl before I would towards Rest, but that's because I know you wouldn't waste any time being able to get to the task at hand and then make it go faster, and I expect all but a few rustaceans would be able to do so with the same speed.

Whatever you pick I wish you the very best of luck!

See more
Needs advice
on
AngularJSAngularJSC++C++
and
JavaJava

I will use Elixir for personal projects. It's productive, reliable, secure, simple, etc. But when performance is critical, I need job opportunities, when I work with mutability, which do I pick? I need advice on which "bureaucratic, mainstream" programming language to pick when wanting performance and jobs. Elixir is often "slow", and it hasn't boomed yet the way Golang and Rust have, so which?

See more
Replies (1)
FREDRICK OLUOCH
Lead Software Developer at Blaqueyard · | 4 upvotes · 65.9K views
Recommends
on
ElixirElixirRustRust
at

Well for those performant tasks maybe you can use Rust nifs for elixir. Elixir enables to write fault-tolerant, scalable code for concurrent systems, and as such, it is perfect for messaging systems and web applications that might need to handle a lot of users efficiently. But if you need speed you can plug in Rust or write a microservice using Goland/Rust.

See more
Needs advice
on
ElixirElixir
and
RustRust

I've been working with Js/Ts as a backend developer and I would like to get some suggestions about what new language to learn right now. I've been thinking about Elixir or Rust, focusing on creating WebApis and Blockchain technology. I am passionate about the funcional way but I'm now confident about Elixir in Blockchain. Rust seems like have more jobs about it than Elixir in a little research. Someone could give me some advice? Thank you.

See more
Replies (2)
Cristian Carreno
Lead Backend Software Engineer at Suda Outdoors · | 8 upvotes · 58.6K views
Recommends
on
ElixirElixirGolangGolang

For web development I would suggest to take a look into Elixir. Elixir is extemely good for real time apps through websockets, apps with a need of high concurrency and / or apps where you need to process hundreds of thousands of states of differents users in parallel thanks to the actor model that comes with Erlang virtual machine. To solve these kind of problems in another stack could be really hard and painful (including your current stack).

It's true that Elixir is a niche stack ( It deserves way more popularity in my opinion), so, if your concern is to learn something that would keep you inside the trend and market, instead of Rust or Elixir I would suggest Go. Go it's another outstanding language, will a lot of virtues, small and easy to learn, with it for example, you could compile the same application to different operating systems just with a special compiler command (And the compiler is blazing fast). You can also start with a lot of good libraries that helps you to keep your code clean and under control and of course, it's performance is very good too.

Hope my suggestions could be helpful.

Best regards, and happy coding!

See more
Tyrone Wilson
Lead Developer at Black Swan Data · | 7 upvotes · 57.8K views
Recommends
on
GolangGolang

Golang is to my mind by far the greatest bang for your buck in terms of investing your time it has a low barrier to entry. Elixir is fun and all, but it is VERY VERY niche. You are very unlikely to find a job directly requiring Elixir. Rust is a good option depending on what you want to achieve but golang is a great general-purpose language that has a very approachable learning curve, great documentation and a lot of jobs available. There are some very high profile projects written in golang. Docker, Kubernetes, InfluxDB and Grafana just to name a few. I was at this same junction at the end of 2018 having spent a lot of time in JS/TS & Ruby. I had already learned Elixir and done a couple of projects in it and I switched to Golang as I didn't want to learn niche languages. I have never regretted my choice. Obviously, every tool has its place but golang is a winner if you want to learn something new :)

See more
Needs advice
on
C langC lang
and
RustRust

When working on Python, I noticed that Python is only useful for data science. I am looking for a programming language that:

  • Is different in terms of paradigm(I used OO only in Python for data analysis, I want something that is a different paradigm to improve my coding skills)

  • Is excellent at systems engineering

  • Will enhance my Python projects and basically make Python better

  • Has an excellent future, will skyrocket in terms of demand

  • Is very performant, excellent performance

  • Has a steep learning curve(it's because I want a simple language and an advanced language in my stack)

I found these two languages to fit my needs, and I need help choosing. Which would be better for me considering my needs

See more
Replies (2)
Jayson Pamittan
Software Engineer - Level III at Arch Global Services · | 2 upvotes · 63K views
Recommends
on
RustRust

Rust is more useful compared to C on some cases like in web assembly. C is more tedious to code. Rust is modern and has a lot more of opportunities. If you are also investing for the future I recommend Rust over C.

See more
Recommends
on
RustRust

It must be Rust, It absorbs the advantages of other languages,safe, good performance and develop quickly, The community is also growing and active. I think there are some difficulties to learn Rust, but when you have mastered it, you will write good programs than C lang

See more
Adit Patel
Needs advice
on
RustRust
and
SwiftSwift

Hey there, we are looking to develop our own layer 1 blockchain. We're splitting the responsibilities for origination, clearing, and settlement across three independent but cooperating node networks. We've gotten our Proof of Concept up using Ruby on Rails for the nodes, you can see it as the attached link. So far, so good. Now we are looking to convert it into a distributable and are trying to figure out which language is the best for this.

Essentially our needs from the language are: solid networking tools and speed, very fast execution of basic actions, some parallel execution, and able to compile the end product into an easy to distribute and use package for end users.

I was learning Rust, but I have a healthy amount of experience with Swift and right now, it's only me coding. I've only done iOS coding, but have built a fintech app from scratch that's now in the app store so I'm pretty familiar with the language and its benefits. Haven't experimented with Vapor or any of the application development tools, and I wanted to know if it is a crazy idea to develop a blockchain node in Swift instead.

See more
Replies (2)
Recommends
on
RustRust

Pick Rust. Rust can provide all what you need and has been a major language in blockchain/cryptocurrency industry. Swift is slower than Rust and does not have such support in the networking and domain field. Swift tooling is great only on macOS, therefore you are likely to have troubles on other platforms.

See more
Peter Suwara
Director at Realityworks · | 6 upvotes · 121.9K views
Recommends
on
C++C++GolangGolangSwiftSwift

You can use swift of course. It’s more of a question of being performant.

You really want to try some basic operations and find what’s most performant for you.

Rust is wonderful for cloud applications requiring heavy concurrency, it has compile time checking for such things.

Go and C++ could be more performant in your case. Swift is really quite an obtuse language, with a lot of features, some which may complicate your implementation.

Also, you want to consider the market of developers who could help build it. If you use Go or C++ there is a larger collection of people who know the languages than there is with swift.

See more
Youcef Benamare
Needs advice
on
C langC langC++C++
and
C#C#

include include int main(){ char name[10], pasword[10]; printf("enter you user name :"); gets(name); printf("enter your pasword : "); gets(pasword); printf("your name : %s \n your password : %s \n", name, pasword); if ( name != "youcef") { printf("name undefined\n"); } else { printf("finde name"); }

}

his not working

See more
Replies (2)
Richard Rios
Senior Software Engineer · | 5 upvotes · 154.6K views
Recommends
on
C langC lang

You will want to do a few things here. First, replace gets with fgets. Then, you're going to want to use strcmp from string.h to compare the input with the desired result. The code listed below has been updated with a working example with the previously mentioned recommendations. This isn't perfect and there are other ways to accomplish the same task. Explore other options that are available when you have a chance and see if you can improve on this example.

#include <stdio.h>
#include <string.h>

int main()
{ 
    char name[10], 
    pasword[10]; 

    printf("enter you user name :"); 

    // Use fgets as gets is insecure and can easily lead to buffer overflow exploits
    fgets(name, sizeof(char) * sizeof(name), stdin);

    // Remove \n from fgets stdin read with null character so as to not have to include
    // in strcmp later.
    name[strlen(name) - 1] = '\0';

    printf("enter your pasword : "); 
    fgets(pasword, sizeof(char) * sizeof(pasword), stdin);

    printf("your name : %s \n your password : %s \n", name, pasword);

    // If strcmp result > 0 || < 0 it's not a match
    if (strcmp(name, "youcef") != 0) 
    { 
        printf("name undefined\n"); 
    } 
    else 
    { 
        printf("finde name"); 
    }
}
See more
Recommends
on
C langC lang

Dear, Yusuf You can't use if statement to compare two strings, but you can use strcmp() function which means string compare The behavior of strcmp function is: If (string1 < string2)? Then: return a negative value. If (string1 > string2)? Then: return a positive value.

If(string1 == string2)? Then: return (0).

So, you can modify this statment to: if(strcmp(name,"Yousef") != 0) printf("name undefined\n");

else printf("find name");

But, In this case there is one logic problem that (strcmp) function don't ignore the letter case. For example: If you input name : yousef

The first letter here (y) is small, but in the comparing statement above is capital, So the result will be "name undefined", but in fact "yousef" = "Yousef".

To solve this problem you should use stracasecmp() function. This function ignore the letter case while comparing. The code will be: if(strcasecmp(name,"Yousef") != 0) printf("name undefined\n");

else printf("find name");

Attention: Include string libreary after using these functions to skip any problem may be found.

include

may Allah bless you ^_^

See more
Needs advice
on
C++C++JavaScriptJavaScript
and
PythonPython

Hello, I am interested in learning how to program. I am a beginner, and many articles saying I should go with Python if I am new to programming. I considered Lua a long time ago, but for my career, I believe major programming languages should be better for me. I'm considering Python at this moment, but if you have other tools I should use, let me know.

See more
Replies (3)
Pat Fitzner
Recommends
on
PythonPython

Although Lua is a very simple,efficient, elegant and welcoming language, Python is extremely versatile. Therefore, if you want to get into programming without a defined direction, Python is the way to go. It has a lot of libraries, the ability to do anything and it is closer to other languages than Lua is (yeah I know about Lua and C, but from a learner's point of view, it makes sense). Additionally, Python will be a marketable skill, but I for one have not yet seen job offers for Lua devs.

See more
Recommends
on
C langC langC++C++C#C#JavaJava

The language you choose is also dependant on the type of career / area of programming you wish to focus on: Web Based and mobile applicaitons I would lean towards Java, PC Applications I tend to like C#, Embedded industry C, C++

See more
anas mattar
Technical Lead at DPO International · | 2 upvotes · 223.2K views
Recommends

my advice , you should answer me for this question, what do you like to work: web base or mobile native or cross platform. if you like web base you should choose PHP or ASP.net or Node.js or if you like mobile native you should decide Android or IOS platform and else if you like cross platfrom you should learn Flutter with dart language. thanks

See more
Brayden W
Needs advice
on
GolangGolangPythonPython
and
RustRust

Hey, 👋

My name is Brayden. I’m currently a Frontend React Developer, striving to move into Fullstack so I can expand my knowledge.

For my main backend language, I am deciding between Python, Rust, and Go. I’ve tried each of them out for about an hour and currently, I like Python and Rust the most. However, I’m not sure if I’m missing out on something!

If anyone has advice on these technologies, I’d love to hear it!

Thanks.

See more
Replies (4)
Recommends
on
GolangGolangPythonPython

Rust is still in low demand. It's a great language but you'll have a hard time finding jobs. Go is the mix of both Rust and Python. Great language with modern features, fast, scalable, fun to write, and at the same time it has high demand (not as much as python).

Python on the other hand is a language that you can't go wrong with. Look around you and see what your job market prefers. If there isn't much difference to you personally, pick the one with more demand.

See more

All of these are solid options, however considering your expertise currently, I would probably suggest Node.JS considering your past experience with JS. However Python offers a similar development environment to JS in my opinion, and Go is a good sort of intermediate between Rust and Node.JS and Python. It's fast, but not as fast as Rust, and offers a development experience that combines C-styled languages (like Rust), and Python-y languages... So: Rust for the fastest, Node for familiarity, Python for ease of development, and Go for a good middle ground. I have used all in personal projects... If you use Go, I suggest a easy to use web server framework like Fiber.

See more
Akihito KIRISAKI
Recommends
on
PythonPythonRustRust

Rust is a challenging choice, but worth to be chosen. It has strong memory-safety and type-safety, this gives you no bother about those errors. However, static typing languages often slow our developing speed down in early stage. In that case, it's effective to write prototype in an easy language like Python, and rewrite it in a hard language. It's important not to be afraid to throw away first code you write.

See more
Donald Tran
Software Engineer at T-Mobile · | 3 upvotes · 412.9K views
Recommends
on
RustRust

The other answers are excellent, but I want to be a bit of a contrarian and say you should learn Rust. While the number of jobs for it are (relatively) low(er), it is certainly expanding and you'd be surprised at which companies do use Rust (Discord, for example, is starting to move away from Golang to Rust!).

But the main reason is that learning Rust itself will teach you a lot about systems design (/backend) because of its borrow checker. You can try out a lot of ideas and make a lot mistakes and the borrow checker will always be there guide you to a better solution (thereby teaching you in the process).

Also, I wouldn't underestimated how important managing memory (and memory safety) is. While Golang is great in some ways, it doesn't protect you from pushing memory leaks into production. And eventually you'll come upon a scenario where you'll have to make your Python code run faster and the optimizations you'd have to do won't look pretty (or be very Pythontic).

And Rust is freakin fast! If you have Rust, you wouldn't need any other language for the backend (or any other systems level code). Check this blog post: https://blog.discord.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f?gi=dd8bc5d669d. Discord found that even after spending months optimizing Golang code it still wasn't fast enough. But unoptimized, first-draft Rust code was (is) faster by an order of magnitude!

See more
Needs advice
on
JavaJavaKotlinKotlin
and
RustRust

I was thinking about adding a new technology to my current stack (Ruby and JavaScript). But, I want a compiled language, mainly for speed and scalability reasons compared to interpreted languages. I have tried each one (Rust, Java, and Kotlin). I loved them, and I don't know which one can offer me more opportunities for the future (I'm in my first year of software engineering at university).

Which language should I choose?

See more
Replies (8)
Recommends
on
JavaJavaKotlinKotlin

I will highly recommend Kotlin. I have worked with all three intensely and so far the development speed and simplicity is the best with Kotlin. Kotlin supports coroutines out of the box. Now, it isn't something that can't be implemented in other languages but Kotlin makes it super easy to work with them. Kotlin has a bit of learning curve, so, by the time you can actually use it idiomatically chances are that you will get proficient in Java too. But once you get it, you get it, then there is no other language ;) Kotlin is backed by Google and Jetbrains team so you can expect latest programming features and good community support.

See more
Reza Malek
at Meam Software Engineering Group · | 4 upvotes · 325.1K views
Recommends
on
KotlinKotlinRubyRubyRustRust

It depends on which level and use cases you prefer to work at. Close to the machine? Rust is great but if you need to find more job opportunities, then take C/C++. Java has many job positions but I suggest Kotlin over it. Think about it as a better Java, but fewer job positions. Do you want to do your own projects? So a productive language like Ruby is way better. Like to program front-end apps? Take JS. Find your passion.

See more
Recommends
on
RustRust

If you want a compiled language then go for Rust. It takes a certain mindset to get your head around its memory management system and the way it handles "borrowed" memory. However, it will generate blindingly fast code that you can cross-compile for other platforms. As a systems programming language I highly recommend it. Take time and learn it.

Java is only compiled to bytecode, not to machine code. So it executes in the Java Virtual Machine. DOn't think that its not fast, because the latest incarnation are very fast indeed. For most practical purposes, users of your code won't notice any difference. There are a heck of a lot of features in Java that you either have to import via crates in Rust, or write yoursef. So productivity-wise, Java may well beat Rust.

Kotlin is a Java-lookalike. It's a nice, and succinct version of Java and is totally interoperable. But its a bit niche, and for me it fails because my dev environment of choice (Spring Tool Suite) doesn't really play well with Kotlin. To use it you would be well advised to use iDeaj. I have used kotlin, and I like it, but not enough to ditch all my Java code.

Other contenders, depending on your platform of choice are Golang, C, C++, and C# (available as Mono on Linux systems).

I use Rust and Java and if you need a compiled language I recommend Rust.

See more
Mayur Borse
Software Engineer at hyphenOs · | 4 upvotes · 333.2K views
Recommends
on
RustRust

I'd say Rust's knowledge will be more valuable in comparison. You can work in Blockchain development, compile to WASM (WebAssembly). There is a new JavaScript/TypeScript runtime named Deno (by the creator of Node.js) that has its backend in Rust.

See more
ALESSIO SALTARIN
Distinguished IT Architect at IBM · | 4 upvotes · 333.1K views
Recommends
on
GolangGolang

As you certainly know, there are languages that compile in meta-code for Virtual Machines (Java, C#, Kotlin) and languages that compile in Machine Language (Go, Rust). Apart specific domains (blockchain, IoT embedded software, AI, cloud) almost no-one uses languages that compile in machine language, for a series of reason, most of all security and portability. So, if you are going to learn for business go with Kotlin - Java is a bit ancien regime. If you seriously need to learn a language that compiles in ML - for example you will code for IoT - go with Go - or Rust - but keep in mind that Rust is much less used than Go. PS: Kotlin also compiles in ML, but I would choose a language designed for that, instead of one that compiles "also" in ML. PPS: Some Virtual Machines - ie: GraalVM - allow you to compile Java in ML. The world of IT is beautiful.

See more
Radu Maerza
Software Engineer at Freelancer · | 3 upvotes · 326.1K views
Recommends
on
KotlinKotlin

I would go with Kotlin. It is pretty hyped currently.

You can use Kotlin for a lot of application types. To name some:

  • Kotlin Multiplatform with Gradle
  • Ktor (https://ktor.io)
  • Spring Boot
  • Kotlin JS (as you already know Javascript, you might like this one)

The code is also really concise, readable and modern. It also provides many features that you will find in many other programming languages.

See more
Alexander Nozik
Senior researcher at MIPT · | 3 upvotes · 326K views
Recommends
on
KotlinKotlin

All those are nice languages, but Rust is harder to learn properly and has a smaller ecosystem. If you want to work in system programming (like hardware drivers) Rust is probably your choice. Otherwise, Java/Kotlin ecosystem is much larger and gives much more possibilities (maybe excluding low-level system programming).

When talking about Kotlin and Java, both are good. But Kotlin, again, gives much more opportunities. Kotlin-JS gives you browser applications, Kotlin-Native allows to compile to native application (and interop with them). Kotlin-WASM will be available shortly. Rust is better than Kotlin-Native for native development tight now, but not by far and it makes sense only if you are focusing only on native development.

See more
Luiz H. Rapatão
Staff Software Engineer at rapatao.com · | 3 upvotes · 326K views
Recommends
on
JavaJavaKotlinKotlin

I'd recommend you to take a look at Java and Kotlin, the first due to the number of companies that actively use it in your products. Kotlin is gaining adept since it is fully compatibly with the Java ecosystem but usually requires less code to do the same (ignoring other benefits of the language). Another benefits of the Kotlin is that it is in fact multiplatform, where you could use the same syntax to code for mobile, web and backend applications. The drawback of Kotlin, is the number of open jobs that exists currently compared to Java, but I pretty sure that it will change in the near future.

See more
Needs advice
on
GolangGolangPythonPython
and
RustRust

I am a beginner, and I am totally confused, which of these 3 languages to learn first. Go, Rust, or Python. As my studies are going which of them will be easy to learn with studies that is, I can learn and do my studies also. Which one of them will be easily handled with my studies, and will be much much useful in future?

See more
Replies (17)
Recommends
on
PythonPython

python is a good language to start for the beginner.

See more
Will Vandebelt
Recommends
on
GolangGolangPythonPython

Python is a great language to learn as a beginner. However, Go is really easy to learn as well and has a much more powerful standard library that will allow you to build very complex and powerful applications in the future. Go is becoming a standard in Cloud computing and concurrency. Both of which are very advanced but important.

See more
Recommends
on
PythonPython

I have experience in all three languages, and you should learn python first. These are three different languages (read: tools) to solve different problems you may have. Python is a high level language you can use for writing cross-platform scripts, web servers, AI, websites (e.g. Django) and the list goes on. Python can be used for most programming tasks while being the easiest to learn of the three and probably the most productive as well.

A lot of tech companies start out with Python for their web services, but due to Pythons slow speed and the pain that comes with dynamically typed languages when the code base grows, switch to Go later on when they need to scale. Go is a systems language that thrives when used for high performance cloud/web or networking services. Go is used in performance critical networking situations such as Twitch's streaming services and Uber's geofence services. It's also very clean and simple syntax that makes it very easy to quickly understand what code does.

Python is an interpreted language and Go is a garbage collected language, but Rust is a highly performant and reliable compiled programming language without the extra baggage of runtime memory management. Rust forces you to follow coding patterns that assure memory safety. This makes Rust a perfect fit for high performance algorithms, game engines or safety-critical systems, but would be overkill for web servers or scripts on modern hardware.

See more
Recommends
on
GolangGolang

I'd definitely start with Go. I know Python, Go and quite a few other languages.

Rust is not easy to learn as a beginner.

Python has way too many features to be called "easy" to learn. While it is very forgiving to beginner mistakes it feels like playing in a puddle of mud. It does not teach you clean programming at all. Unless of course you like messy.

Go on the other hand is very easy to learn. As a professional you can learn the entire language in under 2 hours. I have already given the tour of Go (https://tour.golang.org/) to complete beginners and they went through it very thoroughly and thereby knew the entire Go language in less than 5 days. While it is very easy to learn and very easy to read, it is quite strict on other things, guiding you to write clean code. For one it is a typed language and it is good to learn very early about types.

Knowing the entire language is of course not all there is to know. There is the standard library and a lot of other libraries to get to know in every language. Also one has to learn patterns in every language, get experience on how to structure code, dig deeper into the language itself to understand its inner workings, etc. That takes years in every language.

That being said, it depends very much on what you want to do with a language. If you want to go into ML and science you definitely need Python. If you want to go into cloud computing, distributed servers (which in my opinion any server should be nowadays), use Go. If you want to do systems level programming, e.g in hardware programming, use Rust.

See more
Kudos Beluga
Recommends
on
PythonPython

Rust is probably a bad choice for starting out. It is a low level language where garbage collection is not done automatically, and has to get you thinking about all the technical aspects. It is statically typed and compiled, so it's very strict with how you code. I do love Rust though, it's a nice language. Golang is also compiled and statically typed, but it aims to be for quick development, which makes it a better choice for starting out.

Python though can be great for starting out and getting a hold on how to program. You don't need to worry about things such as types, garbage collection, or an overwhelming amount of data types. Since I'm a JavaScript fanboy I can't help but say another great popular choice to start is JavaScript 😁

See more
Recommends
on
C#C#PythonPython

If all you want is a gentle intro and have access to tools and libs that can help with your tasks, Python is the way to go. It's ecosystem is huge and the language is easy to pick up. However, if you are aiming to get into software industry, I'd highly recommend you also pick up another classic language like C++/C#/Java. It really helps you cement some CS & programming fundamentals and get more familiar with the concept of software design and software architecture. Not saying you cannot achieve good architecture in Python or Go, but traditionally you have more materials covering these classic OOP languages. And once you learn them, you can apply your knowledge to other languages and it helps you understand other languages faster.

See more
Recommends

Python has the broadest reach as it's been around the longest; rust is much more difficult for a beginner to learn; I work with Go every day and it's probably the most productive general use language.

See more
Stanislav Petrov
Senior Software Engineer at GfK · | 3 upvotes · 332.8K views
Recommends
on
PythonPython

If you start learning programming I'd suggest Python language. I have no experience with Go and Rust so I cannot give you advice for them.

See more
Recommends
on
GolangGolangPythonPython

Go and Python are going to be much easier to learn than Rust. The memory management for Rust is pretty hard to wrap your head around when you are first learning how to do basic things with the language. Get familiar with programming first, then learn Rust.

See more
Recommends

Learn/start with C; don't rush after buzz words. Python is easy to learn but you would not get the underpinnings of memory and pointers, an important aspect of programming.

See more
Recommends
on
PythonPython

Python is a great language to start programming with, there is an awesome python course on coursera by Dr. Charles Severance called Programming for everybody, check it out :)

See more
Recommends

I agree with most of the other answers here. Python is the best choice because it is super user-friendly, has an easy syntax, and can do many complex things in relatively fewer lines.

While Rust is a more recent and a great language nonetheless, it is slightly more complicated as it involves compiling and the syntax isn't so great.

And Go is the not a great choice either. While it has a decent syntax, keep in mind that Go won't be of much use unless you plan on working in Google. Even if you want to learn it, you can do so later.

I hope this helped you in making your decision, and welcome to the world of programming! I hope you enjoy.

See more
Amity International School Sec Gurugram
Vice Cyber Captain at Student · | 1 upvotes · 332.5K views
Recommends
on
PythonPython

Python, because its the easiest to learn as a beginer. Its often called "English without grammar" because its terms and writing style is quite similar to English. Python also has a diverse range of applications like Web App, Desktop App, Data Science etc

See more
Recommends
on
PythonPython

Python is the easiest of the languages to learn, and while the slowest in production, it will teach many of the basic fundamental concepts of programming, especially if you're not going to be doing anything low level or at a system level.

See more
Recommends

I'd choose python because with a good knowledge of python and it's libraries, you could do literally anything. Also it has a relatively simple structure, so it won't be tough for a beginner.

Later on if you wish to learn Rust and Go, please do by all means.

See more
Recommends
on
PythonPython

Python is the best programming language for starting out as it is quite easy to learn, but it also is very powerful and you can do plenty with it. It will be useful for a long time. Python is my recommendation.

See more
Recommends
on
GolangGolang

Study, machine learning = Python | High performance computing, safety-oriented programming = Rust | Backend, feel productive with less runtime performance drawback = Go

See more
Decisions about C++ and Rust

We chose Rust for our web API because the Warp crate makes it easy to compose high-performance and asynchronous APIs. Rust allows us to achieve high development velocity because it provides zero-cost abstractions and enforces strict type and memory-safety checks with high quality and actionable error messages.

See more
Alexandre Desroches
Founder & Developper at Finance D · | 71 upvotes · 377.3K views

I had a goal to create the simplest accounting software for Mac and Windows to help small businesses in Canada.

This led me to a long 2 years of exploration of the best language that could provide these features:

  • Great overall productivity
  • International wide-spread usage for long-term sustainability and easy to find documentation
  • Versatility for creating websites and desktop softwares
  • Enjoyable developper experience
  • Ability to create good looking modern UIs
  • Job openings with this language

I tried Python, Java, C# and C++ without finding what I was looking for.

When I discovered Javascript, I really knew it was the right language to use. Thinking of this today makes me realize even more how great a decision this has been to learn, use and master Javascript. It has been a fun, challenging and productive road on which I am still satisfied.

Obviously, when I refer to Javascript, it is not without implying the vast ecosystem around it. For me, JS is a whole universe in which almost every imaginable tools exist. It's awesome - for real. Thanks to all the contributors which have made it possible.

To be even clearer about how intense I am with Javascript, let's just say that my first passion was music. Until, I find coding with Javascript! Yep, I know!

So in conclusion, I chose Javascript because it is versatile, enjoyable, widely used, productive for both desktop softwares and websites with ability to create modern great looking user interfaces (assuming HTML and CSS are involved) and finally there are job openings.

See more

#rust #elixir So am creating a messenger with voice call capabilities app which the user signs up using phone number and so at first i wanted to use Actix so i learned Rust so i thought to myself because well its first i felt its a bit immature to use actix web even though some companies are using Rust but we cant really say the full potential of Rust in a full scale app for example in Discord both Elixir and Rust are used meaning there is equal need for them but for Elixir so many companies use it from Whatsapp, Wechat, etc and this means something for Rust is not ready to go full scale we cant assume all this possibilities when it come Rust. So i decided to go the Erlang way after alot of Thinking so Do you think i made the right decision?Am 19 year programmer so i assume am not experienced as you so your answer or comment would really valuable to me

See more

Python has become the most popular language for machine learning right now since almost all machine learning tools provide service for this language, and it is really to use since it has many build-in objects like Hashtable. In C, you need to implement everything by yourself.

C++ is one of the most popular programming languages in graphics. It has many fancy libraries like eigen to help us process matrix. I have many previous projects about graphics based on C++ and this time, we also need to deal with graphics since we need to analyze movements of the human body. C++ has much more advantages than Java. C++ uses only compiler, whereas Java uses compiler and interpreter in both. C++ supports both operator overloading and method overloading whereas Java only supports method overloading. C++ supports manual object management with the help of new and delete keywords whereas Java has built-in automatic garbage collection.

See more

Context: Writing an open source CLI tool.

Go and Rust over Python: Simple distribution.

With Go and Rust, just build statically compiled binaries and hand them out.

With Python, have people install with "pip install --user" and not finding the binaries :(.

Go and Rust over Python: Startup and runtime performance

Go and Rust over Python: No need to worry about which Python interpreter version is installed on the users' machines.

Go over Rust: Simplicity; Rust's memory management comes at a development / maintenance cost.

Go over Rust: Easier cross compiles from macOS to Linux.

See more
Timm Stelzer
VP Of Engineering at Flexperto GmbH · | 18 upvotes · 651.3K views

We have a lot of experience in JavaScript, writing our services in NodeJS allows developers to transition to the back end without any friction, without having to learn a new language. There is also the option to write services in TypeScript, which adds an expressive type layer. The semi-shared ecosystem between front and back end is nice as well, though specifically NodeJS libraries sometimes suffer in quality, compared to other major languages.

As for why we didn't pick the other languages, most of it comes down to "personal preference" and historically grown code bases, but let's do some post-hoc deduction:

Go is a practical choice, reasonably easy to learn, but until we find performance issues with our NodeJS stack, there is simply no reason to switch. The benefits of using NodeJS so far outweigh those of picking Go. This might change in the future.

PHP is a language we're still using in big parts of our system, and are still sometimes writing new code in. Modern PHP has fixed some of its issues, and probably has the fastest development cycle time, but it suffers around modelling complex asynchronous tasks, and (on a personal note) lack of support for writing in a functional style.

We don't use Python, Elixir or Ruby, mostly because of personal preference and for historic reasons.

Rust, though I personally love and use it in my projects, would require us to specifically hire for that, as the learning curve is quite steep. Its web ecosystem is OK by now (see https://www.arewewebyet.org/), but in my opinion, it is still no where near that of the other web languages. In other words, we are not willing to pay the price for playing this innovation card.

Haskell, as with Rust, I personally adore, but is simply too esoteric for us. There are problem domains where it shines, ours is not one of them.

See more
Roman Glushko
Machine Learning, Software Engineering and Life · | 3 upvotes · 371.5K views

I chose Golang as a language to write Tango because it's super easy to get started with. I also considered Rust, but learning curve of it is much higher than in Golang. I felt like I would need to spend an endless amount of time to even get the hello world app working in Rust. While easy to learn, Golang still shows good performance, multithreading out of the box and fun to implement.

I also could choose PHP and create a phar-based tool, but I was not sure that it would be a good choice as I want to scale to be able to process Gbs of access log data

See more
Russtopia Labs
Sr. Doodad Imagineer at Russtopia Labs · | 0 upvote · 218.6K views

As a personal research project I wanted to add post-quantum crypto KEM (key encapsulation) algorithms and new symmetric crypto session algorithms to openssh. I found the openssh code and its channel/context management extremely complex.

Concurrently, I was learning Go. It occurred to me that Go's excellent standard library, including crypto libraries, plus its much safer memory model and string/buffer handling would be better suited to a secure remote shell solution. So I started from scratch, writing a clean-room Go-based solution, without regard for ssh compatibility. Interactive and token-based login, secure copy and tunnels.

Of course, it needs a proper security audit for side channel attacks, protocol vulnerabilities and so on -- but I was impressed by how much simpler a client-server application with crypto and complex terminal handling was in Go.

$ sloc openssh-portable 
  Languages  Files    Code  Comment  Blank   Total  CodeLns
      Total    502  112982    14327  15705  143014   100.0%
          C    389  105938    13349  14416  133703    93.5%
      Shell     92    6118      937   1129    8184     5.7%
       Make     16     468       37    131     636     0.4%
        AWK      1     363        0      7     370     0.3%
        C++      3      79        4     18     101     0.1%
       Conf      1      16        0      4      20     0.0%
$ sloc xs
  Languages  Files  Code  Comment  Blank  Total  CodeLns
      Total     34  3658     1231    655   5544   100.0%
         Go     19  3230     1199    507   4936    89.0%
   Markdown      2   181        0     76    257     4.6%
       Make      7   148        4     50    202     3.6%
       YAML      1    39        0      5     44     0.8%
       Text      1    30        0      7     37     0.7%
     Modula      1    16        0      2     18     0.3%
      Shell      3    14       28      8     50     0.9%

https://gogs.blitter.com/RLabs/xs

See more
Manage your open source components, licenses, and vulnerabilities
Learn More
Pros of C++
Pros of Rust
  • 202
    Performance
  • 107
    Control over memory allocation
  • 98
    Cross-platform
  • 97
    Fast
  • 84
    Object oriented
  • 58
    Industry standard
  • 47
    Smart pointers
  • 37
    Templates
  • 16
    Gui toolkits
  • 16
    Raii
  • 13
    Generic programming
  • 13
    Control
  • 13
    Flexibility
  • 11
    Metaprogramming
  • 9
    Hardcore
  • 5
    Many large libraries
  • 5
    Simple
  • 5
    Full-fledged containers/collections API
  • 4
    Large number of Libraries
  • 4
    Performant multi-paradigm language
  • 3
    Way too complicated
  • 1
    Close to Reality
  • 1
    Plenty of useful features
  • 145
    Guaranteed memory safety
  • 132
    Fast
  • 88
    Open source
  • 75
    Minimal runtime
  • 72
    Pattern matching
  • 63
    Type inference
  • 57
    Algebraic data types
  • 57
    Concurrent
  • 47
    Efficient C bindings
  • 43
    Practical
  • 37
    Best advances in languages in 20 years
  • 32
    Safe, fast, easy + friendly community
  • 30
    Fix for C/C++
  • 25
    Stablity
  • 24
    Zero-cost abstractions
  • 23
    Closures
  • 20
    Extensive compiler checks
  • 20
    Great community
  • 18
    Async/await
  • 18
    No NULL type
  • 15
    Completely cross platform: Windows, Linux, Android
  • 15
    No Garbage Collection
  • 14
    Great documentations
  • 14
    High-performance
  • 12
    Generics
  • 12
    Super fast
  • 12
    High performance
  • 11
    Safety no runtime crashes
  • 11
    Fearless concurrency
  • 11
    Compiler can generate Webassembly
  • 11
    Macros
  • 11
    Guaranteed thread data race safety
  • 10
    Helpful compiler
  • 9
    RLS provides great IDE support
  • 9
    Prevents data races
  • 9
    Easy Deployment
  • 8
    Real multithreading
  • 8
    Painless dependency management
  • 7
    Good package management
  • 5
    Support on Other Languages
  • 1
    Type System

Sign up to add or upvote prosMake informed product decisions

Cons of C++
Cons of Rust
  • 8
    Slow compilation
  • 8
    Unsafe
  • 6
    Over-complicated
  • 6
    Fragile ABI
  • 5
    No standard/mainstream dependency management
  • 4
    Templates mess with compilation units
  • 3
    Too low level for most tasks
  • 1
    Compile time features are a mess
  • 1
    Template metaprogramming is insane
  • 1
    Segfaults
  • 1
    Unreal engine
  • 28
    Hard to learn
  • 24
    Ownership learning curve
  • 12
    Unfriendly, verbose syntax
  • 4
    High size of builded executable
  • 4
    Many type operations make it difficult to follow
  • 4
    No jobs
  • 4
    Variable shadowing
  • 1
    Use it only for timeoass not in production

Sign up to add or upvote consMake informed product decisions

- No public GitHub repository available -

What is C++?

C++ compiles directly to a machine's native code, allowing it to be one of the fastest languages in the world, if optimized.

What is Rust?

Rust is a systems programming language that combines strong compile-time correctness guarantees with fast performance. It improves upon the ideas of other systems languages like C++ by providing guaranteed memory safety (no crashes, no data races) and complete control over the lifecycle of memory.

Need advice about which tool to choose?Ask the StackShare community!

What companies use C++?
What companies use Rust?
Manage your open source components, licenses, and vulnerabilities
Learn More

Sign up to get full access to all the companiesMake informed product decisions

What tools integrate with C++?
What tools integrate with Rust?

Sign up to get full access to all the tool integrationsMake informed product decisions

Blog Posts

May 6 2020 at 6:34AM

Pinterest

JavaScriptC++Varnish+6
5
3495
Nov 20 2019 at 3:38AM

OneSignal

PostgreSQLRedisRuby+8
9
4745
Oct 24 2019 at 7:43PM

AppSignal

JavaScriptNode.jsJava+8
5
996
Jun 6 2019 at 5:11PM

AppSignal

RedisRubyKafka+9
15
1709
GitHubSlackNGINX+15
28
21113
What are some alternatives to C++ and Rust?
C lang
Python
Python is a general purpose programming language created by Guido Van Rossum. Python is most praised for its elegant syntax and readable code, if you are just beginning your programming career python suits you best.
C#
C# (pronounced "See Sharp") is a simple, modern, object-oriented, and type-safe programming language. C# has its roots in the C family of languages and will be immediately familiar to C, C++, Java, and JavaScript programmers.
JavaScript
JavaScript is most known as the scripting language for Web pages, but used in many non-browser environments as well such as node.js or Apache CouchDB. It is a prototype-based, multi-paradigm scripting language that is dynamic,and supports object-oriented, imperative, and functional programming styles.
Node.js
Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
See all alternatives