Learn and Use Linux for Programming

Right - It IS different for everyone depending on both need and interest. I’m a retired tech - an academic studying programming - that’s unusual, I think. Your professional experience with so many languages is something I’ll never know. I lack that experience of actually using a language to accomplish important tasks. So in the case of Julia - I don’t “need” to do complex computations, I’m just trying to learn to program. I was just working with C makefiles and it’s interesting how it’s crucial to use tabs when creating the makefile or it simply won’t generate the project - languages have a come a long way! Still, this is what I mean - I like seeing where it came from - Dennis Ritchie used tabs when he created the method, so it’s how it needs to be done. I can understand how modern professional devs would be exasperated by that kind of thing - haha.

I am an old time Linux user, and I am going a bit again the current here, but having had recently to set up a windows laptop for my wife, I realized nowadays the OS doesn’t matter much…
Most office stuff is web-broesed nowadays, and running julia on vscode is not much different in windows or linux, same for RStudio or Spider…

2 Likes

Indeed, not a big difference. But you lose at least 10min per day when using Windows for updates and reboots. And compiling a system image is twice as fast on Linux compared to Windows. Normal operation is 20% faster on Linux because no virus scanner slows you down. And putting a window “always on top” is only possible with Linux…

2 Likes

You can get used to whatever you use. If I had to put together a project with hundreds of files, header, modules, etc - VS Code would be the clear winner. If you have a job to do, you need the tools. Look at Julia - you can drop all those lines of code straight into the REPL and it runs it for you - amazing and efficient. But I’m not doing a job - just learning and I like to see things work - with C, you can see it compile and link right in the terminal. Just to program in C in Windows you need to install msys or cygwin, vscode, extensions, set up your env path, add julia packages. Linux comes with gcc - and its kernel is running 24 million lines of C code - there’s no abstraction. It’s just apples and oranges - I’m just a C guy in the wrong forum. But I like Julia’s elegance and its community and enjoy talking with you guys!

2 Likes

Right - ‘Always on top’ is a great feature. It’s also been recommended to me to try Tmux for managing terminals - haven’t got to that yet.

tmux is great, however, try zellij as an alternative too. These days, I use tmux only on remote systems where zellij is not installed.

1 Like

Thanks - I just installed it - what a fantastic tool.

Apologies to forum users - lately, every post I write here has been advocating Linux - this is a Julia forum, so I guess I better post something about Julia or will kindly bail on this forum.

1 Like

At least please do it in the Offtopic section. (You can still edit the category of your post).

2 Likes

Fair enough - thanks

Julia and Linux user here – have been enjoying reading your thoughts. Don’t jump ship! :joy:

Just a thought: although I agree in principle that Julia does not fully ascribe to the Unix philosophy, I do find it fits very nicely into its world somehow. Kind of like how (Neo)Vi(m) is “just a text editor” but when everything is text, then it can do everything. Similarly, with Julia being designed “just for scientific computing” but if Feyerabend and/or Kuhn is to be followed that everything is of scientific interest, then Julia has a place in most if not all discussions.

Reminds me of a neat post by @mbauman on Julia being “The Last Programming Language” (link: Julia as first language - #48 by mbauman)

But perhaps I am just waxing a bit poetic and not making any sense here – all that to say, glad to have you around Ben! :smile:

5 Likes

Thanks for the kind words. I really like the community here and I like the Julia language. Its REPL is amazing and I love the elegant syntax, and the power of its packages. And like you say - even though it may have originally been designed to excel at scientific computation, everything’s of scientific interest. Besides, spending time with it quickly reveals that it has the potential to do and become most anything - and it’s still a young language. Reading the post by mbauman - I think he’s right - Julia really could be the ‘last language’. There’s a link below that post by algunion - ‘one does not simply walk into Mordor’ where he talks about almost quitting for the wrong reasons, and how it was the language itself that pulled him back. I’m not adept enough at programming to understand multiple-dispatch yet, but yeah, I’m staying with Julia and with this community to see what I can learn and what I can contribute. Thanks again for the warm welcome - it means a lot.

4 Likes

Be careful not to read too much into that too soon. AFAIK you can do all sorts of things on a Linux system (Steam Deck is a good example of a mainstream product) including Julia, but systems programming (think Linux kernels) is not currently feasible in Julia, despite efforts in that ballpark (small binaries). I heard Rust is making some real headway into the Linux kernel.

1 Like

@sylvaticus I respectfully disagree. You have a degree of control under Linux that is just not the same under Windows, leading to a difference in software features in general and also in the teaching experience. It won’t matter in most instances (say if you do business logic type code) but if you ever touch some lower level stuff, it’s just not the same.

@sylvaticus - I completely agree with you when it comes to low-level. The Linux kernel contains some 24 million lines of C code and Rust has now been added as well. The majority of the Windows OS is also running millions of lines of C. No high level language, even Julia, is going to be able to do what C and Rust are doing, not to mention Assembly. It’s easy to take the operating systems for granted - Linux, Windows, Android and their processor architectures - x86, ARM, etc. too. Julia, Python, HTML, JavaScript - none of them work without the low-level languages below working directly with the registers, memory, etc. In fact, Julia’s ‘just in time’ compilation method wouldn’t work at low-level if I’m correct - ??
It’s an interesting topic for sure.

Linux offers access within its own OS that proprietary systems like Windows and Mac don’t and Julia can take advantage of that - maybe it does, I don’t have the knowledge to know for sure. Still, I think @sylvaticus is right - systems programming is another thing entirely - is it possible or even practical for the designers of high-level languages like Julia, Python, Java, R and all the rest to start accessing the processor directly like C, C++, Rust and Assembly do? They’re compiled languages, Julia relies on ‘just in time’ , so I don’t believe so.