Other Rust-Lang and C\C++.

msplsh

Aspiring Daemon

Reaction score: 247
Messages: 668

I asked it because I want to improve my programming knowledge, but the problem is that if Rust-Lang is a replacement for C\C++ then I wasted my time. I like to have a low level knowledge of operating systems. I hope you understand my concern. You learn a language but nobody need it in the next years and its usage decreased.
Another problem is that, if developers started rewrite a big project like Linux or BSD in Rust-Lang then they never reveal it and when it done then they surprise users.

It's only going to be a waste of time to learn a programming language if you don't do anything with that learning. Choose and do a program first. Don't try and prognosticate about what to learn in the future so you'll be "ready." Choose and do. Your knowledge is useless without doing.

If you just want to "know" without doing, then that's a waste of time anyway. You don't use this knowledge, you just "know." Don't say stuff like you're afraid of wasting your time because you're already wasting it. Waste it on whatever you want.

If you're going to write for FreeBSD in Rust, just do it. If you don't know C and you want to start straight in with Rust, you're going to end up learning it anyway, because you won't know anything about what you're attempting to hook into or port.

There is no secret cabal that's going to spring "hey, we're rewriting everything in Rust" on people.
 

Jose

Daemon

Reaction score: 1,154
Messages: 1,368

It's only going to be a waste of time to learn a programming language if you don't do anything with that learning. Choose and do a program first. Don't try and prognosticate about what to learn in the future so you'll be "ready." Choose and do. Your knowledge is useless without doing.
I definitely can't learn things unless I have a project. For me finding the project that needs whatever I want to learn is the hardest part. Second hardest part is actually finishing the project. My office is full of plans that either came to naught or half a page of scribbled lines.
 

ekvz

Well-Known Member

Reaction score: 282
Messages: 431

If you don't know C and you want to start straight in with Rust, you're going to end up learning it anyway

Exactly but OP probably thinks Rust is magically going to change the way computers work and...

The memory problems in C\C++ couldn't solve!!!

That comment alone made my head hurt but i guess that's how things look when you skip learning what memory management is and go straight to arguing about it. Time saved that didn't pay off i'd say.
 

ralphbsz

Son of Beastie

Reaction score: 2,507
Messages: 3,369

