💾 Archived View for bbs.geminispace.org › s › programming › 22443 captured on 2024-12-17 at 15:08:42. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

Language to learn

Friends, which language a hobbyst like me would try seriously to learn? Like buy books and materials...

I honestly learned a lot of languages since I was a kid: Pascal first as a kid, then Assembly and C when I entered technical school at 14, then Pascal again and VBA at university, then Python... But honestly, though I have some understanding of the principles, I don't consider myself proficient in any. I had to change jobs and profession a lot of times because of money and never got the opportunity to enhance my skills in any language in special.

I am seriously confused if I should try python again, since it is easy, of come back to C or C++ (In that case, I don't have a clue which one is better in the context of a hobbyst. I don't know If i really need OOP)

Please, share your wisdom and opinions with me. I work at industry with electrical stuff and outside PLCs that I never touch, I don't see much future in learning a language anyway.

Posted in: s/programming

🦁 Houjimmy

Dec 04 · 13 days ago

28 Comments ↓

🐝 undefined · Dec 04 at 19:27:

Learning the language isn't really the difficult part about learning to program. I'd probably go with js since it's very low friction but it's hard to say. If you were serious about understanding the fundamentals, I'd recommend C but I don't know if you don't really need it. As long as you pick one of the more popular languages you're fine probably. The more important is to find what projects you want to do. For me at least, watching other people on youtube gave me ideas for my own stuff back when I didn't know what I wanted to do. To that end, a few people I'd recommend would be coding train, tsoding, handmade hero.

💎 pista · Dec 04 at 20:15:

Programming languages are like hammers. They might have some fine differences in how you hold them and what shape the face is, but they can mostly get you through most jobs about the same.

The important thing is to pick up the hammer and start figuring out how to use it to shape what you want.

🚀 stack · Dec 04 at 20:19:

You have the basics of the run-of-the mill languages. The rest are the same, with slightly different syntax and features. Except for:

Common Lisp.

All languages out there are a poor subset of CL.

It will change your life.

👻 ps · Dec 04 at 20:45:

imho, not language but your goal / environment / framework could help with choice

Personally, switched to Rust after 15 years of different programming experience

I do not trust myself enough to use C++ or spend a time for package management there.

☕️ Morgan · Dec 04 at 21:36:

I always recommend it, so might as well be consistent: Dart.

🍀 gritty · Dec 05 at 01:48:

Fellow hobbyist. I picked up Go the last couple of weeks and have been enjoying it. My goto is Python if I just want to crank something out.

👻 darkghost · Dec 05 at 06:18:

In my STEM data-intense profession we use Python. This is a must for a data science professional. It's got an enormous number of libraries for just about anything you can think of. Enough to be possibly overwhelming. Plenty for web processing, numerical processing, machine learning, machine vision, genetic mapping, game development, PDF mining, finance, changing the internals of the language itself, cross compiling with JS, and of course Gemini (us, but there is a library for Google's Gemini too.) I grew up on C and C++ but haven't used them in a long time. They're good for building really optimized code. Think embedded systems and OS's. That's my last application of C about a decade ago.

🦝 smoorg_ · Dec 05 at 13:12:

I was C# dev for like 7 years until I appreciated how Go does things. Its just so simple compared to managing the code with classes. I love it so far. I don't think I am ever going back to C#.

🚀 stack · Dec 05 at 14:31:

I know some people swear by python, but for me, I couldn't imagine a worse abomination! The clumsy syntax, the lack of tail calls, the formatting...

Whenever something breaks my machine, inevitably it's because some python library maintainer changed the name of some variable deep inside. It's complexly unstable, with breaking changes across minor versions. Every little python app pip-sucks in megabytes of crap that makes me shudder...

I had to use it recently for the opensource FPGA toolchain, and had to jump through hoops to keep its required python version from clashing with Ubuntu's required version...

I would quit computers if I had to use python.

🐝 undefined · Dec 05 at 14:53:

I wouldn't quit programming even if I had to use common lisp, but I would definitely get a lot grumpier.

🎵 alice-sur-le-nuage · Dec 05 at 15:59:

If it's to get a job, there are surveys out there showing how popular different languages are in the industry. If it's for personal interest, it will depend on your goal. If you want to do dynamic web pages, then Javascript or Typescript. If you want to write APIs, then Python or Go or Javascript/Typescript. If you want to do games, I'm not sure but you should check game frameworks before choosing. And if you only want to learn out of interest, then try something new. From the list you give you've only done imperative languages, so you could try a functional language like Erlang or Lisp to learn something different.

🚀 stack · Dec 05 at 17:02:

To each his/ver own! For me Lisp is pure joy!

PS Lisp is not really a functional language, it is a pragmatic multi-paradigm language that easily supports functional or OO style if you so desire...

🎵 alice-sur-le-nuage · Dec 05 at 21:00:

I'm yet to see a functional language that doesn't call itself "pragmatic multi-paradigm" language :)

