I’ve been working with a Javascript (+ TypeScript) + Java + SQL stack for the last 10 years.

For 2024 I’d like to learn a new programming language, just for fun. I don’t have any particular goals in mind, I just want to learn something new. If I can use it later professionally that’d be cool, but if not that’s okay too.

Requirements:

  • Runs on linux
  • Not interested in languages created by Google or Apple
  • No “joke languages”, please

Thank you very much!

EDIT: I ended up ordering the paperback version of the Rust book. Maybe one day I’ll contribute to the Lemmy code base or something :P Thank you all for the replies!!!

  • jaxxed
    link
    fedilink
    01 year ago

    No jokes: pick a language that is in the market, but has a different design philosophy than your background. Your background includes compiled static, and loose scripting, with strong library tooling, so you have diversity there, so a language in which you have to think differently is the right choice.

    I recommend:

    1. Rust if you want something safe but that makes you work differently from java
    2. Go if you want a real mental challenge (the coding approach is very different from java)
    3. Lua if you want really see functional programming as a philosophy
    4. Python if you want scripting, and are tired of the web
    • @BatmanAoD@programming.dev
      link
      fedilink
      11 year ago

      Go if you want a real mental challenge

      I don’t mean to be rude, but I find this baffling; what do you mean by it? One of the primary design goals of Go is to be simple to learn (this is fairly well documented), and it’s one of the few things I really have to give the language credit for. Rob Pike has specifically discussed wanting it to be accessible to recent CS graduates who have mostly used Java. I have never heard anyone before describe learning Go as a “challenge.”

    • @yetAnotherUser@lemmy.ca
      link
      fedilink
      11 year ago
      1. Lua if you want really see functional programming as a philosophy

      I’m pretty sure that Lua doesn’t follow functional programming as a philosophy…

  • Personally, the language that’s taught me the most to learn has been Haskell. It has a lot of very interesting ideas and a learning curve that plateaus after most other languages. There are several ideas that have trickled down from Haskell to other parts of the programming world and learning about them in the context Haskell is in my opinion better because you’ll learn about them in a context where they fit in with the rest of the language very well instead of being late additions that offer an alternate way of doing things.

    Coming from Java and JS, Haskell has a very different approach to a lot of things so you’ll have to re-learn a lot before you get productive in it. This can be frustrating for some but you’ll learn more if you get over that hump on the other hand.

    Haskell doesn’t see very much industry use and arguably isn’t very well suited for industrial application (I haven’t used it professionally so I don’t know personally) so it might not directly help you land any new jobs but it is in my opinion it’s a very good way to develop as a programmer.

    • @Socket462@feddit.it
      link
      fedilink
      01 year ago

      My two cents: I strongly agree with this. We just deployed an intranet blazor server app running on Linux (don’t know which distro) and apache (we might switch to nginx soon). It works very well and we had to write less than 100 lines of JS (mostly for file download and upload) One of my workmates was hired one year ago and at the time he didn’t know anything about .Net stack. Now he is mostly autonomous and he loves .Net and blazor in particular. Obviously YMMV.

      • @scarilog@lemmy.world
        link
        fedilink
        01 year ago

        Bundle size is my only complaint with blazor, has to send the .net runtime in webassembly to the client.

        Aside from this, C# on the browser is an absolute joy to use. I’d use for everything if I could.

        • @Socket462@feddit.it
          link
          fedilink
          01 year ago

          You are talking about Blazor webassembly, I am talking about Blazor server side, which loads as fast as a “normal” website.

          Server side Blazor has other caveats, that’s why I specified it is an intranet project, where server side Blazor fits very well. Anyway, at the moment, Microsoft is still putting effort in polishing both type of Blazor hosting model.

          This is not our first Blazor intranet web app and some of them are running in production for one year more or less.

          It is really a joy to program using Blazor, especially if you need cross tab/browsers/device/user real time communication, which comes almost free thanks to underlying SignalR channel.

  • @jasory@programming.dev
    link
    fedilink
    21 year ago

    Ada particularly the SPARK subset. It’s approach is quite different than most languages, focusing on minimising errors and correctness. It’s fairly difficult but I like to use it to teach people to actually understand the problem and how to solve it before they ever write the code.

  • AlmightySnoo 🐢🇮🇱🇺🇦
    link
    fedilink
    -1
    edit-2
    1 year ago

    Since you already know Java, you could jump straight to C++ with Bjarne’s book “Programming - Principles and Practice Using C++”: https://www.stroustrup.com/programming.html

    You can then move to more modern C++ with his other book “A Tour of C++”: https://www.stroustrup.com/tour3.html

    And then if you’re curious to know how software design is done in modern C++, even if you already know classical design patterns from your Java experience, you should get Klaus Iglberger’s book: https://www.oreilly.com/library/view/c-software-design/9781098113155/

    In parallel also watch the “Back to Basics” video series by CppCon (see their YouTube channel: https://www.youtube.com/@CppCon , just type “back to basics” in that channel’s search bar).

    Learning proper C++ should give you a much better understanding of the hardware while the syntax still remains elegant, and you get to add a new skill that’s in very high demand.

  • BiggestBulb
    link
    fedilink
    01 year ago

    I see you mentioned JS, but not TS. If you haven’t tried TypeScript, you 100% should! It helps a lot at scale.

    Also, I really do recommend Rust. It’s pretty awesome having the errors actually make sense, and it’s not as complicated as the hype makes it out to be (until you get into async rust lol).

    As others have mentioned, C# is also awesome.

    • @pathief@lemmy.worldOP
      link
      fedilink
      01 year ago

      We do use TS as well, yes!

      Rust is definitely a language I’m considering. Syntax looks a bit scary, though!

  • @some_guy@lemmy.sdf.org
    link
    fedilink
    -11 year ago

    I tried to get into Python, but always found it boring. Ruby was more my speed because it was inspired by Perl and that’s the first language I learned. But Python will likely get you more job opportunities.

  • TechNom (nobody)
    link
    fedilink
    English
    2
    edit-2
    1 year ago

    I can recommend Rust - I’m training a few people on it.

    And a pure functional programming language like Haskell or Scheme, if you don’t know what functional programming is, or are not comfortable with it. Functional programming needs a different mental approach to traditional (imperative) programming paradigm. Some of the more modern languages like Rust, JS and Python incorporate a lot of functional programming constructs. So it makes sense to learn them.

    And a lisp - Common Lisp’s popularity is a public secret. Scheme is also fine. This family is homoiconic (program and data are treated more less the same). The syntax is actually very close to its AST. This gives Lisp unparalleled metaprogramming capabilities - mostly through macros. Macros in traditional languages are nowhere near Lisp Macros.

    If it interests you, study a stack based language like Forth or Factor. Though they feel very different from Lisps, they have similar underlying properties. And you get more or less the same advantages.

    • @fnmain@programming.dev
      link
      fedilink
      01 year ago

      +1 for Rust, the learning curve can be pretty daunting, but once you’re over the hump you’ll never want to go back

    • @xia@lemmy.sdf.org
      link
      fedilink
      English
      -11 year ago

      IMO Zig obsoletes C in the way that go and rust tried to do. Personally, I would advise anyone to not learn C; or even start a new project in C, for that matter.

  • Bezier
    link
    fedilink
    01 year ago

    As the other person said, Python. Or if you want something lower level, how about Rust?

  • @rekabis@lemmy.ca
    link
    fedilink
    2
    edit-2
    1 year ago

    DotNet is closest to Java, but hang on to your hat: the state of C# is at least half a decade ahead of Java, if not a full decade. It’s sophistication will make Java use feel like banging rocks together. DotNet Core can now run on all three primary platforms, and with some careful work, you can write a single program that can compile down to each platform and carry along its own required binaries, no pre-install of any framework needed.

    My second recommendation would be Rust. Stupidly steep learning curve, but an absolutely game-changing one where safety and security is concerned. It’s my next objective, personally speaking.

    Any other language I could recommend starts getting into speciality purposes, which makes general use more difficult or even wholly inappropriate.

    For example, if you are dropping into DotNet for business applications, I would also recommend diving into F# for that functional goodness for building complex business rules and data handling. But building an entire app in F# can be jamming a round peg into a square hole under many circumstances, it’s appropriateness envelope does not cover as many cases as C# does. You want to use C# for boilerplate/frameworks, F# for the core bits where it is going to shine.

  • losttourist
    link
    fedilink
    11 year ago

    Give Clojure a go.

    It’s a modern variant of lisp that runs on the JVM and has deep interoperability with Java, so you can leverage your existing knowledge of Java libraries.

    But as it’s a lisp, it will have you thinking about problems in a very different way.

  • @Underwaterbob@lemm.ee
    link
    fedilink
    English
    11 year ago

    Download GODOT and learn the scripting language and the shader language. Make a game! Or at least neat shader art.

    Bonus answer: Csound. Make funky noises with code.