Ruby is not in a spectrum of "highly efficient" languages. It's interpreted, pretty slow and not concurrent. Java is very good for like 99% of cases, and it's much faster to work with than Rust. But, if you really want to be "close to the metal", Rust is your language of choice. It does not have garbage collector. Memory safety is guaranteed by the language itself. This is great, but the cost of that is pretty steep learning curve. But it's still a lot of fun when you get a grip of it.
Rust
In our company we have think a lot about languages that we're willing to use, there we have considering Java, Python and C++ . All of there languages are old and well developed at fact but that's not ideology of araclx. We've choose a edge technologies such as Node.js , Rust , Kotlin and Go as our programming languages which is some kind of fun. Node.js is one of biggest trends of 2019, same for Go. We want to grow in our company with growth of languages we have choose, and probably when we would choose Java that would be almost impossible because larger languages move on today's market slower, and cannot have big changes.
So, I've been working with all 3 languages JavaScript, Python and Rust, I know that all of these languages are important in their own domain but, I haven't took any of it to the point where i could say I'm a pro at any of these languages. I learned JS and Python out of my own excitement, I learned rust for some IoT based projects. just confused which one i should invest my time in first... that does have Job and freelance potential in market as well...
I am an undergraduate in computer science. (3rd Year)
I would start focusing on Javascript because even working with Rust and Python, you're always going to encounter some Javascript for front-ends at least. It has: - more freelancing opportunities (starting to work short after a virus/crisis, that's gonna help) - can also do back-end if needed (I would personally avoid specializing in this since there's better languages for the back-end part) - hard to avoid. it's everywhere and not going away (well not yet)
Then, later, for back-end programming languages, Rust seems like your best bet. Its pros: - it's satisfying to work with (after the learning curve) - it's got potential to grow big in the next year (also with better paying jobs) - it's super versatile (you can do high-perf system stuff, graphics, ffi, as well as your classic api server) It comes with a few cons though: - it's harder to learn (expect to put in years) - the freelancing options are virtually non-existent (and I would expect them to stay limited, as rust is better for long-term software than prototypes)
Thanks Nicolas, I'm already pretty good with rust but not a pro at it... but your suggestion is just according to my so far research and analysis of jobs and demands. Thankyou
I suggest you to go with JavaScript. From my perspective JavaScript is the language you should invest your time in. The community of javascript and lots of framework helps developer to build what they want to build in no time whether it a desktop, web, mobile based application or even you can use javascript as a backend as well. There are lot of frameworks you can start learning i suggest you to go with (react,vue) library both are easy to learn than angular which is a complete framework.
And if you want to go with python as a secondary tool then i suggest you to learn a python framework (Flask,Django).
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?
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.
If you just want to pick up generalized programming concepts and don't get bogged down by memory banging etc 🙂start with python. If you are someone who is brave enough to get going in a comprehensive way on areas of handling memory access, concurrency (as pointed out above by Will) etc, and would not be deterred by obstacles in the long run, start with Go and transition to Rust.
What memory banging is there in Go? Go is garbage collected! "Concurrency" is also a thing in other languages like Python but in contrast to Go it is much harder in Python. So I really don't get how that is something you hold against Go. You can program in Go without concurrency just like in Python, if you can't handle it (yet).
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?
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.
Dev Stack makes some good comments. Kotlin does have a learning curve, but once you have learnt it you will develop quality code faster.
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.
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.
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.
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.
Summary Statically-typed, compiled languages will deliver better performance than their competitors. Golang and Rust are excellent options. Golang will be slightly more latent but has excellent concurrency, built-in garbage collection, and was designed by Google high throughput with minimal blocking time. Rust will be more performant and will use fewer CPU cycles and memory per unit time. Still, your development time will be longer than Golang, especially if you're coming from a dynamically typed language. If you chose Rust, Rocket is a good option (Nickel is another one you can check out for high performance); if you chose Golang, FastHTTP is highly performant.
If you're looking for near real-time performance with minimal CPU utilization: statically typed, compiled languages deliver the most optimizations. Their compilers can best optimize the executable because they know which data type to expect for every variable instantiated. If you're coming from a dynamically typed language, Golang features real-time garbage collection, concurrency, and dynamic-like variable assignment. Rust does not have garbage collection and relies on a program's developer(s) to clean up after themselves. Not having garbage collection in a language leads to highly performant code, however, as the programmer determines when garbage is collected and memory deallocated or reassigned.
For a look at Rust vs. Golang vs. Python's execution times, you can look at these two pages: Golang vs. Python Benchmarks and Golang vs. Rust Benchmarks. On average, you will see Rust is faster than Golang is faster than Python. Rust and Golang are close to each other in performance terms (compared to Python especially), but Rust uses less memory and CPU cycles per unit time.
If concurrency or high throughput is more important than latency, use Golang. Golang has a built-in concurrency mechanism that is amazing at yielding high throughput and eliminating, or controlling, when a subroutine blocks the rest of the main routine. Golang also supports defining structs in a way similar to classes, allowing you to access the function like a Python class method (using the dot .
operator). Golang also allows for dynamic variable type assignment using the walrus :=
operator within a function, easing the switch from a dynamically typed language to a statically typed one. Golang's built-in garbage collector and concurrency methods, dynamic variable assignment via the walrus operator, method-like function calling will minimize your development time between Golang and Rust if you're coming from a dynamically typed language.
We all know that when performance matters, though, it really matters. Rust does not have a garbage collector, allowing code executions with the smallest latency. The rust compiler is very helpful and has been known to catch most possible runtime errors helping to prevent your code from throwing an error and stopping execution. Rust will deliver faster performance over Golang.
Great for web dev? All are pretty great, but my experience with Elixir is pretty limited, less so with Rust but still, it's not my day-to-day language, so take my words with a grain of salt.
Performance-wise, Rust is unbeatable if you are aiming for low latency and CPU bounded tasks as well. For data updates, that really depends on how good the database connector or ORM is. It may vary a lot in real-world scenarios but in TechEmpower benchmark at least, a Rust framework + Diesel ORM is the best of the three. However, if you are talking about very high and spiky traffic, a queueing system is almost 100% required. Your normal RMDBS will not handle that well. But then again, I don't think performance should be your first priority when you start your project.
Python w/ Django is super mature and great for productivity but performance isn't this combo's strength. With the recent and upcoming work on async, I believe it will get much better but still, Python as a language is the slowest of the three. Check out FastAPI, Starlette, or other async frameworks + uvicorn for better performance. I like FastAPI and Blacksheep the best, with good performance and a beyond great typing story, which is a strong booster for productivity.
For Rust, check out Warp, Axum, and Actix-Web as well. I like Axum and Actix quite a bit better as I am not a great fan of macros. Also, Axum comes from the tokio-rs team, so I think (hope) it will receive sustained active development.
In my opinion, because I'm not a current developer of Rust (yet) but I was for Python and Django and I'm at this moment for Elixir and Phoenix, the point of Elixir and Phoenix is to get easy the scalability of your system, and for sure, whatever you build on top of it, should be easier to scale than others. While Python is a system that helps you with fast development and putting your project fast for time-to-market, it's easier to get more people which are good developers on that language, Elixir is helping you in the same way and even it's prepared to grow with you without hassle. Rust I'm pretty sure that could be more performant and if you need to do something which isn't scalable or should be staying compulsory in only one machine, it's the best choice. Otherwise, go with Elixir and Phoenix, no regrets I can ensure it :-)
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.
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.
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.
How is Go more performant than Swift? Features are to be used wisely, like any engineer can do. Go actually lacks useful features, you'll find the language very "poor" compared to Swift. The latter is a joy to use, not Go.
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.
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!
Perl is super fast to write but only if you have lot of experience in it
Go is maintainable and faster in performance
Rust is fastest in performance
Go is "maintainable" up to a point, I find that error handling and interfaces typically require more dev and maintainance time than in other languages, because they are too simple.
Hello!
I'm a developer for over 9 years, and most of this time I've been working with C# and it is paying my bills until nowadays. But I'm seeking to learn other languages and expand the possibilities for the next years.
Now the question... I know Ruby is far from dead but is it still worth investing time in learning it? Or would be better to take Python, Golang, or even Rust? Or maybe another language.
Thanks in advance.
Hi Caue, I don't think any language is dead in 2022, and we still see a lot of Cobol and Fortran out there, so Ruby is not going to die for sure. However, based on the market, you'll be better off learning Goland and Python. For example, for data science, machine learning, and similar areas, Python is the default language while backend API, services, and other general purpose Goland is becoming the preferred.
I hope this helps.
I feel most productive using go. It has all the features I need and doesn't throw road blocks in your way as you learn. Rust is the most difficult to learn as borrow checking and other features can puzzle a newcomer for days. Python is a logical next step as it has a huge following, many great libraries, and one can find a gig using python in a heartbeat. Ruby isn't awful, it's just not that popular as the others.
Another reason to use python is that it is not compiled. You can muck around in the interpreter until you figure things out. OTOH, that makes it less performant. You really need to think about your use cases, your interest in lower-lever versus high-level coding, and so on.