👽 TKurtBond · Dec 08 at 03:15:

Another language that changes the way you think is Forth. Many of the Lisp languages are about building languages that fit your problem at a high level. Forth is also about building languages that fit your problem, but where Lisp uses garbage collection, strong dynamic typing, and s-expressions as ASTs, Forth starts with direct access to memory, direct access to a stack for passing parameters between words (Forth's equivalent of procedures and functions), and the ability to create new syntax using direct control over how the language interacts with its reading of source code.

Forth places everything under your direct control, but that also means you have to BE in control: Forth does what you tell it, so if you take a bunch of bits you've been treating as a character and suddenly treat them as a number, Forth will do that: you have to keep things straight. Also like Lisp, Forth is very interactive; both are fun and useful to interact with to figure things out.

👽 TKurtBond · Dec 08 at 03:28:

An interesting family of programming languages is Niklaus Wirth's Oberon and it's descendants. Unlike most computer languages which are designed by piling on feature after feature, it was designed by adding one important feature, type extension of records, and then removing unnecessary features from his earlier languages Pascal, Modula, and Modula 2, resulting in a very understandable language. I have a fondness for Oberon 2, which adds type bound procedures, giving a classic object oriented language, but others prefer the increasing simplicity of Wirth's later versions of Oberon, which he again designed by removing things.

🚀 stack · Dec 08 at 13:46:

Forth is incredible. In many ways it is an inversion of Lisp.

Lisp, Forth, and Smalltalk form a large triangle marking the bounds of computer languages... Almost all lie somewhere inside, leaning towards one or the other...

Lisp: code is data!

Forth: data is code!

Smalltalk: No, it's objects all the way down...

🦂 zzo38 · Dec 08 at 23:59:

There is also PostScript, which is a programming language that I sometimes use. (It is not only for graphics or for printing, although it can be used for that too.)

🚀 stack · Dec 09 at 00:59:

PostScript is a Forth..

🦂 zzo38 · Dec 09 at 03:09:

PostScript is not a Forth, although it is RPN, and so is Forth. PostScript is different in many significant ways.

🚀 stack · Dec 09 at 15:50:

Scheme differs from Common Lisp in extremely significant ways, yet it is a Lisp.

A concatenative language with RPN notation is a Forth in my book!

🚀 maha · Dec 09 at 19:20:

when you say hobbyist, i'm confused aobut whether you mean just programming for fun, or whether you want to learn half of computer science - if you want to have fun programming - smalltalk/squeak is visual and kinda fun - lua is another fun language, and so beautifully simple that you can build OOP on top of it if you want - if you want to learn half of computer science - I strongly suggest C because it gets you so close to the hardware, not C++ because then you'll just get distracted by all the OOP.

I didn't like the concept of Go at all until I started coding in it, its actually great and practical, and might be just what you need to have fun and learn computer science

🦁 Houjimmy [OP] · Dec 14 at 10:49:

By Forth you mean Fortran?

🦁 Houjimmy [OP] · Dec 14 at 10:52:

Well, I will do it for fun, and would be nice to be able to help any kindred projects. But I also work in the field of Instrumentation, so something like ST (Structured Text for PLC programming) would help me a bit to not rust my skills (since I am still not in a function at work where I can program the PLC itself).

🚀 stack · Dec 14 at 16:32:

No, by Forth I mean Forth.

🐻 erick · Dec 16 at 20:08:

Many have already mentioned Python, and I think I even saw someone give JavaScript a shout-out as well. These two are, in my opinion, among the most beginner-friendly programming languages since they’re (arguably) accessible everywhere.

My personal recommendation for a generalist or hobbyist looking to get into programming—without necessarily aiming for a career change—would be Python. It has a wealth of great documentation, established standards, an extensive library ecosystem, and tons of tutorials to get you started.

🚀 stack · 21 hours ago:

Except that Python is a terrible language (as a language geek), the worst user experience I've encountered as a coder, and the most unstable environment where one day nothing works because some library you've never heard of changed. If they paid me to use it I'd quit.

Did I say this before? Yikes, going in circles here. Sorry.

🐻 erick · 14 hours ago:

@stack yeah, I think I saw your opinion when reading the comments. Too sad you have had that experience with Python, I on the other hand have had an amazing experience with it.

👻 darkghost · 6 hours ago:

My python experience is mixed. I've used it successfully for data processing of major datasets without much need for coding. But on the other hand, I wanted an application that was coded in python but it needed a newer minor version. So I set about installing it and when I rebooted my Linux distro: boom, no GUI. So I reverted, painstakingly finding all the damn symlinks and getting its hooks out. The solution was to upgrade to the newest release of the distro.

In summary, it took a distro upgrade to run a single application coded in a version of Python 2 minor revisions ahead. I get the criticism. I'm sure I could have avoided it but coding is neither my main job description nor a big hobby.