I asked it because I want to improve my programming knowledge,
Great idea. Find a medium size project, something with interesting complexity (not "Hello world"), but also something that can be done over a few weekends. For example, keeping track of all your medical and commuting expenses in a nicely formatted way to help with preparing your taxes. Or finding the nearest weather stations on a map (look at Davis' weatherlink.com or the Weather Underground), and doing triangular interpolation to calculate what the weather at your house is. Write down the exact requirements: what is the problem you are wanting to solve, what is the input and output, how will you know when you're done. Then implement a solution (that includes design, implementation, test harness, deployment). If you have no programming knowledge, I would start in a teaching language. That used to be mostly Pascal; today many programming curricula seem to start students in Python, which has the advantages of having interestingly complex language features, a class/inheritance system to learn OOA&D (which is what learning programming is really about), and relatively simple syntax. Leaning one of these simple languages is always a win, since they are very useful for many everyday projects.

Then find a project and implement it in in straight C (). Do the same in C++, then Rust (probably with two other projects, no point solving the same problem multiple times). At that point, you will have some programming knowledge, and can make intelligent statements about which language is appropriate when and where.

Learning a simpler language first and the proceeding to more complex ones is totally not a waste of time, on the contrary. You learn more about programming from the differences between approaches than from a single approach.

Do not even think about approaching an operating system kernel until you have mastered C. And note that I said "mastered", not "tried it once for 10 lines".

but the problem is that if Rust-Lang is a replacement for C\C++
Today, a large fraction of all code is written in C and C++ (the two are often indistinguishable, as there is lots of code that uses a C++ compiler but is not heavily OO). Every serious professional software engineer outside of specialized environments (such as banking or scientific supercomputing) needs to have enough familiarity with C/C++ to function in it, perhaps not be superb. There have been lots of languages that aimed to replace C/C++, including Java, Go, C#, and a lot of others. All these languages continue to be used heavily, and yet C/C++ continues to have a large share of all programming.

There is no replacement, there is only specialization.

When I learned programming (over 40 years ago), the heavily used languages in production were COBOL and Fortran, assemble for systems building and embedded, Pascal for teaching. Today, there is still lots of COBOL code in business production (although few new projects are started in COBOL), Fortran is still the de-facto standard for scientific computing on supercomputers, and C has mostly replaced assembly. What has happened is that there is a whole class of languages (C++, Java, Go, various scripting and web front languages...) that are now used for building applications and glue, and Python/Ruby/... are not just scripting languages but used for large systems. There is much more diversity today.

I like to have a low level knowledge of operating systems.
You are like a 1-year old who wants to run a marathon or compete in 110m hurdles, just because you have just learned to walk from the sofa to their mom without falling over. If you want to learn low level operating systems, first learn programming, software engineering (those are different disciplines!), computer architecture, and basic OS concepts. Long before you worry about which language to use, you need to understand concepts such as "semaphore" or "stream".

You learn a language but nobody need it in the next years and its usage decreased.
If you want to be a professional software engineer, you will be good in 2-3 languages, fluent in 5, and you'll have learned another 10 that are no longer used or not appropriate for your current problems. A friend of mine (very senior engineer at one of those really big computer companies) used to help with a project of implementing the "towers of hanoi" in several hundred programming languages, and he has gone and learned some obscure ones just for the purpose of this. And every time he learns another way of approaching the problem, he gets new insights.

Another problem is that, if developers started rewrite a big project like Linux or BSD in Rust-Lang then they never reveal it and when it done then they surprise users.
You clearly do not understand how FOSS development works. If someone really started it, it would be a giant group ... rewriting a significant project would take lots of people. And there would be discussion all over, and the artifacts would be visible all over. I'm sure "The Register" would report on it. Inside a secretive company, this could happen, but even then the community would find out. For example, if HAL Computers (old joke = IBM with one subtracted from each letter) suddenly hired 50 Rust programmers, we would find out when we see the open positions advertised.

Stop the paranoia, it stems from lack of information. You want to become a computer person? Start working on it.
 

ralphbsz

Son of Beastie

Reaction score: 2,507
Messages: 3,369

Agree that straight C (no C++ compiler, no objects) is getting to be rare, outside of some kernel development (although some closed-source kernel development is in C++), and deeply embedded small systems. And this has been the situation for about 20 years; C++ really took over very quickly from C, starting in the early 90s.

For most environments, having a garbage collector is a non-problem. Java was clearly designed to replace C++ as an applications development language, and immediately also pushed into systems work. In the 90s, there was lots of work on Java CPUs, Java operating systems, Java with predictable and very fast garbage collectors, real-time use. While not all of that was a roaring success, Java and successor languages (C#, Go, Kotlin, ...) were able to take on many projects.

I roughly agree with your list of languages. Depending on the environment and season, you might have to add Kotlin, Ruby, Swift. And the definition of "Javascript" has to include some close relatives like NodeJS and Typescript.
 

drhowarddrfine

Son of Beastie

Reaction score: 2,496
Messages: 4,441

My office is full of dreams that either came to naught or half a page of scribbled lines.
My problem now is not finding a project but finding someone who cares. That someone cares if I produce something is a big motivators for me. I don't really have anything I want bad enough to spend time on a computer to create anymore.

This reminds me of an old Dick Van Dyke TV show where "Rob Petrie" wants to write a book and goes off to a cabin in the woods so he's not distracted at home. But he finds other things to do including playing paddle ball. "I beat my record of a hundred!", he exclaims. Looking around, "Somebody?".

Here's more from that scene.
 

kpedersen

Son of Beastie

Reaction score: 2,235
Messages: 3,064

I think Rust will contend with C++.
Once rust gains the ability to read C headers and ditches its naive NPM style crates.io dependency mess maker, it could contend with C++ (I don't think it will ever manage to take on C though).

I am not entirely against this, Rust is similar enough to "safe C++" that it is fairly easy to work with and it might finally prevent companies from churning out poor quality APIs which thrust out raw pointers where all you can do is "guess" at their lifespan. For C this works, for C++ it is crap for a number of reasons.
 
Top